Skip to content

Instantly share code, notes, and snippets.

@Soulstorm50
Last active February 15, 2023 07:56
Show Gist options
  • Save Soulstorm50/6bc9702d35ac33599132e8c6544808dc to your computer and use it in GitHub Desktop.
Save Soulstorm50/6bc9702d35ac33599132e8c6544808dc to your computer and use it in GitHub Desktop.
Класс Student Group C#
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