Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace lab_6
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<PrototypeAbstractWorker> prototypes = CreatePrototypes(); // Прототипы всех служащих по всем отделам
- List<PrototypeAbstractWorker> workers_list = new List<PrototypeAbstractWorker>();
- Console.WriteLine("1. Создание сотрудника\n2. Вывести всех сотрудников\n3. Вывести сотрудника по номеру\n4. Вывести сотрудников по отделам\n5. Редактировать сотрудника по номеру");
- while (true)
- {
- try
- {
- switch (Console.ReadLine())
- {
- case "1":
- PrototypeAbstractWorker worker = CreateNewWorker();
- Console.WriteLine("Введите имя сотрудника");
- worker.Name = Console.ReadLine();
- Console.WriteLine("Введите дату рождения сотрудника (прим. 01.01.1900)");
- worker.Birthdate = Console.ReadLine();
- Console.WriteLine("Введите заработную плату сотрудника");
- worker.Salary = Convert.ToInt32(Console.ReadLine());
- workers_list.Add(worker);
- Console.WriteLine("Номер сотрудника: " + workers_list.IndexOf(worker));
- worker.GetInfo();
- break;
- case "2":
- foreach(PrototypeAbstractWorker item in workers_list)
- {
- Console.WriteLine("============================\n№ " + workers_list.IndexOf(item));
- item.GetInfo();
- }
- break;
- case "3":
- Console.WriteLine("Введите номер сотрудника");
- try
- {
- workers_list[Convert.ToInt32(Console.ReadLine())].GetInfo();
- }
- catch (Exception e)
- {
- Console.WriteLine("!!!Ошибка в номере сотрудника!!!\nВозрат в меню");
- }
- break;
- case "4":
- Console.WriteLine("Какой отдел?");
- Console.WriteLine("1. Отдел кадров\n2. Планово-финансовое управление\n3. Учебнометодическое управление\n4. Международный отдел");
- string temp = Console.ReadLine();
- Console.WriteLine("Список сотрудников:");
- switch (temp)
- {
- case "1":
- foreach (PrototypeAbstractWorker item in workers_list)
- {
- if (item.DepTitle == "Отдел кадров")
- {
- Console.WriteLine("№ " + workers_list.IndexOf(item));
- item.GetInfo();
- }
- }
- break;
- case "2":
- foreach (PrototypeAbstractWorker item in workers_list)
- {
- if (item.DepTitle == "Планово-финансовое управление")
- {
- Console.WriteLine("№ " + workers_list.IndexOf(item));
- item.GetInfo();
- }
- }
- break;
- case "3":
- foreach (PrototypeAbstractWorker item in workers_list)
- {
- if (item.DepTitle == "Учебнометодическое управление")
- {
- Console.WriteLine("№ " + workers_list.IndexOf(item));
- item.GetInfo();
- }
- }
- break;
- case "4":
- foreach (PrototypeAbstractWorker item in workers_list)
- {
- if (item.DepTitle == "Международный отдел")
- {
- Console.WriteLine("№ " + workers_list.IndexOf(item));
- item.GetInfo();
- }
- }
- break;
- }
- break;
- case "5":
- Console.WriteLine("Введите номер сотрудника:");
- int edit_worker = Convert.ToInt32(Console.ReadLine());
- workers_list[edit_worker].GetInfo();
- Console.WriteLine("Что редактировать?\n1. ФИО\n2. Дату рождения\n3. Заработную плату");
- switch (Console.ReadLine())
- {
- case "1":
- Console.WriteLine("Введите желаемое ФИО");
- workers_list[edit_worker].Name = Console.ReadLine();
- workers_list[edit_worker].GetInfo();
- break;
- case "2":
- Console.WriteLine("Введите желаемумю дату рождения");
- workers_list[edit_worker].Birthdate = Console.ReadLine();
- workers_list[edit_worker].GetInfo();
- break;
- case "3":
- Console.WriteLine("Введите желаемую заработную плату");
- workers_list[edit_worker].Salary = Convert.ToInt32(Console.ReadLine());
- workers_list[edit_worker].GetInfo();
- break;
- }
- break;
- default:
- Console.WriteLine("Ошибка! Возврат к меню");
- break;
- }
- }
- catch (Exception e)
- {
- Console.WriteLine("Ошибка!");
- Console.WriteLine(e.Message);
- }
- }
- PrototypeAbstractWorker CreateNewWorker()
- {
- Console.WriteLine("Где будет находиться новый сотрудник?");
- Console.WriteLine("1. Отдел кадров\n2. Планово-финансовое управление\n3. Учебнометодическое управление\n4. Международный отдел");
- string temp = Console.ReadLine();
- Console.WriteLine(temp);
- Console.WriteLine("Должность сотрудника?");
- Console.WriteLine("1. Начальник отдела\n2. Заместитель начальника\n3. Служащий\n4. Стажер");
- temp += Console.ReadLine();
- switch (temp)
- {
- case "11": { PrototypeAbstractWorker worker = prototypes[0].Copy() ; return worker; }
- case "12": { PrototypeAbstractWorker worker = prototypes[1].Copy(); return worker; }
- case "13": { PrototypeAbstractWorker worker = prototypes[2].Copy(); return worker; }
- case "14": { PrototypeAbstractWorker worker = prototypes[3].Copy(); return worker; }
- case "21": { PrototypeAbstractWorker worker = prototypes[4].Copy(); return worker; }
- case "22": { PrototypeAbstractWorker worker = prototypes[5].Copy(); return worker; }
- case "23": { PrototypeAbstractWorker worker = prototypes[6].Copy(); return worker; }
- case "24": { PrototypeAbstractWorker worker = prototypes[7].Copy(); return worker; }
- case "31": { PrototypeAbstractWorker worker = prototypes[8].Copy(); return worker; }
- case "32": { PrototypeAbstractWorker worker = prototypes[9].Copy(); return worker; }
- case "33": { PrototypeAbstractWorker worker = prototypes[10].Copy(); return worker; }
- case "34": { PrototypeAbstractWorker worker = prototypes[11].Copy(); return worker; }
- case "41": { PrototypeAbstractWorker worker = prototypes[12].Copy(); return worker; }
- case "42": { PrototypeAbstractWorker worker = prototypes[13].Copy(); return worker; }
- case "43": { PrototypeAbstractWorker worker = prototypes[14].Copy(); return worker; }
- case "44": { PrototypeAbstractWorker worker = prototypes[15].Copy(); return worker; }
- }
- return null;
- }
- List<PrototypeAbstractWorker> CreatePrototypes()
- {
- List < PrototypeAbstractWorker > temp = new();
- temp.Add(new HRdepHeadOfDep());
- temp.Add(new HRdepDeputyHeadOfDep());
- temp.Add(new HRdepEmployee());
- temp.Add(new HRdepIntern());
- temp.Add(new PSdepHeadOfDep());
- temp.Add(new PSdepDeputyHeadOfDep());
- temp.Add(new PSdepEmployee());
- temp.Add(new PSdepIntern());
- temp.Add(new EMdepHeadOfDep());
- temp.Add(new EMdepDeputyHeadOfDep());
- temp.Add(new EMdepEmployee());
- temp.Add(new EMdepIntern());
- temp.Add(new INdepHeadOfDep());
- temp.Add(new INdepDeputyHeadOfDep());
- temp.Add(new INdepEmployee());
- temp.Add(new INdepIntern());
- return temp;
- }
- }
- }
- abstract class PrototypeAbstractWorker
- {
- protected string name;
- protected string birthdate;
- protected float salary;
- protected string deptitle;
- protected string post;
- public string Name
- {
- get { return name; }
- set { name = value; }
- }
- public string Birthdate
- {
- get { return birthdate; }
- set { birthdate = value; }
- }
- public float Salary
- {
- get { return salary; }
- set { salary = value; }
- }
- virtual public string DepTitle { get; set; }
- virtual public string Post { get; set; }
- abstract public PrototypeAbstractWorker Copy();
- public void GetInfo()
- {
- Console.WriteLine($"Имя: {Name} \nДата рождения: {Birthdate} \nЗарплата: {Salary} \nНазвание отдела: {DepTitle} \nДолжность: {Post}");
- }
- }
- //Абстрактные сотрудники
- abstract class HeadOfDep : PrototypeAbstractWorker
- { public override string Post { get; set; } = "Начальник отдела"; }
- abstract class DeputyHeadOfDep : PrototypeAbstractWorker
- { public override string Post { get; set; } = "Заместитель начальника отдела"; }
- abstract class Employee : PrototypeAbstractWorker
- { public override string Post { get; set; } = "Служащий"; }
- abstract class Intern : PrototypeAbstractWorker
- { public override string Post { get; set; } = "Стажер"; }
- //Контректные сотрудники HRdep
- class HRdepHeadOfDep : HeadOfDep
- {
- public override string DepTitle { get; set; } = "Отдел кадров";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class HRdepDeputyHeadOfDep : DeputyHeadOfDep
- {
- public override string DepTitle { get; set; } = "Отдел кадров";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class HRdepEmployee : Employee
- {
- public override string DepTitle { get; set; } = "Отдел кадров";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class HRdepIntern : Intern
- {
- public override string DepTitle { get; set; } = "Отдел кадров";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- //Контректные сотрудники PSdep
- class PSdepHeadOfDep : HeadOfDep
- {
- public override string DepTitle { get; set; } = "Планово-финансовое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class PSdepDeputyHeadOfDep : DeputyHeadOfDep
- {
- public override string DepTitle { get; set; } = "Планово-финансовое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class PSdepEmployee : Employee
- {
- public override string DepTitle { get; set; } = "Планово-финансовое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class PSdepIntern : Intern
- {
- public override string DepTitle { get; set; } = "Планово-финансовое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- //Контректные сотрудники EMdep
- class EMdepHeadOfDep : HeadOfDep
- {
- public override string DepTitle { get; set; } = "Учебнометодическое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class EMdepDeputyHeadOfDep : DeputyHeadOfDep
- {
- public override string DepTitle { get; set; } = "Учебнометодическое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class EMdepEmployee : Employee
- {
- public override string DepTitle { get; set; } = "Учебнометодическое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class EMdepIntern : Intern
- {
- public override string DepTitle { get; set; } = "Учебнометодическое управление";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- //Контректные сотрудники INdep
- class INdepHeadOfDep : HeadOfDep
- {
- public override string DepTitle { get; set; } = "Международный отдел";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class INdepDeputyHeadOfDep : DeputyHeadOfDep
- {
- public override string DepTitle { get; set; } = "Международный отдел";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class INdepEmployee : Employee
- {
- public override string DepTitle { get; set; } = "Международный отдел";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- class INdepIntern : Intern
- {
- public override string DepTitle { get; set; } = "Международный отдел";
- public override PrototypeAbstractWorker Copy()
- {
- return (PrototypeAbstractWorker)this.MemberwiseClone();
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment