Программное средство 'Учет техники на предприятии'

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    371,58 Кб
  • Опубликовано:
    2015-08-09
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программное средство 'Учет техники на предприятии'

Учреждение образования

"БЕЛОРУССКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНОЛОГИЧЕСКИЙ УНИВЕРСИТЕТ"

Факультет издательского дела и полиграфии

Кафедра информационных систем и технологий

Специальность 1-40 01 02 "информационные системы и технологии"

Специализация "Издательское дело и полиграфия"






КУРСОВАЯ РАБОТА

по дисциплине "Объектно-ориентированное программирование"

Тема: Программное средство "Учет техники на предприятии"









Минск 2015

Содержание

Введение

1. Объектно-ориентированное программирование

1.1 Среда Visual Studio.NET

1.2 Улучшения интегрированной среды разработки

1.3 Увеличение производительности

1.4 Функция Peek Definition

1.5 Функция CodeLens

1.6 Консолидация проектов ASP.net

1.7 Функция TypeScript

1.8 Расширение возможностей коллективной разработки

1.9 Класс Form

2. Проектирование архитектуры программы

3. Интерфейс программы

4. Тестирование программы

Заключение

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

Приложение А

Введение


Язык C# появился на свет в июне 2000 г. в результате кропотливой работы большой группы разработчиков компании Microsoft, возглавляемой Андерсом Хейлсбергом (Anders Hejlsberg).

Появление языка C# и инициативы.net отнюдь не случайно пришлось на начало лета 2000 г. Именно к этому моменту компания Microsoft подготовила промышленные версии новых компонентных технологий и решений в области обмена сообщениями и данными, а также создания Internet-приложений (COM+, ASP+, ADO+, SOAP, Biztalk Framework). Несомненно, лучшим способом продвижения этих новинок является создание инструментария для разработчиков с их полноценной поддержкой. В этом и заключается одна из главных задач нового языка C#. Кроме того, Microsoft не могла больше расширять все те же инструменты и языки разработки, делая их все более и более сложными (а это было необходимо, так как требования поддержки современного оборудования и требования обеспечения обратной совместимости с программными продуктами начала 90-х годов становились всё более конфликтующими). Наступил момент, когда необходимо начать с чистого листа для того, чтобы создать простой, но имеющий сложную структуру набор языков, сред и средств разработки, которые позволят разработчику легко создавать современные программные продукты.

С# и.net являются той самой отправной точкой. Если говорить упрощенно, то.net представляет собой новую платформу, новый API (англ. Application Programming Interface - интерфейс прикладного программирования) для программирования в Windows, а С# - новый язык, созданный с нуля, для работы с этой платформой, а также для извлечения всех выгод из прогресса сред разработки и достижений объектно-ориентированного программирования в течение последних 20 лет.

1. Объектно-ориентированное программирование


Элементы объектно-ориентированного программирования (ООП) появились в начале 70-х годов в языке моделирования Симула, затем получили свое развитие, и в настоящее время ООП принадлежит к числу ведущих технологий программирования.

Основная цель ООП, как и большинства других подходов к программированию - повышение эффективности разработки программ. Идеи ООП оказались плодотворными и нашли применение не только в языках программирования, но и в других областях Computer Science, например, в области разработки операционных систем.

Появление ООП было связано с тем наблюдением, что компьютерные программы представляют собой описание действий, выполняемых над различными объектами. В роли последних могут выступать, например, графические объекты, записи в базах данных или совокупности числовых значений. В традиционных методах программирования изменение данных или правил и методов обработки часто приводило к необходимости значительного изменения программы. Всякое существенное изменения программы - это большая неприятность для программиста, так как при этом увеличивается вероятность ошибок, вследствие чего возрастает время, необходимое для "доводки" программы. Использование ООП позволяет выйти из такой ситуации с минимальными потерями, сводя необходимую модификацию программы к её расширению и дополнению. Необходимо заметить, что ООП не является панацеей от всех программистских бед, но его ценность как передовой технологии программирования несомненна. Изучение идей и методов ООП может существенно упростить разработку и отладку сложных программ.

Мы уже привыкли использовать в своих программах процедуры и функции для программирования тех сложных действий по обработке данных, которые приходится выполнять многократно. Использование подпрограмм в своё время было важным шагом на пути к увеличению эффективности программирования.

Подпрограмма может иметь формальные предметы, которые при обращении к ней заменяются фактическими предметами. В этом случае есть опасность вызова подпрограммы с неправильными данными, что может привести к сбою программы и её аварийному завершению при выполнении. Поэтому естественным обобщением традиционного подхода к программированию является объединение данных и подпрограмм (процедур и функций), предназначенных для их обработки.

1.1 Среда Visual Studio.NET


Выполняя свое обещание о сокращении цикла разработки Visual Studio, корпорация Microsoft выпустила Visual Studio 2013 менее чем через год после предыдущей версии. Компания объявила о выходе Visual Studio 2013, своего главного средства разработки, 18 октября 2013 года. В данном выпуске сделаны значительные усовершенствования, включая поддержку разработки для Windows 8.1, расширенные функции управления жизненным циклом приложений, увеличение производительности, а также реализованы улучшения в интегрированной среде разработки (IDE). Перечислим некоторые из наиболее важных функций Visual Studio 2013.

 

1.2 Улучшения интегрированной среды разработки


В новом выпуске продукта вы сразу обратите внимание на обновление интегрированной среды разработки. В ответ на многочисленные жалобы по поводу плоской и почти полностью монохромной среды в Visual Studio 2012 специалисты Microsoft изменили более 400 значков, обеспечив большую их различимость и более широкое использование цвета. Начальная страница Visual Studio 2013 также заметно переработана.

1.3 Увеличение производительности


Microsoft добавила новые возможности для повышения производительности работы в среде. Новые функции включают: услвершенствованное автоматическое закрытие скобок, кавычек и апострофов, возможность перемещения строк и блоков кода с использованием комбинаций клавиш и новые возможности встроенной навигации (Navigate To).

 

1.4 Функция Peek Definition


Новая функция Peek Definition для быстрого показа описаний способствует лучшему пониманию программного кода. С функцией Peek Definition вы можете просматривать описания методов, не покидая контекста кода в среде разработки. Для просмотра описания метода установите курсор на нужном методе и нажмите комбинацию клавиш Alt+F12. Описание метода либо появится во всплывающем окне, доступном в режиме "только чтение", либо вы сможете открыть его в полноэкранном режиме для редактирования.

 

1.5 Функция CodeLens


Другая функция повышения производительности, CodeLens (первоначально названная Code Information Indicators), впервые была представлена на TechEd 2013 в Новом Орлеане. Она предоставляет полезную информацию о разрабатываемом вами коде: ссылки, тестовые запуски и результаты работы выбранных методов.

 


1.6 Консолидация проектов ASP.net


Чтобы упорядочить разработку на платформе ASP.net, Visual Studio 2013 использует новую модель ASP.net, предназначенную для унификации опыта разработки веб-приложений. В Visual Studio 2013 имеется множество шаблонов проектов веб-приложений ASP.net, в том числе шаблоны ASP.net Web Forms, ASP.net MVC, Windows Communication Foundation (WCF) и служб Web API.

Еще одной новой функцией Visual Studio 2013 является поддержка разработки приложений Office 365. "Облачные" приложения семейства Office 365 Cloud Business Apps предназначены для работы на "облачной" платформе Windows Azure.

 

1.7 Функция TypeScript


TypeScript - это язык программирования с поддержкой классов, модулей и интерфейсов, компилируемых в код JavaScript, исполняемый в любом обозревателе. TypeScript предназначен для поддержки разработки приложений масштаба предприятия на JavaScript; предоставляет возможности статического контроля, символьной навигации, завершения операторов и рефакторинга кода.

 

1.8 Расширение возможностей коллективной разработки


Для развития средств коллективной разработки в Visual Studio 2013 включен обновленный Team Explorer с видоизмененной начальной страницей, предусматривающей более простую навигацию и средства совместной работы. В Team Explorer можно поместить панели Pending Changes и Builds в отдельные окна.

Другими новыми возможностями являются поддержка средства управления версиями Git, диагностические журналы и функция Work Item Charting (диаграммы рабочих элементов), предоставляющая разработчикам средство быстрого создания разнообразных диаграмм на основе данных из запросов рабочих элементов, отчетов об ошибках и пользовательских отчетов.

1.9 Класс Form


Класс Form представляет собой заготовку формы, от которой наследуются классы форм приложения.

Помимо множества унаследованных элементов, в этом классе определено большое количество собственных элементов, наиболее употребительные из которых приведены в следующих таблицах.

Некоторые свойства класса Form.

Свойство

Описание

AcceptButton

Позволяет задать кнопку или получить информацию о кнопке, которая будет активизирована при нажатии пользователем клавиши Enter

ActiveMDIChild, IsMDIChild, IsMDIContainer

Свойства предназначены для использования в приложениях с многодокументным интерфейсом (MDI)

AutoScale

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

FormBorderStyle

Позволяет установить или получить стиль рамки вокруг формы (используются значения перечисления FormBorderStyle)

Cancel Button

Позволяет задать кнопку или получить информацию о кнопке, которая будет активизирована при нажатии пользователем клавиши Esc

Control Box

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

Menu, MergedMenu

Используются для установки или получения информации о меню на форме



2. Проектирование архитектуры программы


В данной работе нужно выбрать архитектуру программы, поэтому рассмотрим несколько примеров:

Одноуровневые приложения. Пример одноуровневого приложения - Microsoft Excel, поддерживающий как юльзовательский интерфейс, так и прикладную логику. К последней относятся раз-юобразные математические функции, проверка правописания и др. На том же уров-ie содержатся и подпрограммы, обеспечивающие сохранение и доступ к файлам дан-шх. Традиционные приложения для мэйнфреймов тоже являются одноуровневыми монолитными), просто к ним обращается множество клиентских программ.

Двухуровневые приложения. В двухуровневых, или стандартных клиент-серверных, приложениях компоненты, отвечающие за презентационный сервис и прикладную логику, размещаются на клиентской машине и обращаются к общему источнику данных по сети. В таких приложениях пользовательский интерфейс и прикладная логика образуют один уровень на клиентском компьютере, а сервисы данных предоставляются отдельными приложениями (на серверах) вроде СУБД SQL Server или Oracle. Этот сценарий часто встречается в клиент-серверных приложениях. Например, приложение, написанное на Visual Basic, вызывает хранимые процедуры SQL Server и таким образом получает нужные данные. Первое приложение - это один уровень, второе - другой. Код для пользовательского интерфейса и поддержки прикладной логики не обязательно должен находиться в одном проекте; приложение, написанное на Visual Basic, может обращаться к данным, вызывая нужные функции из динамически подключаемой библиотеки (DLL). В этом случае, хотя пользовательский интерфейс и прикладная логика оказываются в разных местах, они все равно считаются одним уровнем. Двухуровневые приложения хорошо работают в масштабах подразделения при наличии умеренного количества пользователей (до 100), единственной базы данных и быстродействующей защищенной сети. В частности, двухуровневое приложение было бы удачным решением для рабочей группы, принимающей заказы на какую-либо продукцию.

Многоуровневые приложения. В подобных приложениях презентационный сервис (первый уровень), прикладная логика (второй уровень) и сервис данных (третий уровень) отделены друг от друга. Однако уровней может быть не три, а больше. Именно поэтому многоуровневые приложения иногда называют и-уровневыми, где п больше или равно трем. Логические уровни не обязательно должны соответствовать их физическому местонахождению в сети. Например, все три уровня могут быть размещены на двух машинах или, напротив, распределены по пяти компьютерам. Компоненты, отвечающие за презентационный сервис, поддерживают пользовательский интерфейс и запрашивают прикладные сервисы у компонентов промежуточного уровня, которые реализуют прикладную логику и выдают запросы к базам данных. В многоуровневом приложении клиент предоставляет только пользовательский интерфейс. Прикладная логика реализуется промежуточным уровнем, который размещается между пользовательским интерфейсом и системой хранения данных.

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

Интерфейс нашей программы простой и интуитивно понятный, для максимального удобства элементы кнопок расположены в левой части окна программы.

Такие как:

сотрудники

техника

списанная

неиспользуемая

В рабочем пространстве находится само окно с данными из базы данный (рис. 1), а в нижнем правом углу кнопки для изменения содержимого базы данных.

Итак, мы находимся на главном окне работы с программой на которой можем кликнув, кнопку из левой части увидеть информацию по "сотрудникам" - это порядковый номер, Ф. И.О. занимаемую должность, дату рождения и технику которая значится за ним.

интерфейс программа двухуровневый архитектура

Рисунок 1 - Основное окно

Если щелкнуть на строку, то откроется окно сотрудники (рис. 2) (для других позиций действия те же) в котором мы можем изменить информацию, а так же сохранить эту информацию или отредактировать.

Рисунок 2 - Сотрудники

Открыв окно, щелкнув по строке техника, мы увидим наименование этой техники её статус и дату создания или приобретения техники.

Рисунок 3 - Техника

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

База данных создана на платформе SQLite, данные хранятся в файле, сделано это для удобства, чтобы открывалась на любом компьютере, работает через запросы SQL. В базе данных есть две таблицы сотрудники и техника (рис. 4).

Рисунок 4 - Таблицы баз данных

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

string createEmpl = @"DROP TABLE IF EXISTS employee;TABLE employee (INTEGER PRIMARY KEY AUTOINCREMENT,TEXT,TEXT,TEXT,TEXT,TEXT);INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Ivan', 'Nosov', 'Manager', '01.03.1985', 'PC-1002');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Leonid', 'Satin', 'Worker', '04.10.1970', 'PC-2024');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Elena', 'Vasilieva', 'Worker', '09.12.1990', 'PC-1206');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Petr', 'Osinin', 'Worker', '26.02.1995', 'PC-3245');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Nikolai', 'Losev', 'Manager', '16.03.1978', 'PC-1134');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Evgenij', 'Filatov', 'Director', '02.09.1979', 'PC-1364');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Tamara', 'Dolina', 'Worker', '09.11.1991', 'PC-7811');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Anton', 'Stepanov', 'Worker', '22.01.1992', 'PC-9912');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Vladimir', 'Kazakov', 'Manager', '01.01.1986', 'PC-4551');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Svetlana', 'Andreeva', 'Worker', '14.11.1976', 'PC-4651');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Stepan', 'Kozlov', 'Worker', '09.12.1990', 'PC-6453');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Ekaterina', 'Loyko', 'Worker', '26.02.1995', 'PC-3451');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Stanislav', 'Vlasov', 'Security', '31.04.1989', 'PC-1278'); ";

Открытие окна сотрудники и техники:

// открыть форму сотрудникаvoid OpenEmployeeForm (bool created)

{employee = null;(created)= new Employee ();= new Employee (gridView. SelectedRows [0]);emplForm = new EmployeeForm ();. SetEmployee (employee, created);. Show ();

}

// открыть форму техникиvoid OpenTechnicForm (bool created)

{technic = null;(created)= new Technic ();= new Technic (gridView. SelectedRows [0]);technicForm = new TechnicForm ();. SetTechnic (technic, created);

technicForm. Show ();

4. Тестирование программы


Программа тестировалась на плотформах: 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 <http://ru.wikipedia.org/wiki/C_Sharp> - Дата доступа: 15.05.2013.

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

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

Приложение А


TurtsevCourseWork. cs

{partial class MainForm: Form

{MainForm ()

{();

}GridEnum _currentList = GridEnum. Employee;

// открыть список сотрудниковvoid btnEmployeeList_Click (object sender, EventArgs e)

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

_currentList = GridEnum. Employee;

}

// открыть список техникиvoid btnTechnicList_Click (object sender, EventArgs e)

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

_currentList = GridEnum. Technics;

}

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

private void btnShowInventory_Click (object sender, EventArgs e)

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

_currentList = GridEnum. Inventarized;

}

// событие загрузки формыvoid MainForm_Load (object sender, EventArgs e)

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

}

// кнопка удалитьvoid btnDeleteRecord_Click (object sender, EventArgs e)

{(_currentList)

{(GridEnum. Employee):. ExecuteCommand (String. Format ("DELETE FROM employee WHERE id={0};", gridView. SelectedRows [0]. Cells ["id"]. Value));. ExecuteAndShowDataGrid (gridView, "SELECT * FROM employee");;(GridEnum. Technics):. ExecuteCommand (String. Format ("DELETE FROM Technics WHERE id={0};", gridView. SelectedRows [0]. Cells ["id"]. Value));. ExecuteAndShowDataGrid (gridView, "SELECT * FROM Technics");;(GridEnum. NonUsed):. ExecuteCommand (String. Format ("DELETE FROM Technics WHERE id={0};", gridView. SelectedRows [0]. Cells ["id"]. Value));. ExecuteAndShowDataGrid (gridView, "SELECT * FROM Technics WHERE Inventarized = 'No' AND Used = 'No'");;:. ExecuteCommand (String. Format ("DELETE FROM Technics WHERE id={0};", gridView. SelectedRows [0]. Cells ["id"]. Value));. ExecuteAndShowDataGrid (gridView, "SELECT * FROM Technics WHERE Inventarized = 1");;

}

}

// кнопка открытьvoid btnOpenRecord_Click (object sender, EventArgs e)

{. OpenDetailForm (false);

}

}

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

{. OpenDetailForm (false);

}void OpenDetailForm (bool isNewObject)

{(_currentList)

{(GridEnum. Employee):. OpenEmployeeForm (isNewObject);;:. OpenTechnicForm (isNewObject);;

}

}

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

private void button1_Click (object sender, EventArgs e)

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

_currentList = GridEnum. NonUsed;

}

// кнопка создатьvoid btnCreateRecord_Click (object sender, EventArgs e)

{. OpenDetailForm (true);

}void MainForm_Activated (object sender, EventArgs e)

{(_currentList)

{(GridEnum. Employee):. ExecuteAndShowDataGrid (gridView, "SELECT * FROM employee");;(GridEnum. Technics):. ExecuteAndShowDataGrid (gridView, "SELECT * FROM Technics");;(GridEnum. NonUsed):. ExecuteAndShowDataGrid (gridView, "SELECT * FROM Technics WHERE Inventarized = 'No' AND Used = 'No'");;:. ExecuteAndShowDataGrid (gridView, "SELECT * FROM Technics WHERE Inventarized = 1");;

}

}

}

}

Program. cs

{class Program

{

// / <summary>

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

// / </summary>

[STAThread]void Main ()

{(! File. Exists ("TechnicsDB. db"))();. EnableVisualStyles ();. SetCompatibleTextRenderingDefault (false);.run (new MainForm ());

}

// / <summary>

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

// / </summary>void CreateDB ()

{

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

string createEmpl = @"DROP TABLE IF EXISTS employee;TABLE employee (INTEGER PRIMARY KEY AUTOINCREMENT,TEXT,TEXT,TEXT,TEXT,TEXT);INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Ivan', 'Nosov', 'Manager', '01.03.1985', 'PC-1002');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Leonid', 'Satin', 'Worker', '04.10.1970', 'PC-2024');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Elena', 'Vasilieva', 'Worker', '09.12.1990', 'PC-1206');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Petr', 'Osinin', 'Worker', '26.02.1995', 'PC-3245');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Nikolai', 'Losev', 'Manager', '16.03.1978', 'PC-1134');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Evgenij', 'Filatov', 'Director', '02.09.1979', 'PC-1364');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Tamara', 'Dolina', 'Worker', '09.11.1991', 'PC-7811');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Anton', 'Stepanov', 'Worker', '22.01.1992', 'PC-9912');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Vladimir', 'Kazakov', 'Manager', '01.01.1986', 'PC-4551');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Svetlana', 'Andreeva', 'Worker', '14.11.1976', 'PC-4651');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Stepan', 'Kozlov', 'Worker', '09.12.1990', 'PC-6453');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Ekaterina', 'Loyko', 'Worker', '26.02.1995', 'PC-3451');INTO employee (FirstName, LastName, Position, BirthDate, Technic)('Stanislav', 'Vlasov', 'Security', '31.04.1989', 'PC-1278'); ";

// создание таблицы техникиcreateTech = @"DROP TABLE IF EXISTS technics;TABLE technics (INTEGER PRIMARY KEY AUTOINCREMENT,TEXT,TEXT,TEXT,TEXT);INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-1002', 'No','01.02.2011', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-2024', 'No','04.01.2012', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-1206', 'No','23.02.2014', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-3245', 'No','11.10.2014', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-1134', 'No','23.02.2013', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-1890', 'Yes','17.06.2005', 'No');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-1364', 'No','21.11.2012', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-7811', 'No','07.02.2013', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-9912', 'No','01.01.2014', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-4551', 'No','12.07.2012', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-4651', 'No','30.12.2014', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-6453', 'No','29.12.2014', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-6643', 'Yes','12.08.2004', 'No');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-3451', 'No','01.02.2011', 'Yes');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-7777', 'No','11.12.2014', 'No');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-8888', 'No','17.11.2013', 'No');INTO Technics (Name, Inventarized, ManufacturedAt, Used)('PC-1278', 'No','01.02.2011', 'Yes'); ";. ExecuteCommand (createEmpl);. ExecuteCommand (createTech);

}

}

}

EmployeeForm. cs

{partial class EmployeeForm: Form

{EmployeeForm ()

{();

}

// разрешить редактирвоаниеvoid EnableEditing (bool value)

{. txtFirstName. ReadOnly =! value;. txtLastName. ReadOnly =! value;. txtBirthDate. ReadOnly =! value;. txtPosition. ReadOnly =! value;. txtTechnic. ReadOnly =! value;. btnApplyEmpl. Visible = value;. btnBrowseTechnic. Visible = value;. btnEditEmpl. Visible =! value;

}

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

public void SetEmployee (Employee employeeToShow, bool newObject)

{. txtFirstName. Text = employeeToShow. FirstName;. txtLastName. Text = employeeToShow. LastName;. txtBirthDate. Text = employeeToShow. BirthDate;. txtPosition. Text = employeeToShow. Position;. txtTechnic. Text = employeeToShow. Technic;. EnableEditing (newObject);. gridViewTech. Visible = false;. btnChooseTechnic. Visible = false;. btnCreateEmpl. Visible = newObject;. btnApplyEmpl. Visible =! newObject;

}

// кнопка сохранитьvoid btnApplyEmpl_Click (object sender, EventArgs e)

{. EnableEditing (false);. gridViewTech. Visible = false;. btnChooseTechnic. Visible = false;. ExecuteCommand (String. Format ("UPDATE technics SET Used = 'No' WHERE Name = '{0}'", this. _currentTechnic));. Save (false);. gridViewTech. Visible = false;. btnChooseTechnic. Visible = false;. Size = new Size (530, 230);. Close ();

}

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

private void btnEditEmpl_Click (object sender, EventArgs e)

{. EnableEditing (true);

}

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

private void btnBrowseTechnic_Click (object sender, EventArgs e)

{. ExecuteAndShowDataGrid (this. gridViewTech, "SELECT * FROM Technics WHERE Inventarized == 'No' AND Used = 'No'");. Size = new Size (530, 525);. gridViewTech. Visible = true;. btnChooseTechnic. Visible = true;. btnBrowseTechnic. Visible = false;

}

// кнопка выбратьvoid btnChooseTechnic_Click (object sender, EventArgs e)

{. ChooseTechnic ();

}

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

private void gridViewTech_DoubleClick (object sender, EventArgs e)

{. ChooseTechnic ();

}void ChooseTechnic ()

{

}Technic _technic = null;string _currentTechnic = String. Empty;string _oldFirstName = String. Empty;string _oldLastName = String. Empty;

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

private void EmployeeForm_Load (object sender, EventArgs e)

{. _currentTechnic = this. txtTechnic. Text;. _oldFirstName = this. txtFirstName. Text;. _oldLastName = this. txtLastName. Text;

}

// кнопка создатьvoid btnCreateEmpl_Click (object sender, EventArgs e)

{

this. btnCreateEmpl. Visible = false;. EnableEditing (false);. Save (true);. Close ();

}

// кнопка сохранитьvoid Save (bool isNew)

{

// если техника была изменена(_technic! = null)

{

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

DBHelper. ExecuteCommand (String. Format ("UPDATE technics SET Used = 'Yes' WHERE ID = {0}", _technic. Oid));(isNew). 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));

// иначе редактируем существующую. 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));

}

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

if (isNew). 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, ""));

// иначе редактируем существующую. 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));

}

}

}

Похожие работы на - Программное средство 'Учет техники на предприятии'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!