Разработка базы данных и прикладных программ для автоматизации процесса закупки лекарственных препаратов
Автоматизация учета закупки лекарственных препаратов в аптеке. Разработка базы данных и прикладных программ для работы с ней. Анализ предметной области и формирование требований пользователей. Выбор архитектуры программно-технологической реализации.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 10.09.2015 |
Размер файла | 4,1 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
end;
Обработчик события "OnClick" компонента "BitBtn7":
procedure TFDirector. BitBtn7Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllPreparat. Open;
PageControl1. Visible: =true;
PageControl1. Pages [3]. TabVisible: =true;
PageControl1. ActivePageIndex: =3;
end;
Обработчик события "OnClick" компонента "BitBtn5":
procedure TFDirector. BitBtn5Click (Sender: TObject);
begin
FNewApteka. ShowModal;
end;
Обработчик события "OnClick" компонента "BitBtn6":
procedure TFDirector. BitBtn6Click (Sender: TObject);
begin
FNewPostavshik. ShowModal;
end;
Обработчик события "OnClick" компонента "BitBtn9":
procedure TFDirector. BitBtn9Click (Sender: TObject);
begin
FNewTorgPred. ShowModal;
end;
Обработчик события "OnClick" компонента "BitBtn8":
procedure TFDirector. BitBtn8Click (Sender: TObject);
begin
FNewPreparat. ShowModal;
end;
3.2.6 Форма "FTorgPredApteki"
Форма " FTorgPredApteki " предназначена для отображения торгового предложения в аптеки с возможность посмотреть предложение по каждой аптеке или по определённому лекарственному препарату при помощи фильтров.
На основе информации данной формы менеджер формирует торговое предложение (форма FNewTorgPredApteki) для каждой аптеки при нажатии кнопки "Сформировать торговое предложение". Также на данной форме менеджер может отслеживать остатки товара в каждой аптеке и при необходимости оформить заявку на поставку необходимого препарата (форма "FZayavkaPostavka"), нажав кнопку "Заявка на поставку". Вид формы показан на рисунке 13.
Рисунок 13 - Форма "FTorgPredApteki"
На данной форме разместил компоненты в соответствии с таблицей 24.
Таблица 24 - Компоненты формы "FTorgPredApteki"
Компонент |
Вложенный компонент |
Вложенный компонент |
Назначение |
|
DBGrid1 |
Вывод информации |
|||
Panel1 |
Компонент для размещения и группировки элементов |
|||
BitBtn1 |
Кнопка "Сформировать торговое предложение" |
|||
BitBtn2 |
Кнопка "Заявка на поставку" |
|||
GroupBox1 |
Фильтр |
|||
DBLookupComboBox1 |
Выбор аптеки |
|||
DBLookupComboBox2 |
Выбор препарата |
|||
Label1 |
Надпись "Выберите аптеку" |
|||
Label2 |
Надпись "Название препарата" |
Обработчик события "OnActivate" формы "FTorgPredApteki":
procedure TFTorgPredApteki. FormActivate (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllAptk. Open;
DataModuleApteka. SimpleDataSetAllPreparat. Open;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =false;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. DataSet.commandText: ='SELECT "TovarApt". "Kod_rashoda","Apteki". "Aptk_adres",'
+'"Apteki". "Aptk_telf", "PreparSprav". "Name_tovara", "TorgPred". "Price_opt", '
+'"TovarApt". "Tovar_price_ed","TovarApt". "Tovar_ost", "TovarApt". "Tovar_prod", '
+'"PreparSprav". "Zh_n_pr", "TovarApt". "Min_zps" '
+'FROM "Apteki", "PreparSprav", "TovarApt", "TorgPred" '
+'WHERE "Apteki". "Num_aptk"="TovarApt". "Num_aptk" and '
+'"TovarApt". "Kod_tovara"="PreparSprav". "Kod_tovara" and '
+'"TorgPred". "Kod_tovara"="PreparSprav". "Kod_tovara"';
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =true;
end;
Обработчик события "OnClick" компонента "DBLookupComboBox1":
procedure TFTorgPredApteki. DBLookupComboBox1Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =false;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. DataSet.commandText: ='SELECT "TovarApt". "Kod_rashoda","Apteki". "Aptk_adres",'
+'"Apteki". "Aptk_telf", "PreparSprav". "Name_tovara", "TorgPred". "Price_opt", '
+'"TovarApt". "Tovar_price_ed","TovarApt". "Tovar_ost", "TovarApt". "Tovar_prod", '
+'"PreparSprav". "Zh_n_pr", "TovarApt". "Min_zps" '
+'FROM "Apteki", "PreparSprav", "TovarApt", "TorgPred" '
+'WHERE "Apteki". "Num_aptk"="TovarApt". "Num_aptk" and '
+'"TovarApt". "Kod_tovara"="PreparSprav". "Kod_tovara" and '
+'"TorgPred". "Kod_tovara"="PreparSprav". "Kod_tovara" and "Apteki". "Num_aptk"='
+DataModuleApteka. SimpleDataSetAllAptk. FieldByName ('Num_aptk'). AsString;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =true;
end;
Обработчик события "OnClick" компонента "DBLookupComboBox2":
procedure TFTorgPredApteki. DBLookupComboBox2Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =false;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. DataSet.commandText: ='SELECT "TovarApt". "Kod_rashoda","Apteki". "Aptk_adres",'
+'"Apteki". "Aptk_telf", "PreparSprav". "Name_tovara", "TorgPred". "Price_opt", '
+'"TovarApt". "Tovar_price_ed","TovarApt". "Tovar_ost", "TovarApt". "Tovar_prod", '
+'"PreparSprav". "Zh_n_pr", "TovarApt". "Min_zps" '
+'FROM "Apteki", "PreparSprav", "TovarApt", "TorgPred" '
+'WHERE "Apteki". "Num_aptk"="TovarApt". "Num_aptk" and '
+'"TovarApt". "Kod_tovara"="PreparSprav". "Kod_tovara" and '
+'"TorgPred". "Kod_tovara"="PreparSprav". "Kod_tovara" and "PreparSprav". "Kod_tovara"='
+DataModuleApteka. SimpleDataSetAllPreparat. FieldByName ('Kod_tovara'). AsString;
DataModuleApteka. SimpleDataSetTovar_v_Apteke. Active: =true;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFTorgPredApteki. BitBtn1Click (Sender: TObject);
begin
FNewTorgPredApteki. Show;
end;
Обработчик события "OnClick" компонента "BitBtn2":
procedure TFTorgPredApteki. BitBtn2Click (Sender: TObject);
begin
FZayavkaPostavka. ShowModal;
end;
3.2.7 Форма "FNewTorgPredApteki"
Форма " FNewTorgPredApteki " предназначена для формирования торгового предложения выбранной аптеки. При выборе определённого товара, оптовая цена автоматически отображается в соответствующем поле. Вид формы показан на рисунке 14.
Рисунок 14 - Форма "FNewTorgPredApteki" для формирования торгового предложения в аптеке
На данной форме разместил компоненты в соответствии с таблицей 25.
Таблица 25 - Компоненты формы "FNewTorgPredApteki"
Компонент |
Назначение |
|
Image1 |
Фоновый рисунок |
|
DBLookupComboBox1 |
Выбор адреса аптеки |
|
DBLookupComboBox2 |
Выбор наименования товара |
|
LabeledEdit1 |
Поле ввода "Остаток товара" |
|
LabeledEdit2 |
Поле ввода "Продано товара" |
|
LabeledEdit3 |
Поле ввода "Розничная цена" |
|
LabeledEdit4 |
Поле ввода "Оптовая цена" |
|
Label1 |
Надпись "Адрес аптеки" |
|
Label2 |
Надпись "Наименование товара" |
|
Label3 |
Надпись "Минимальный запас жизн. необ. препар. " |
|
Edit1 |
Поле ввода "Минимальный запас жизн. необ. препар. " |
|
BitBtn1 |
Кнопка "Добавить" |
Обработчик события "OnActivate" формы "FNewTorgPredApteki":
procedure TFNewTorgPredApteki. FormActivate (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllAptk. Open;
DataModuleApteka. SimpleDataSetAllPreparat. Open;
end;
Обработчик события "OnClick" компонента "DBLookupComboBox2":
procedure TFNewTorgPredApteki. DBLookupComboBox2Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetOptPrice. Active: =false;
DataModuleApteka. SimpleDataSetOptPrice. DataSet.commandText: ='select "Price_opt" from "TorgPred" where "Kod_tovara"='
+DataModuleApteka. SimpleDataSetAllPreparat. FieldByName ('Kod_tovara'). AsString;
DataModuleApteka. SimpleDataSetOptPrice. Active: =true;
LabeledEdit4. Text: =DataModuleApteka. SimpleDataSetOptPrice. FieldByName ('Price_opt'). AsString;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFNewTorgPredApteki. BitBtn1Click (Sender: TObject);
begin
TransInfo. TransactionID: =1;
if Not DataModuleApteka. SQLConnection1. InTransaction then
DataModuleApteka. SQLConnection1. StartTransaction (TransInfo);
DataModuleApteka. SQLStoredProcAddTorgPredApteki. Params. ParamByName ('P1'). Value: =DataModuleApteka. SimpleDataSetAllAptk. FieldByName ('Num_aptk'). Value;
DataModuleApteka. SQLStoredProcAddTorgPredApteki. Params. ParamByName ('P2'). Value: =DataModuleApteka. SimpleDataSetAllPreparat. FieldByName ('Kod_tovara'). Value;
DataModuleApteka. SQLStoredProcAddTorgPredApteki. Params. ParamByName ('P3'). Value: =LabeledEdit1. Text;
DataModuleApteka. SQLStoredProcAddTorgPredApteki. Params. ParamByName ('P4'). Value: =LabeledEdit2. Text;
DataModuleApteka. SQLStoredProcAddTorgPredApteki. Params. ParamByName ('P5'). Value: =LabeledEdit3. Text;
DataModuleApteka. SQLStoredProcAddTorgPredApteki. Params. ParamByName ('P6'). Value: =Edit1. Text;
try
DataModuleApteka. SQLStoredProcAddTorgPredApteki. ExecProc;
DataModuleApteka. SQLConnection1.commit (TransInfo);
ShowMessage ('Транзакция выполнена');
except
DataModuleApteka. SQLConnection1. Rollback (TransInfo);
MessageDlg ('Транзакция не выполнена',mtError, [mbOK],0)
end;
end;
3.2.8 Форма "FZayavkaPostavka"
Форма " FZayavkaPostavka " предназначена для формирования заявки на поставку товара в аптеку на основании "Кода расхода" в торговом предложении аптеки, доступном на форме "FTorgPredApteki". При выборе определённого препарата, оптовая цена автоматически отображается в соответствующем поле, а при вводе количества необходимого товара, сумма подсчитывается автоматически. Вид формы показан на рисунке 15.
На данной форме разместил компоненты в соответствии с таблицей 26.
Таблица 26 - Компоненты формы "FZayavkaPostavka"
Компонент |
Назначение |
|
Image1 |
Фоновый рисунок |
|
Label2 |
Надпись "Поставщик" |
|
Label3 |
Надпись "Наименование препарата" |
|
Label4 |
Надпись "Количество" |
|
Label5 |
Надпись "Цена (опт.)" |
|
Label6 |
Надпись "Сумма" |
|
Label7 |
Надпись "Номер документа" |
|
Label8 |
Надпись "Код расхода" |
|
Label9 |
Надпись "Дата заказа |
|
Edit1 |
Поле ввода "Цена (опт.)" |
|
Edit2 |
Поле ввода "Количество" |
|
Edit3 |
Поле ввода "Сумма" |
|
Edit4 |
Поле ввода "Номер документа" |
|
DBLookupComboBox1 |
Выбор поставщика |
|
DBLookupComboBox2 |
Выбор препарата |
|
DBLookupComboBox3 |
Выбор кода расхода |
|
DateTimePicker1 |
Выбор даты заказа |
|
BitBtn1 |
Кнопка "Оформить заявку" |
Рисунок 15 - Форма "FZayavkaPostavka"
Обработчик события "OnActivate" формы "FZayavkaPostavka":
procedure TFZayavkaPostavka. FormActivate (Sender: TObject);
begin
DataModuleApteka. SQLConnection1. Connected: =true;
DataModuleApteka. SimpleDataSetAllPstvsh. Open;
DataModuleApteka. SimpleDataSetAllAptk. Open;
DataModuleApteka. SimpleDataSetTovarApt. Open;
end;
Обработчик события "OnClick" компонента "DBLookupComboBox1":
procedure TFZayavkaPostavka. DBLookupComboBox1Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetZayavkaPostavka. Active: =false;
DataModuleApteka. SimpleDataSetZayavkaPostavka. DataSet.commandText: ='SELECT * FROM '
+' "PreparSprav", "TorgPred"'
+' WHERE "TorgPred". "Kod_tovara"="PreparSprav". "Kod_tovara" and "TorgPred". "Kod_pstvsh"='
+DataModuleApteka. SimpleDataSetAllPstvsh. FieldByName ('Kod_pstvsh'). AsString;
DataModuleApteka. SimpleDataSetZayavkaPostavka. Active: =true;
end;
Обработчик события "OnClick" компонента "DBLookupComboBox2":
procedure TFZayavkaPostavka. DBLookupComboBox2Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetOptPrice. Active: =false;
DataModuleApteka. SimpleDataSetOptPrice. DataSet.commandText: ='select "Price_opt" from "TorgPred" where "Kod_tovara"='
+DataModuleApteka. SimpleDataSetAllPreparat. FieldByName ('Kod_tovara'). AsString;
DataModuleApteka. SimpleDataSetOptPrice. Active: =true;
Edit1. Text: =DataModuleApteka. SimpleDataSetOptPrice. FieldByName ('Price_opt'). AsString;
end;
Обработчик события "OnClick" компонента "Edit3":
procedure TFZayavkaPostavka. Edit3Click (Sender: TObject);
begin
Edit3. Text: =IntToStr (StrToInt (Edit1. Text) *StrToInt (Edit2. Text));
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFZayavkaPostavka. BitBtn1Click (Sender: TObject);
begin
TransInfo. TransactionID: =1;
if Not DataModuleApteka. SQLConnection1. InTransaction then
DataModuleApteka. SQLConnection1. StartTransaction (TransInfo);
DataModuleApteka. SQLStoredProcAddZakaz. Params. ParamByName ('P1'). Value: =DataModuleApteka. SimpleDataSetZayavkaPostavka. FieldByName ('NumTorgPred'). Value;
DataModuleApteka. SQLStoredProcAddZakaz. Params. ParamByName ('P2'). Value: =DataModuleApteka. SimpleDataSetTovarApt. FieldByName ('Kod_rashoda'). Value;
DataModuleApteka. SQLStoredProcAddZakaz. Params. ParamByName ('P3'). Value: =StrToInt (Edit1. Text);
DataModuleApteka. SQLStoredProcAddZakaz. Params. ParamByName ('P4'). Value: =DateTimePicker1. Date;
DataModuleApteka. SQLStoredProcAddZakaz. Params. ParamByName ('P5'). Value: =StrToInt (Edit4. Text);
try
DataModuleApteka. SQLStoredProcAddZakaz. ExecProc;
DataModuleApteka. SQLConnection1.commit (TransInfo);
ShowMessage ('Транзакция выполнена');
except
DataModuleApteka. SQLConnection1. Rollback (TransInfo);
MessageDlg ('Транзакция не выполнена',mtError, [mbOK],0)
end;
OExcel: =CreateOleObject ('Excel. Application'); // Создать OLE объект Excel
OExcel. WorkBooks. Add (); // Создать рабочую книгу Excel
OExcel. Visible: =True; // Сделать Excel видимым
// Занести в ячейку значение
OExcel. Cells [1,1]. Value: ='Номер документа';
OExcel. Cells [1,3]. Value: =Edit4. Text;
OExcel. Cells [2,1]. Value: ='Дата заказа';
OExcel. Cells [2,3]. Value: =DateToStr (DateTimePicker1. Date);
OExcel. Cells [3,1]. Value: ='Поставщик';
OExcel. Cells [3,3]. Value: =DBLookupComboBox1. Text;
OExcel. Cells [4,1]. Value: ='Номер договора';
OExcel. Cells [4,3]. Value: =DataModuleApteka. SimpleDataSetAllPstvsh. FieldByName ('Kod_pstvsh'). AsString;
OExcel. Cells [5,1]. Value: ='Наименование препарата';
OExcel. Cells [5,3]. Value: =DataModuleApteka. SimpleDataSetAllPreparat. FieldByName ('Name_tovara'). AsString;
OExcel. Cells [6,1]. Value: ='Количество';
OExcel. Cells [6,3]. Value: =Edit2. Text;
OExcel. Cells [7,1]. Value: ='Цена (сумма) ';
OExcel. Cells [7,3]. Value: =Edit3. Text;
end;
3.2.9 Форма "FNewPreparat"
Форма " FNewPreparat " предназначена для добавления нового препарата в справочник лекарственных препаратов. Вид формы показан на рисунке 16.
На данной форме разместил компоненты в соответствии с таблицей 27.
Таблица 27 - Компоненты формы "FNewPreparat"
Компонент |
Назначение |
|
LabeledEdit1 |
Поле ввода группы препарата |
|
LabeledEdit2 |
Поле ввода наименования препарата |
|
LabeledEdit3 |
Поле ввода единицы измерения |
|
CheckBox1 |
Выбор является ли лекарственный препарат жизненно необходимом |
|
BitBtn1 |
Кнопка "Добавить препарат" |
Рисунок 16 - Форма "FNewPreparat"
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFNewPreparat. BitBtn1Click (Sender: TObject);
begin
TransInfo. TransactionID: =1;
if Not DataModuleApteka. SQLConnection1. InTransaction then
DataModuleApteka. SQLConnection1. StartTransaction (TransInfo);
DataModuleApteka. SQLStoredProcAddPreparat. Params. ParamByName ('P1'). AsString: =LabeledEdit1. Text;
DataModuleApteka. SQLStoredProcAddPreparat. Params. ParamByName ('P2'). AsString: =LabeledEdit2. Text;
DataModuleApteka. SQLStoredProcAddPreparat. Params. ParamByName ('P3'). AsString: =LabeledEdit3. Text;
if CheckBox1. Checked then n: =1
else n: =0;
DataModuleApteka. SQLStoredProcAddPreparat. Params. ParamByName ('P4'). Value: =n;
try
DataModuleApteka. SQLStoredProcAddPreparat. ExecProc;
DataModuleApteka. SQLConnection1.commit (TransInfo);
ShowMessage ('Транзакция выполнена');
except
DataModuleApteka. SQLConnection1. Rollback (TransInfo);
MessageDlg ('Транзакция не выполнена',mtError, [mbOK],0)
end;
DataModuleApteka. SimpleDataSetAllPreparat. Close;
DataModuleApteka. SimpleDataSetAllPreparat. Open;
end;
3.2.10 Форма "FManagerOtchet"
Форма "FManagerOtchet " предназначена для отображения информации по заявкам поставщикам (заявка на поставку) с возможностью просмотра по каждому поставщику и печатью соответствующего отчёта. Вид формы показан на рисунке 17.
Рисунок 17 - Форма "FManagerOtchet"
На данной форме разместил компоненты в соответствии с таблицей 28.
Таблица 28 - Компоненты формы "FManagerOtchet"
Компонент |
Назначение |
|
DBGrid1 |
Вывод информации |
|
DBLookupComboBox1 |
Выбор поставщика |
|
BitBtn1 |
Кнопка "Печать" |
Обработчик события "OnActivate" формы "FManagerOtchet":
procedure TFManagerOtchet. FormActivate (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllPstvsh. Open;
DataModuleApteka. SimpleDataSetManagerOtchet. Open;
end;
Обработчик события "OnClick" компонента "DBLookupComboBox1":
procedure TFManagerOtchet. DBLookupComboBox1Click (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetManagerOtchet. Close;
DataModuleApteka. SimpleDataSetManagerOtchet2. Close;
DataModuleApteka. SimpleDataSetManagerOtchet2. DataSet.commandText: ='select * from "manager_otchet2" ('
+DataModuleApteka. SimpleDataSetAllPstvsh. FieldByName ('Kod_pstvsh'). AsString+') ';
DBGrid1. DataSource: =DataModuleApteka. DataSourceManagerOtchet2;
DataModuleApteka. SimpleDataSetManagerOtchet2. Open;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFManagerOtchet. BitBtn1Click (Sender: TObject);
begin
OExcel: =CreateOleObject ('Excel. Application'); // Создать OLE объект Excel
OExcel. WorkBooks. Add (); // Создать рабочую книгу Excel
OExcel. Visible: =True; // Сделать Excel видимым
// Занести в ячейку значение
OExcel. Cells [1,1]. Value: ='Отчёт по заявкам поставщикам ' + DataModuleApteka. SimpleDataSetAllPstvsh. FieldByName ('Name_pstvsh'). AsString;
OExcel. Cells [2,1]. Value: ='Дата '+ DateToStr (Date);
// Определить количество столбцов DBGrid1
i: =DBGrid1. Columns. Count;
for j: =1 to i do
begin
// Занести в ячейки 3 строки заголовки столбцов DBGrid1
OExcel. Cells [3,j]. Value: = DBGrid1. Columns. Items [j-1]. Title. Caption;
OExcel. Range [chr (96+j) +': '+chr (96+j)]. Select; // Выделить ячейки
// Установить ширину ячейки OExcel в зависимости от ширины столбца DBGrid1
OExcel. Selection. ColumnWidth: =DBGrid1. Columns. Items [j-1]. Width/5;
OExcel. Selection. WrapText: = True; // Переносить по словам
end;
OExcel. Range ['1: 1']. Select; // Выделить ячейку 1 столбца 1 строки
OExcel. Selection. WrapText: = False;
istr: =5; // Номер строки
DataModuleApteka. SimpleDataSetManagerOtchet. First; // Перейти на первую запись
while not DataModuleApteka. SimpleDataSetManagerOtchet. Eof do // Пока не будет достигнут конец файла
begin
for j: =1 to i do
// Заносить в ячейку Excel содержимое полей, которые отражаются в DBGrid1
OExcel. Cells [istr,j]. Value: =DataModuleApteka. SimpleDataSetManagerOtchet. FieldByName (DBGrid1. Columns. Items [j-1]. FieldName). AsString;
DataModuleApteka. SimpleDataSetManagerOtchet. Next; // Перейти на следующую запись
istr: =istr+1; // Увеличить номер строки
end;
OExcel. Range ['A3: '+chr (96+j-1) +IntToStr (istr)]. Select; // Выделить ячейки
// Обрамление сплошной линией всех выделенных ячеек
OExcel. Selection. Borders [xlEdgeLeft]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlEdgeRight]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlEdgeTop]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlEdgeBottom]. LineStyle: =xlContinuous;
if i>1 then
OExcel. Selection. Borders [xlInsideVertical]. LineStyle: =xlContinuous;
OExcel. Selection. Borders [xlInsideHorizontal]. LineStyle: =xlContinuous;
OExcel. Range ['D'+IntToStr (istr) +': D'+IntToStr (istr+1)]. Select;
// Объединение ячеек
OExcel. Selection. MergeCells: =True;
OExcel. Selection. HorizontalAlignment: = xlLeft;
OExcel. Selection. VerticalAlignment: = xlCenter;
end;
3.2.11 Форма "FNewApteka"
Форма " FNewApteka " предназначена для добавления информации в базу данных о новой аптеке. Вид формы показан на рисунке 18.
Рисунок 18 - Форма "FNewApteka"
На данной форме разместил компоненты в соответствии с таблицей 29.
Таблица 29 - Компоненты формы "FNewApteka"
Компонент |
Назначение |
|
LabeledEdit1 |
Поле ввода адреса новой аптеки |
|
LabeledEdit2 |
Поле ввода телефона новой аптеки |
|
BitBtn1 |
Кнопка "Сохранить" |
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFNewApteka. BitBtn1Click (Sender: TObject);
begin
TransInfo. TransactionID: =1;
if Not DataModuleApteka. SQLConnection1. InTransaction then
DataModuleApteka. SQLConnection1. StartTransaction (TransInfo);
DataModuleApteka. SQLStoredProcAddAptk. Params. ParamByName ('P1'). AsString: =LabeledEdit1. Text;
DataModuleApteka. SQLStoredProcAddAptk. Params. ParamByName ('P2'). Value: =LabeledEdit2. Text;
try
DataModuleApteka. SQLStoredProcAddAptk. ExecProc;
DataModuleApteka. SQLConnection1.commit (TransInfo);
ShowMessage ('Транзакция выполнена');
except
DataModuleApteka. SQLConnection1. Rollback (TransInfo);
MessageDlg ('Транзакция не выполнена',mtError, [mbOK],0)
end;
DataModuleApteka. SimpleDataSetAllAptk. Close;
DataModuleApteka. SimpleDataSetAllAptk. Open;
end;
3.2.12 Форма "FNewPostavshik"
Форма " FNewPostavshik " предназначена для добавления информации в базу данных о новом поставщике. Вид формы показан на рисунке 19.
Рисунок 19 - Форма "FNewPostavshik"
На данной форме разместил компоненты в соответствии с таблицей 30.
Таблица 30 - Компоненты формы "FNewPostavshik"
Компонент |
Назначение |
|
Image1 |
Фоновый рисунок |
|
LabeledEdit1 |
Поле ввода наименования поставщика |
|
LabeledEdit2 |
Поле ввода адреса поставщика |
|
LabeledEdit3 |
Поле ввода телефона поставщика |
|
BitBtn1 |
Кнопка "Сохранить" |
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFNewPostavshik. BitBtn1Click (Sender: TObject);
begin
TransInfo. TransactionID: =1;
if Not DataModuleApteka. SQLConnection1. InTransaction then
DataModuleApteka. SQLConnection1. StartTransaction (TransInfo);
DataModuleApteka. SQLStoredProcAddPstvsh. Params. ParamByName ('P1'). AsString: =LabeledEdit1. Text;
DataModuleApteka. SQLStoredProcAddPstvsh. Params. ParamByName ('P2'). AsString: =LabeledEdit2. Text;
DataModuleApteka. SQLStoredProcAddPstvsh. Params. ParamByName ('P3'). Value: =LabeledEdit3. Text;
try
DataModuleApteka. SQLStoredProcAddPstvsh. ExecProc;
DataModuleApteka. SQLConnection1.commit (TransInfo);
ShowMessage ('Транзакция выполнена');
except
DataModuleApteka. SQLConnection1. Rollback (TransInfo);
MessageDlg ('Транзакция не выполнена',mtError, [mbOK],0)
end;
DataModuleApteka. SimpleDataSetAllPstvsh. Close;
DataModuleApteka. SimpleDataSetAllPstvsh. Open;
end;
3.2.13 Форма "FNewTorgPred"
Форма " FNewTorgPred " предназначена для добавления информации о торговом предложении каждого поставщика На данной форме разместил компоненты в соответствии с таблицей 31.
Таблица 31 - Компоненты формы "FNewTorgPred"
Компонент |
Назначение |
|
Label1 |
Надпись "Поставщик" |
|
Label2 |
Надпись "Препарат" |
|
Label3 |
Надпись "Цена (оптовая)" |
|
Label4 |
Надпись "руб. " |
|
DBLookupComboBox1 |
Выбор поставщика |
|
DBLookupComboBox1 |
Выбор лекарственного препарата |
|
Edit1 |
Поле ввода оптовой цены |
|
BitBtn1 |
Кнопка "Сохранить" |
Обработчик события "OnActivate" формы "FNewTorgPred":
procedure TFNewTorgPred. FormActivate (Sender: TObject);
begin
DataModuleApteka. SimpleDataSetAllPstvsh. Open;
DataModuleApteka. SimpleDataSetAllPreparat. Open;
end;
Обработчик события "OnClick" компонента "BitBtn1":
procedure TFNewTorgPred. BitBtn1Click (Sender: TObject);
begin
TransInfo. TransactionID: =1;
if Not DataModuleApteka. SQLConnection1. InTransaction then
DataModuleApteka. SQLConnection1. StartTransaction (TransInfo);
DataModuleApteka. SQLStoredProcAddTorgPred. Params. ParamByName ('P1'). Value: =DataModuleApteka. SimpleDataSetAllPreparat. FieldByName ('Kod_tovara'). Value;
DataModuleApteka. SQLStoredProcAddTorgPred. Params. ParamByName ('P2'). Value: =DataModuleApteka. SimpleDataSetAllPstvsh. FieldByName ('Kod_pstvsh'). Value;
DataModuleApteka. SQLStoredProcAddTorgPred. Params. ParamByName ('P3'). Value: =Edit1. Text;
try
DataModuleApteka. SQLStoredProcAddTorgPred. ExecProc;
DataModuleApteka. SQLConnection1.commit (TransInfo);
ShowMessage ('Транзакция выполнена');
except
DataModuleApteka. SQLConnection1. Rollback (TransInfo);
MessageDlg ('Транзакция не выполнена',mtError, [mbOK],0)
end;
end;
4. Тестирование программного продукта
4.1 Организация процесса тестирования
Тестирование в соответствии с рисунком 6 представляет собой деятельность по проверке программного кода и документации. Она должна заранее планироваться и систематически проводиться специально назначенным независимым тестировщиком. Работа тестировщика начинается до утверждения спецификаций требований. Он проверяет требования к ПП на полноту и возможность тестирования, определяет методы тестирования.
Одновременно с началом этапа планирования и создания спецификаций требований тестировщик разрабатывает стратегию тестирования. После утверждения спецификаций требований им разрабатывается и детализируется план тестирования. Тогда же тестировщик создает наборы тестов для проведения интеграционного и системного тестирований. Тестирование завершается созданием отчета о тестировании, в котором представляются все результаты его проведения.
Рисунок 21 - Цикл тестирования
Существуют два принципа тестирования программ:
Функциональное тестирование (тестирование "черного ящика");
Структурное тестирование (тестирование "белого ящика").
Тестирование "черного ящика - известны функции программы и исследуется работа каждой функции: как выполняется функция, как принимаются входные данные, как выдаются результаты, как сохраняется целостность данных.
Тестирование "белого ящика" - известна внутренняя структура программы и исследуется внутренние элементы программы и связи между ними, т.е. внутреннее поведение программы: проверяются ветви для всех условий, проверяются циклы, правильность внутренних структур данных.
4.2 Методы тестирования программного продукта
4.2.1 Модульное тестирование программного продукта
Модульное тестирование реализует принцип "белого ящика".
Тестированию подвергаются:
интерфейс модуля для проверки правильности ввода-вывода;
внутренние структуры данных для проверки целостности сохраняемых данных;
независимые пути - однократное выполнение всех операторов модуля;
пути обработки ошибок;
граничные условия.
4.2.1.1 Модуль "Авторизация пользователя" (UnitAuth. pas)
a) После запуска программы выбрать пользователя, на форме появится поле ввода соответствующего пароля пользователя;
b) Ввести пароль и нажать кнопку "Войти", данная форма закроется и откроется форма для выбранного пользователя;
c) Если пароль по истечении 3 попыток введён неверно, программа закроется.
d) При вводе неправильного пароля будет выдано сообщении о предупреждении и количестве попыток.
4.2.1.2 Модуль "Продавец" (UnitProdavec. pas)
a) После нажатия кнопки "Товар", появится компонент PageControl1, вкладка "Товар" с таблицей данных о товаре (DBGrid1), компонентом DBLookupComboBox1, кнопками "Продать" и "Печать";
b) При выборе адреса аптеки в компоненте DBLookupComboBox1, данные таблицы будет отсортированы по соответствующему выбору;
c) При нажатии на кнопку "Печать", содержимое таблицы формируется отчётом в Excel'е;
d) При использовании компонента CheckBox1, вкладка "Товар" вместе с компонентом PageControl1 появляется /исчезает;
e) При нажатии на кнопку "Выход" приложение закрывается.
4.2.1.3 Модуль "Менеджер" (UnitManager. pas)
a) При нажатии кнопки "Аптеки", появится компонент PageControl1, вкладка "Аптеки" с таблицей данных об аптеках (DBGrid1) и кнопкой "Торговое предложение в аптеке", при нажатии на которую откроется форма "Торговое приложение в аптеке" (модуль UnitTorgPredApteki. pas);
b) При нажатии кнопки "Поставщики", станет активна вкладка "Поставщики" компонента PageControl1 с таблицей данных о поставщиках (DBGrid2);
c) При нажатии кнопки "Отчёты", станет активна вкладка "Отчёты" компонента PageControl1 с кнопкой открытия формы отчёта "Заявка на поставку" (модуль UnitManagerOtchet. pas);
d) При нажатии кнопки "Справочник", станет активна вкладка "Справочник препаратов" компонента PageControl1 с таблицей данных о лекарственных препаратах (DBGrid3) и кнопка "Новый препарат", нажав которую откроется форма ввода нового препарата (модуль UnitNewPreparat. pas);
e) При нажатии кнопки "Товар", откроется форма "Торговое предложение в аптеке" (модуль UnitTorgPredApteki. pas);
f) При использовании компонента CheckBox1, вкладки "Аптеки", "Поставщики", "Отчёты", "Справочник" компонента PageControl1 появляются /исчезают;
g) При нажатии на кнопку "Выход" приложение закрывается.
4.2.1.4 Модуль "Управляющий" (UnitDirector. pas)
a) При нажатии кнопки "Аптеки", появится компонент PageControl1, вкладка "Аптеки" с таблицей данных об аптеках (DBGrid1) и кнопкой "Добавить новую аптеку", при нажатии на которую откроется форма "Добавление новой аптеки" (модуль UnitNewApteka. pas);
b) При нажатии кнопки "Поставщики", станет активна вкладка "Поставщики" компонента PageControl1 с таблицей данных о поставщиках (DBGrid2) и кнопками "Новый поставщик" и "Торговое предложение", открывающие формы добавления нового поставщика (модуль UnitNewPostavshik. pas) и торгового предложения поставщика (модуль UnitNewTorgPred. pas);
c) При нажатии кнопки "Отчёты", станет активна вкладка "Отчёты" компонента PageControl1;
d) При нажатии кнопки "Справочник", станет активна вкладка "Справочник препаратов" компонента PageControl1 с таблицей данных о лекарственных препаратах (DBGrid3) и кнопка "Новый препарат", нажав которую откроется форма ввода нового препарата (модуль UnitNewPreparat. pas);
e) При использовании компонента CheckBox1, вкладки "Аптеки", "Поставщики", "Отчёты", "Справочник" компонента PageControl1 появляются /исчезают;
f) При нажатии на кнопку "Выход" приложение закрывается.
4.2.1.5 Модуль "Торговое предложение в аптеке" (UnitTorgPredApteki. pas)
a) При запуске активна таблица DBGrid1 с данными о торговом предложении каждой аптеки.
b) При использовании одного из компонентов DBLookupComboBox1 ("Выберите аптеку") и DBLookupComboBox2 ("Название препарата") данные в таблице DBGrid1 фильтруются соответственно сделанному выбору;
c) При нажатии кнопки "Сформировать торговое предложение", откроется новая форма "Формирование торгового предложения в аптеке" (модуль UnitNewTorgPredApteki. pas);
d) При нажатии кнопки "Заявка на поставку", откроется новая форма "Оформление заказа на товар" (модуль UnitZayavkaPostavka. pas).
4.2.1.6 Модуль "Формирование торгового предложения в аптеке" (UnitNewTorgPredApteki. pas)
a) Выбрать адрес аптеки (DBLookupComboBox1), наименование товара (DBLookupComboBox2), после выбора наименования товара в поле "Оптовая цена" появляется соответствующая цена;
b) Ввести остаток товара, продано товара, розничная цена и минимальный запас жизн. необ. препар.;
c) При нажатии на кнопку "Добавить", соответствующая запись добавляется в БД;
d) Если данные введены неверно или поля остались пустые, при нажатии на кнопку "Добавить" появится сообщении об ошибке "Транзакции не выполнена" и откат транзакции.
4.2.1.7 Модуль "Оформление заказа на товар" (UnitZayavkaPostavka. pas)
a) Ввести номер документа, выбрать дату заказа, поставщика, наименование препарата и код расхода, указать количество необходимого товара;
b) После выбора наименования товара поле "Цена (опт.)" заполнится соответствующей ценой, а при указании необходимого количества товара, сумма посчитается автоматически;
c) При нажатии на кнопку "Оформить заявку", соответствующая запись добавляется в БД;
d) Если данные введены неверно или поля остались пустые, при нажатии на кнопку "Оформить заявку" появится сообщении об ошибке "Транзакции не выполнена" и откат транзакции.
4.2.1.8 Модуль "Отчёт менеджера (заявки на поставку)" (UnitZayavkaPostavka. pas)
a) При запуске модуля и открытии формы становится активна таблица DBGrid1с данными о заявках и компонентами: DBLookupComboBox1 (выбор названия поставщика) и кнопка "Печать";
b) При нажатии на кнопку "Печать" содержимое таблицы DBGrid1 формируется отчётом в Excel'е.
4.2.1.9 Модуль "Новый препарат" (UnitNewPreparat. pas)
a) Ввести группу лекарственного препарата, наименование, единицу измерения и отметить является ли данный препарат жизненно необходимым;
b) При нажатии на кнопку "Добавить препарат" соответствующая запись добавляется в БД;
c) Если данные введены неверно или поля остались пустые, при нажатии на кнопку "Добавить препарат" появится сообщении об ошибке "Транзакции не выполнена" и откат транзакции.
4.2.1.10 Модуль "Добавление новой аптеки" (UnitNewApteka. pas)
a) Ввести адрес и телефон аптеки;
b) При нажатии на кнопку "Сохранить" соответствующая запись добавляется в БД;
c) Если данные введены неверно или поля остались пустые, при нажатии на кнопку "Сохранить" появится сообщении об ошибке "Транзакции не выполнена" и откат транзакции.
4.2.1.11 Модуль "Новый поставщик" (UnitNewPostavshik. pas)
a) Ввести наименование, адрес, телефон поставщика;
b) При нажатии на кнопку "Сохранить" соответствующая запись добавляется в БД;
c) Если данные введены неверно или поля остались пустые, при нажатии на кнопку "Сохранить" появится сообщении об ошибке "Транзакции не выполнена" и откат транзакции.
4.2.1.12 Модуль "Торговое предложение" (UnitNewTorgPred. pas)
a) Выбрать поставщика, лекарственный препарат и ввести оптовую цену;
b) При нажатии на кнопку "Сохранить" соответствующая запись добавляется в БД;
c) Если данные введены неверно или поля остались пустые, при нажатии на кнопку "Сохранить" появится сообщении об ошибке "Транзакции не выполнена" и откат транзакции.
4.2.2 Тестирование интеграции
Тестирование интеграции проводится для проверки сборки модулей в программную систему. В основном используется принцип "черного ящика". Используется как нисходящее, так и восходящее тестирование. Тестирование проводится для обнаружения ошибок интерфейса:
потеря данных при прохождении через интерфейс;
отсутствие в модуле необходимой ссылки;
неблагоприятное влияние одного модуля на другой;
подфункции при объединении не образуют требуемую функцию;
проблемы при работе с глобальными данными.
Для обнаружения ошибок интерфейса необходимо проверить сначала все технологические цепочки обработки данных. Работу каждого модуля после выполнения предыдущего модуля для проверки неблагоприятного влияния. Результаты тестирования интеграции представлены в таблице
Таблица 32 - Тестирование интеграции приложения Kr_Apteka
Модуль "Авторизация пользователя" |
Модуль "Продавец" |
Модуль "Менеджер" |
Модуль "Управляющий" |
Модуль "Торговое предложение в аптеке" |
Модуль "Формирование торгового предложения в аптеке" |
Модуль "Оформление заказа на товар" |
Модуль "Отчёт менеджера (заявки на поставку)" |
Модуль "Новый препарат" |
Модуль "Добавление новой аптеки" |
Модуль "Новый поставщик" |
Модуль "Торговое предложение" |
||
Модуль "Авторизация пользователя" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Продавец" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Менеджер" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Управляющий" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Торговое предложение в аптеке" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Формирование торгового предложения в аптеке" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Оформление заказа на товар" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Отчёт менеджера (заявки на поставку)" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Новый препарат" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Добавление новой аптеки" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Новый поставщик" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
|
Модуль "Торговое предложение" |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
+ |
4.2.3 Тестирование правильности
Тестирование правильности проводится с целью проверки всех функциональных требований и требований эффективности, т.е. соответствие системы ожиданиям заказчика. Используется принцип "черного ящика". При обнаружении отклонений от требований создается список недостатков.
Исходные данные контрольного примера приведены в приложении Б.
Результаты проверки программы показали, что программа работает правильно.
5. Технологическая часть
5.1 Руководство пользователя
Разместить программу D: \work\Delphi_Kr_Apteka_v1\ Kr_Apteka. exe, а базу данных D: \work\ DB_APT. GDB.
Запустим программу Kr_Apteka. exe. Открывается окно "авторизация".
Для того чтобы авторизоваться выберите пользователя и ведите пароль и нажмите кнопку "Войти".
Открывается форма в зависимости от выбранного пользователя. Слева на форме будет представлено меню соответствующего пользователя с теми возможностями, которые ему разрешены и требуются для работы. Функции, которые не разрешены пользователю, не отображаются.
В зависимости от требований, при нажатии кнопок меню, справа будут появляться соответствующие вкладки для работы. На каждой вкладке представлен соответствующий необходимый функционал пользователя. Например продавец в отличии от менеджера не сможет оформить заявку поставщику на поставку лекарственных препаратов, а менеджер не сможет заключить добавить новую аптеку или внести информацию о поставщике и торговом предложении данного поставщика (данные функции доступны управляющему).
Рабочий функционал продавца представлен кнопкой "Товар" и соответствующими функциями на 1 вкладке.
Рабочий функционал менеджера представлен кнопками, соответствующим 4 вкладкам с необходимым рабочим интерфейсом, а также кнопкой "Товар", которая в отличии от кнопки продавца предлагает более расширенный интерфейс (представленный в отдельных модулях) на отдельно открываемой форме "Торговое предложение в аптеке". Менеджер на данной форме имеет возможность отслеживать информацию о товаре в каждой аптеке, цены, продажи и по необходимости сформировать необходимое торговое предложение для определённой аптеки или оформить заявку на новый товар поставщику.
Рабочий функционал управляющего представлен возможностью просматривать необходимые ему данные и формировать соответствующие отчёты. Помимо этого управляющий может добавить новую аптеку, нового поставщика и торговое предложение.
Заключение
В соответствии с заданием к курсовому проекту разработана автоматизированная система учета закупки лекарственных препаратов. В результате работы для каждого из трёх пользователей была разработана соответствующая форма с необходимым рабочим интерфейсом и возможностью авторизации каждого из них.
В ходе работы реализован весь рабочий функционал для продавца и менеджера с возможностью печати необходимых отчётов. Для управляющего разработан необходимый рабочий функционал, но не реализованы отчёты.
Наряду с разработкой была изучена предметная область, составлена концептуальная модель, выбрана среда разработки системы и модель данных. Также выполнено логическое и физическое проектирование.
По результатам проделанной работы была подготовлена пояснительная записка.
Список использованных источников
1. Фаронов В.В. Delphi 6. Учебный курс. - М.: "Нолидж", 2001
2. Фаронов В.В. Delphi. Программирование на языке высокого уровня. Учебник для вузов. - СПб.: Питер, 2007
3. Культин Н.Б. Основы программирования в Delphi 7.0. СП.: БХВ - Петербург, 2003
4. Зуев Е.А. Программирование на языке TURBO PASCAL 6.0, 7.0 - М.: Веста, Радио и связь, 1993
5. Голицина О.Л., Попов И.И. Основы алгоритмизации и программирования: Учебное пособие. - М: Форум, 2008
6. Культин Н.Б. Delphi в задачах и примерах СП.: БХВ - Петербург, 2003
7. Бобовский С. Delphi 7 учебный курс. "Питер", 2008
2. С.В. Глушаков, А.Л. Клевцов - "Программирование в среде Delphi 7.0";
3.В. Фаронов - "Программирование баз данных в Delphi 7";
4.А. Сорокин - "Delphi разработка баз данных";
5.В.Э. Гофман - "Delphi7";
6. И.В. Боровский - "Программирование в Delphi 2005";
7. Автор неизвестен - "Delphi. Готовые алгоритмы";
8. Гализеев В.П. - "Программирование в среде Delphi 7";
9.А. А. Шкрыль - "Delphi Народные советы";
10. А.В. Рудаков - "Технология разработки программных продуктов";
11. Гагарина - "Основы технологии разработки программных продуктов. Учебное пособие";
Приложение А
/*
* ER/Studio Data Architect 8.5 SQL Code Generation
* Company: Microsoft
* Project: Model3. DM1
* Author: Microsoft
*
* Date Created: Friday, November 08, 2013 10: 22: 59
* Target DBMS: InterBase
*/
/*
* TABLE: Apteki
*/
CREATE TABLE Apteki (
Num_aptkINTEGER NOT NULL,
Aptk_adresCHAR (16) NOT NULL,
Aptk_telfNUMERIC (16, 0) NOT NULL,
CONSTRAINT PK8 PRIMARY KEY (Num_aptk)
);
/*
* TABLE: Postavshiki
*/
CREATE TABLE Postavshiki (
Kod_pstvshINTEGER NOT NULL,
Name_pstvshCHAR (32) NOT NULL,
Adres_pstvshCHAR (32) NOT NULL,
Tel_pstvshNUMERIC (16, 0) NOT NULL,
CONSTRAINT PK2 PRIMARY KEY (Kod_pstvsh)
);
/*
* TABLE: PreparSprav
*/
CREATE TABLE PreparSprav (
Kod_tovaraINTEGER NOT NULL,
grup_tovCHAR (32) NOT NULL,
Name_tovaraCHAR (32) NOT NULL,
Ed_izCHAR (8, 0) NOT NULL,
Zh_n_prBINARY (1) NOT NULL,
CONSTRAINT PK7 PRIMARY KEY (Kod_tovara)
);
/*
* TABLE: TorgPred
*/
CREATE TABLE TorgPred (
NumTorgPredINTEGER NOT NULL,
Kod_tovaraINTEGER NOT NULL,
Kod_pstvshINTEGER NOT NULL,
Price_optNUMERIC (8,2) NOT NULL,
CONSTRAINT PK3 PRIMARY KEY (NumTorgPred)
);
/*
* TABLE: TovarApt
*/
CREATE TABLE TovarApt (
Kod_rashodaINTEGER NOT NULL,
Tovar_ostNUMERIC (8, 0) NOT NULL,
Tovar_prodNUMERIC (8, 0) NOT NULL,
Tovar_price_edNUMERIC (8,2) NOT NULL,
Min_zpsNUMERIC (8, 0) NOT NULL,
Kod_tovaraINTEGER NOT NULL,
Num_aptkINTEGER NOT NULL,
CONSTRAINT PK6 PRIMARY KEY (Kod_rashoda)
);
/*
* TABLE: Zakaz
*/
CREATE TABLE Zakaz (
Num_zakzINTEGER NOT NULL,
NumTorgPredINTEGER NOT NULL,
Kod_rashodaINTEGER NOT NULL,
Zak_tov_kolNUMERIC (8, 0) NOT NULL
Data_zakzDATE NOT NULL,
Data_opltDATE NOT NULL,
Data_postDATE,
Post_tov_kolNUMERIC (8, 0),
Num_docNUMERIC (8, 0) NOT NULL,
CONSTRAINT PK4 PRIMARY KEY (Num_zakz)
);
/*
* INDEX: "Ref21"
*/
CREATE INDEX "Ref21" ON "TorgPred" (Kod_pstvsh)
;
/*
* INDEX: "Ref72"
*/
CREATE INDEX "Ref72" ON "TorgPred" (Kod_tovara)
;
/*
* INDEX: "Ref77"
*/
CREATE INDEX "Ref77" ON "TovarApt" (Kod_tovara)
;
/*
* INDEX: "Ref89"
*/
CREATE INDEX "Ref89" ON "TovarApt" (Num_aptk)
;
/*
* INDEX: "Ref63"
*/
CREATE INDEX "Ref63" ON "Zakaz" (Kod_rashoda)
;
/*
* INDEX: "Ref35"
*/
CREATE INDEX "Ref35" ON "Zakaz" (NumTorgPred)
;
/*
* TABLE: "TorgPred"
*/
ALTER TABLE "TorgPred" ADD CONSTRAINT "RefPostavshiki1"
FOREIGN KEY (Kod_pstvsh)
REFERENCES "Postavshiki" (Kod_pstvsh);
ALTER TABLE "TorgPred" ADD CONSTRAINT "RefPreparSprav2"
FOREIGN KEY (Kod_tovara)
REFERENCES "PreparSprav" (Kod_tovara);
/*
* TABLE: "TovarApt"
*/
ALTER TABLE "TovarApt" ADD CONSTRAINT "RefPreparSprav7"
FOREIGN KEY (Kod_tovara)
REFERENCES "PreparSprav" (Kod_tovara);
ALTER TABLE "TovarApt" ADD CONSTRAINT "RefApteki9"
FOREIGN KEY (Num_aptk)
REFERENCES "Apteki" (Num_aptk);
/*
* TABLE: "Zakaz"
*/
ALTER TABLE "Zakaz" ADD CONSTRAINT "RefTovarApt3"
FOREIGN KEY (Kod_rashoda)
REFERENCES "TovarApt" (Kod_rashoda);
ALTER TABLE "Zakaz" ADD CONSTRAINT "RefTorgPred5"
FOREIGN KEY (NumTorgPred)
REFERENCES "TorgPred" (NumTorgPred);
Приложение Б
Тестовый пример
Таблица: Apteki (Аптеки)
Num_aptk |
Aptk_adres |
Aptk_telf |
|||
Номер аптеки |
Название аптеки |
Телефон аптеки |
|||
1 |
Аптека 1 |
344455 |
|||
2 |
Аптека 2 |
344545 |
|||
3 |
Аптека 3 |
345555 |
|||
Таблица: PreparSprav (Справочник препаратов) |
|||||
Kod_tovara |
Grup_tov |
Name_tovara |
Ed_iz |
Zh_n_pr |
|
Код товара |
Группа товара |
Наименование препарата |
Единица измерения |
Жизн. Необх. Препарат |
|
1 |
Группа 1 |
Первый препарат |
шт. |
0 |
|
2 |
Группа 1 |
Второй препарат |
шт. |
0 |
|
3 |
Группа 2 |
Третий препарат |
уп. |
1 |
Таблица: Postavshiki (Поставщики)
Kod_pstvsh |
Name_pstvsh |
Adres_pstvsh |
Tel_pstvsh |
|
Код поставщика |
Название поставщика |
Адрес поставщика |
Телефон поставщика |
|
1 |
Первый поставщик |
Платова 19 |
321222 |
|
2 |
Второй поставщик |
Пушкина 25 |
321819 |
|
3 |
Третий поставщик |
Ермака 54 |
324555 |
Таблица: TorgPred (Торговое предложение)
NumTorgPred |
Kod_tovara |
Kod_pstvsh |
Price_opt |
|
Номер торгового предложения |
Код товара |
Код поставщика |
Оптовая цена |
|
1 |
1 |
1 |
250 |
|
2 |
2 |
1 |
345 |
|
3 |
3 |
2 |
445 |
|
4 |
2 |
2 |
344 |
|
5 |
4 |
1 |
558 |
Таблица: TovarApt (Товар в аптеке)
Kod_rashoda |
Num_aptk |
Kod_tovara |
Tovar_ost |
Tovar_prod |
Tovar_price_ed |
Min_zps |
|
Код расхода |
Номер аптеки |
Код товара |
Остаток товара в аптеке |
Продано товара |
Розничная цена 1 ед. товара |
Минимальный запас жизненно необходимых препаратов |
|
1 |
1 |
1 |
0 |
0 |
290 |
0 |
|
2 |
1 |
2 |
0 |
0 |
375 |
0 |
|
3 |
2 |
3 |
0 |
0 |
490 |
15 |
|
4 |
2 |
4 |
0 |
0 |
590 |
10 |
Таблица: Zakaz (Заказ)
Num_zakz |
NumTorgPred |
Kod_rashoda |
Zak_tov_kol |
Data_zakz |
Data_oplt |
Data_post |
Post_tov_kol |
Num_doc |
|
Номер заказа |
Номер торгового предложения |
Код расхода |
Заказано товара |
Дата заказа |
Дата оплаты |
Дата поставки |
Поступило товара |
Номер документа |
|
1 |
1 |
1 |
100 |
15.11.2013 |
16.11.2013 |
17.11.2013 |
100 |
10001 |
|
2 |
4 |
2 |
200 |
15.11.2013 |
16.11.2013 |
17.11.2013 |
200 |
10001 |
|
3 |
5 |
4 |
100 |
18.11.2013 |
19.11.2013 |
20.11.2013 |
100 |
10002 |
Размещено на Allbest.ru
Подобные документы
Анализ существующих разработок и выбор стратегии автоматизации делопроизводства взаимоотношении поставщиков лекарственных препаратов с аптекой. Разработка проекта базы данных аптеки "Ригла". Обоснование экономической эффективности разработки базы данных.
дипломная работа [3,0 M], добавлен 19.09.2013Анализ состояния и способов автоматизации складского хозяйства. Управление и оптимизация материальных запасов. Обзор современного состояния программ для торговли и склада. Разработка структуры базы данных информационной системы. Описание интерфейса.
дипломная работа [1,2 M], добавлен 16.06.2015Разработка программы для автоматизации складского учета. Описание предметной области и технологии функционирования информационной системы. Физическое проектирование базы данных. Создание экранных форм ввода-вывода, отчетов, модулей для прикладных решений.
курсовая работа [3,6 M], добавлен 08.12.2013Создание базы данных с помощью ACCESS для автоматизации работы базы отдыха. Оценка возможностей пользователей при работе с данной базой. Построение информационно-логической модели базы данных. Разработка запросов для корректировки и выборки данных.
курсовая работа [1,1 M], добавлен 19.10.2010Исследование технологии проектирования базы данных. Локальные и удаленные базы данных. Архитектуры и типы сетей. Программная разработка информационной структуры предметной области. Обоснование выбора архитектуры "клиент-сервер" и операционной системы.
дипломная работа [1,1 M], добавлен 15.02.2017Инструментальные средства для разработки структуры информационной базы данных "Программа автоматизации учета расчетов с поставщиками", пользовательский интерфейс СУБД Access. Разработка запросов отбора данных и вычислений, экранных форм коррекции данных.
лабораторная работа [2,4 M], добавлен 15.11.2010База данных как основа автоматизации. Разработка, описание и реализация программного обеспечения "Точность и правильность методов и результатов измерений для центральной заводской лаборатории ОАО "Акрилат". Листинг, исходные коды программы и базы данных.
дипломная работа [1,0 M], добавлен 23.06.2012Создание базы данных в среде MS Access. Создание и работа с базой данных на бирже труда. Алгоритм решения. Выбор пакета прикладных программ. Проектирование форм выходных документов и описание структуры таблиц базы данных. Отчеты по запросам и таблицам.
курсовая работа [2,1 M], добавлен 30.01.2009Создание базы данных в среде MS Access. Создание и работа с базой данных в ателье. Алгоритм решения задачи. Выбор пакета прикладных программ. Проектирование форм выходных документов с использованием СУБД MS Access. Структура записи таблиц базы данных.
курсовая работа [1,6 M], добавлен 30.01.2009Проектирование базы данных в среде СУБД MS Access. Автоматизация учета информации о товаре в магазине. Определение требований и функций системы. Анализ предметной области. Разработка, создание таблиц, запросов, форм и отчетов. Инструкция для пользователя.
отчет по практике [523,6 K], добавлен 21.04.2014