ТОП 10:

Вимоги до складу і параметрів технічних засобів



 

Програма повинна працювати на IBM-сумісних персональних комп’ютерах.

 

Таблиця 7.1 – Конфігурація комп’ютера

 

Тип процесора 32-розрядний (x86) або 64-розрядний (x64) процесор з тактовою частотою 1 ГГц
Об’єм оперативної пам’яті 1 ГБ для 32-розрядної системи і 2 ГБ для 64-разрядної системи
Розмір жорсткого диску 17 ГБ для 32-розрядної системи і 21 ГБ для 64-розрядної системи
Графічний пристрій графічний пристрій DirectX9
Об’єм ОП необхідної для роботи програми: 10 Мб;
Розмір папки на диску: 372 кб

 

Програма працює під управлінням сімейства операційних систем Windows (7/8/8.1). Для запуску програми необхідно виконати наступні дії:

- Скопіювати вміст папки Debug або саму папку на комп’ютер

- Запустити файл lab.exe.

 

Користувацький інтерфейс

 

Робота програми починається з її запуску. На екрані будуть присутні лише макрооб’єкти (їдальня і каналізація, болото). На рисунку 7.1. – зображено форму на початку роботи.

 

 

Рисунок 7.1 – Початок роботи програми

 

Додавання працівників відбувається при натиснення клавіші «Insert» (рисунок 7.2)

 

 

Рисунок 7.2 – Додавання нового працівника.

 

Для того, щоб можна було рухати працівників їх потрібно виділити. Для цього клікаємо правою кнопкою мишки по об’єкту. Змінюється колір. З’являється можливість збільшувати та зменшувати заробітну плату робітнику (клавіша + -), розміщувати мікрооб’єкти на макрооб’єкти (клавіша G). Визначати чи належать всі мікрооб’єкти до батьківського класу Employee (клавіша C). Видаляти виділені мікрооб’єкти (клавіша Delete), знімати виділення мікрооб’єктів (клавіша Esc). Приводити до одного типу (клавіша E). Рисунок 7.3 результат додавання та руху мікрооб’єктів та макрооб’єкта.

 

 

Рисунок 7.3 – Результат додавання та руху мікрооб’єктів та макрооб’єктів


 

ВИСНОВКИ

 

Призначення курсової роботи з знайомством та освоєнням основних принципів ООП. Початком курсової роботи стало дослідження сучасного стану предметної області, спроектовано зовнішній інтерфейс та розділено функції між його елементами.

Ціль було досягнуто в повному обсязі. Створений програмний продукт володіє рисою, яка відсутня у його аналогів – симуляція працівників ЖЕКУ.

В ході виконання проекту було отримано наступні навички: робота із візуальним середовищем програмування Microsoft Visual Studio, змінними різних типів, класами та об’єктами, файлами, діалоговими вікнами, меню.

Програмний продукт може бути використаний як самостійний додаток, чи як додаток до іншої програми, після деякої модифікації. Присутня можливість вдосконалення та зміни функціоналу програми.


 

ПЕРЕЛІК ПОСИЛАНЬ

 

1. Е. Троєлсен. Язык программирования C# 5.0 и платформа .NET 4.5. 2013 р – Москва–Санкт-Петербург–Киев, 1300 ст.

2. В. Мєдвєдєв. Особенности ООП на C++/CLI, C# и Java. – Москва: РИЦ «Школа», 2010 р, 565 ст.

3. Г. Шилдт. С# 4.0 Полное руководствою. – Москва–Санкт-Петербург –Киев: Вильямс, 2012 р, 600 ст.

4. Д. Албахарі, Б. Албахарі. C# 5.0. Справочник. Полное описание языка. – Москва: Вильямс, 2014 р.

5. Й. Гріффитс. Программирование на C# 5 Москва – Київ: Эксмо, 2014р, 459 ст.

6. Н. Мартинов. C# для начинающих. – Москва: Кудиц-Пресс, 2007 р., 659 ст.

7. В. Зіборов. Visual C# 2010 на примерах. – Санкт-Петербург: БХВ-Петербург, 2011 р, 630 ст.

8. М. Фленов. Библия C#, 2-е издание. – Санкт-Петербург: БХВ- Петербург, 2011 р, 756 ст.

9. Н. Культін. C# в задачах и примерах. – Санкт-Петербург: БХВ- Петербург, 2007 р, 860 ст.


 

ДОДАТКИ


 

Додаток А

Лістинг модуля Cupboard.cs

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace lb3

{

[Serializable]

public class Cupboard

{

[NonSerialized]

public Panel pnl = new Panel();

Random rand = new Random();

 

 

public int coordX=70, coordY=470;

public Cupboard()

{

Draw();

}

 

public void Draw()

{

pnl.Size = new Size(400, 150);

pnl.Location = new Point(coordX, coordY);

pnl.BackgroundImage = new Bitmap("bufet.jpg");

pnl.BorderStyle = BorderStyle.FixedSingle;

}

 

public bool GetLocation(Panel pnl)

{

Point A = pnl.Location;

Point B = new Point(pnl.Location.X + pnl.Width, pnl.Location.Y);

Point C = new Point(pnl.Location.X, pnl.Location.Y + pnl.Height);

Point D = new Point(pnl.Location.X + pnl.Width, pnl.Location.Y + pnl.Height);

 

if (A.X > this.pnl.Location.X && A.X < (this.pnl.Location.X + this.pnl.Width) && A.Y > this.pnl.Location.Y && A.Y < (this.pnl.Location.Y + pnl.Height))

{

return true;

}

 

if (B.X > this.pnl.Location.X && B.X < (this.pnl.Location.X + this.pnl.Width) && B.Y > this.pnl.Location.Y && B.Y < (this.pnl.Location.Y + pnl.Height))

{

return true;

}

 

if (C.X > this.pnl.Location.X && C.X < (this.pnl.Location.X + this.pnl.Width) && C.Y > this.pnl.Location.Y && C.Y < (this.pnl.Location.Y + this.pnl.Height+pnl.Height))

{

return true;

}

 

if (D.X > this.pnl.Location.X && D.X < (this.pnl.Location.X + this.pnl.Width) && D.Y > this.pnl.Location.Y && D.Y < (this.pnl.Location.Y + this.pnl.Height+pnl.Height))

{

return true;

}

return false;

}

 

void MoveEmployyer(List<Employee> emps, Form fm, KeyEventArgs e)

{

for (int i = 0; i < emps.Count; i++)

{

if (GetLocation(emps[i].pnl))

{

emps[i].MoveWithMacro(e, fm);

emps[i].isSelected = true;

emps[i].pnl.BackgroundImage = new Bitmap(emps[i].activePlayer);

}

}

}

 

public void Move(KeyEventArgs e, Form fm, List<Employee> emps)

{

if (e.KeyCode == Keys.A)

{

if ((pnl.Location.X - 5) >= 10)

{

MoveEmployyer(emps, fm, e);

pnl.Location = new Point(pnl.Location.X - 5, pnl.Location.Y);

}

}

 

if (e.KeyCode == Keys.D)

{

if ((pnl.Location.X + 5 + pnl.Width) <= fm.Width - 30)

{

MoveEmployyer(emps, fm, e);

pnl.Location = new Point(pnl.Location.X + 5, pnl.Location.Y);

}

}

coordX = pnl.Location.X;

coordY = pnl.Location.Y;

}

}

}

 


 

Додаток Б

Лістинг модуля Sewerage.cs

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace lb3

{

[Serializable]

class Sewerage

{

[NonSerialized]

public Panel pnl = new Panel();

Random rand = new Random();

 

public int coordX = 70, coordY = 70;

 

public Sewerage()

{

Draw();

}

 

public void Draw()

{

pnl.Size = new Size(400, 300);

pnl.Location = new Point(coordX, coordY);

pnl.BackgroundImage = new Bitmap("kanaliz.jpg");

pnl.BorderStyle = BorderStyle.FixedSingle;

}

 

public bool GetLocation(Panel pnl)

{

Point A = pnl.Location;

Point B = new Point(pnl.Location.X + pnl.Width, pnl.Location.Y);

Point C = new Point(pnl.Location.X, pnl.Location.Y + pnl.Height);

Point D = new Point(pnl.Location.X + pnl.Width, pnl.Location.Y + pnl.Height);

 

if (A.X > this.pnl.Location.X && A.X < (this.pnl.Location.X + this.pnl.Width) && A.Y > this.pnl.Location.Y && A.Y < (this.pnl.Location.Y + pnl.Height))

{

return true;

}

 

if (B.X > this.pnl.Location.X && B.X < (this.pnl.Location.X + this.pnl.Width) && B.Y > this.pnl.Location.Y && B.Y < (this.pnl.Location.Y + pnl.Height))

{

return true;

}

 

if (C.X > this.pnl.Location.X && C.X < (this.pnl.Location.X + this.pnl.Width) && C.Y > this.pnl.Location.Y && C.Y < (this.pnl.Location.Y + this.pnl.Height + pnl.Height))

{

return true;

}

 

if (D.X > this.pnl.Location.X && D.X < (this.pnl.Location.X + this.pnl.Width) && D.Y > this.pnl.Location.Y && D.Y < (this.pnl.Location.Y + this.pnl.Height+pnl.Height))

{

return true;

}

return false;

}

 

public void IsPresent(List<Employee> emps, Form fm, KeyEventArgs e)

{

for (int i = 0; i < emps.Count; i++)

{

if (GetLocation(emps[i].pnl))

{

emps[i].tm.Start();

}

else

{

emps[i].tm.Stop();

emps[i].timerStatus = false;

}

}

}

}

}

 


 

Додаток В

Лістинг модуля Employee.cs

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

 

namespace lb3

{

[Serializable]

public class Employee : ICloneable

{

[NonSerialized]

public Timer tm = new Timer();

[NonSerialized]

public Form1 fm1;

 

public int age;

public string surname;

public string name;

public double pay;

public double workHours;

public bool timerStatus = false;

 

public string activePlayer = "EmployerAct.jpg";

public string disablePlayer = "EmployerDis.jpg";

 

public static double border = 1600;

 

public bool isSelected = false;

public Point finishPoint = new Point();

public Point location;

 

public int coordEmpX, coordEmpY;

 

[NonSerialized]

public Panel pnl = new Panel();

Random rand = new Random();

 

public double dx = 0;

public double dy = 0;

 

public int dtx = 1;

public int dty = 1;

 

public AboutEmployee aboutEmp;

 

//поверхневе

public Employee Copy()

{

return (Employee)this.MemberwiseClone();

}

 

//глубоке копіювання

public Employee DeepCopy()

{

Employee employer = (Employee)this.MemberwiseClone();

employer.surname = String.Copy(surname);

employer.name = String.Copy(name);

employer.pay = pay;

employer.age = age;

employer.aboutEmp = new AboutEmployee();

employer.aboutEmp.telephone = aboutEmp.telephone;

employer.aboutEmp.address = String.Copy(aboutEmp.address);

employer.aboutEmp.sex = aboutEmp.sex;

return employer;

}

 

public object Clone()

{

Employee employer = new Employee(fm1);

employer.surname = String.Copy(surname);

employer.name = String.Copy(name);

employer.pay = pay;

employer.age = age;

employer.aboutEmp = new AboutEmployee();

employer.aboutEmp.telephone = aboutEmp.telephone;

employer.aboutEmp.address = String.Copy(aboutEmp.address);

employer.aboutEmp.sex = aboutEmp.sex;

return employer;

}

 

[Serializable]

public class AboutEmployee

{

public double telephone;

public string address;

public bool sex;

public AboutEmployee(double telephone = 9379992, string address = "Констянтинiвка 228", bool sex = true)

{

this.telephone = telephone;

this.address = address;

this.sex = sex;

}

}

 

//конструктор

public Employee(Form1 fm2)

{

this.surname = "Мокрун";

this.name = "Иван";

this.age = 45;

this.pay = 1540.56;

fm1 = fm2;

 

drawEmployee();

tm.Interval = 1;

tm.Tick += tm_Tick;

finishPoint = new Point(rand.Next(70, 400), rand.Next(70, 400));

location = pnl.Location;

 

pnl.MouseClick += pnl_MouseClick;

pnl.MouseMove += pnl_MouseMove;

}

 

public void pnl_MouseMove(object sender, MouseEventArgs e)

{

 

fm1.tlsStatus.Text = pay.ToString();

fm1.tlsPay.Text = StatusBar();

}

public virtual string StatusBar()

{

if ((pay) > ((border)))

{

return "Завищена зарплата";

}

else

return "Нормальна зарплата для нормального работніка";

}

 

public Point GetCenterPoint(Panel pnl)

{

return new Point((int)(pnl.Location.X + 0.5 * pnl.Width), (int)(pnl.Location.Y + 0.5 * pnl.Height));

}

 

public void MoveWithMacro(KeyEventArgs e, Form fm)

{

if (e.KeyCode == Keys.A)

{

if ((pnl.Location.X - 5) >= 10)

{

pnl.Location = new Point(pnl.Location.X - 5, pnl.Location.Y);

}

}

 

if (e.KeyCode == Keys.D)

{

if ((pnl.Location.X + 5 + pnl.Width) <= fm.Width - 30)

{

pnl.Location = new Point(pnl.Location.X + 5, pnl.Location.Y);

}

}

}

 

public void tm_Tick(object sender, EventArgs e)

{

timerStatus = true;

rand = new Random();

if (GetCenterPoint(pnl) != finishPoint)

{

if ((finishPoint.X - GetCenterPoint(pnl).X) > 0)

{

if (GetCenterPoint(pnl).X != finishPoint.X)

{

pnl.Location = new Point(pnl.Location.X + dtx, pnl.Location.Y);

}

}

if ((finishPoint.X - GetCenterPoint(pnl).X) < 0)

{

if (GetCenterPoint(pnl).X != finishPoint.X)

{

pnl.Location = new Point(pnl.Location.X - dtx, pnl.Location.Y);

}

}

if ((finishPoint.Y - GetCenterPoint(pnl).Y) > 0)

{

if (GetCenterPoint(pnl).Y != finishPoint.Y)

{

pnl.Location = new Point(pnl.Location.X, pnl.Location.Y + dty);

}

}

if ((finishPoint.Y - GetCenterPoint(pnl).Y) < 0)

{

if (GetCenterPoint(pnl).Y != finishPoint.Y)

{

pnl.Location = new Point(pnl.Location.X, pnl.Location.Y - dty);

}

}

}

else

{

finishPoint = new Point(rand.Next(70, 370), rand.Next(70, 370));

dx = finishPoint.X - GetCenterPoint(pnl).X;

dy = finishPoint.Y - GetCenterPoint(pnl).Y;

}

}

 

public virtual void drawEmployee()

{

pnl.Size = new Size(70, 92);

pnl.Location = new Point(rand.Next(500, 600), rand.Next(10, 500));

coordEmpX = pnl.Location.X;

coordEmpY = pnl.Location.Y;

pnl.BackgroundImage = new Bitmap(disablePlayer);

pnl.BorderStyle = BorderStyle.FixedSingle;

pnl.LocationChanged += pnl_LocationChanged;

}

 

public void pnl_LocationChanged(object sender, EventArgs e)

{

location = pnl.Location;

}

//клік на обєкт

public void pnl_MouseClick(object sender, MouseEventArgs e)

{

if(e.Button==MouseButtons.Right)

{

isSelected = !isSelected;

if(isSelected)

{

pnl.BackgroundImage = new Bitmap(activePlayer);

}

else

{

pnl.BackgroundImage = new Bitmap(disablePlayer);

}

}

if (e.Button == MouseButtons.Left)

{

Print(this);

}

pnl.Refresh();

}

//зняти виділення всіх працвників

public void pnl_MouseClick()

{

isSelected = !isSelected;

if (isSelected)

{

pnl.BackgroundImage = new Bitmap(activePlayer);

}

else

{

pnl.BackgroundImage = new Bitmap(disablePlayer);

}

}

 

 

//рух

public void Move(KeyEventArgs e, Form fm)

{

if(!isSelected)

{

return;

}

 

if (e.KeyCode == Keys.Right)

{

if ((pnl.Location.X + 5 + pnl.Width) <= fm.Width - 20)

{

pnl.Location = new Point(pnl.Location.X + 5, pnl.Location.Y);

}

}

if (e.KeyCode == Keys.Left)

{

if ((pnl.Location.X - 5) >= 10)

{

pnl.Location = new Point(pnl.Location.X - 5, pnl.Location.Y);

}

}

if (e.KeyCode == Keys.Down)

{

if ((pnl.Location.Y + 5 + pnl.Height) <= fm.Height - 50)

{

pnl.Location = new Point(pnl.Location.X, pnl.Location.Y + 5);

}

}

if (e.KeyCode == Keys.Up)

{

if ((pnl.Location.Y - 5) >= 10)

{

pnl.Location = new Point(pnl.Location.X, pnl.Location.Y - 5);

}

}

coordEmpX = pnl.Location.X;

coordEmpY = pnl.Location.Y;

}

 

public void InitializateEmployee(string surname, string name, int age, double pay)

{

this.surname = surname;

this.name = name;

this.age = age;

this.pay = pay;

}

 

public static void Print(Employee emp)

{

MessageBox.Show("Surname: " + emp.surname + " Name: " + emp.name + " Age" + emp.age +" Pay: "+ emp.pay);

}

 

private void ShowInfo(string text, string value)

{

Console.WriteLine(text + value);

}

 

//перегрузка оператора ==

public static bool operator ==(Employee obj_1, Employee obj_2)

{

if (obj_1.surname == obj_2.surname &&

obj_1.name == obj_2.name &&

obj_1.age == obj_2.age &&

obj_1.pay == obj_2.pay &&

obj_1.aboutEmp.address == obj_2.aboutEmp.address &&

obj_1.aboutEmp.telephone == obj_2.aboutEmp.telephone &&

obj_1.aboutEmp.sex == obj_2.aboutEmp.sex)

return true;

return false;

}

//перегрузка оператора !=

public static bool operator !=(Employee obj_1, Employee obj_2)

{

if (obj_1.surname != obj_2.surname &&

obj_1.name != obj_2.name &&

obj_1.age != obj_2.age &&

obj_1.pay != obj_2.pay &&

obj_1.aboutEmp.address != obj_2.aboutEmp.address &&

obj_1.aboutEmp.telephone != obj_2.aboutEmp.telephone &&

obj_1.aboutEmp.sex != obj_2.aboutEmp.sex)

return true;

return false;

}

 

//бінарний оператор +

public static Point operator +(Employee obj1, Employee obj2)

{

Random rnd = new Random();

Point loc = new Point(rnd.Next(20, 200), rnd.Next(20, 300));

return loc;

 

}

 

//унарний оператор +

public static Employee operator +(Employee obj1)

{

obj1.pay = obj1.pay+200;

return obj1;

}

 

//унарний оператор -

public static Employee operator -(Employee obj1)

{

obj1.pay = obj1.pay - 200;

return obj1;

}

 

~Employee()

{

Console.WriteLine("Деструктор");

}

}

}

 


 

Додаток Г

Лістинг модуля DiligentEmployee.cs

 

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace lb3

{

[Serializable]

class DiligentEmployee : Employee

{

Random rand = new Random();

 

 

public DiligentEmployee(Form1 fm) :base(fm)

{

disablePlayer = "DiligentEmployerDis.jpg";

pnl.LocationChanged += pnl_LocationChanged;

location = pnl.Location;

}

 

void pnl_LocationChanged(object sender, EventArgs e)

{

location = pnl.Location;

}

 

public override void drawEmployee()

{

pnl = new Panel();

pnl.Size = new Size(70, 92);

pnl.Location = new Point(rand.Next(500, 600), rand.Next(10, 500));

pnl.BackgroundImage = new Bitmap(disablePlayer);

pnl.BorderStyle = BorderStyle.FixedSingle;

}

public override string StatusBar()

{

if (pay > (border * 2))

{

return "Зарплата як кращого праівника";

 

}

else

{

return "Нормальна зарплата";

}

}

}

}

 


Додаток Д

Лістинг модуля LazyEmployee.cs

 

using System;

using System.Collections.Generic;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace lb3

{

[Serializable]

class LazyEmployee : DiligentEmployee

{

Random rand = new Random();

public LazyEmployee(Form1 fm) :base(fm)

{

disablePlayer = "LazyEmployerDis.jpg";

pnl.LocationChanged += pnl_LocationChanged;

location = pnl.Location;

}

 

void pnl_LocationChanged(object sender, EventArgs e)

{

location = pnl.Location;

}

 

public override void drawEmployee()

{

pnl = new Panel();

pnl.Size = new Size(70, 92);

pnl.Location = new Point(rand.Next(500, 600), rand.Next(10, 500));

pnl.BackgroundImage = new Bitmap(disablePlayer);

pnl.BorderStyle = BorderStyle.FixedSingle;

}

 

public override string StatusBar()

{

if (pay > (border))

{

return "Завищена зарплата";

}

else

return "Зарплата трутня";

}

}

}

 


 

Додаток Е

Лістинг модуля Form1.cs

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.IO;

using System.Linq;

using System.Runtime.Serialization.Formatters.Binary;

using System.Text;

using System.Threading.Tasks;

using System.Windows.Forms;

 

namespace lb3

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}

 

List<Employee> employees = new List<Employee>();

 

Cupboard cup = new Cupboard();

Sewerage sew = new Sewerage();

 

private void Form1_KeyDown(object sender, KeyEventArgs e)

{

sew.IsPresent(employees, this, e);

if (e.KeyCode == Keys.Insert)

{

Form2 fm = new Form2();

fm.StartPosition = FormStartPosition.CenterParent;

fm.ShowDialog();

if(fm.isOk)

{

 

if (fm.cboType.SelectedIndex == 0)

{

Employee emp = new Employee(this);

emp.activePlayer = "EmployerAct.jpg";

emp.disablePlayer = "EmployerDis.jpg";

emp.surname = fm.txtSurname.Text;

emp.name = fm.txtName.Text;

emp.age = Convert.ToInt16(fm.numAge.Value);

emp.pay = Convert.ToDouble(fm.numPrice.Value);

if (cup.GetLocation(emp.pnl))

{

emp.isSelected = true;

emp.pnl.BackgroundImage = new Bitmap(emp.activePlayer);

}

else

{

emp.isSelected = false;

emp.pnl.BackgroundImage = new Bitmap(emp.disablePlayer);

}

employees.Add(emp);

this.Controls.Add(employees[employees.Count - 1].pnl);

employees[employees.Count - 1].pnl.BringToFront();

}

if (fm.cboType.SelectedIndex == 1)

{

DiligentEmployee dilEmp = new DiligentEmployee(this);

dilEmp.activePlayer = "DiligentEmployerAct.jpg";

dilEmp.disablePlayer = "DiligentEmployerDis.jpg";

dilEmp.surname = fm.txtSurname.Text;

dilEmp.name = fm.txtName.Text;

dilEmp.age = Convert.ToInt16(fm.numAge.Value);

dilEmp.pay = Convert.ToDouble(fm.numPrice.Value);

if (cup.GetLocation(dilEmp.pnl))

{

dilEmp.isSelected = true;

dilEmp.pnl.BackgroundImage = new Bitmap(dilEmp.activePlayer);

}

else

{

dilEmp.isSelected = false;

dilEmp.pnl.BackgroundImage = new Bitmap(dilEmp.disablePlayer);

}

 

employees.Add(dilEmp);

this.Controls.Add(employees[employees.Count - 1].pnl);

employees[employees.Count - 1].pnl.BringToFront();

}

if (fm.cboType.SelectedIndex == 2)

{

LazyEmployee lazyEmp = new LazyEmployee(this);

lazyEmp.activePlayer = "LazyEmployerAct.jpg";

lazyEmp.disablePlayer = "LazyEmployerDis.jpg";

lazyEmp.surname = fm.txtSurname.Text;

lazyEmp.name = fm.txtName.Text;

lazyEmp.age = Convert.ToInt16(fm.numAge.Value);

lazyEmp.pay = Convert.ToDouble(fm.numPrice.Value);

if (cup.GetLocation(lazyEmp.pnl))

{

lazyEmp.isSelected = true;

lazyEmp.pnl.BackgroundImage = new Bitmap(lazyEmp.activePlayer);

}

else

{

lazyEmp.isSelected = false;

lazyEmp.pnl.BackgroundImage = new Bitmap(lazyEmp.disablePlayer);

}

employees.Add(lazyEmp);

this.Controls.Add(employees[employees.Count - 1].pnl);

employees[employees.Count - 1].pnl.BringToFront();

}

if (sew.GetLocation(employees[employees.Count-1].pnl))

{

employees[employees.Count-1].tm.Start();

}

}

}

if(e.KeyCode==Keys.K)

{

Employee emp = new Employee(this);

emp.activePlayer = "EmployerAct.jpg";

emp.disablePlayer = "EmployerDis.jpg";

if (cup.GetLocation(emp.pnl))

{

emp.isSelected = true;

emp.pnl.BackgroundImage = new Bitmap(emp.activePlayer);

}

else

{

emp.isSelected = false;

emp.pnl.BackgroundImage = new Bitmap(emp.disablePlayer);

}

employees.Add(emp);

this.Controls.Add(employees[employees.Count - 1].pnl);

employees[employees.Count - 1].pnl.BringToFront();

}

if (e.KeyCode == Keys.C)

{

int count = 0;

foreach(var temp in employees)

{

if (temp is Employee)

{

count++;

}

}

if (count == employees.Count())

{

MessageBox.Show("All good");

}

else

MessageBox.Show("Some problem. Maybe you are gavnokoder");

}

 

foreach(var emp in employees)

{

emp.Move(e,this);

}

 

if (e.KeyCode == Keys.Delete)

{

for(int i=0;i<employees.Count;i++)

{

if (employees[i].isSelected)

{

this.Controls.Remove(employees[i].pnl);

employees.RemoveAt(i);

i--;

}

}

}

if (e.KeyCode == Keys.Escape)

{

for (int i = 0; i < employees.Count; i++)

{

if (employees[i].isSelected)

{

employees[i].pnl_MouseClick();

}

}

}

if (e.KeyCode == Keys.A || e.KeyCode == Keys.D)

{

cup.Move(e, this, employees);

}

 

if(e.KeyCode ==Keys.Add)

{

for (int i = 0; i < employees.Count; i++)

{

if (employees[i].isSelected)

{

employees[i] = +employees[i];

}

}

}

if (e.KeyCode == Keys.Subtract)

{

for (int i = 0; i < employees.Count; i++)

{

if (employees[i].isSelected)

{

employees[i] = -employees[i];

}

}

}

 

if (e.KeyCode == Keys.G)

{

for (int i = 0; i < employees.Count; i++)

{

employees[i].pnl.Location = (employees[i] + employees[i]);

employees[i].tm.Start();

employees[i].timerStatus = true;

}

}

if (e.KeyCode == Keys.E)

{

for (int i = 0; i < employees.Count; i++)

{

employees[i] = employees[i] as Employee;

 

}

}

}

 

private void Form1_Load(object sender, EventArgs e)

{

Controls.Add(cup.pnl);

Controls.Add(sew.pnl);

}

 

private void toolStripExit_Click(object sender, EventArgs e)

{

this.Close();

}

 

private void toolStripOpen_Click(object sender, EventArgs e)

{

OpenFileDialog dialog = new OpenFileDialog();

dialog.Filter = "Course project (.emp)|*.emp";

dialog.Title = "Открыть проект";

if (dialog.ShowDialog() == DialogResult.OK)

{

try

{

this.Controls.Remove(cup.pnl);

this.Controls.Remove(sew.pnl);

foreach(var temp in employees)

{

this.Controls.Remove(temp.pnl);

}

employees.Clear();

this.Controls.Remove(sew.pnl);

LoadFromBinnaryFile(dialog.FileName, this);

}

catch

{

MessageBox.Show("Невозможно открыть файл, возможно он поврежден!");

return;

}

}

}

 

private void toolStripSave_Click(object sender, EventArgs e)

{

SaveFileDialog dialog = new SaveFileDialog();

dialog.Title = "Сохранить проект";

dialog.Filter = "emp project | *.emp";

if (dialog.ShowDialog() == DialogResult.OK)

{

Serialize(dialog.FileName);

}

}

 

public void Serialize(string name)

{

BinaryFormatter binFormat = new BinaryFormatter();

 

using (Stream fStream = new FileStream(name,

FileMode.Create, FileAccess.Write, FileShare.None))

{

binFormat.Serialize(fStream, this.cup);

binFormat.Serialize(fStream, this.sew);

binFormat.Serialize(fStream, this.employees);

}

}

 

private void LoadFromBinnaryFile(string path, object sender)

{

BinaryFormatter binFormat = new BinaryFormatter();

 

using (Stream fStream = File.OpenRead(path))

{

 

cup = (Cupboard)binFormat.Deserialize(fStream);

cup.pnl = new Panel();

cup.Draw();

//cup.pnl.Location = cup.location;

this.Controls.Add(cup.pnl);

 

sew = (Sewerage)binFormat.Deserialize(fStream);

sew.pnl = new Panel();

sew.Draw();

//sew.pnl.Location = sew.location;

this.Controls.Add(sew.pnl);

employees = (List<Employee>)binFormat.Deserialize(fStream);

foreach (var tmp in employees)

{

tmp.pnl = new Panel();

tmp.drawEmployee();

 

tmp.tm = new Timer();

tmp.tm.Tick += tmp.tm_Tick;

tmp.tm.Interval = 1;

if (tmp.timerStatus == true)

{

tmp.tm.Start();

}

tmp.pnl.MouseClick += tmp.pnl_MouseClick;

 

tmp.fm1 = this;

tmp.pnl.MouseMove += tmp.pnl_MouseMove;

 

tmp.pnl.Location = tmp.location;

tmp.pnl.LocationChanged += tmp.pnl_LocationChanged;

 

if(tmp.isSelected)

{

tmp.pnl.BackgroundImage = new Bitmap(tmp.activePlayer);

}

this.Controls.Add(tmp.pnl);

tmp.pnl.BringToFront();

}

}

}

}

}







Последнее изменение этой страницы: 2016-07-11; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 54.236.35.159 (0.134 с.)