База данных — это набор файлов (таблиц), в которых находится информация. Как правило, база данных состоит из нескольких таблиц, которые размещают в одном каталоге. Каталог для новой базы данных создается обычным образом, например, при помощи Проводника.
Исполняемый файл программы «База данных Торговая фирма» имеет название Basa.exe и находится в корневом каталоге диска А. Состав проекта представлен в приложении.
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 N5Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N9Click(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;
{$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
ShowMessage('Выполнил Самсонов Евгений '+#13+'Группа ОИ-809'); //Автор
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,kom:integer;
i,j,k,z:integer;
days:integer;
begin
case StrToInt(copy(DateToStr(Date),4,2)) of
1,3,5,7,8,10,12:days:=31;
2: days:=28;
else days:=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);
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) Общие сведения.
Программа написана с среде программирования Delphi. Для запуска программы необходима операционная система Windows 98, Nt, 2000, Me, XP. Программа не предназначена для работы в DOS.
2) Функциональное назначение.
Программа может использоваться на различных торговых точках с небольшим количеством продавцов.
3) Используемые технические средства (минимальные требования).
Рекомендуемые системные требования: процессор Pentium-133 и выше, ОЗУ 16Мб, место на диске не меньше 4Мб.
4) Вызов и загрузка.
Исполняемый файл программы – Basa.exe. В родительском каталоге программы также содержится файл БД – Base.txt. Запустить программу можно пользуясь стандартным приложением для Windows «проводник» или через «Мой компьютер», просмотрев содержимое диска.
5) Входные данные.
Входные данные представляют собой фамилию и имя, табельный номер, год приема на работу, и выручку продавца в день.
6) Выходные данные.
Выходные данные выводятся на экран компонентом StringGrid.
С точки зрения пользователя, база данных — это программа, которая обеспечивает работу с информацией. При запуске такой программы на экране, как правило, появляется таблица, просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную.
С точки зрения программиста, база данных — это набор файлов, содержащих информацию. Разрабатывая базу данных для пользователя, программист создает программу, которая обеспечивает работу с файлами данных.
1) Условия выполнения программы.
Для выполнения программы необходим IBM совместимый компьютер с процессором 133МГц и выше, ОЗУ объемом не менее 16Мб и стандартным набором внутренних и внешних устройств. Программное обеспечение – ОС Windows 95 и более поздние версии Windows.
2) Выполнение программы.
Для того чтобы запустить программу на панели управления щелкните кнопкой мыши кнопку Пуск. Выберете в развернувшимся меню пункт Программы->проводник. В проводнике выберете нужный каталог с файлом Basa.exe и дважды щелкните по нему левой кнопкой мыши. Программа запустится.
При выборе в главном меню пункта «Автор» появляется сообщение с краткой информацией о программе и разработчике (см. рис.2).
Рисунок 2 – Окно «Автор»
№ | Понятия | Определение |
1 | Объектно-ориентированное программирование | подход к программированию, рассматривающий программу как совокупность объектов и сообщений |
2 | Объект | пакет информации, содержащий данные и процедуры их обработки. Сообщение – это спецификация условий выполнения одной из процедур обработки объекта |
3 | Язык программирования | система обозначений, служащая для точного описания программ или алгоритмов машинных вычислений. Язык программирования – это искусственный язык, в котором алфавит ( набор различных символов языка), синтаксис (правила построения множества текстов или конструкций языка из алфавита языка) и семантика (описание соответствия между текстами и их «смыслами») строго и однозначно определены |
4 | Операция | действие в языке программирование, которое выполняется над данными |
5 | Структура программы | общая схема построения программы, рассматривающая все ее составные компоненты и взаимосвязи между ними |
6 | Оператор присваивания | оператор языка программирования, предназначенный для вычисления значения заданного выражения и записи в память полученного результата |
7 | Файл | определенным образом организованная совокупность данных, имеющих общее имя и размещенных на одном из внешних устройств компьютера (например, на жестком или гибком дисках) |
8 | Оператор ввода данных | специальный оператор, предназначенный для ввода данных в память из файла, закрепленного за одним из внешних устройств компьютера |
9 | Оператор вывода данных | специальный оператор, предназначенный для вывода данных из памяти в файл, закрепленный за одним из внешних устройств компьютера |
10 | Качествопрограммы | степень соответствия программы своему функциональному назначению с точки зрения предъявляемых к ней требований |
1 | Александровский А. Д. Delphi 5.0. Разработка корпоративных приложений. – М.: ДМК, 2000. – 512 с. |
2 | Бобровский С.И. Delphi 7^ Учебный курс, -СПб.: Издательство «Питер» 2004. – 184 с. |
3 | Бондарёв В. М., Рублинецкий В. И., Качко Е. Г. «Основы программирования». Харьков: Фолио; Ростов н/Д: Феникс, 2003. – 504 с. |
4 | Власов А.Я. Справочник по программированию на Object Pascal. Киев, 2001. – 401 с. |
5 | Гудман С., Хидетниеми С. Введение в разработку и анализ алгоритмов. М., 2003. – 220 с. |
6 | Дарахвелидзе П., Марков Е. Программирование в Delphi 4.СПб.: БХВ. СПб., 2004.- 209 с. |
7 | Карпов Б. «Delphi: специальный справочник» -СПб.: Издательство «Питер», 2002. – 236 с. |
8 | Культин Н. «Delphi в задачах и примерах» -СПб.: Издательство «БХВ-Петербург», 2003. – 436 с. |
9 | Марков Е. «Программирование в Delphi 4», -СПб, «БХВ-Петербург», 2004. – 306 с. |
10 | Мейер Б., Бодуэн К. Методы программирования. М., 2001. – 310 с. |
11 | Wikipedia. (свободная энциклопедия) http://ru.wikipedia.org/wiki/Delphi |
Наименование | Обозначение | Примечание |
Basa.dof | Файл параметров проекта | Содержит текущие установки проекта: настройки компилятора и компоновщика, имена служебных каталогов, условные директивы |
Basa.dpr | Файл проекта | Связывает все файлы, из которых состоит приложение |
Basa.cfg | Файл, содержащий настройки проекта | Содержит информацию о том, какие окна открыты и в каких позициях они расположены |
Basa.res | Файл ресурсов | Содержит пиктограммы, графические изображения |
Unit1.pas | Файл программного модуля для формы Form1 | Определяет функциональность формы Form1 |
Unit1.dfm | Файл формы Form1 | Содержит список свойств всех компонентов, включённых в форму Form1 |
Unit1.dcu | Объектный файл для Unit1.pas | Откомпилированная версия Unit1.pas |
Unit2.dcu | Объектный файл для Unit2.pas | Откомпилированная версия Unit2.Pas |
Unit2.pas | Файл программного модуля Формы 2 | Определяет функциональность формы №2 |
Unit2.dfm | Файл формы 2 | Содержит список всех компонентов, включенных в форму 2 |
Base.txt | Текстовый файл | Сохраняет и загружает данные базы данных |
Таблица 1. Состав проекта.
Ссылка:
[1] Карпов Б. «Delphi: специальный справочник» -СПб.: Издательство «Питер», 2002. – С. 23-24
[2] Бондарёв В. М., Рублинецкий В. И., Качко Е. Г. «Основы программирования». Харьков: Фолио; Ростов н/Д: Феникс, 2003. – С. 45
[3] Карпов Б. «Delphi: специальный справочник» -СПб.: Издательство «Питер», 2002. – С. 120