Skip to content

Instantly share code, notes, and snippets.

@Soulstorm50
Created March 11, 2017 17:26
Show Gist options
  • Save Soulstorm50/cac6995e6be9dfe6f1493356e71dda29 to your computer and use it in GitHub Desktop.
Save Soulstorm50/cac6995e6be9dfe6f1493356e71dda29 to your computer and use it in GitHub Desktop.
Класс Student Group with comments C# for doxygen
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), "", "")
{ }
/*!
Заполняет поле name в созданном экземпляре класса.
Принимает тип данных String
*/
public void setName(String name)
{
this.name = name;
}
/*!
Заполняет поле fatherName в созданном экземпляре класса.
Принимает тип данных String
*/
public void setFatherName(String fatherName)
{
this.fatherName = fatherName;
}
/*!
Заполняет поле surname в созданном экземпляре класса.
Принимает тип данных String
*/
public void setSurname(String surname)
{
this.surname = surname;
}
/*!
Заполняет поле birthday в созданном экземпляре класса.
Принимает тип данных DateTime
*/
public void setBirthday(DateTime birthday)
{
this.birthday = birthday;
}
/*!
Заполняет поле address в созданном экземпляре класса.
Принимает тип данных String
*/
public void setAddress(String address)
{
this.address = address;
}
/*!
Заполняет поле phoneNumber в созданном экземпляре класса.
Принимает тип данных String
*/
public void setPhoneNumber(String phoneNumber)
{
this.phoneNumber = phoneNumber;
}
/*!
Заполняет поле CourseWorkMark в созданном экземпляре класса.
Принимает тип данных int
Возвращает int массив mark
*/
public void setCourseWorkMark(int mark, int index)
{
if ((index > courseWorkCount - 1) || (index < 0))
{
return;//an exception should be here
}
courseWorkMarks[index] = mark;
}
/*!
Заполняет поле CreditkMark в созданном экземпляре класса.
Принимает тип данных int
Возвращает int массив mark
*/
public void setCreditkMark(int mark, int index)
{
if ((index > creditCount - 1) || (index < 0))
{
return;//an exception should be here
}
creditMarks[index] = mark;
}
/*!
Заполняет поле ExamMark в созданном экземпляре класса.
Принимает тип данных int
Возвращает int массив mark
*/
public void setExamMark(int mark, int index)
{
if ((index > examCount - 1) || (index < 0))
{
return;//an exception should be here
}
examMarks[index] = mark;
}
/*!
Возвращает поле name в созданном экземпляре класса.
Tип данных String
*/
public String getName()
{
return name;
}
/*!
Возвращает поле fatherName в созданном экземпляре класса.
Tип данных String
*/
public String getFatherName()
{
return fatherName;
}
/*!
Возвращает поле Surname в созданном экземпляре класса.
Tип данных String
*/
public String getSurname()
{
return surname;
}
/*!
Возвращает поле birthday в созданном экземпляре класса.
Tип данных DateTime
*/
public DateTime getBirthday()
{
return birthday;
}
/*!
Возвращает поле address в созданном экземпляре класса.
Tип данных String
*/
public String getAddress()
{
return address;
}
/*!
Возвращает поле courseWorkMarks в созданном экземпляре класса.
Tип данных int массив
*/
public int getCourseWorkMark(int index)
{
if ((index > courseWorkCount - 1) || (index < 0))
{
return 0;//an exception should be here
}
return courseWorkMarks[index];
}
/*!
Возвращает поле CreditMark в созданном экземпляре класса.
Tип данных int массив
*/
public int getCreditMark(int index)
{
if ((index > examCount - 1) || (index < 0))
{
return 0;//an exception should be here
}
return examMarks[index];
}
/*!
Возвращает поле ExamMark в созданном экземпляре класса.
Tип данных int массив
*/
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();
}
/*!
Возвращает поле средний бал студента в созданном экземпляре класса.
Tип данных int
*/
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;
}
/*!
Заполняет поля CreditkMark в созданном экземпляре класса.
Принимает тип данных int
*/
public void fillCreditMarkArrayWithMark(int mark)
{
for (int i = 0; i < creditMarks.Length; i++)
{
setCreditkMark(mark, i);
}
}
/*!
Заполняет поля courseWorkMarks в созданном экземпляре класса.
Принимает тип данных int
*/
public void fillCourseWorkMarkArrayWithMark(int mark)
{
for (int i = 0; i < courseWorkMarks.Length; i++)
{
setCourseWorkMark(mark, i);
}
}
/*!
Заполняет поля examMarks в созданном экземпляре класса.
Принимает тип данных int
*/
public void fillExamMarkArrayWithMark(int mark)
{
for (int i = 0; i < examMarks.Length; i++)
{
setExamMark(mark, i);
}
}
/*!
Заполняет поля creditMarks в созданном экземпляре класса.
Принимает тип данных int
*/
private void calculateCreditMarkSumm(ref int summMark, ref int divider)
{
divider++;
for (int i = 0; i < creditMarks.Length; i++)
{
summMark += creditMarks[i];
}
}
/*!
Заполняет поля courseWorkMarks в созданном экземпляре класса.
Принимает тип данных int
*/
private void calculateCourseWorkMarkSumm(ref int summMark, ref int divider)
{
divider++;
for (int i = 0; i < courseWorkMarks.Length; i++)
{
summMark += courseWorkMarks[i];
}
}
/*!
Заполняет поля examMarks в созданном экземпляре класса.
Принимает тип данных int
*/
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();
}
/*!
Выводит в консоли CourseWorkMarks в созданном экземпляре класса.
*/
private void showCourseWorkMarks()
{
Console.Write("Couse work marks: ");
for (int i = 0; i < courseWorkMarks.Length; i++)
{
Console.Write("{0, 4}", courseWorkMarks[i]);
}
Console.WriteLine();
}
/*!
Выводит в консоли CreditkMarks в созданном экземпляре класса.
*/
private void showCreditkMarks()
{
Console.Write("Credit marks: ");
for (int i = 0; i < creditMarks.Length; i++)
{
Console.Write("{0, 4}", creditMarks[i]);
}
Console.WriteLine();
}
/*!
Выводит в консоли ExamMarks в созданном экземпляре класса.
*/
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);
}
}
}
@LewisLynch
Copy link

LewisLynch commented Jan 25, 2020

I read that code, I can't say it's clear. So far I am only a beginner in IT and I try to gradually understand everything. Since I'm still at university, I'm helping my teachers to create a base. There is another category of people I help, the students. Help consists of working on the site, click here to read which is one of the leading help services for British students. The service specialises in writing personal statement for students. I try to combine these two useful things. I'm even kind of glad I can help everyone. And if it's about this code, in the near future I want to put it into practice and provide it to our university director. To automate the learning process.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment