Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие СS_Шульга.doc
Скачиваний:
36
Добавлен:
12.02.2015
Размер:
703.49 Кб
Скачать

If (Enum.IsDefined(typeof(gender_type),value))

{

gender = value;

}

else gender = gender_type.unknown;

}

}

//***************Метод класса CStudent вывода полей объекта на экран****************

public void output()

{

Console.Write("Name= {0} speciality={1}", name.PadRight(10, ' '), speciality.PadRight(20, ' '));

if (gender == gender_type.male) Console.Write("gender= {0}", "муж ".PadRight(10, ' '));

else if (gender == gender_type.female) Console.Write("gender= {0}", "жен ".PadRight(10, ' '));

else Console.Write("gender= {0}", "не указан ".PadRight(10, ' '));

Console.WriteLine("year= {0,2}", year_tr);

}

//****************Метод класса CStudent ввода полей объекта на экран****************

// Для заполнения полей используются свойства класса Name, Speciality, Gender, Year;

public void input()

{

Console.WriteLine("Введите ФИО студента");

Name = Console.ReadLine();

Console.WriteLine("Введите специальность");

Speciality = Console.ReadLine();

Console.WriteLine("Введите пол (1-муж, 2 - жен)");

int g = int.Parse(Console.ReadLine());

switch (g)

{

case 1: Gender = gender_type.male; break;

case 2: Gender = gender_type.female; break;

default: Gender = gender_type.unknown; break;

}

Console.WriteLine("Введите номер курса ");

Year = int.Parse(Console.ReadLine());

}

// ***********Статический метод класса, возвращающий студента с заданной фамилий n, найденного в массиве ar из k элементов********

public static CStudent find (CStudent [] ar, int k, string n)

{

if (k== 0) throw new Exception("\nВ списке нет студентов");

for (int i=0; i<k; i++)

if (ar[i].Name == n) return ar[i];

throw new Exception ("\nВ списке нет студентов со специальностью "+n);

}

// *********Переопределенная операция явного приведения типа CStudent к типу int*****

public static explicit operator int (CStudent s)

{

return s.year_tr;

}

// ******Переопределенная операция ++ - перевод студента на следующий курс**********

public static CStudent operator ++ (CStudent s)

{

s.Year++;

return s;

}

}//class CStudent

class Class1

{

const int N = 20; //максимально возможное количество студентов

static int k = 0; // количество студентов в массиве

static CStudent[] students = new CStudent[N];// массив из N студентов

//***********Метод добавления студента в массив на k-ое место********************

static void add()

{

if (k < N)

{

students[k] = new CStudent();

(students[k]).input();

k++;

}

else Console.WriteLine("\nНевозможно добавить студента. Массив заполнен");

}

//******************Функция вывода массива на экран***************************

static void output()

{

if (k == 0) Console.WriteLine("Нет студентов в списке");

else

for (int i=0; i<k; i++)

students[i].output();

}

//*****************Метод формирования массива студентов************************

static void new_array()

{

Console.WriteLine("Будуте вводить данные с клавиатуры(y/n)? ");

char s = (char)Console.Read(); Console.ReadLine();

if (s == 'y' || s == 'Y')

{

Console.WriteLine("Введите количество студентов <" + N);

int n = int.Parse(Console.ReadLine());

for (int i = 1; i <= n; i++) add();

Console.WriteLine("\nФормирование списка завершено");

}

else

{

CStudent[] ar = {

new CStudent ("Петров", "Информатика", gender_type.male, 1),

new CStudent ("Сидоров", "Экономика", gender_type.male, 2),

new CStudent ("Уткин", "Математика", gender_type.male, 1),

new CStudent("Иванова", "Информатика", gender_type.female, 3),

new CStudent ("Антонова", "Информатика", gender_type.female, 1),

new CStudent ("Макаров", "Информатика", gender_type.male, 1)

};

k = ar.Length; // количество элементов в массиве

for (int i = 0; i < k; i++) students[i] = ar[i];

Console.WriteLine("\nСписок студентов сфорирован из заданного массива");

}

}

//****************Метод поиска студентов с заданной специальностью*******************

static void find(string s)

{

if (k == 0) Console.WriteLine("Поиск невозможне, т.к. в списке нет студентов");

else

{

bool f=false;

for (int i=0; i<k; i++)

if (students[i].Speciality == s) { students[i].output(); f=true;}

if (f==false) Console.WriteLine("\nВ списке нет студентов со специальностью "+s);

}

}

static void Main()

{

bool q = true;

while (q) //меню программы

{

Console.WriteLine("\nВыберите действие:\n");

Console.WriteLine("1 - Тестовое создание объектов класса Студент");

Console.WriteLine("2 - Тестовое использование свойств класса Студент");

Console.WriteLine("3 - Формирование нового списка студентов");

Console.WriteLine("4 - Добавление данных о студенте");

Console.WriteLine("5 - Вывод списка студентов на экран");

Console.WriteLine("6 - Поиск студентов с заданной специальностью");

Console.WriteLine("7 - Поиск студента с заданной фамилией");

Console.WriteLine("8 - Операция ++ и операция преобразования типа (int)" );

Console.WriteLine("0 - Выход\n");

try

{

int d = int.Parse(Console.ReadLine());

switch (d)

{

case 0: { q = false; Console.WriteLine("Программа завершила работу."); break; }

case 1:

{

Console.WriteLine("Количество созданных объектов =" + CStudent.n);

Console.WriteLine("\nДемонстрируется работа трех конструкторв ");

CStudent s1 = new CStudent();

s1.output();

CStudent s2 = new CStudent("Иванова");

s2.output();

CStudent s3 = new CStudent("Петрова", "Информатика", gender_type.female, 1);

s3.output();

Console.WriteLine("\nКоличество созданных объектов =" + CStudent.n);

break;

}

case 2:

{

Console.WriteLine("Для демонстрации свойств класса и метода вывода создайте студента");

CStudent s = new CStudent();

s.input();

Console.WriteLine("Создан студент:");

Console.WriteLine("{0}, {1}, {2}, {3}", s.Name, s.Speciality, s.Gender, s.Year);

s.Name = "Иванов";

s.Speciality = "Математика";

s.Year++;

s.Gender = gender_type.male;

Console.WriteLine("\nДанные студента изменены: ");

Console.WriteLine("{0}, {1}, {2}, {3}", s.Name, s.Speciality, s.Gender, s.Year);

break;

}

case 3:

{

if (k == 0) new_array();

else Console.WriteLine("Список уже сформирован, Вы можете только добавить студента");

break;

}

case 4: { add(); break; }

case 5: { output(); break; }

case 6:

{

Console.WriteLine("\nВведите название специальности: ");

string s = Console.ReadLine();

find(s);

break;

}

case 7:

{

Console.WriteLine("\nВведите фамилию студента, данные о котом Вы хотите найти ");

string s = Console.ReadLine();

CStudent.find(students,k, s).output();

break;

}

case 8:

{

Console.WriteLine("Для демонстрации свойств класса и метода вывода создайте студента");

CStudent s = new CStudent();

s.input();

Console.WriteLine("\nСоздан студент:");

s.output();

Console.WriteLine("\nCтудент переведен на следующий курс:");

s++;

s.output();

Console.WriteLine("\nКурс студента:"+(int)s);

break;

}

default: Console.WriteLine("Ошибка ввода\n"); break;

}// switch(n)

}//try

catch (Exception e) { Console.WriteLine(e.Message); }

Console.WriteLine("Для продолжения нажмите Enter");

Console.ReadKey();

}//while

}//Main

}//class Class1

}//namespace ConsoleApplication1

Тут вы можете оставить комментарий к выбранному абзацу или сообщить об ошибке.

Оставленные комментарии видны всем.