Смекни!
smekni.com

Разработка базы данных (стр. 2 из 3)

procedure N7Click(Sender: TObject); //Процедура нажатия пункта в главнам меню Продавец-Добавить

procedure N8Click(Sender: TObject); //Процедура нажатия пункта в главнам меню Продавец-Удалить

procedure N9Click(Sender: TObject); //Процедура нажатия пункта в главнам меню Продавец-Редактировать

procedure N10Click(Sender: TObject); //Процедура нажатия пункта в главнам меню Отчет

procedure N11Click(Sender: TObject); //Процедура нажатия пункта в главнам меню О программе private

{ Private declarations }

public

{ Public declarations }

Procedure LoadBD; // Загрузка Базы

Procedure SaveBD; // Сохранение Базы

end;

var

Form1: TForm1;

God: integer; // Нынешний год

implementation

uses Unit2, Unit3;

{$R *.dfm}

function CalcComiss(index:integer):integer; // Подсчет комиссионных

// по номеру продавца в таблице

var year,dohod:integer;

begin

Result:=0; // Изначально комиссионные = 0

with form1.sg do

begin

year:=StrToInt(Cells[2,index]); // Узнаем год приема на работу

Dohod:=StrToInt(Cells[3,index]); // И средний доход за день

end;

if god-year>=10 then // Если продавец работает 10 лет и больше

Result:=Result+1; // Добавляем 1%

if Dohod>=1000 then // Если еще и продает на сумму 1000 или больше

Result:=Result+6 else // то добавляем 6%

Result:=Result+5; // Если же нет, то 5%

end;

procedure TForm1.SaveBD;

var I:integer;

s:TStringList;

begin

S:=TStringList.Create; // Создаем Список строк

for i:=1 to sg.RowCount-2 do // Проходим по всей таблице

begin

{Переносим в список данные из таблицы}

S.Add(Sg.Cells[0,i]);

S.Add(Sg.Cells[1,i]);

S.Add(Sg.Cells[2,i]);

S.Add(Sg.Cells[3,i]);

end;

S.SaveToFile('Base.txt'); // Сохраняем

S.Free; // Очищаем память

end;

procedure Tform1.LoadBD; // Загрузка базы

var I:integer;

s:TstringList;

begin

sg.RowCount:=2;

S:=TStringList.Create; // Создаем в памяти Список строк

S.LoadFromFile('Base.txt'); // Загружаем в него файл с базой

For i:=0 to S.Count div 4 -1 do // Организуем цикл загрузки 4х данных

// для каждого продавца

begin

sg.RowCount:=sg.RowCount+1; // Увеличиваем таблицу на 1 пункт

{Помещаем в таблицу данные}

sg.Cells[0, sg.RowCount-2]:=S[i*4];

sg.Cells[1, sg.RowCount-2]:=S[i*4+1];

sg.Cells[2, sg.RowCount-2]:=S[i*4+2];

sg.Cells[3, sg.RowCount-2]:=S[i*4+3];

sg.Cells[4, sg.RowCount-2]:=IntToStr(CalcComiss(sg.RowCount-2));

end;

S.Free; // Очищаем память от уже ненужного файла

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

{Заполняем заголовок таблицы}

sg.Cells[0,0]:='Фамилия и имя продавца';

sg.Cells[1,0]:='Табельный номер';

sg.Cells[2,0]:='Год приема на работу';

sg.Cells[3,0]:='Выручка $ за день';

sg.Cells[4,0]:='% комиссионных';

God:=StrToInt(Copy(DateToStr(Date),7,4)); // Узнаем нынешний год

LoadBD; // Загружаем базу с диска

end;

procedure TForm1.N5Click(Sender: TObject);

begin

close; // Выход

end;

procedure TForm1.N8Click(Sender: TObject);

var i, j:integer;

begin

{Удаление продавца из списка, все следующие за ним продавцы, просто поднимаются на ячейку выше}

if sg.Selection.Top<>sg.RowCount-1 then

begin

for i:=sg.Selection.Top+1 to sg.RowCount-1 do

for j:=0 to 4 do

sg.Cells[j,i-1]:=sg.Cells[j,i];

sg.RowCount:=sg.RowCount-1;

end;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

LoadBd; // Загружаем базу с диска

end;

procedure TForm1.N3Click(Sender: TObject);

begin

SaveBD; //Сохраняем

end;

procedure TForm1.N10Click(Sender: TObject);

begin

Form3.ShowModal;

end;

procedure TForm1.N7Click(Sender: TObject);

var I:integer;

begin

{Открываем окно "Добавить" и в случае нажатия на кнопку Ok, добавляем продавца в таблицу}

Form2.Caption:='Добавить';

for i:=1 to 4 do // Цикл очистки полей ввода

TEdit(Form2.FindComponent('Edit'+IntToStr(i))).text:='';

if form2.showmodal=mrOk then

begin

sg.RowCount:=sg.RowCount+1; // Увеличиваем таблицу на 1 пункт

{Помещаем в таблицу данные}

sg.Cells[0, sg.RowCount-2]:=Form2.Edit1.Text;

sg.Cells[1, sg.RowCount-2]:=Form2.Edit2.Text;

sg.Cells[2, sg.RowCount-2]:=Form2.Edit3.Text;

sg.Cells[3, sg.RowCount-2]:=Form2.Edit4.Text;

sg.Cells[4, sg.RowCount-2]:=IntToStr(CalcComiss(sg.RowCount-2));

end;

end;

procedure TForm1.N9Click(Sender: TObject);

var i:integer;

begin

if sg.Selection.Top<>sg.RowCount-1 then

begin

Form2.Caption:='Редактировать';

for i:=1 to 4 do

TEdit(Form2.FindComponent('Edit'+IntToStr(i))).text:=sg.cells[i-1,sg.selection.top];

if form2.showmodal=mrOk then

begin

{Помещаем в таблицу данные}

sg.Cells[0, sg.selection.top]:=Form2.Edit1.Text;

sg.Cells[1, sg.selection.top]:=Form2.Edit2.Text;

sg.Cells[2, sg.selection.top]:=Form2.Edit3.Text;

sg.Cells[3, sg.selection.top]:=Form2.Edit4.Text;

sg.Cells[4, sg.selection.top]:=IntToStr(CalcComiss(sg.selection.top));

end;

end;

end;

procedure TForm1.N11Click(Sender: TObject);

var summ:integer; //Общий доход за этот месяц

kom:integer; //Комиссионные выплаты

z:integer; //Доход с вычетом комиссионных выплат

days:integer; //Дней в этом месяце

i,j,k:integer; //Вспомогательные переменные

begin

case StrToInt(copy(DateToStr(Date),4,2)) of //Проверяем какой щас месяц

1,3,5,7,8,10,12:days:=31; // если месяц 1,3,5,7,8,10,12 то дней в месяце 31

2: days:=28; // если месяц 2 то дней в месяце 28

else days:=30; // иначе в месяце 30 дней

end;

summ:=0; //Общим доходам за этот месяц присваеваем ноль

kom:=0; //Комиссионным выплатам присваеваем ноль

z:=0; //Доходам с вычетом комиссионных выплат присваеваем ноль

for i:=1 to sg.RowCount-2 do

begin

j:=calccomiss(i);

k:=strtoint(sg.cells[3,i])*days;

j:=Trunc((j / 100)*K); //"Trunc" - целая часть числа

kom:=kom+j; //считаем Комиссионные выплаты

z:=z+k-j; //считаем Доход с вычетом комиссионных выплат

summ:=summ+k; // считаем Общий доход за этот месяц

end;

showmessage('Общий доход за этот месяц: '+inttostr(summ)+#13#10+'Комиссионные выплаты: '+inttostr(kom)+#13#10+'Доход с вычетом комиссионных выплат: '+inttostr(z)+#13#10+'Дней в этом месяце: ' +inttostr(days));

end;

end.


Рисунок 1- Таблица ведения базы данных торговой фирмы

2.4 Описание программы

1) Общие сведения.

Программа написана в среде программирования Delphi. Для запуска программы необходима операционная система Windows 98, NT, 2000, Me, XP. Программа не предназначена для работы в DOS.

2) Функциональное назначение.

Программа может использоваться на различных торговых точках с небольшим количеством продавцов.

3) Используемые технические средства (минимальные требования).

Рекомендуемые системные требования: процессор Pentium-133 и выше, ОЗУ 16Мб, место на диске не меньше 4Мб.

4) Вызов и загрузка.

Исполняемый файл программы – Basa.exe. В родительском каталоге программы также содержится файл БД – Base.txt. Запустить программу можно пользуясь стандартным приложением для Windows «проводник» или через «Мой компьютер», просмотрев содержимое диска.

5) Входные данные.

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

6) Выходные данные.

Выходные данные выводятся на экран компонентом StringGrid.

2.5 Тестирование

Тестирование было проведено на примере Базы Данных в каталоге A:&bsol;База данных&bsol;Base.txt (см. Приложение А). В базу данных было произведено введение данных о продавцах. Всего было введено 20 строк с Фамилиями и Именами, Табельным номером, Годом приема на работу и Выручки за день. Все данные были введены в случайном порядке. В результате ввода все продавцы, которые имели выручку больше 1000 долларов в день или проработали более 10 лет, получают 6% комиссионных, а остальные 5% комиссионных (по условию задачи). В результате был произведен подсчет данных и программа вывела отчет об общих доходах за этот месяц, комиссионных выплатах, доходах с вычетом комиссионных выплат и дней в этом месяце, все данные были верны. Программа без затруднений вывела все результаты.

3. Внедрение

1) Условия выполнения программы.

Для выполнения программы необходим IBM совместимый компьютер с процессором 133МГц и выше, ОЗУ объемом не менее 16Мб и стандартным набором внутренних и внешних устройств. Программное обеспечение – ОС Windows 95 и более поздние версии Windows.

2) Выполнение программы.

Для того чтобы запустить программу на панели управления щелкните кнопкой мыши кнопку Пуск. Выберете в развернувшимся меню пункт Программы->проводник. В проводнике выберете нужный каталог с файлом Basa.exe и дважды щелкните по нему левой кнопкой мыши. Программа запустится. На экране вы увидите окно программы (рис. 2).

Рисунок 2- Окно программы База Данных

Для добавления в таблицу данных необходимо нажать в главном меню пункт «Продавец – Добавить» (Рис.3).


Рисунок 3- Меню для: добавления, удаления, редактирования – строки в таблице

Появится диалоговое окно Добавить (рис.4). В этом окне необходимо ввести Имя и фамилию, Табельный номер – цифрами, Год приема на работу – цифрами, Сумма продаж за день – цифрами, затем нажать на кнопку «Ок», если хотите добавить, а если нет то кнопку «Нет».

Рисунок 4- Окно добавить

Если вы нажали «Ок» то в таблице появится строчка с данными которые вы набрали (Рис. 5).

Рисунок 5- Так выглядит таблица после добавления в ней строчки


Чтобы сохранить данные в текстовом файле, нужно в главном меня выбрать пункт «Файл – Сохранить». Если вы вынесли изменения в таблицу но не сохраняли их, вы можете вернуть документ в исходное состояние, так как он выглядел перед открытием, то вам необходимо в главном меня выбрать пункт «Файл – Загрузить». (Рис.6).

Рисунок 6- Меню Файл: сохранить, загрузить, выход

Чтобы вывести отчет, в главном меню программы необходимо выбрать пункт «Отчет». На экране появится диалоговое окно, в котором вы увидите отчет о: общим доходам за этот месяц, комиссионным выплатам, доходе с вычетом комиссионных выплат и дней в этом месяце. Это окошко вы можете видеть на Рис.7.