Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Text;
- namespace Students
- {
- class Program
- {
- public static string path = @"H:\INPUT.txt";
- public static StreamReader stream = new StreamReader(path);
- public static void Help()
- {
- for (int i = 0; i < 44; ++i) Console.Write(" *");
- Console.WriteLine();
- Console.WriteLine("* read_student <count> - считать студента count раз." + new string(' ', 37) + '*');
- Console.WriteLine("* remove_student <name> - удалить студента по имени." + new string(' ', 37) + '*');
- Console.WriteLine("*" + new string(' ', 88) + '*');
- Console.WriteLine("* sort_by_date <up / down> - отсортировать студентов по Д.Р. (up - от старших к младшим, * \n* down - от младших к старшим) " + new string(' ', 56) + '*');
- Console.WriteLine("* sort_by_name <up / down> - отсортировать студентов по имени. (up - A-Z, down - Z-A)" + new string(' ', 4) + '*');
- Console.WriteLine("*" + new string(' ', 88) + '*');
- Console.WriteLine("* find_by_name <name> - поиск студента по имени." + new string(' ', 41) + '*');
- Console.WriteLine("* find_by_date <date> - поиск по Дате Рождения." + new string(' ', 42) + '*');
- Console.WriteLine("*" + new string(' ', 88) + '*');
- Console.WriteLine("* max_middle_score - максимальный средний балл среди учеников." + new string(' ', 27) + '*');
- Console.WriteLine("* min_middle_score - минимальный средний балл среди учеников." + new string(' ', 28) + '*');
- Console.WriteLine("* middle_score - средний балл всех учащихся." + new string(' ', 45) + '*');
- Console.WriteLine("*" + new string(' ', 88) + '*');
- Console.WriteLine("* show - вывести таблицу учащихся." + new string(' ', 55) + '*');
- for (int i = 0; i < 44; ++i) Console.Write(" *");
- Console.WriteLine();
- }
- public static string[] command;
- struct Student
- {
- public string name;
- public int day, month, year;
- public string institute;
- public string group;
- public int course;
- public double mid_score;
- }
- class Students
- {
- List<Student> students;
- public Students()
- {
- students = new List<Student>();
- }
- // Чтение студента из файла
- public void read_student(int count)
- {
- while (Convert.ToBoolean(count--))
- {
- if(stream.Peek() == -1)
- {
- Console.WriteLine("В файле недостаточно студентов.");
- return;
- }
- Student buff;
- buff.name = stream.ReadLine();
- string[] date = stream.ReadLine().Split(".");
- buff.day = Convert.ToInt32(date[0]);
- buff.month = Convert.ToInt32(date[1]);
- buff.year = Convert.ToInt32(date[2]);
- buff.institute = stream.ReadLine();
- buff.group = stream.ReadLine();
- buff.course = Convert.ToInt32(stream.ReadLine());
- buff.mid_score = Convert.ToDouble(stream.ReadLine());
- add_student(buff);
- }
- }
- // Добавление студента
- public void add_student(Student new_student)
- {
- students.Add(new_student);
- Console.WriteLine("{0} добавлен(-a) в базу.", new_student.name);
- }
- // Удаление студента по имени
- public void remove_student(string _name)
- {
- if (students.Count == 0)
- {
- Console.WriteLine("В БД не обнаружено ни одного студента!");
- return;
- }
- int index = -1;
- for (int i = 0; i < students.Count; ++i)
- {
- if (students[i].name == _name)
- {
- index = i;
- break;
- }
- }
- if(index == -1)
- {
- Console.WriteLine("Студента с таким именем не существует.");
- return;
- }
- students.Remove(students[index]);
- Console.WriteLine("{0} : Удален из базы.", _name);
- }
- //Сортировка по дате(по возрастанию)
- public void sort_by_date_up()
- {
- for(int i = 0; i < students.Count - 1; ++i)
- {
- for(int j = 0;j < students.Count - 1 - i; ++j)
- {
- if(students[j].year > students[j + 1].year)
- {
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- else if(students[j].year == students[j + 1].year)
- {
- if(students[j].month > students[j + 1].month)
- {
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- else if(students[j].month == students[j + 1].month)
- {
- if(students[j].day > students[j + 1].day)
- {
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- }
- }
- }
- }
- }
- // Сортировка по дате(по убыванию)
- public void sort_by_date_down()
- {
- for (int i = 0; i < students.Count - 1; ++i)
- {
- for (int j = 0; j < students.Count - 1 - i; ++j)
- {
- if (students[j].year < students[j + 1].year)
- {
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- else if (students[j].year == students[j + 1].year)
- {
- if (students[j].month < students[j + 1].month)
- {
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- else if (students[j].month == students[j + 1].month)
- {
- if (students[j].day < students[j + 1].day)
- {
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- }
- }
- }
- }
- }
- // Сортировка по имени(по возрастанию)
- public void sort_by_name_up()
- {
- for(int i = 0; i < students.Count - 1; ++i)
- {
- for(int j = 0; j < students.Count - 1 - i; ++j)
- {
- if(String.Compare(students[j].name, students[j + 1].name) == 1){
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- }
- }
- }
- // Сортировка по имени(по убыванию)
- public void sort_by_name_down()
- {
- for (int i = 0; i < students.Count - 1; ++i)
- {
- for (int j = 0; j < students.Count - 1 - i; ++j)
- {
- if (String.Compare(students[j].name, students[j + 1].name) == -1)
- {
- Student tmp = new Student();
- tmp = students[j];
- students[j] = students[j + 1];
- students[j + 1] = tmp;
- }
- }
- }
- }
- // Поиск по имени
- public int find_by_name(string _name)
- {
- if (students.Count == 0)
- {
- Console.WriteLine("В БД не обнаружено ни одного студента!");
- return -1;
- }
- for (int i = 0; i < students.Count; ++i)
- {
- if (students[i].name == _name)
- {
- Console.WriteLine("Студент записан в списке под номером {0}.", i);
- return i;
- }
- }
- Console.WriteLine("Студента с такими именем не существует в БД");
- return -1;
- }
- // Поиск по дате
- public int find_by_date(string _date)
- {
- if (students.Count == 0)
- {
- Console.WriteLine("В БД не обнаружено ни одного студента!");
- return -1;
- }
- string[] new_date = _date.Split('.');
- for (int i = 0; i < students.Count; ++i)
- {
- if(Convert.ToInt32(new_date[0]) == students[i].day && Convert.ToInt32(new_date[1]) == students[i].month && Convert.ToInt32(new_date[2]) == students[i].year)
- {
- Console.WriteLine("Студент записан в списке под номером {0}.", i);
- return i;
- }
- }
- Console.WriteLine("Студента с такой датой рождения не существует в БД");
- return -1;
- }
- // Нахождение максимального среднего балла
- public double max_middle_score()
- {
- int index = -1;
- double max = -1;
- for(int i = 0; i < students.Count; ++i)
- {
- if(students[i].mid_score > max)
- {
- max = students[i].mid_score;
- index = i;
- }
- }
- if(index != -1)
- {
- Console.WriteLine("Максимальный средний балл : {0:F}\nИмя студента : {1}", students[index].mid_score, students[index].name);
- return max;
- }
- else
- {
- Console.WriteLine("Еще ни одного студента не добавлено в список!");
- return 0;
- }
- }
- // Нахождение минимального среднего балла
- public double min_middle_score()
- {
- int index = -1;
- double min = -1;
- for (int i = 0; i < students.Count; ++i)
- {
- if (students[i].mid_score < min || min == -1)
- {
- min = students[i].mid_score;
- index = i;
- }
- }
- if (index != -1)
- {
- Console.WriteLine("Минимальный средний балл : {0:F}\nИмя студента : {1}", students[index].mid_score, students[index].name);
- return min;
- }
- else
- {
- Console.WriteLine("Еще ни одного студента не добавлено в список!");
- return 0;
- }
- }
- // Сумма средних баллов
- public double sum_ms()
- {
- double sum = 0;
- for(int i = 0; i < students.Count; ++i)
- {
- sum += students[i].mid_score;
- }
- return sum;
- }
- // Среднее значение средних баллов
- public double middle_middle_score()
- {
- if (students.Count == 0)
- {
- Console.WriteLine("В БД не обнаружено ни одного студента!");
- return 0;
- }
- Console.WriteLine("Среднее значение средних баллов студентов : {0:F}", sum_ms() / students.Count);
- return sum_ms() / Convert.ToDouble(students.Count);
- }
- public void show()
- {
- if(students.Count == 0)
- {
- Console.WriteLine("В БД не обнаружено ни одного студента!");
- return;
- }
- Console.WriteLine(new string('-', 95));
- Console.WriteLine("| № | Имя студента | Дата Рождения | Институт | Группа | Курс | Ср.Б |");
- Console.WriteLine(new string('-', 95));
- for(int i = 0; i < students.Count; ++i)
- {
- string[] fio = students[i].name.Split();
- string date = new string(Convert.ToString(students[i].day) + '.' + Convert.ToString(students[i].month)+ '.' + Convert.ToString(students[i].year));
- Console.WriteLine("| " + (i + 1) + " | " + fio[0] + " " + fio[1][0] + '.' + fio[2][0] + '.' + new string(' ', 30 - fio[0].Length)
- + "| " + date + new string(' ', 10 - date.Length) + " | " + students[i].institute + new string(' ', 8 - students[i].institute.Length) + " | "
- + students[i].group + new string(' ', 9 - students[i].group.Length) + " | " + students[i].course + " | " + "{0:F1}" + " |", students[i].mid_score);
- Console.WriteLine(new string('-', 95));
- }
- }
- }
- static void Main(string[] args)
- {
- Students MISIS = new Students();
- Console.WriteLine("Введите HELP для просмотра списка команд, EXIT для завершения работы программы...");
- Console.Write("<command> : ");
- command = Console.ReadLine().Split(" ");
- while(command[0] != "EXIT") {
- switch (command[0])
- {
- case "HELP" :
- Help();
- break;
- case "read_student" :
- if (command.Count() > 1)
- MISIS.read_student(Convert.ToInt32(command[1]));
- else
- Console.WriteLine("Не верно задана команда.");
- break;
- case "remove_student" :
- if (command.Count() == 4)
- MISIS.remove_student(command[1] + " " + command[2] + " " + command[3]);
- else
- Console.WriteLine("Не верно задана команда.");
- break;
- case "sort_by_date":
- if (command.Count() == 2)
- {
- if (command[1] == "up")
- {
- MISIS.sort_by_date_up();
- }
- else
- {
- MISIS.sort_by_date_down();
- }
- }
- else
- Console.WriteLine("Не верно задана команда.");
- break;
- case "sort_by_name" :
- if (command.Count() == 2)
- {
- if (command[1] == "up")
- {
- MISIS.sort_by_name_up();
- }
- else
- {
- MISIS.sort_by_name_down();
- }
- }
- else
- Console.WriteLine("Не верно задана команда.");
- break;
- case "find_by_name" :
- if(command.Count() == 4)
- MISIS.find_by_name(new string(command[1] + " " + command[2] + " " + command[3]));
- break;
- case "find_by_date" :
- MISIS.find_by_date(command[1]);
- break;
- case "max_middle_score" :
- MISIS.max_middle_score();
- break;
- case "min_middle_score" :
- MISIS.min_middle_score();
- break;
- case "middle_score" :
- MISIS.middle_middle_score();
- break;
- case "show" :
- MISIS.show();
- break;
- default :
- Console.WriteLine("Неизвестная команда, для получения полного списка команд введите HELP...");
- break;
- }
- Console.Write("<command> : ");
- command = Console.ReadLine().Split(" ");
- }
- stream.Close();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement