Сортировать список студентов из файла - C#
Формулировка задачи:
Список студенческой группы записан на диске как текстовый файл. Каждая строка списка содержит фамилию студента и три экзаменационные оценки, причем список никак не упорядочен. Составить программу, которая корректирует список и сортирует его либо по среднему баллу, либо по алфавиту, либо по оценкам, либо по заданному предмету.
Список записывается в файл либо под старым, либо под новым именем.
Решение задачи: «Сортировать список студентов из файла»
textual
Листинг программы
static void Main(string[] args)
{
string NonSortPath = "list.txt";
string SortPath = "list2.txt";
string[] list = File.ReadAllLines(NonSortPath, Encoding.Default);
List<Student> students = new List<Student>();
List<string> temp = new List<string>();
foreach (var str in list)
{
temp.AddRange(str.Split(' '));
students.Add(new Student {
lastname = temp[0],
one = Convert.ToInt32(temp[1]),
two = Convert.ToInt32(temp[2]),
trh = Convert.ToInt32(temp[3]),
Score = (Convert.ToInt32(temp[1]) + Convert.ToInt32(temp[2]) + Convert.ToInt32(temp[3]))/3 });
temp.Clear();
}
Console.WriteLine("Выберите способ сортировки:\n 1-по Алфавиту,\n 2 - По среднему баллу,\n 3 - По предмету");
int vibor = int.Parse(Console.ReadLine());
var st = students.OrderBy(i => i.lastname);
switch (vibor)
{
case 1:
st = students.OrderBy(i => i.lastname);
break;
case 2:
st = students.OrderBy(i => i.Score);
break;
case 3:
st = students.OrderBy(i => i.one);
break;
default:
st = students.OrderBy(i => i.lastname);
break;
}
foreach (var item in st)
{
Console.WriteLine("{0}\t{1} {2} {3} Средний балл - {4}", item.lastname, item.one, item.two, item.trh, item.Score);
File.AppendAllText(SortPath, String.Format("{0}\t{1} {2} {3} Средний балл - {4}\n", item.lastname, item.one, item.two, item.trh, item.Score));
}
// File.AppendAllLines(SortPath, st.Select(i=> new { i.lastname, i.one, i.two, i.trh, i.Score }.ToString()));
Console.ReadKey();
}
public class Student
{
public string lastname{ get; set; }
public int one{ get; set; }
public int two{ get; set; }
public int trh{ get; set; }
public int Score { get; set; }
}