Skip to content

Instantly share code, notes, and snippets.

@skhozinova
Created December 12, 2017 11:57
Show Gist options
  • Save skhozinova/5da04d0cad3b92b0aab3691f4f58fd8a to your computer and use it in GitHub Desktop.
Save skhozinova/5da04d0cad3b92b0aab3691f4f58fd8a to your computer and use it in GitHub Desktop.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace _8_задание
{
enum nazvanie_classa { A, B, C, D, E, unknown };
class CStudent
{
//класс УЧЕНИК (поля: ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА a-д)).
static public int n = 0; // хранит число созданных объектов
string fio;
int god_obucheniya;
nazvanie_classa bukva;
public string fio_1 //свойство для поля fio
{ get { return fio; }
set
{
fio = value;
}
}
public int god_obucheniya_1 //свойство для поля god_obucheniya
{
get { return god_obucheniya; }
set
{
if (value >= 1 && value <= 11)
{
god_obucheniya = value;
}
else throw new Exception("При изменении года ученика указано недопустимое значение. Значение должно быть в диапазоне [1,11]");
}
}
public nazvanie_classa bukva_1 // свойство для поля nazvanie_classa bukva
{
get { return bukva; }
set
{
bukva = value;
}
}
public static explicit operator int(CStudent s)//приведения типа CStudent к типу int*****
{
return s.god_obucheniya;
}
// перевод студента на следующий курс
public static CStudent operator ++(CStudent s)
{
s.god_obucheniya_1++;
return s;
}
public void output()
{
Console.Write("\nФИО: {0}\tгод обучения:{1}", fio, god_obucheniya);
switch (bukva)
{
case nazvanie_classa.A: Console.Write("\tназвание класса А");
break;
case nazvanie_classa.B: Console.Write("\tназвание класса Б");
break;
case nazvanie_classa.C: Console.Write("\tназвание класса В");
break;
case nazvanie_classa.D: Console.Write("\tназвание класса Г");
break;
case nazvanie_classa.E: Console.Write("\tназвание класса Д");
break;
default: Console.Write("\tбуква не указана");
break;
}
}
public void input()
{
Console.WriteLine("Введите ФИО ученика:");
fio_1 = Console.ReadLine();
Console.WriteLine("Введите год обучения:");
god_obucheniya_1 = int.Parse(Console.ReadLine());
Console.WriteLine("Введите название класса 1-A, 2-Б, 3-В, 4-Г, 5-Д:");
int g = int.Parse(Console.ReadLine());
switch (g)
{
case 1: bukva_1 = nazvanie_classa.A; break;
case 2: bukva_1 = nazvanie_classa.B; break;
case 3: bukva_1 = nazvanie_classa.C; break;
case 4: bukva_1 = nazvanie_classa.D; break;
case 5: bukva_1 = nazvanie_classa.E; break;
}
}
public CStudent()//инициализирует все поля класса значениями по умолчанию
{
fio = "Unknown";
god_obucheniya = 0;
bukva = nazvanie_classa.unknown;
}
public CStudent(string n)//создает объект класса с заданной фамилией
: this()//до начала выполнения тела конструктора будет выполнен метод с таким же именем без параметров
{
if (fio != "")
fio = n;
else fio = "Unknown";
}
public CStudent(string fio, int god_obucheniya, nazvanie_classa bukva)
{
if (fio != "") this.fio = fio;
else this.fio = "Unknown";
if (god_obucheniya >= 1 && god_obucheniya <= 11) this.god_obucheniya = god_obucheniya;
else throw new Exception("При создании ученика год обучения задан неверно. Значение должно быть в интервале [1,11].");
this.bukva = bukva;
n++;
}
public static CStudent deleting(CStudent[] ar, int k, string n)//поиск ученика
{
if (k == 0) throw new Exception("\n В списке нет учеников");
for (int i = 0; i < k; i++)
if (ar[i].fio_1 == n) return ar[i];
throw new Exception("\n В списке нет учеников с такими именем " + n);
}
public static void sorting(CStudent[] students)//сортировка массива учеников по паре (год обучения, название класса)
{
//students.OrderBy
List<CStudent> list = students.ToList();
students = list.OrderBy(x => x.god_obucheniya).ThenBy(x => x.bukva).ToArray();
//LINQ
list.Where(IsFirstLetterCapital);
List<CStudent> list_f_letter = list.Where(x => char.IsUpper(x.fio_1[0])).ToList();
foreach (int l in students) students[l].output();
}
static bool IsFirstLetterCapital(CStudent s)
{
return char.IsUpper(s.fio_1[0]);
}
static bool sort_by_god_bukva(CStudent[] students)
{
return students[].god_obucheniya_1;
}
} // class CStudent
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using _8_задание;
/*11. Описать класс УЧЕНИК (поля: ФИО, ГОД ОБУЧЕНИЯ, НАЗВАНИЯ КЛАССА (БУКВА a-д)).
Статический метод класса: сортировка массива учеников по паре (год обучения, название класса);
Функция демонстрационной программы: удаление ученика с заданной ФИО из массива.
Операция класса: перевод ученика в следующий класс (++) done*/
namespace ConsoleApplication8
{
class Program
{
static void Main(string[] args)
{
bool q = true;
while (q)//меню программы
{
Console.WriteLine("Выберите действие:\n");
Console.WriteLine("1 - Текстовое создание объектов класса CStudent");
Console.WriteLine("2 - Текстовое использование свойств класса CStudent и метода ввода");
Console.WriteLine("3 - Формирование нового списка учеников");
Console.WriteLine("4 - Добавление данных об ученике");
Console.WriteLine("5 - Вывод списка учеников на экран");
Console.WriteLine("6 - Сортировка массива учеников по паре (год обучения, название класса)");
Console.WriteLine("7 - Удаление ученика с заданной ФИО из массива");
Console.WriteLine("8 - Перевод ученика на следующий год (++)");
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 s1 = new CStudent();
s1.output();
CStudent s2 = new CStudent("Иванова");
s2.output();
CStudent s3 = new CStudent("Петров", 2003, nazvanie_classa.A);
s3.output();
Console.WriteLine("\nКоличество созданных объектов =" + CStudent.n);
break;
}
case 2: Console.WriteLine("\n Для демонстрации свойства класса и метода ввода создайте ученика");
CStudent s = new CStudent();
s.input();
Console.WriteLine("Создан ученик:");
Console.WriteLine("{0}, {1}, {2}", s.fio_1, s.god_obucheniya_1, s.bukva_1);
s.fio_1 = "Иванова";
s.god_obucheniya_1 = 2004;
s.bukva_1 = nazvanie_classa.B;
Console.WriteLine("\nДанные ученика изменены:");
Console.WriteLine("{0}, {1}, {2}", s.fio_1, s.god_obucheniya_1, s.bukva_1);
break;
case 3:
{
if (k == 0) new_array();
else Console.WriteLine("Список уже сформирован, Вы можете только добавить ученика");
break;
}
case 4: add(); break ;
case 5: output(); break;
case 6: CStudent.sorting(students); break;
case 7:
{
Console.WriteLine("\n Введите ФИО ученика, данные о котором хотите удалить: ");
string s_1 = Console.ReadLine();
CStudent.deleting(students, k, s_1).output();
break;
}
case 8:
{
Console.WriteLine("Для демонстрации метода создайте студента");
CStudent s_s = new CStudent();
s_s.input();
Console.WriteLine("\nСоздан ученик:");
s_s.output();
Console.WriteLine("\n\nУченик переведен на следующий год:");
s_s++;
s_s.output();
Console.WriteLine("\nКласс ученика:" + (int)s_s);
break;
}
default: Console.WriteLine("Ошибка ввода\n"); break;
}// switch(n)
}//try
catch (Exception e) { Console.WriteLine(e.Message); }
Console.WriteLine("\nДля продолжения нажмите Enter");
Console.ReadKey();
}//while
Console.ReadKey();
}
const int N = 22;
static int k = 0;
static CStudent[] students = new CStudent[N];
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("Введите данные с клавиатуры:");
Console.WriteLine("Введите количество студентов не больше " + N);
int n = int.Parse(Console.ReadLine());
for (int i = 1; i <= n; i++) add();
Console.WriteLine("\nФормирование списка завершено");
}
static void deleting(string s_1)//поиск и удаление ученика по ФИО
{
if (k == 0) Console.WriteLine("Удаление невозможно, т.к. в списке нет учеников");
else
{
bool f = false;
for (int i = 0; i < k; i++)
if (students[i].fio_1 == s_1) { students[i].output(); f = true; }
if (f == false) Console.WriteLine("\nВ списке нет студентов с ФИО " + s_1);
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment