Last active
September 2, 2024 13:14
-
-
Save Soulstorm50/6bc9702d35ac33599132e8c6544808dc to your computer and use it in GitHub Desktop.
Класс Student Group C#
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Linq; | |
using System.Text; | |
using System.Threading.Tasks; | |
using System.Collections; | |
namespace ConsoleApplication10 | |
{ | |
class Program | |
{ | |
static void Main(string[] args) | |
{ | |
Student student = new Student(); | |
student.showStudentInfo(); | |
Console.WriteLine("------------------------------"); | |
student = new Student("Ivan", "Ivanovitch", "Ivanov", new DateTime(1985, 1, 1), "Deribasovskaya 10", "+38 093 111 22 33"); | |
student.fillCourseWorkMarkArrayWithMark(12); | |
student.fillCreditMarkArrayWithMark(12); | |
student.fillExamMarkArrayWithMark(12); | |
student.showStudentInfo(); | |
Console.WriteLine("Avarage mark: " + student.calculateAvarageMark()); | |
Console.WriteLine("\n------------------------------\n"); | |
Group group = new Group(); | |
group.showGroup(); | |
Console.WriteLine("\n------------------------------\n"); | |
group = new Group(2); | |
group.showGroup(); | |
Console.WriteLine("\n------------------------------\n"); | |
group = new Group("VPU-1521", "Programming", 1); | |
Student newStudent; | |
newStudent = new Student("Ivan", "Ivanovich", "Ivanov"); | |
newStudent.fillExamMarkArrayWithMark(12); | |
group.addStudent(newStudent); | |
newStudent = new Student("Alexander", "Alexandrovitch", "Alexandrov"); | |
newStudent.fillExamMarkArrayWithMark(10); | |
group.addStudent(newStudent); | |
newStudent = new Student("Semen", "Semenovitch", "Semenov"); | |
newStudent.fillExamMarkArrayWithMark(3); | |
group.addStudent(newStudent); | |
newStudent = new Student("Nikolay", "Nikolaeivitch", "Nikolaev"); | |
newStudent.fillExamMarkArrayWithMark(2); | |
group.addStudent(newStudent); | |
group.showGroup(); | |
Console.WriteLine("\n------------------------------\n"); | |
group.deleteStudentWithLowestMark(); | |
group.showGroup(); | |
Console.WriteLine("\n------------------------------\n"); | |
group.setStudentData(0, "Vasiliy", "Vasilevitch", "Vasilev"); | |
group.showGroup(); | |
Console.WriteLine("\n------------------------------\n"); | |
Group group2 = new Group("VPU-1111", "Coding", 1); | |
group.moveStudentToAnotherGroup(0, group2); | |
group.showGroup(); | |
Console.WriteLine("\n------------------------------\n"); | |
group2.showGroup(); | |
} | |
} | |
public class Student | |
{ | |
private String name; | |
private String fatherName; | |
private String surname; | |
private DateTime birthday; | |
private String address; | |
private String phoneNumber; | |
private static int courseWorkCount = 5; | |
private static int creditCount = 5; | |
private static int examCount = 5; | |
private int[] courseWorkMarks = new int[courseWorkCount]; | |
private int[] creditMarks = new int[creditCount]; | |
private int[] examMarks = new int[examCount]; | |
public Student(String name, String fatherName, String surname, | |
DateTime birthday, String address, String phoneNumber) | |
{ | |
setName(name); | |
setFatherName(fatherName); | |
setSurname(surname); | |
setBirthday(birthday); | |
setAddress(address); | |
setPhoneNumber(phoneNumber); | |
fillDefaultMarkValues(); | |
} | |
public Student() : this("Unknown", "Unknown", "Unknown", new DateTime(1900, 1, 1), "", "") { } | |
public Student(String name, String fatherName, String surname) : | |
this(name, fatherName, surname, new DateTime(1900, 1, 1), "", "") | |
{ } | |
public void setName(String name) | |
{ | |
this.name = name; | |
} | |
public void setFatherName(String fatherName) | |
{ | |
this.fatherName = fatherName; | |
} | |
public void setSurname(String surname) | |
{ | |
this.surname = surname; | |
} | |
public void setBirthday(DateTime birthday) | |
{ | |
this.birthday = birthday; | |
} | |
public void setAddress(String address) | |
{ | |
this.address = address; | |
} | |
public void setPhoneNumber(String phoneNumber) | |
{ | |
this.phoneNumber = phoneNumber; | |
} | |
public void setCourseWorkMark(int mark, int index) | |
{ | |
if ((index > courseWorkCount - 1) || (index < 0)) | |
{ | |
return;//an exception should be here | |
} | |
courseWorkMarks[index] = mark; | |
} | |
public void setCreditkMark(int mark, int index) | |
{ | |
if ((index > creditCount - 1) || (index < 0)) | |
{ | |
return;//an exception should be here | |
} | |
creditMarks[index] = mark; | |
} | |
public void setExamMark(int mark, int index) | |
{ | |
if ((index > examCount - 1) || (index < 0)) | |
{ | |
return;//an exception should be here | |
} | |
examMarks[index] = mark; | |
} | |
public String getName() | |
{ | |
return name; | |
} | |
public String getFatherName() | |
{ | |
return fatherName; | |
} | |
public String getSurname() | |
{ | |
return surname; | |
} | |
public DateTime getBirthday() | |
{ | |
return birthday; | |
} | |
public String getAddress() | |
{ | |
return address; | |
} | |
public int getCourseWorkMark(int index) | |
{ | |
if ((index > courseWorkCount - 1) || (index < 0)) | |
{ | |
return 0;//an exception should be here | |
} | |
return courseWorkMarks[index]; | |
} | |
public int getCreditMark(int index) | |
{ | |
if ((index > examCount - 1) || (index < 0)) | |
{ | |
return 0;//an exception should be here | |
} | |
return examMarks[index]; | |
} | |
public int getExamMark(int index) | |
{ | |
if ((index > examCount - 1) || (index < 0)) | |
{ | |
return 0;//an exception should be here | |
} | |
return examMarks[index]; | |
} | |
public void showStudentInfo() | |
{ | |
Console.WriteLine("Name: " + name); | |
Console.WriteLine("Father name: " + fatherName); | |
Console.WriteLine("Surname: " + surname); | |
Console.WriteLine("Birthday: " + birthday.ToString()); | |
Console.WriteLine("Address: " + address); | |
Console.WriteLine("Phone number: " + phoneNumber); | |
showMarks(); | |
} | |
public int calculateAvarageMark() | |
{ | |
int summMark = 0; | |
int divider = 0; | |
calculateCreditMarkSumm(ref summMark, ref divider); | |
calculateCourseWorkMarkSumm(ref summMark, ref divider); | |
calculateExamMarkSumm(ref summMark, ref divider); | |
if (divider == 0) | |
return 0; | |
else | |
return summMark / divider; | |
} | |
public void fillCreditMarkArrayWithMark(int mark) | |
{ | |
for (int i = 0; i < creditMarks.Length; i++) | |
{ | |
setCreditkMark(mark, i); | |
} | |
} | |
public void fillCourseWorkMarkArrayWithMark(int mark) | |
{ | |
for (int i = 0; i < courseWorkMarks.Length; i++) | |
{ | |
setCourseWorkMark(mark, i); | |
} | |
} | |
public void fillExamMarkArrayWithMark(int mark) | |
{ | |
for (int i = 0; i < examMarks.Length; i++) | |
{ | |
setExamMark(mark, i); | |
} | |
} | |
private void calculateCreditMarkSumm(ref int summMark, ref int divider) | |
{ | |
divider++; | |
for (int i = 0; i < creditMarks.Length; i++) | |
{ | |
summMark += creditMarks[i]; | |
} | |
} | |
private void calculateCourseWorkMarkSumm(ref int summMark, ref int divider) | |
{ | |
divider++; | |
for (int i = 0; i < courseWorkMarks.Length; i++) | |
{ | |
summMark += courseWorkMarks[i]; | |
} | |
} | |
private void calculateExamMarkSumm(ref int summMark, ref int divider) | |
{ | |
divider++; | |
for (int i = 0; i < examMarks.Length; i++) | |
{ | |
summMark += examMarks[i]; | |
} | |
} | |
private void showMarks() | |
{ | |
showCourseWorkMarks(); | |
showCreditkMarks(); | |
showExamMarks(); | |
} | |
private void showCourseWorkMarks() | |
{ | |
Console.Write("Couse work marks: "); | |
for (int i = 0; i < courseWorkMarks.Length; i++) | |
{ | |
Console.Write("{0, 4}", courseWorkMarks[i]); | |
} | |
Console.WriteLine(); | |
} | |
private void showCreditkMarks() | |
{ | |
Console.Write("Credit marks: "); | |
for (int i = 0; i < creditMarks.Length; i++) | |
{ | |
Console.Write("{0, 4}", creditMarks[i]); | |
} | |
Console.WriteLine(); | |
} | |
private void showExamMarks() | |
{ | |
Console.Write("Exam marks: "); | |
for (int i = 0; i < examMarks.Length; i++) | |
{ | |
Console.Write("{0, 4}", examMarks[i]); | |
} | |
Console.WriteLine(); | |
} | |
private void fillDefaultMarkValues() | |
{ | |
fillArrayWithZero(courseWorkMarks); | |
fillArrayWithZero(creditMarks); | |
fillArrayWithZero(examMarks); | |
} | |
private void fillArrayWithZero(int[] markArray) | |
{ | |
for (int i = 0; i < markArray.Length; i++) | |
markArray[i] = 0; | |
} | |
} | |
public class SurnameCompare : IComparer | |
{ | |
public int Compare(object a, object b) | |
{ | |
Student studentA = (Student)a; | |
Student studentB = (Student)b; | |
return studentA.getSurname().CompareTo(studentB.getSurname()); | |
} | |
} | |
public class Group | |
{ | |
private Student[] students; | |
private int studentCount; | |
private String groupName; | |
private String groupSpecialization; | |
private int courseNumber; | |
public void addStudent(Student new_student) | |
{ | |
Student[] prev_students = this.students; | |
students = new Student[studentCount + 1]; | |
if (prev_students != null) | |
{ | |
for (int i = 0; i < prev_students.Length; i++) | |
{ | |
students[i] = prev_students[i]; | |
} | |
} | |
students[studentCount] = new_student; | |
studentCount++; | |
sortStudentsBySurname(); | |
} | |
public Student getStudentByIndex(int index) | |
{ | |
if (index < 0 || index > students.Length - 1) | |
return null;//must be exception; | |
else | |
return students[index]; | |
} | |
public void deleteStudentByIndex(int index) | |
{ | |
if (index < 0 || index > students.Length - 1) | |
return;//must be exception; | |
Student[] prev_students = this.students; | |
students = new Student[studentCount - 1]; | |
int shift = 0; | |
for (int i = 0; i < prev_students.Length; i++) | |
{ | |
if (i == index) | |
{ | |
shift++; | |
continue; | |
} | |
students[i - shift] = prev_students[i]; | |
} | |
studentCount--; | |
sortStudentsBySurname(); | |
} | |
public void setStudentCount(int studentCount) | |
{ | |
this.studentCount = studentCount; | |
} | |
public int getStudnetCount() | |
{ | |
return studentCount; | |
} | |
public void setGroupName(String groupName) | |
{ | |
this.groupName = groupName; | |
} | |
public String getGroupName() | |
{ | |
return groupName; | |
} | |
public void setGroupSpecialization(String groupSpecialization) | |
{ | |
this.groupSpecialization = groupSpecialization; | |
} | |
public String getGroupSpecialization() | |
{ | |
return groupSpecialization; | |
} | |
public void setCourseNumber(int courseNumber) | |
{ | |
this.courseNumber = courseNumber; | |
} | |
public int getCourseNumber() | |
{ | |
return courseNumber; | |
} | |
public void showGroup() | |
{ | |
Console.WriteLine("Group name: " + groupName); | |
Console.WriteLine("Group spesialization: " + groupSpecialization); | |
Console.WriteLine("Course number: " + courseNumber.ToString()); | |
Console.WriteLine("Student count: " + studentCount.ToString()); | |
Console.WriteLine("----------------------------------------"); | |
for (int i = 0; i < students.Length; i++) | |
{ | |
Console.WriteLine((i + 1).ToString() + ". " + students[i].getSurname() + " " + students[i].getName() + | |
" " + students[i].getFatherName() + ", " + students[i].calculateAvarageMark().ToString()); | |
} | |
} | |
public Group() | |
{ | |
fillGroupAttributesWithDefaultValues(); | |
addStudentAutomaticaly(10); | |
} | |
public Group(int studentCount) | |
{ | |
fillGroupAttributesWithDefaultValues(); | |
addStudentAutomaticaly(studentCount); | |
} | |
public Group(Student[] students) | |
{ | |
fillGroupAttributesWithDefaultValues(); | |
foreach (var item in students) | |
{ | |
addStudent(item); | |
} | |
} | |
public Group(String groupName, String groupSpecialization, int courseNumber) | |
{ | |
setGroupName(groupName); | |
setGroupSpecialization(groupSpecialization); | |
setCourseNumber(courseNumber); | |
} | |
public void deleteStudentWithLowestMark() | |
{ | |
if (studentCount == 0) | |
{ | |
return; | |
} | |
int index = 0; | |
int lowestMark = 1000; | |
for (int i = 0; i < students.Length; i++) | |
{ | |
if (students[i].calculateAvarageMark() < lowestMark) | |
{ | |
lowestMark = students[i].calculateAvarageMark(); | |
index = i; | |
} | |
} | |
deleteStudentByIndex(index); | |
} | |
public void setStudentData(int studentIndex, String name, String fatherName, String surname) | |
{ | |
Student currentStudent = getStudentByIndex(studentIndex); | |
currentStudent.setName(name); | |
currentStudent.setFatherName(fatherName); | |
currentStudent.setSurname(surname); | |
sortStudentsBySurname(); | |
} | |
public void moveStudentToAnotherGroup(int studentIndex, Group newGroup) | |
{ | |
newGroup.addStudent(getStudentByIndex(studentIndex)); | |
deleteStudentByIndex(studentIndex); | |
} | |
private void fillGroupAttributesWithDefaultValues() | |
{ | |
setGroupName("Unknown"); | |
setGroupSpecialization("Unknown"); | |
setCourseNumber(0); | |
} | |
private void addStudentAutomaticaly(int count) | |
{ | |
for (int i = 0; i < count; i++) | |
{ | |
Student newStudent = new Student("Unknown" + i.ToString(), "Unknown" + i.ToString(), "Unknown" + i.ToString()); | |
newStudent.fillCourseWorkMarkArrayWithMark(i + 1); | |
newStudent.fillCreditMarkArrayWithMark(i + 1); | |
newStudent.fillExamMarkArrayWithMark(i + 1); | |
addStudent(newStudent); | |
} | |
} | |
private void sortStudentsBySurname() | |
{ | |
IComparer comparer = new SurnameCompare(); | |
Array.Sort(students, comparer); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment