Задание 3
Изменить программу, созданную С# на основе задания 4 лабораторной работы № 4. В метод ввода значений полей класса индивидуального варианта добавить проверку допустимости вводимых значений. В случае недопустимых значений полей выбрасывать исключения, которые необходимо обработать в методе main() главного класса программы.
Пример 3
В листинге 3 представлена программа, в которой формируется исходный список студентов, список студентов с минимальным рейтингом, а также осуществляется поиск информации о рейтинге студента по его фамилии. Исходный список студента сортируется по фамилии в алфавитном порядке. В методе input выполняется проверка вводимых значений для поля рейтинг (grade). Рейтинг студента должен быть целым числом в диапазоне от 0 до 100.
Для создания программы использовалась среда разработки MS Visual C# 2010 Express.
Создание проекта в MS Visual C# 2010 Express: Файл -> Создать проект -> Консольное приложение.
Компиляция, сборка и выполнение проекта: Отладка -> Начать отладку (F5).
На рисунке 5 показан результат выполнения программы.
Листинг 3
using System;
namespace Primer3
{
class Student : IComparable<Student>
{
private string fam;
private string name;
private int grade; //рейтинг
public Student(string fam, string name, int grade)
{
this.fam = fam;
this.name = name;
this.grade = grade;
}
public Student() { }
public String getfam() { return fam; }
public String getname() { return name; }
public int getgrade() { return grade; }
public void input()
{
Console.Write("Фамилия: "); fam = Console.ReadLine();
Console.Write("Имя: "); name = Console.ReadLine();
Console.Write("Рейтинг: "); grade = int.Parse(Console.ReadLine());
if (grade < 0 || grade > 100)
throw new Exception("Ошибка: Рейтинг должен быть от 0 до 100!");
}
public void output()
{
Console.Write("{0,-15}{1,-15}{2}\n", fam, name, grade);
}
public int CompareTo(Student obj)
{
return fam.CompareTo(obj.getfam());
}
}
class Program
{
public static void Main(String[] args)
{
try
{
Console.Write("Введите кол-во студентов: ");
int n = int.Parse(Console.ReadLine());
Student[] st = new Student[n];
for (int i = 0; i < st.Length; i++)
{
st[i] = new Student();
st[i].input();
}
Array.Sort(st);
Console.WriteLine("Список студентов: ");
Console.Write("{0,-15}{1,-15}{2,-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;
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,-15}{1,-15}{2,-10}\n", "Фамилия", "Имя", "Рейтинг");
for (int i = 0; i < st.Length; i++)
if (st[i].getgrade() == min)
st[i].output();
Console.ReadKey(true);
}
catch (FormatException e)
{ Console.WriteLine("Это НЕ число!!!" + e.Message);}
catch (Exception e)
{ Console.WriteLine(e.Message);}
Console.ReadLine();
}
}
}
Рисунок 5 – Результат выполнения программы