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:\База данных\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.