Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System;
- using System.Collections.Generic;
- namespace lab_9
- {
- class Program
- {
- static void Main(string[] args)
- {
- List<Leaf> employees = new List<Leaf>();
- Composite universities = new Composite("Университет");
- Composite UMU = new Composite("УМУ");
- Composite PFU = new Composite("ПФУ");
- Composite OK = new Composite("ОК");
- Composite Dep_training = new Composite("Учебный отдел");
- Composite Dep_OP = new Composite("Отдел по работе с ОП");
- Composite Dep_Accounting = new Composite("Бухгалтерия");
- for (int i = 1; i < 13; i++)
- {
- Leaf leaf = new Leaf();
- leaf.Name = "Сотрудник " + i;
- employees.Add(leaf);
- }
- universities.Add(UMU);
- universities.Add(PFU);
- universities.Add(OK);
- UMU.Add(Dep_training);
- Dep_training.Add(employees[0]);
- Dep_training.Add(employees[1]);
- Dep_training.Add(employees[2]);
- UMU.Add(Dep_OP);
- Dep_OP.Add(employees[3]);
- Dep_OP.Add(employees[4]);
- PFU.Add(employees[5]);
- PFU.Add(employees[6]);
- PFU.Add(Dep_Accounting);
- Dep_Accounting.Add(employees[7]);
- Dep_Accounting.Add(employees[8]);
- OK.Add(employees[9]);
- OK.Add(employees[10]);
- OK.Add(employees[11]);
- Draw_Tree();
- Console.WriteLine("1. Изменить фамилию сотрудника \n2. Изменить размер з/п одного сотрудника \n3. Повысить(понизить) з/п всем сотрудникам \n4. Вывести дынные пофамильно всех сотрудников и общую сумму затрат \n5. Вывести дерево");
- while (true)
- {
- switch (Console.ReadLine())
- {
- case "1":
- for (int i = 0; i < employees.Count; i++)
- {
- Console.WriteLine(i + 1 + ". " + employees[i].Name);
- }
- Console.WriteLine("Введите номер сотрудника");
- int name = Convert.ToInt32(Console.ReadLine());
- employees[name-1].ChangeName();
- break;
- case "2":
- for (int i = 0; i < employees.Count; i++)
- {
- Console.WriteLine(i + 1 + ". " + employees[i].Name + ". Зарплата: " + employees[i].salary);
- }
- Console.WriteLine("Введите номер сотрудника");
- int salary = Convert.ToInt32(Console.ReadLine());
- employees[salary - 1].ChangeSalary();
- break;
- case "3":
- for (int i = 0; i < employees.Count; i++)
- {
- Console.WriteLine(i + 1 + ". " + employees[i].Name + ". Зарплата: " + employees[i].salary);
- }
- Console.WriteLine("Введите на сколько повысить/понизить зп всем сотрудникам (чтобы понизить - нужно добавить минус в начало строки)");
- int salary_all = Convert.ToInt32(Console.ReadLine());
- for (int i = 0; i < employees.Count; i++)
- {
- employees[i].salary += salary_all;
- }
- Console.WriteLine("Зарплата для всех сотрудников изменена!");
- break;
- case "4":
- int sum = 0;
- for (int i = 0; i < employees.Count; i++)
- {
- sum += employees[i].salary;
- Console.WriteLine(i + 1 + ". " + employees[i].Name + ". Зарплата: " + employees[i].salary);
- }
- Console.WriteLine("Общая сумма затрат: " + sum);
- break;
- case "5":
- Draw_Tree();
- break;
- }
- }
- void Draw_Tree()
- {
- char space =' ';
- Console.WriteLine(universities.Name);
- Console.WriteLine(" " + UMU.Name);
- Console.WriteLine(" " + Dep_training.Name);
- Console.WriteLine(" " + employees[0].Name);
- Console.WriteLine(" " + employees[1].Name);
- Console.WriteLine(" " + employees[2].Name);
- Console.WriteLine(" " + Dep_OP.Name);
- Console.WriteLine(" " + employees[3].Name);
- Console.WriteLine(" " + employees[4].Name);
- Console.WriteLine(" " + PFU.Name);
- Console.WriteLine(" " + employees[5].Name);
- Console.WriteLine(" " + employees[6].Name);
- Console.WriteLine(" " + Dep_Accounting.Name);
- Console.WriteLine(" " + employees[7].Name);
- Console.WriteLine(" " + employees[8].Name);
- Console.WriteLine(" " + OK.Name);
- Console.WriteLine(" " + employees[9].Name);
- Console.WriteLine(" " + employees[10].Name);
- Console.WriteLine(" " + employees[11].Name);
- }
- }
- }
- abstract class Component
- {
- public string Name { get; set; }
- public abstract string Operation();
- public virtual void Add(Component component)
- {
- throw new NotImplementedException();
- }
- public virtual void Remove(Component component)
- {
- throw new NotImplementedException();
- }
- }
- class Leaf : Component
- {
- public int salary;
- public void ChangeSalary()
- {
- Console.WriteLine("Текущая зарплата: " + salary);
- Console.WriteLine("Введите зарплату: ");
- salary = Convert.ToInt32(Console.ReadLine());
- Console.WriteLine("Текущая зарплата: " + salary);
- }
- public void ChangeName()
- {
- Console.WriteLine("Текущая фамилия: " + Name);
- Console.WriteLine("Введите Фамилию: ");
- Name = Console.ReadLine();
- Console.WriteLine("Текущая фамилия: " + Name);
- }
- public override string Operation()
- {
- return Name;
- }
- }
- class Composite : Component
- {
- public Composite(string name)
- {
- this.Name = name;
- }
- protected List<Component> _children = new List<Component>();
- public override void Add(Component component)
- {
- this._children.Add(component);
- }
- public override void Remove(Component component)
- {
- this._children.Remove(component);
- }
- public override string Operation()
- {
- int i = 0;
- string result = "Branch(";
- foreach (Component component in this._children)
- {
- result += component.Operation();
- if (i != this._children.Count - 1)
- {
- result += "+";
- }
- i++;
- }
- return result + ")";
- }
- public int CountChildren()
- {
- int i = 0;
- foreach(Component component in this._children)
- {
- i++;
- }
- return i;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement