public static T ReadStudentsFromFile <T>(string filePath) where T : IEnumerable <Student> { List <Student> students = new List <Student>(); string line; try { StreamReader file = new StreamReader(filePath); while ((line = file.ReadLine()) != null) { string[] values = line.Split(';'); Student student = new Student(); foreach (string pair in values) { string[] pairVal = pair.Split(':'); if (pairVal.Length != 2) { continue; } string identifier = pairVal[0].Trim().ToLower(); string value = pairVal[1].Trim(); if (identifier.Equals("name")) { student.Name = value; } if (identifier.Equals("sirname")) { student.LastName = value; } if (identifier.Equals("homework")) { string[] grades = value.Split(','); int numeric; foreach (string grade in grades) { if (int.TryParse(grade, out numeric)) { if (numeric >= 0 && numeric <= 10) { student.AddHomeworkGrade(numeric); } else { Console.WriteLine("Namu darbo pazimys negali buti neigiama reiksme arba virsyti 10"); } } else { Console.WriteLine("Neisejo nuskaityti namu darbo pazymio [" + grade + "]"); } } } if (identifier.Equals("exam")) { int numeric; if (int.TryParse(value, out numeric)) { if (numeric >= 0 && numeric <= 10) { student.ExamGrade = numeric; } else { Console.WriteLine("Egzamino pazimys negali buti neigiama reiksme arba virsyti 10"); } } else { Console.WriteLine("Neisejo nuskaityti egzamino pazymio [" + value + "]"); } } } students.Add(student); } file.Close(); } catch (Exception e) { Console.WriteLine("Ivyko klaida skaitant faila:"); Console.WriteLine(e.Message); } return((T)Activator.CreateInstance(typeof(T), students)); }
private void generateStudentLists() { Console.Clear(); Stopwatch w = new Stopwatch(); w.Start(); Random r = new Random(); for (int i = 0; i < 7; i++) { List <Student> list = new List <Student>(); for (int j = 0; j < Math.Pow(10, i + 1); j++) { Student student = new Student(); student.Name = "Student_" + j; student.LastName = "Sirname_" + j; student.ExamGrade = r.Next(0, 11); for (int k = 0; k < 10; k++) { student.AddHomeworkGrade(r.Next(0, 11)); } student.getGradeAvg(false); list.Add(student); } Writer.WriteStudentsToFile("_" + Math.Pow(10, i + 1) + ".txt", list); list.Sort((o1, o2) => o1.AverageGrade.CompareTo(o2.AverageGrade)); int marker = list.Count / 2; int direction = 0; if (list.ElementAt(marker).AverageGrade >= 5.0f) { direction = -1; } else { direction = 1; } while (true) { marker += direction; if (direction > 0) { if (list.ElementAt(marker).AverageGrade >= 5.0f) { break; } } if (direction < 0) { if (list.ElementAt(marker).AverageGrade < 5.0f) { marker++; break; } } } Writer.WriteStudentsToFile("_" + Math.Pow(10, i + 1) + "_vargsiukai.txt", list.GetRange(0, marker)); Writer.WriteStudentsToFile("_" + Math.Pow(10, i + 1) + "_galvociai.txt", list.GetRange(marker, list.Count - marker)); } w.Stop(); Console.WriteLine("Ivykdyta per: " + w.ElapsedMilliseconds + "ms"); Run(); }