Вывод списка преподавателей для введенной пользователем кафедры, и подсчет их количества - C#
Формулировка задачи:
Работа со структурами. В данной программе все работает но я не знаю как добавить в нее такие функции:
1. вывод списка преподавателей для введенной пользователем кафедры, и подсчет их количества
2. поиск преподавателя с наибольшим стажем среди всех имеющихся преподавателей, в институте, на кафедре, и вывод информации о нем
Помогите разобраться, очень нужна ваша помощь.
public enum University { SMY, MMU }
/// <summary>
/// кафедра
/// </summary>
public enum Kafedra { Фармация, Педиатрия, Психиатрия}
/// <summary>
/// структура описывающая преподавателя
/// </summary>
public struct Person
{
string fio;//ФИО
University university;//университет
double stag;//стаж
Kafedra kafedra;//кафедра
/// <summary>
/// создает преподавателя
/// </summary>
/// <param name="university">университет</param>
/// <param name="FIO">ФИО</param>
/// <param name="stag">стаж</param>
/// <param name="kafedra">кафедра</param>
public Person(University univer, String FIO, double stag,Kafedra hairColor)
{
this.university = univer;
this.fio = FIO;
this.stag = stag;
this.kafedra = hairColor;
}
public Person(Person person)
{
this.university = (University)person.Univer;
this.fio = person.FIO;
this.stag = person.stag;
this.kafedra = (Kafedra)person.Kafedr;
}
/// <summary>
/// университет
/// </summary>
public int Univer
{ get { return (int)this.university; } }
/// <summary>
/// ФИО
/// </summary>
public string FIO
{ get { return this.fio; } }
/// <summary>
/// стаж
/// </summary>
public double Stagg
{
get { return this.stag; }
set { this.stag = value; }
}
/// <summary>
/// кафедра
/// </summary>
public int Kafedr
{
get { return (int)this.kafedra; }
set { this.kafedra = (Kafedra)value; }
}
public override string ToString()
{
return fio + ", стаж: " + stag.ToString() + ", университет: " + university.ToString() + ", кафедра: " + kafedra.ToString();
}
}
class PersonList
{
List<Person> persons;
public PersonList()
{
persons = new List<Person>();
}
public PersonList(Person person)
{
persons = new List<Person>();
Add(person);
}
public void Add(Person person)
{
persons.Add(person);
}
public void Del(Person person)
{
persons.Remove(person);
}
public void Del(int index)
{
persons.RemoveAt(index);
}
public Person GetPerson(int index)
{
return persons[index];
}
public void Change(Person oldPerson, Person newPerson)
{
persons.Remove(oldPerson);
persons.Add(newPerson);
}
/// <summary>
/// метод для изменения стажа
/// </summary>
public void Change(int index, double stagg)
{
Person p = new Person(persons[index]);
p.Stagg = stagg;
persons.RemoveAt(index);
persons.Insert(index, p);
}
/// <summary>
/// метод для изменения кафедры
/// </summary>
public void Change(int index, int kaff)
{
Person p = new Person(persons[index]);
p.Kafedr = kaff;
persons.RemoveAt(index);
persons.Insert(index, p);
}
public int Count
{ get { return this.persons.Count; } }
}class Program
{
static void Main(string[] args)
{
PersonList pList = new PersonList();
bool exit = false;
do
{
Console.WriteLine("\nВведите что хотите сделать: ");
Console.WriteLine("0. Посмотреть список преподавателей\n1. Добавить преподавателя\n2. Удалить преподавателя\n3. Изменить информацию о преподавателе\n4. Выйти\n");
int toDo = int.Parse(Console.ReadLine());
switch (toDo)
{
case 0:
if (pList.Count > 0) WritePersonList(pList);
else Console.WriteLine("Список пуст");
break;
case 1:
pList.Add(CreatePerson());
break;
case 2:
if (pList.Count > 0) DelPerson(ref pList);
else Console.WriteLine("Список пуст");
break;
case 3:
if (pList.Count > 0)
{
Console.WriteLine("Выберите что хотите изменить:\n1. Университет\n2. Стаж\n3. Кафедру");
int c = int.Parse(Console.ReadLine());
switch (c)
{
case 1:
ChangePersonUniversity(ref pList);
break;
case 2:
ChangePersonStag(ref pList);
break;
case 3:
ChangePersonKafedra(ref pList);
break;
}
}
else Console.WriteLine("Список пуст");
break;
case 4:
exit = true;
break;
}
} while (!exit);
}
static void WritePersonList(PersonList pList)
{
for (int i = 0; i < pList.Count; i++)
{
Console.WriteLine(i.ToString() + ". " + pList.GetPerson(i).ToString());
}
}
static void ChangePersonStag(ref PersonList pList)
{
Console.WriteLine("Введите номер человека для изменения: ");
WritePersonList(pList);
int i = int.Parse(Console.ReadLine());
Console.Write("Введите новый стаж:");
pList.Change(i, double.Parse(Console.ReadLine()));
}
static void ChangePersonKafedra(ref PersonList pList)
{
Console.WriteLine("Введите номер человека для изменения: ");
WritePersonList(pList);
int i = int.Parse(Console.ReadLine());
int j = 0;
Console.WriteLine("Введите новую кафедру: ");
foreach (string name in Enum.GetNames(typeof(Kafedra)))
{
Console.WriteLine(j.ToString() + ". " + name);
j++;
}
j = int.Parse(Console.ReadLine());
pList.Change(i, j);
}
static void ChangePersonUniversity(ref PersonList pList)
{
Console.WriteLine("Введите номер человека для изменения: ");
WritePersonList(pList);
int i = int.Parse(Console.ReadLine());
int j = 0;
Console.WriteLine("Введите новый университет: ");
foreach (string name in Enum.GetNames(typeof(University)))
{
Console.WriteLine(j.ToString() + ". " + name);
j++;
}
j = int.Parse(Console.ReadLine());
pList.Change(i, j);
}
static void DelPerson(ref PersonList pList)
{
Console.WriteLine("Введите номер человека для удаления: ");
WritePersonList(pList);
pList.Del(int.Parse(Console.ReadLine()));
}
/// <summary>
/// создает преподавателя
/// </summary>
/// <returns>преподавателя</returns>
static Person CreatePerson()
{
Console.Write("Введите ФИО: ");
string fio = Console.ReadLine();
Console.WriteLine("Введите университет. " + ((int)(University.SMY)).ToString() + ". " + University.SMY.ToString() + "\t" + ((int)(University.MMU)).ToString() + ". " + University.MMU.ToString());
int university = int.Parse(Console.ReadLine());
Console.Write("Введите стаж: ");
double stagg = double.Parse(Console.ReadLine());
Console.WriteLine("Введите кафедру: " );
int j = 0;
foreach (string name in Enum.GetNames(typeof(Kafedra)))
{
Console.WriteLine(j.ToString() + ". " + name);
j++;
}
j = int.Parse(Console.ReadLine());
return new Person((University)university, fio, stagg,(Kafedra)j);
}
}Решение задачи: «Вывод списка преподавателей для введенной пользователем кафедры, и подсчет их количества»
textual
Листинг программы
var pr = Prep.Where(a => a.kafedra == "Имя кафедры");
foreach (var a in pr)
{
Console.WriteLine(a);
}