Guest User

Untitled

a guest
Nov 13th, 2018
87
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.20 KB | None | 0 0
  1. [Serializable]
  2. class Student
  3. {
  4. public string name;
  5. public string surname;
  6. public string patronymic;
  7.  
  8. int bookNum;
  9.  
  10. readonly string fullName;
  11. readonly int programmingAvg, AdminAvg, DesignAvg, allAvg;
  12.  
  13.  
  14. public DateTime dt;
  15. public int[][] marks = null;
  16. const int max = 12, min = 1;
  17. public enum Subject { Programming, Admin, Design };
  18. static string collageName = "Cambridge";
  19. static int studentCounter = 0;
  20.  
  21. public Student(int[][] m, string name = "null", string surname = "null", string patronymic = "null", int year = 1999, int month = 1, int day = 1)
  22. {
  23. int[] @null = new int[1] { 1 };
  24. bookNum = ++studentCounter;
  25. dt = new DateTime(year, month, day);
  26. this.name = name;
  27. this.surname = surname;
  28. this.patronymic = patronymic;
  29. marks = new int[3][];
  30. RemoveDigits();
  31. fullName = this.name + " " + this.surname + " " + this.patronymic;
  32. if (m != null)
  33. setMarksProgramming(m[0]);
  34. else
  35. setMarksProgramming(@null);
  36. if (m != null)
  37. setMarksAdmin(m[1]);
  38. else
  39. setMarksAdmin(@null);
  40. if (m != null)
  41. setMarksDesign(m[2]);
  42. else
  43. setMarksDesign(@null);
  44. programmingAvg = marks[0].Sum() / marks[0].Length;
  45. AdminAvg = marks[1].Sum() / marks[1].Length;
  46. DesignAvg = marks[2].Sum() / marks[2].Length;
  47. allAvg = (programmingAvg + AdminAvg + DesignAvg) / 3;
  48. }
  49. public string Name
  50. {
  51. set { if (!string.IsNullOrEmpty(value)) this.name = value; else this.name = "null"; }
  52. get { return name; }
  53. }
  54. public string Surame
  55. {
  56. set { if (!string.IsNullOrEmpty(value)) this.surname = value; else this.surname = "null"; }
  57. get { return surname; }
  58. }
  59. public int Group { set; get; }
  60. public string Patronymic
  61. {
  62. set { if (!string.IsNullOrEmpty(value)) this.patronymic = value; else this.patronymic = "null"; }
  63. get { return patronymic; }
  64. }
  65. private void RemoveDigits()
  66. {
  67. name = Regex.Replace(name, "[0-9]", "", RegexOptions.IgnoreCase);
  68. surname = Regex.Replace(surname, "[0-9]", "", RegexOptions.IgnoreCase);
  69. patronymic = Regex.Replace(patronymic, "[0-9]", "", RegexOptions.IgnoreCase);
  70. }
  71. static public int countOfStudent() { return studentCounter; }
  72. public void setMarksProgramming(int[] param)
  73. {
  74. marks[0] = param;
  75. }
  76. public void setMarksAdmin(int[] param)
  77. {
  78. marks[1] = param;
  79. }
  80. public void setMarksDesign(int[] param)
  81. {
  82.  
  83. marks[2] = param;
  84. }
  85. public void SetMark(Subject subject, int numLesson, int mark)
  86. {
  87. if (subject == Subject.Programming)
  88. if (numLesson >= 0 && marks[0].Length > numLesson)
  89. if (mark <= max && mark >= min)
  90. marks[0][numLesson] = mark;
  91. else if (subject == Subject.Admin)
  92. if (numLesson >= 0 && marks[1].Length > numLesson)
  93. if (mark <= max && mark >= min)
  94. marks[1][numLesson] = mark;
  95. else if (subject == Subject.Design)
  96. if (numLesson >= 0 && marks[2].Length > numLesson)
  97. if (mark <= max && mark >= min)
  98. marks[2][numLesson] = mark;
  99. }
  100. public void clear()
  101. {
  102. Array.Clear(marks, 0, marks.Length);
  103. }
  104. public int AgeDate(DateTime DT)
  105. {
  106. return (DT - dt).Days / 365;
  107. }
  108. public int AgeNow
  109. {
  110. get { return (DateTime.Today - dt).Days / 365; }
  111. }
  112. public void print()
  113. {
  114. Console.Write($"n{fullName}n{AgeNow}n{programmingAvg} {AdminAvg} {DesignAvg} {allAvg}n{bookNum} {collageName}n");
  115. Console.Write("Programming: ");
  116. if (marks[0] != null)
  117. for (int i = 0; i < marks[0].Length; i++)
  118. Console.Write(marks[0][i] + " ");
  119. else
  120. Console.Write("NULL");
  121. Console.Write("nAdmin: ");
  122. if (marks[1] != null)
  123. for (int i = 0; i < marks[1].Length; i++)
  124. Console.Write(marks[1][i] + " ");
  125. else
  126. Console.Write("NULL");
  127. Console.Write("nDesign: ");
  128. if (marks[2] != null)
  129. for (int i = 0; i < marks[2].Length; i++)
  130. Console.Write(marks[2][i] + " ");
  131. else
  132. Console.Write("NULL");
  133. Console.Write("nn ");
  134. }
  135. static public int Max(Student[] m)
  136. {
  137. return m.Max(st => st.allAvg);
  138. }
  139. static public int Min(Student[] m)
  140. {
  141. return m.Min(st => st.allAvg);
  142. }
  143. static public int Count(Student[] m, int param)
  144. {
  145. if (param == 0)
  146. {
  147. return m.Count(st => st.programmingAvg >= 7);
  148. }
  149. else if (param == 1)
  150. {
  151. return m.Count(st => st.AdminAvg >= 7);
  152. }
  153. else if (param == 2)
  154. {
  155. return m.Count(st => st.DesignAvg >= 7);
  156. }
  157. else
  158. return -1;
  159. }
  160. }
  161. class FileWorker
  162. {
  163. public static void SaveStudent(Student student, string filename)
  164. {
  165. using (StreamWriter f = new StreamWriter(filename))
  166. {
  167.  
  168. BinaryFormatter formatter = new BinaryFormatter();
  169. using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate))
  170. {
  171. formatter.Serialize(fs, student);
  172. }
  173. }
  174. }
  175.  
  176. public static void LoadStudent(Student student, string filename)
  177. {
  178. using (StreamReader f = new StreamReader(filename))
  179. {
  180.  
  181. BinaryFormatter formatter = new BinaryFormatter();
  182. using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate))
  183. {
  184. student = (Student)formatter.Deserialize(fs);
  185. }
  186. }
  187. }
  188. }
  189. static void Main(string[] args)
  190. {
  191. int[][] m3 = new int[3][] { new int[4] { 5, 4, 6, 6, }, new int[5] { 7, 5, 5, 4, 6 }, new int[4] { 12, 8, 12, 9 } };
  192. Student a = new Student(m3, "Misha", "Onyuk", "Petrovich", 2001, 1, 31);
  193. a.print();
  194. FileWorker.SaveStudent(a, "fILE");
  195. Student b = new Student(null);
  196. FileWorker.LoadStudent(b, "fILE");
  197. b.print();
  198. }
  199.  
  200. //using (StreamWriter f = new StreamWriter(filename))
  201. //{
  202.  
  203. BinaryFormatter formatter = new BinaryFormatter();
  204. using (FileStream fs = new FileStream(filename, FileMode.OpenOrCreate))
  205. {
  206. formatter.Serialize(fs, student);
  207. }
  208. //}
Add Comment
Please, Sign In to add comment