Задание 3
Изменить программу, созданную на C# на основе задания 4 лабораторной работы № 4. Добавить в класс, созданный на основе индивидуального варианта, поле типа DateTime и выполнить сортировку объектов по этому полю. Использовать в программе перечислимый тип данных.
Пример 3
В листинге 3 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, осуществляется поиск информации о рейтинге студента по его фамилии, а также формируется список студентов заочников. Исходный список студентов сортируется по дате рождения. Для описания даты рождения студента используется тип DateTime. В программе используется перечислимый тип данных для задания формы обучения студента.
Для создания программы использовалась среда разработки MS Visual C# 2010 Express.
Создание проекта в MS Visual C# 2010 Express: Файл -> Создать проект -> Консольное приложение.
Компиляция, сборка и выполнение проекта: Отладка -> Начать отладку (F5).
На рисунке 5 показан результат выполнения программы.
Листинг 3
using System;
namespace Primer
{ enum Type
{ OCH,
ZAOCH,
VECH
}
class Student : IComparable<Student>
{
private string fam;
private string name;
private int grade; //рейтинг
private Type typeob;
private DateTime date;
public Student(String fam, String name, int grade, Type typeob, DateTime date)
{
this.fam = fam;
this.name = name;
this.grade = grade;
this.date = date;
this.typeob = typeob;
}
public Student() { }
public String getfam() { return fam; }
public String getname() { return name; }
public int getgrade() { return grade; }
public DateTime getdate() { return date; }
public Type gettypeob() { return typeob; }
public void output()
{
Console.Write("{0,-10}{1,-10}{2,4:d} {3,-15}{4,-10}\n",
fam, name, grade, typeob, date.ToString("dd.MM.yyyy"));
}
public int CompareTo(Student obj)
{
return date.CompareTo(obj.getdate());
}
}
class Program
{
public static void Main(string[] args)
{
DateTime dt1 = new DateTime(1991, 6, 1);
DateTime dt2 = new DateTime(1990, 1, 15);
DateTime dt3 = new DateTime(1991, 12, 25);
Student[] st = new Student[3];
st[0] = new Student("Сидоров", "Петр", 80, Type.OCH, dt1);
st[1] = new Student("Петров", "Петр", 56, Type.ZAOCH, dt2);
st[2] = new Student("Иванов", "Иван", 70, Type.ZAOCH, dt3);
Array.Sort(st);
Console.WriteLine("Список студентов: ");
Console.Write("{0,-10}{1,-10}{2,-10}{3,-15}{4,-10}\n", "Фамилия", "Имя", "Рейтинг", "Форма обуч", "Дата рождения");
for (int i = 0; i < st.Length; i++)
st[i].output();
int min = st[0].getgrade();
for (int i = 0; i < st.Length; i++)
if (st[i].getgrade() < min)
min = st[i].getgrade();
Console.Write("Укажите фамилию студента: ");
string fam = Console.ReadLine();
string f; int fl = 0;
int pr = 0;
for (int i = 0; i < st.Length; i++)
{
f = st[i].getfam();
if (f.Equals(fam))
{
Console.Write("Рейтинг студента " + fam + " - " + st[i].getgrade());
fl = 1;
}
}
if (fl == 0) Console.Write("Нет в списке студента " + fam);
Console.WriteLine("\nСписок студентов с минимальным рейтингом: ");
Console.Write("{0,-10}{1,-10}{2,-10}{3,-15}{4,-10}\n", "Фамилия", "Имя", "Рейтинг", "Форма обуч", "Дата рождения");
for (int i = 0; i < st.Length; i++)
if (st[i].getgrade() == min)
st[i].output();
for (int i = 0; i < st.Length; i++)
if (st[i].gettypeob() == Type.ZAOCH)
{ pr = 1; break; }
if (pr == 1)
{
Console.WriteLine("\nСписок студентов заочников: ");
Console.Write("{0,-10}{1,-10}{2,-10}{3,-15}{4,-10}\n", "Фамилия", "Имя", "Рейтинг", "Форма обуч", "Дата рождения");
for (int i = 0; i < st.Length; i++)
if (st[i].gettypeob() == Type.ZAOCH)
st[i].output();
}
else Console.Write("Нет студентов заочников");
Console.ReadKey(true);
}
}
}
Рисунок 5 – Результат выполнения программы