Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Текст программы
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Grids, Menus, StdCtrls; type TForm1 = class(TForm) sg: TStringGrid; mm: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; N7: TMenuItem; N8: TMenuItem; N9: TMenuItem; N10: TMenuItem; N11: TMenuItem; procedure FormCreate(Sender: TObject); procedure N2Click(Sender: TObject); //Процедура нажатия пункта в главнам меню Фаил-Сохранить procedure N3Click(Sender: TObject); //Процедура нажатия пункта в главнам меню Фаил-Загрузить procedure N5Click(Sender: TObject); //Процедура нажатия пункта в главнам меню Файл-Выход 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- Таблица ведения базы данных торговой фирмы
|