Advertisement
Guest User

Untitled

a guest
Dec 9th, 2018
83
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 19.92 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.IO;
  4. using System.Linq;
  5. using System.Text;
  6.  
  7. namespace Students
  8. {
  9. class Program
  10. {
  11. public static string path = @"H:\INPUT.txt";
  12. public static StreamReader stream = new StreamReader(path);
  13.  
  14. public static void Help()
  15. {
  16. for (int i = 0; i < 44; ++i) Console.Write(" *");
  17. Console.WriteLine();
  18. Console.WriteLine("* read_student <count> - считать студента count раз." + new string(' ', 37) + '*');
  19. Console.WriteLine("* remove_student <name> - удалить студента по имени." + new string(' ', 37) + '*');
  20. Console.WriteLine("*" + new string(' ', 88) + '*');
  21. Console.WriteLine("* sort_by_date <up / down> - отсортировать студентов по Д.Р. (up - от старших к младшим, * \n* down - от младших к старшим) " + new string(' ', 56) + '*');
  22. Console.WriteLine("* sort_by_name <up / down> - отсортировать студентов по имени. (up - A-Z, down - Z-A)" + new string(' ', 4) + '*');
  23. Console.WriteLine("*" + new string(' ', 88) + '*');
  24. Console.WriteLine("* find_by_name <name> - поиск студента по имени." + new string(' ', 41) + '*');
  25. Console.WriteLine("* find_by_date <date> - поиск по Дате Рождения." + new string(' ', 42) + '*');
  26. Console.WriteLine("*" + new string(' ', 88) + '*');
  27. Console.WriteLine("* max_middle_score - максимальный средний балл среди учеников." + new string(' ', 27) + '*');
  28. Console.WriteLine("* min_middle_score - минимальный средний балл среди учеников." + new string(' ', 28) + '*');
  29. Console.WriteLine("* middle_score - средний балл всех учащихся." + new string(' ', 45) + '*');
  30. Console.WriteLine("*" + new string(' ', 88) + '*');
  31. Console.WriteLine("* show - вывести таблицу учащихся." + new string(' ', 55) + '*');
  32. for (int i = 0; i < 44; ++i) Console.Write(" *");
  33. Console.WriteLine();
  34. }
  35. public static string[] command;
  36.  
  37. struct Student
  38. {
  39. public string name;
  40. public int day, month, year;
  41. public string institute;
  42. public string group;
  43. public int course;
  44. public double mid_score;
  45. }
  46.  
  47. class Students
  48. {
  49. List<Student> students;
  50.  
  51. public Students()
  52. {
  53. students = new List<Student>();
  54. }
  55.  
  56. // Чтение студента из файла
  57. public void read_student(int count)
  58. {
  59. while (Convert.ToBoolean(count--))
  60. {
  61. if(stream.Peek() == -1)
  62. {
  63. Console.WriteLine("В файле недостаточно студентов.");
  64. return;
  65. }
  66. Student buff;
  67.  
  68. buff.name = stream.ReadLine();
  69. string[] date = stream.ReadLine().Split(".");
  70. buff.day = Convert.ToInt32(date[0]);
  71. buff.month = Convert.ToInt32(date[1]);
  72. buff.year = Convert.ToInt32(date[2]);
  73. buff.institute = stream.ReadLine();
  74. buff.group = stream.ReadLine();
  75. buff.course = Convert.ToInt32(stream.ReadLine());
  76. buff.mid_score = Convert.ToDouble(stream.ReadLine());
  77.  
  78. add_student(buff);
  79. }
  80. }
  81.  
  82. // Добавление студента
  83. public void add_student(Student new_student)
  84. {
  85. students.Add(new_student);
  86. Console.WriteLine("{0} добавлен(-a) в базу.", new_student.name);
  87. }
  88.  
  89. // Удаление студента по имени
  90. public void remove_student(string _name)
  91. {
  92. if (students.Count == 0)
  93. {
  94. Console.WriteLine("В БД не обнаружено ни одного студента!");
  95. return;
  96. }
  97.  
  98. int index = -1;
  99. for (int i = 0; i < students.Count; ++i)
  100. {
  101. if (students[i].name == _name)
  102. {
  103. index = i;
  104. break;
  105. }
  106. }
  107. if(index == -1)
  108. {
  109. Console.WriteLine("Студента с таким именем не существует.");
  110. return;
  111. }
  112. students.Remove(students[index]);
  113. Console.WriteLine("{0} : Удален из базы.", _name);
  114. }
  115.  
  116. //Сортировка по дате(по возрастанию)
  117. public void sort_by_date_up()
  118. {
  119. for(int i = 0; i < students.Count - 1; ++i)
  120. {
  121. for(int j = 0;j < students.Count - 1 - i; ++j)
  122. {
  123. if(students[j].year > students[j + 1].year)
  124. {
  125. Student tmp = new Student();
  126. tmp = students[j];
  127. students[j] = students[j + 1];
  128. students[j + 1] = tmp;
  129. }
  130. else if(students[j].year == students[j + 1].year)
  131. {
  132. if(students[j].month > students[j + 1].month)
  133. {
  134. Student tmp = new Student();
  135. tmp = students[j];
  136. students[j] = students[j + 1];
  137. students[j + 1] = tmp;
  138. }
  139. else if(students[j].month == students[j + 1].month)
  140. {
  141. if(students[j].day > students[j + 1].day)
  142. {
  143. Student tmp = new Student();
  144. tmp = students[j];
  145. students[j] = students[j + 1];
  146. students[j + 1] = tmp;
  147. }
  148. }
  149. }
  150. }
  151. }
  152. }
  153.  
  154. // Сортировка по дате(по убыванию)
  155. public void sort_by_date_down()
  156. {
  157. for (int i = 0; i < students.Count - 1; ++i)
  158. {
  159. for (int j = 0; j < students.Count - 1 - i; ++j)
  160. {
  161. if (students[j].year < students[j + 1].year)
  162. {
  163. Student tmp = new Student();
  164. tmp = students[j];
  165. students[j] = students[j + 1];
  166. students[j + 1] = tmp;
  167. }
  168. else if (students[j].year == students[j + 1].year)
  169. {
  170. if (students[j].month < students[j + 1].month)
  171. {
  172. Student tmp = new Student();
  173. tmp = students[j];
  174. students[j] = students[j + 1];
  175. students[j + 1] = tmp;
  176. }
  177. else if (students[j].month == students[j + 1].month)
  178. {
  179. if (students[j].day < students[j + 1].day)
  180. {
  181. Student tmp = new Student();
  182. tmp = students[j];
  183. students[j] = students[j + 1];
  184. students[j + 1] = tmp;
  185. }
  186. }
  187. }
  188. }
  189. }
  190. }
  191.  
  192. // Сортировка по имени(по возрастанию)
  193. public void sort_by_name_up()
  194. {
  195. for(int i = 0; i < students.Count - 1; ++i)
  196. {
  197. for(int j = 0; j < students.Count - 1 - i; ++j)
  198. {
  199. if(String.Compare(students[j].name, students[j + 1].name) == 1){
  200. Student tmp = new Student();
  201. tmp = students[j];
  202. students[j] = students[j + 1];
  203. students[j + 1] = tmp;
  204. }
  205. }
  206. }
  207. }
  208.  
  209. // Сортировка по имени(по убыванию)
  210. public void sort_by_name_down()
  211. {
  212. for (int i = 0; i < students.Count - 1; ++i)
  213. {
  214. for (int j = 0; j < students.Count - 1 - i; ++j)
  215. {
  216. if (String.Compare(students[j].name, students[j + 1].name) == -1)
  217. {
  218. Student tmp = new Student();
  219. tmp = students[j];
  220. students[j] = students[j + 1];
  221. students[j + 1] = tmp;
  222. }
  223. }
  224. }
  225. }
  226.  
  227. // Поиск по имени
  228. public int find_by_name(string _name)
  229. {
  230. if (students.Count == 0)
  231. {
  232. Console.WriteLine("В БД не обнаружено ни одного студента!");
  233. return -1;
  234. }
  235.  
  236. for (int i = 0; i < students.Count; ++i)
  237. {
  238. if (students[i].name == _name)
  239. {
  240. Console.WriteLine("Студент записан в списке под номером {0}.", i);
  241. return i;
  242. }
  243. }
  244. Console.WriteLine("Студента с такими именем не существует в БД");
  245. return -1;
  246. }
  247.  
  248. // Поиск по дате
  249. public int find_by_date(string _date)
  250. {
  251. if (students.Count == 0)
  252. {
  253. Console.WriteLine("В БД не обнаружено ни одного студента!");
  254. return -1;
  255. }
  256. string[] new_date = _date.Split('.');
  257. for (int i = 0; i < students.Count; ++i)
  258. {
  259. 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)
  260. {
  261. Console.WriteLine("Студент записан в списке под номером {0}.", i);
  262. return i;
  263. }
  264.  
  265. }
  266. Console.WriteLine("Студента с такой датой рождения не существует в БД");
  267. return -1;
  268. }
  269.  
  270. // Нахождение максимального среднего балла
  271. public double max_middle_score()
  272. {
  273. int index = -1;
  274. double max = -1;
  275. for(int i = 0; i < students.Count; ++i)
  276. {
  277. if(students[i].mid_score > max)
  278. {
  279. max = students[i].mid_score;
  280. index = i;
  281. }
  282. }
  283. if(index != -1)
  284. {
  285. Console.WriteLine("Максимальный средний балл : {0:F}\nИмя студента : {1}", students[index].mid_score, students[index].name);
  286. return max;
  287. }
  288. else
  289. {
  290. Console.WriteLine("Еще ни одного студента не добавлено в список!");
  291. return 0;
  292. }
  293. }
  294.  
  295. // Нахождение минимального среднего балла
  296. public double min_middle_score()
  297. {
  298. int index = -1;
  299. double min = -1;
  300. for (int i = 0; i < students.Count; ++i)
  301. {
  302. if (students[i].mid_score < min || min == -1)
  303. {
  304. min = students[i].mid_score;
  305. index = i;
  306. }
  307. }
  308. if (index != -1)
  309. {
  310. Console.WriteLine("Минимальный средний балл : {0:F}\nИмя студента : {1}", students[index].mid_score, students[index].name);
  311. return min;
  312. }
  313. else
  314. {
  315. Console.WriteLine("Еще ни одного студента не добавлено в список!");
  316. return 0;
  317. }
  318.  
  319. }
  320.  
  321. // Сумма средних баллов
  322. public double sum_ms()
  323. {
  324. double sum = 0;
  325. for(int i = 0; i < students.Count; ++i)
  326. {
  327. sum += students[i].mid_score;
  328. }
  329. return sum;
  330. }
  331.  
  332. // Среднее значение средних баллов
  333. public double middle_middle_score()
  334. {
  335. if (students.Count == 0)
  336. {
  337. Console.WriteLine("В БД не обнаружено ни одного студента!");
  338. return 0;
  339. }
  340.  
  341. Console.WriteLine("Среднее значение средних баллов студентов : {0:F}", sum_ms() / students.Count);
  342. return sum_ms() / Convert.ToDouble(students.Count);
  343. }
  344.  
  345. public void show()
  346. {
  347. if(students.Count == 0)
  348. {
  349. Console.WriteLine("В БД не обнаружено ни одного студента!");
  350. return;
  351. }
  352. Console.WriteLine(new string('-', 95));
  353. Console.WriteLine("| № | Имя студента | Дата Рождения | Институт | Группа | Курс | Ср.Б |");
  354. Console.WriteLine(new string('-', 95));
  355. for(int i = 0; i < students.Count; ++i)
  356. {
  357. string[] fio = students[i].name.Split();
  358. string date = new string(Convert.ToString(students[i].day) + '.' + Convert.ToString(students[i].month)+ '.' + Convert.ToString(students[i].year));
  359. Console.WriteLine("| " + (i + 1) + " | " + fio[0] + " " + fio[1][0] + '.' + fio[2][0] + '.' + new string(' ', 30 - fio[0].Length)
  360. + "| " + date + new string(' ', 10 - date.Length) + " | " + students[i].institute + new string(' ', 8 - students[i].institute.Length) + " | "
  361. + students[i].group + new string(' ', 9 - students[i].group.Length) + " | " + students[i].course + " | " + "{0:F1}" + " |", students[i].mid_score);
  362. Console.WriteLine(new string('-', 95));
  363. }
  364. }
  365. }
  366. static void Main(string[] args)
  367. {
  368. Students MISIS = new Students();
  369. Console.WriteLine("Введите HELP для просмотра списка команд, EXIT для завершения работы программы...");
  370. Console.Write("<command> : ");
  371. command = Console.ReadLine().Split(" ");
  372. while(command[0] != "EXIT") {
  373. switch (command[0])
  374. {
  375. case "HELP" :
  376. Help();
  377. break;
  378. case "read_student" :
  379. if (command.Count() > 1)
  380. MISIS.read_student(Convert.ToInt32(command[1]));
  381. else
  382. Console.WriteLine("Не верно задана команда.");
  383. break;
  384. case "remove_student" :
  385. if (command.Count() == 4)
  386. MISIS.remove_student(command[1] + " " + command[2] + " " + command[3]);
  387. else
  388. Console.WriteLine("Не верно задана команда.");
  389. break;
  390. case "sort_by_date":
  391. if (command.Count() == 2)
  392. {
  393. if (command[1] == "up")
  394. {
  395. MISIS.sort_by_date_up();
  396. }
  397. else
  398. {
  399. MISIS.sort_by_date_down();
  400. }
  401. }
  402. else
  403. Console.WriteLine("Не верно задана команда.");
  404. break;
  405. case "sort_by_name" :
  406. if (command.Count() == 2)
  407. {
  408. if (command[1] == "up")
  409. {
  410. MISIS.sort_by_name_up();
  411. }
  412. else
  413. {
  414. MISIS.sort_by_name_down();
  415. }
  416. }
  417. else
  418. Console.WriteLine("Не верно задана команда.");
  419. break;
  420. case "find_by_name" :
  421. if(command.Count() == 4)
  422. MISIS.find_by_name(new string(command[1] + " " + command[2] + " " + command[3]));
  423. break;
  424. case "find_by_date" :
  425. MISIS.find_by_date(command[1]);
  426. break;
  427. case "max_middle_score" :
  428. MISIS.max_middle_score();
  429. break;
  430. case "min_middle_score" :
  431. MISIS.min_middle_score();
  432. break;
  433. case "middle_score" :
  434. MISIS.middle_middle_score();
  435. break;
  436. case "show" :
  437. MISIS.show();
  438. break;
  439. default :
  440. Console.WriteLine("Неизвестная команда, для получения полного списка команд введите HELP...");
  441. break;
  442. }
  443.  
  444. Console.Write("<command> : ");
  445. command = Console.ReadLine().Split(" ");
  446. }
  447. stream.Close();
  448. }
  449. }
  450. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement