- •Пояснительная записка курсовой работы
- •Задание к курсовому проектированию
- •2. Исходные данные к проекту:
- •3. Содержание расчетно-пояснительной записки
- •4. Форма представления выполненной курсовой работы:
- •Календарный план
- •Содержание
- •1.2 Error: Reference source not found 2013
- •Улучшения интегрированной среды разработки
- •Функция TypeScript
- •Расширение возможностей коллективной разработки
- •1.3 Класс Form
- •2 Error: Reference source not found
- •3 Интерфейс программы
- •Тестирование программы
- •Заключение
- •Приложение а
Тестирование программы
Программа тестировалась на плотформах: Windows 7, Windows 8, Windows server 2012 r2. Тестирование происходило вручную по всем моментам требуемым курсовым заданием.
Заключение
При разработке курсового проекта был использован язык программирования c #. Программа создавалась в программе Visual Studio 2013. Программа соответствует набору требований.
Есть возможность добавлять и изменять базу данных, а также программы на интуитивном уровне.
Программа создана для учета средств, индивидуального пользования компьютерной техникой с привязкой на конкретного пользователя с личными данными.
Программа будет полезна системным администраторам или бухгалтерам.
Список используемой литературы:
Агуров П. C#. Разработка компонентов в MS Visual Studio 2005/2008. – СПб.: БХВ-петербург, 2008. – 480с
Википедия – свободная энциклопедия [Электронный ресурс] / Wikimedia Foundation, Inc. – 2012. – Режим доступа: http://ru.wikipedia.org/wiki/C_Sharp -- Дата доступа:15.05.2013.
Абрамян М. Visual C# на примерах . - СПб.: БХВ-петербург, 2008. – 496с
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));
}
}
}