Добавлен: 28.03.2023
Просмотров: 130
Скачиваний: 2
СОДЕРЖАНИЕ
Глава 1. Исследование предметной области и предприятия
1.1. Характеристика предприятия и его деятельности
Глава 2. Информационное обеспечение задачи
2.1. Информационная модель и ее описание
2.2. Используемые классификаторы и системы кодирования
2.3. Характеристика нормативно-справочной, входной и оперативной информации
2.4. Характеристика результатной информации
3.1. Общие положения (дерево функций и сценарий диалога)
3.2. Характеристика базы данных
3.3. Структурная схема пакета (дерево вызова программных модулей)
3.4. Описание программных модулей
Глава 4. Контрольный пример реализации проекта и его описание
Net-технология несколько изменяет данный подход. Первоначально планировалось, что при net-концепции все элементы управления, функции, процедуры и так далее будут принадлежать одной большой библиотеке, называемой Net. Таким образом, дл работы программы потребуется наличие на компьютере пользователя установление этой библиотеки. Сейчас она входит в состав операционных систем семейства Windows уже как предустановленная. Программа, требующая Net-библиотеки не будет работать на компьютере, где она не установлена. Это напоминает технологию и библиотеку Direct-X, которая так знакома многим компьютерным игрокам.
Процесс эволюции показал, что Net не способна заменить технологию COM, потому что имеется огромное количество старого программного обеспечения и переписывать его просто нецелесообразно. Поэтому очень мудрым решением стало совместить в настоящих версиях Windows сразу две технологии.
Для реализации нашего проекта была выбрана среда разработки Delphi, а конкретно Delphi 7.
Delphi 7 - это язык программирования с очень широкими возможностями. И главная его отличительная черта заключается в мощности построения пользовательского интерфейса и в мощности работы с базами данных, обладая при этом почти безграничными возможностями.
Хочется упомянуть о том, что Delphi 7 - это первая из версий Delphi, написанная на себе самом, то есть Delphi 7 написали на Delphi 6. Таким образом, очень впечатляет мощность этой программной среды.
Простота написания и модность этого языка сыграли для него роковую роль. После выхода его в свет, Delphi стал изучаться во всех ВУЗах страны, как основной язык программирования. Само-собой разумеется, что выпускники таки ВУЗов далеко не все являлись хорошими программистами. А поскольку писать ан Delphi было достаточно легко, то многие из них, устроившись в фирмы пробовали разрабатывать программы. Но, не имея достаточных знаний для поддержки приложений - их забрасывали. И со временем, у заказчиков сложилось впечатление, что программирование на Delphi является плохим тоном и язык этот является ниже среднего о качеству написания кода. Впоследствии Delphi был заброшен и сейчас на нем программируют намного реже, чем десять лет назад.
На самом деле это есть не что иное, как отсутствие знаний многих начинающих специалистов. Delphi - прямой наследник всеми знаменитого языка Паскаль, а затем и объектного Паскаль.
По своим возможностям Delphi прямой конкурент не только Visual Basic, но и некоторой степени языка С, например по части взаимодействия с функциями API-windows. Здесь у Delphi есть все необходимое, а ведь функции API вызываются достаточно часто, при написании весьма крупных проектов. Delphi конечно уступает по скорости работы написанной на нем программы С-подобным языкам, но он создавался как язык более высокого уровня, предназначенным для решения прикладных задач, а языки семейства С - это более системные языки. Хотя стоит повториться, что сейчас положение дел изменилось и тот же С# обладает множеством визуальных компонентов, готовых к работе.
Тем не менее, конкурентов у Delphi, если оценить их адекватно почти нет. В связи с этим и с тем, что этот язык постепенно снова начинает набирать популярность, данный проект был реализован именно на нем.
Delphi базируется на концепциях современного объектно-ориентированного программирования:
- Полиморфизм
- Наследование
- Инкапсулирование
Полиморфизм - это возможность, при которой объекты, имея одинаковую спецификацию способны иметь различную реализацию.
Наследование представляет собой технологию, когда дочерний объект наследует атрибуты объекта родителя.
Инкапсулирование - это объединение данных и функций в едином компоненте.
Delphi 7 был разработан компанией Borland. В настоящее время Delphi принадлежит компании Embarcadero. Но Embarcadero является в отношении Delphi структурным подразделением Borland.
Стоит сказать так же, что Delphi - это многоплатформенная среда разработки. Delphi 7 в своем составе имеет библиотеку VCL. То есть компоненты этой библиотеки не являются ActiveX, а напротив, являются "родными" для Delphi. Это значит, что их регистрация не требуется в операционной системе, и они встраиваются в исполняемый .exe - файл. Это значит, что такой исполняемый файл будет работать и в Linux. Современные версии делфи позволяют писать приложения для MAC IOS и Андроид.
Для работы с базой данных Delphi представляет из себя многочисленные технологии. Это технология BDE, ADO и многие другие.
Для реализации этого проекта была выбрана технология ADO компании Microsoft. Это ActiveX компонент, но его установка в операционной системе не требуется, так как она является сутью самой Windows. Альтернативой для данной задачи является механизм доступа к данным BDE, но движок BDE придется устанавливать на каждый компьютер отдельно. Это не являются чем-то проблемным, просто компания Borland посчитала механизм BDE немного устарешей технологией и плохо обрабатывающей большие объемы данных, которым сейчас оперируют современные базы. Хотя для нашей программы механизма BDE было бы более чем достаточно. Тем не менее, предпочтение отдано технологии ADO.
ADO - это механизм доступа к данным компании Microsoft, который заменил, две устаревшие технологии этой же компании DAO (Технология доступа к локальным данным) и RDO (Технология доступа к удаленным данным). Теперь эти два объекта объединяются в одном, что очень удобно.
Таким образом, Delphi 7 - это одна из самых мощных сред разработки прикладного программного обеспечения, в том числе и для работы с базами данных.
Глава 2. Информационное обеспечение задачи
2.1. Информационная модель и ее описание
Рисунок 2.1.1. Информационная модель
Материально ответственное лицо сверяет данные о товаре после инвентаризации с БД и если отсутствует, то заносит сведенья о товаре в БД.
Если же выявляется что товар не является качественным и не пригодным к использованию, то материально ответственное лицо удаляет сведения о данном товаре с БД
2.2. Используемые классификаторы и системы кодирования
Таблица 2.1.
Нормализованные данные
Название |
Тип |
Описание |
NameTov |
Текстовый |
Наименование ОС или ТМЦ |
Tip |
Текстовый |
Тип |
InvNom |
Текстовый |
Инвентарный номер |
SerNom |
Текстовый |
Серийный номер |
Kol |
Числовой |
Количество |
Otdel |
Текстовый |
Отдел |
FIOMOL |
Текстовый |
ФИО МОЛ |
DataP |
Дата/Время |
Дата постановки на учет |
2.3. Характеристика нормативно-справочной, входной и оперативной информации
Нормативно-справочная информация содержится в двух справочных таблицах: Kategor и Otdel
Таблица 2.2.
Описание Kategor
Название |
Описание |
Kod_Kategor |
Код категории |
Vid_Kategor |
Вид категории |
Таблица 2.3.
Описание Otdel
Название |
Описание |
Kod_otdela |
Код отдела |
Name_Otdela |
Наименование отдела |
MOL |
МОЛ |
2.4. Характеристика результатной информации
Результатной информацией будет статистика инвентарная опись по объектам инвентаризации:
procedure TfrmOsn.cmdFilterClick(Sender: TObject);
var
Data1: string; //Начальная дата
Data2: string; //Конечная дата
begin
if rbNameF.Checked=true then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE NameTov like ''%'+trim(txtNameF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;
adoInv.Last;
Zapcount;
end;
if (rbNameF.Checked=true) and (chDataF.Checked=true) then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE NameTov like ''%'+trim(txtNameF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;//Отключаем фильтр
Data1:=FormatDateTime('dd.mm.yyyy', cbodata1F.Date);
Data2:=FormatDateTime('dd.mm.yyyy', cbodata2F.Date);
adoInv.Filter:='DataP>='+Data1+' and '+'DataP<='+Data2;
adoInv.Filtered:=true;//Устанавливаем фильтр
adoInv.Last;
Zapcount;
end;
if rbTipF.Checked=true then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE Tip like ''%'+trim(cboTipF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;
adoInv.Last;
Zapcount;
end;
if (rbTipF.Checked=true) and (chDataF.Checked=true) then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE Tip like ''%'+trim(cboTipF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;//Отключаем фильтр
Data1:=FormatDateTime('dd.mm.yyyy', cbodata1F.Date);
Data2:=FormatDateTime('dd.mm.yyyy', cbodata2F.Date);
adoInv.Filter:='DataP>='+Data1+' and '+'DataP<='+Data2;
adoInv.Filtered:=true;//Устанавливаем фильтр
adoInv.Last;
Zapcount;
end;
if rbInvF.Checked=true then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE InvNom like ''%'+trim(txtInvF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;
adoInv.Last;
Zapcount;
end;
if rbSerNomF.Checked=true then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE SerNom like ''%'+trim(txtSerNomF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;
adoInv.Last;
Zapcount;
end;
if rbOtdelF.Checked=true then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE Otdel like ''%'+trim(txtOtdelF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;
adoInv.Last;
Zapcount;
end;
if (rbOtdelF.Checked=true) and (chDataF.Checked=true) then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE Otdel like ''%'+trim(txtOtdelF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;//Отключаем фильтр
Data1:=FormatDateTime('dd.mm.yyyy', cbodata1F.Date);
Data2:=FormatDateTime('dd.mm.yyyy', cbodata2F.Date);
adoInv.Filter:='DataP>='+Data1+' and '+'DataP<='+Data2;
adoInv.Filtered:=true;//Устанавливаем фильтр
adoInv.Last;
Zapcount;
end;
if rbFIOF.Checked=true then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE FIOMOL like ''%'+trim(txtFIOF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;
adoInv.Last;
Zapcount;
end;
if (rbFIOF.Checked=true) and (chDataF.Checked=true) then
begin;
adoInv.close;
adoInv.SQL.Clear;
//Отбираем записи, которые содержат символы, введенные в поле Показатель
adoInv.SQL.add('SELECT * FROM InvOpis');
adoInv.SQL.add('WHERE FIOMOL like ''%'+trim(txtFIOF.text)+'%''');
adoInv.Open;
adoInv.Filtered:=false;//Отключаем фильтр
Data1:=FormatDateTime('dd.mm.yyyy', cbodata1F.Date);
Data2:=FormatDateTime('dd.mm.yyyy', cbodata2F.Date);
adoInv.Filter:='DataP>='+Data1+' and '+'DataP<='+Data2;
adoInv.Filtered:=true;//Устанавливаем фильтр
adoInv.Last;
Zapcount;
end;
end;
Глава 3. Программное обеспечение задачи
3.1. Общие положения (дерево функций и сценарий диалога)
Разрабатываемый программный продукт автоматизирует функции инвентаризации в пенсионном фонде.
Выделяется два подмножества функций складской системы служебные функции, к которым относятся вход в систему с учетной записью пользователя, введение этой программы. Основные функции обработки данных: ведение учета , проведение инвентаризации, просмотр и печать описи после инвентаризации.(рис. 3.1.1.)
Система должна работать в многопользовательском режиме. При входе в систему под определенной учетной записью, пользователь получит доступ к тем функциям системы, которые ему доступны. Для решаемой задачи не определена четкая последовательность действий при обработке данных. Все операции, связанные с вводом информации, должны выполняться в диалоговом режиме обработки в реальном масштабе времени. Для такого взаимодействия пользователей с программой удобнее всего использовать язык диалога. (рис. 3.1.2.)