Advertisement
Guest User

Untitled

a guest
Oct 24th, 2014
140
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 6.45 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5. using System.Threading.Tasks;
  6.  
  7. namespace PrIn_LabRab5
  8. {
  9.  
  10.     class StudentGroup
  11.     {
  12.         private List<Student> allStudents;
  13.         public StudentGroup(List<Student> students)
  14.         {
  15.             allStudents = students;
  16.         }
  17.         public List<Student> AllStudents
  18.         {
  19.             get
  20.             {
  21.                 return this.allStudents;
  22.             }
  23.         }
  24.         public StudentGroup(Student firstStudent)
  25.         {
  26.             allStudents = new List<Student>();
  27.             allStudents.Insert(0, firstStudent);
  28.         }
  29.         public void AddNewStudent(Student newStudent)
  30.         {
  31.             allStudents.Insert(allStudents.Count, newStudent);
  32.         }
  33.         public void AddNewStudent(string firstName, string secondName, float perfomance)
  34.         {
  35.             Student newStudent = new Student(firstName, secondName, perfomance);
  36.             /*По умолчанию будем все вставлять в конец списка*/
  37.             allStudents.Insert(allStudents.Count, newStudent);
  38.         }
  39.         public void AddNewStudent(string firstName, string secondName, float performance, int dayOfBirth, int monthOfBirth, int yearOfBirth)
  40.         {
  41.             Student newStudent = new Student(firstName, secondName, performance, dayOfBirth, monthOfBirth, yearOfBirth);
  42.             allStudents.Insert(allStudents.Count, newStudent);
  43.         }
  44.         public bool RemoveStudent(string firstName, string secondName, int dayOfBirth, int monthOfBirth, int yearOfBirth)
  45.         {
  46.  
  47.             List<Student>.Enumerator iter = this.allStudents.GetEnumerator();
  48.             bool flag1, flag2, flag3;
  49.             while (iter.MoveNext())
  50.             {
  51.                 flag1 = (iter.Current.GetFirstName() == firstName);
  52.                 flag2 = (iter.Current.GetSecondName() == secondName);
  53.                 flag3 = (iter.Current.birthDay == new BirthDay(dayOfBirth, monthOfBirth, yearOfBirth));
  54.                 if (flag1 && flag2 && flag3)
  55.                 {
  56.                     return (allStudents.Remove(iter.Current));
  57.                 }
  58.             }
  59.             return false;
  60.         }
  61.         public bool RemoveStudent(Student studentForRemove)
  62.         {
  63.             return (this.allStudents.Remove(studentForRemove));
  64.         }
  65.         public Student this[int index]
  66.         {
  67.             get
  68.             {
  69.                 try
  70.                 {
  71.                     return allStudents[index];
  72.                 }
  73.                 catch
  74.                 {
  75.                     Console.WriteLine("List out or range");
  76.                     return null;
  77.                 }
  78.             }
  79.             set
  80.             {
  81.                 try
  82.                 {
  83.                     allStudents[index] = value;
  84.                 }
  85.                 catch
  86.                 {
  87.                     Console.WriteLine("List out of range");
  88.                 }
  89.             }
  90.         }
  91.         public StudentGroup GetStudentGroupInOrderBy(string tag)
  92.         {
  93.             try
  94.             {
  95.                 int quantityStudents = this.allStudents.Count;
  96.                 object[] sourceData = new object[quantityStudents];
  97.                 object[] sortedData = new object[quantityStudents];
  98.                 List<Student> sortedStudents = new List<Student>(quantityStudents);
  99.                 Student currentStudent;
  100.                 for (int i = 0; i < quantityStudents; ++i)
  101.                 {
  102.                     currentStudent = this.allStudents[i];
  103.                     if (tag == "FirstName")
  104.                     {
  105.                         sortedData[i] = currentStudent.GetFirstName();
  106.                     }
  107.                     else if (tag == "SecondName")
  108.                     {
  109.                         sortedData[i] = currentStudent.GetSecondName();
  110.                     }
  111.                     else if (tag == "DateOfBirthday")
  112.                     {
  113.                         sortedData[i] = currentStudent.birthDay.GetWriteOfBirth();
  114.                     }
  115.                 }
  116.                 Array.Copy(sortedData, sourceData, quantityStudents);
  117.                 Array.Sort(sortedData);
  118.                 /*Номер исходного индекса в группе студента для упорядочивания в новом*/
  119.                 int numberOfSourceIndexStudent;
  120.                 object tempDataForSearch;
  121.                 for (int i = 0; i < quantityStudents; ++i)
  122.                 {
  123.                     tempDataForSearch = sortedData[i];
  124.                     numberOfSourceIndexStudent = Array.IndexOf(sourceData, tempDataForSearch);
  125.                     /*Вычеркиваем информацию в случае, если есть в списке присутствует ей подобная*/
  126.                     sourceData[numberOfSourceIndexStudent] = "";
  127.                     sortedStudents.Insert(i, allStudents[numberOfSourceIndexStudent]);
  128.                 }
  129.                 return (new StudentGroup(sortedStudents));
  130.             }
  131.             catch (Exception e)
  132.             {
  133.                 Console.WriteLine("Error: " + e.Message);
  134.                 /*Возвращаем исходный, чтобы не обнулять возвратом null*/
  135.                 return this;
  136.             }
  137.         }
  138.         public bool HaveStudent(string firstName, string secondName)
  139.         {
  140.             List<Student>.Enumerator iter = allStudents.GetEnumerator();
  141.             bool flagFName;
  142.             bool flagSName;
  143.             while (iter.MoveNext())
  144.             {
  145.                 Student temp = iter.Current;
  146.                 flagFName = (temp.GetFirstName() == firstName);
  147.                 flagSName = (temp.GetSecondName() == secondName);
  148.                 if (flagSName && flagFName)
  149.                 {
  150.                     return true;
  151.                 }
  152.             }
  153.             return false;
  154.         }
  155.         public void ShowList()
  156.         {
  157.             Console.WriteLine();
  158.             foreach (Student currentStudent in this.AllStudents)
  159.             {
  160.                 Console.WriteLine("First Name: {0}, Second Name: {1}", currentStudent.GetFirstName(), currentStudent.GetSecondName());
  161.             }
  162.         }
  163.         public static StudentGroup operator+ (StudentGroup currentGroup, Student newStudent)
  164.         {
  165.             currentGroup.AddNewStudent(newStudent);
  166.             return currentGroup;
  167.         }
  168.     }
  169. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement