Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Объектно-ориентированное программирование. Курсовая работа.docx
Скачиваний:
69
Добавлен:
09.03.2016
Размер:
302.79 Кб
Скачать
  1. Тестирование программы

Программа тестировалась на плотформах: Windows 7, Windows 8, Windows server 2012 r2. Тестирование происходило вручную по всем моментам требуемым курсовым заданием.

Заключение

При разработке курсового проекта был использован язык программирования c #. Программа создавалась в программе Visual Studio 2013. Программа соответствует набору требований.

Есть возможность добавлять и изменять базу данных, а также программы на интуитивном уровне.

Программа создана для учета средств, индивидуального пользования компьютерной техникой с привязкой на конкретного пользователя с личными данными.

Программа будет полезна системным администраторам или бухгалтерам.

Список используемой литературы:

  1. Агуров П. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-петербург, 2008. – 480с

  2. Википедия – свободная энциклопедия [Электронный ресурс] / Wikimedia Foundation, Inc. – 2012. – Режим доступа: http://ru.wikipedia.org/wiki/C_Sharp -- Дата доступа:15.05.2013.

  3. Абрамян М. Visual C# на примерах . - СПб.: БХВ-петербург, 2008. – 496с

  4. http://www.mini-soft.ru/book/c_sharp/index.php

Приложение а

TurtsevCourseWork.cs

{

public partial class MainForm : Form

{

public MainForm()

{

InitializeComponent();

}

private GridEnum _currentList = GridEnum.Employee;

//открыть список сотрудников

private void btnEmployeeList_Click(object sender, EventArgs e)

{

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM employee");

_currentList = GridEnum.Employee;

}

//открыть список техники

private void btnTechnicList_Click(object sender, EventArgs e)

{

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics");

_currentList = GridEnum.Technics;

}

//открыть список списанной техники

private void btnShowInventory_Click(object sender, EventArgs e)

{

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics WHERE Inventarized = 'Yes'");

_currentList = GridEnum.Inventarized;

}

//событие загрузки формы

private void MainForm_Load(object sender, EventArgs e)

{

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM employee");

}

//кнопка удалить

private void btnDeleteRecord_Click(object sender, EventArgs e)

{

switch(_currentList)

{

case(GridEnum.Employee) :

DBHelper.ExecuteCommand(String.Format("DELETE FROM employee WHERE id={0};", gridView.SelectedRows[0].Cells["id"].Value));

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM employee");

break;

case (GridEnum.Technics):

DBHelper.ExecuteCommand(String.Format("DELETE FROM Technics WHERE id={0};", gridView.SelectedRows[0].Cells["id"].Value));

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics");

break;

case (GridEnum.NonUsed):

DBHelper.ExecuteCommand(String.Format("DELETE FROM Technics WHERE id={0};", gridView.SelectedRows[0].Cells["id"].Value));

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics WHERE Inventarized = 'No' AND Used = 'No'");

break;

default:

DBHelper.ExecuteCommand(String.Format("DELETE FROM Technics WHERE id={0};", gridView.SelectedRows[0].Cells["id"].Value));

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics WHERE Inventarized = 1");

break;

}

}

//кнопка открыть

private void btnOpenRecord_Click(object sender, EventArgs e)

{

this.OpenDetailForm(false);

}

}

//двойной клик по списку открывает форму для просмотра

private void gridView_DoubleClick(object sender, EventArgs e)

{

this.OpenDetailForm(false);

}

private void OpenDetailForm(bool isNewObject)

{

switch (_currentList)

{

case (GridEnum.Employee):

this.OpenEmployeeForm(isNewObject);

break;

default:

this.OpenTechnicForm(isNewObject);

break;

}

}

//открыть список рабоче и неиспользуемой техники

private void button1_Click(object sender, EventArgs e)

{

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics WHERE Inventarized = 'No' AND Used = 'No'");

_currentList = GridEnum.NonUsed;

}

//кнопка создать

private void btnCreateRecord_Click(object sender, EventArgs e)

{

this.OpenDetailForm(true);

}

private void MainForm_Activated(object sender, EventArgs e)

{

switch (_currentList)

{

case (GridEnum.Employee):

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM employee");

break;

case (GridEnum.Technics):

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics");

break;

case (GridEnum.NonUsed):

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics WHERE Inventarized = 'No' AND Used = 'No'");

break;

default:

DBHelper.ExecuteAndShowDataGrid(gridView, "SELECT * FROM Technics WHERE Inventarized = 1");

break;

}

}

}

}

Program.cs

{

static class Program

{

/// <summary>

/// Точка входа.

/// </summary>

[STAThread]

static void Main()

{

if (!File.Exists("TechnicsDB.db"))

CreateDB();

Application.EnableVisualStyles();

Application.SetCompatibleTextRenderingDefault(false);

Application.Run(new MainForm());

}

/// <summary>

/// Создание базы данных и генерация данных.

/// </summary>

static void CreateDB()

{

//создание таблицы сотрудников

string createEmpl = @"DROP TABLE IF EXISTS employee;

CREATE TABLE employee(

ID INTEGER PRIMARY KEY AUTOINCREMENT,

FirstName TEXT,

LastName TEXT,

Position TEXT,

BirthDate TEXT,

Technic TEXT);

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Ivan', 'Nosov', 'Manager', '01.03.1985', 'PC-1002');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Leonid', 'Satin', 'Worker', '04.10.1970', 'PC-2024');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Elena', 'Vasilieva', 'Worker', '09.12.1990', 'PC-1206');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Petr', 'Osinin', 'Worker', '26.02.1995', 'PC-3245');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Nikolai', 'Losev', 'Manager', '16.03.1978', 'PC-1134');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Evgenij', 'Filatov', 'Director', '02.09.1979', 'PC-1364');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Tamara', 'Dolina', 'Worker', '09.11.1991', 'PC-7811');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Anton', 'Stepanov', 'Worker', '22.01.1992', 'PC-9912');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Vladimir', 'Kazakov', 'Manager', '01.01.1986', 'PC-4551');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Svetlana', 'Andreeva', 'Worker', '14.11.1976', 'PC-4651');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Stepan', 'Kozlov', 'Worker', '09.12.1990', 'PC-6453');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Ekaterina', 'Loyko', 'Worker', '26.02.1995', 'PC-3451');

INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic)

VALUES ('Stanislav', 'Vlasov', 'Security', '31.04.1989', 'PC-1278');";

//создание таблицы техники

string createTech = @"DROP TABLE IF EXISTS technics;

CREATE TABLE technics(

ID INTEGER PRIMARY KEY AUTOINCREMENT,

Name TEXT,

Inventarized TEXT,

Used TEXT,

ManufacturedAt TEXT);

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-1002', 'No','01.02.2011', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-2024', 'No','04.01.2012', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-1206', 'No','23.02.2014', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-3245', 'No','11.10.2014', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-1134', 'No','23.02.2013', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-1890', 'Yes','17.06.2005', 'No');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-1364', 'No','21.11.2012', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-7811', 'No','07.02.2013', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-9912', 'No','01.01.2014', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-4551', 'No','12.07.2012', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-4651', 'No','30.12.2014', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-6453', 'No','29.12.2014', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-6643', 'Yes','12.08.2004', 'No');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-3451', 'No','01.02.2011', 'Yes');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-7777', 'No','11.12.2014', 'No');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-8888', 'No','17.11.2013', 'No');

INSERT INTO Technics(Name, Inventarized, ManufacturedAt, Used)

VALUES ('PC-1278', 'No','01.02.2011', 'Yes');";

DBHelper.ExecuteCommand(createEmpl);

DBHelper.ExecuteCommand(createTech);

}

}

}

EmployeeForm.cs

{

public partial class EmployeeForm : Form

{

public EmployeeForm()

{

InitializeComponent();

}

//разрешить редактирвоание

private void EnableEditing(bool value)

{

this.txtFirstName.ReadOnly = !value;

this.txtLastName.ReadOnly = !value;

this.txtBirthDate.ReadOnly = !value;

this.txtPosition.ReadOnly = !value;

this.txtTechnic.ReadOnly = !value;

this.btnApplyEmpl.Visible = value;

this.btnBrowseTechnic.Visible = value;

this.btnEditEmpl.Visible = !value;

}

//заполнить поля формы значениями полей открываемого объекта сотрудника

public void SetEmployee(Employee employeeToShow, bool newObject)

{

this.txtFirstName.Text = employeeToShow.FirstName;

this.txtLastName.Text = employeeToShow.LastName;

this.txtBirthDate.Text = employeeToShow.BirthDate;

this.txtPosition.Text = employeeToShow.Position;

this.txtTechnic.Text = employeeToShow.Technic;

this.EnableEditing(newObject);

this.gridViewTech.Visible = false;

this.btnChooseTechnic.Visible = false;

this.btnCreateEmpl.Visible = newObject;

this.btnApplyEmpl.Visible = !newObject;

}

//кнопка сохранить

private void btnApplyEmpl_Click(object sender, EventArgs e)

{

this.EnableEditing(false);

this.gridViewTech.Visible = false;

this.btnChooseTechnic.Visible = false;

DBHelper.ExecuteCommand(String.Format("UPDATE technics SET Used = 'No' WHERE Name = '{0}'", this._currentTechnic));

this.Save(false);

this.gridViewTech.Visible = false;

this.btnChooseTechnic.Visible = false;

this.Size = new Size(530, 230);

this.Close();

}

//кнопка изменить

private void btnEditEmpl_Click(object sender, EventArgs e)

{

this.EnableEditing(true);

}

//кнопка открыть доступную технику

private void btnBrowseTechnic_Click(object sender, EventArgs e)

{

DBHelper.ExecuteAndShowDataGrid(this.gridViewTech, "SELECT * FROM Technics WHERE Inventarized == 'No' AND Used = 'No'");

this.Size = new Size(530, 525);

this.gridViewTech.Visible = true;

this.btnChooseTechnic.Visible = true;

this.btnBrowseTechnic.Visible = false;

}

//кнопка выбрать

private void btnChooseTechnic_Click(object sender, EventArgs e)

{

this.ChooseTechnic();

}

//дабл клик по технике в списке

private void gridViewTech_DoubleClick(object sender, EventArgs e)

{

this.ChooseTechnic();

}

private void ChooseTechnic()

{

_technic = new Technic(this.gridViewTech.SelectedRows[0]);

this.txtTechnic.Text = _technic.Name;

}

private Technic _technic = null;

private string _currentTechnic = String.Empty;

private string _oldFirstName = String.Empty;

private string _oldLastName = String.Empty;

//событие загрузки формы

private void EmployeeForm_Load(object sender, EventArgs e)

{

this._currentTechnic = this.txtTechnic.Text;

this._oldFirstName = this.txtFirstName.Text;

this._oldLastName = this.txtLastName.Text;

}

//кнопка создать

private void btnCreateEmpl_Click(object sender, EventArgs e)

{

this.btnCreateEmpl.Visible = false;

this.EnableEditing(false);

this.Save(true);

this.Close();

}

//кнопка сохранить

private void Save(bool isNew)

{

//если техника была изменена

if (_technic != null)

{

//если это новый объект, создаем запись в базе

DBHelper.ExecuteCommand(String.Format("UPDATE technics SET Used = 'Yes' WHERE ID = {0}", _technic.Oid));

if(isNew)

DBHelper.ExecuteCommand(String.Format("INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic) VALUES ('{0}','{1}','{2}','{3}','{4}')", this.txtFirstName.Text, this.txtLastName.Text, this.txtPosition.Text, this.txtBirthDate.Text, _technic.Name));

//иначе редактируем существующую

else

DBHelper.ExecuteCommand(String.Format("UPDATE employee SET Technic = '{0}', FirstName = '{1}', LastName = '{2}', Position = '{3}', BirthDate = '{4}' WHERE FirstName = '{5}' AND LastName = '{6}'", _technic.Name, this.txtFirstName.Text, this.txtLastName.Text, this.txtPosition.Text, this.txtBirthDate.Text, this._oldFirstName, this._oldLastName));

}

else

//если это новый объект, создаем запись в базе

if(isNew)

DBHelper.ExecuteCommand(String.Format("INSERT INTO employee(FirstName, LastName, Position, BirthDate, Technic) VALUES ('{0}','{1}','{2}','{3}','{4}')", this.txtFirstName.Text, this.txtLastName.Text, this.txtPosition.Text, this.txtBirthDate.Text, ""));

//иначе редактируем существующую

else

DBHelper.ExecuteCommand(String.Format("UPDATE employee SET FirstName = '{0}', LastName = '{1}', Position = '{2}', BirthDate = '{3}' WHERE FirstName = '{4}' AND LastName = '{5}'", this.txtFirstName.Text, this.txtLastName.Text, this.txtPosition.Text, this.txtBirthDate.Text, this._oldFirstName, this._oldLastName));

}

}

}