Базы данных торговой фирмы

     Содержание

    Введение

     Delphi — результат развития языка Турбо Паскаль, который, в свою очередь, развился из языка Паскаль. Паскаль был полностью процедурным языком, Турбо Паскаль, начиная с версии 5.5, добавил в Паскаль объектно-ориентированные свойства, а в Object Pascal — динамическую идентификацию типа данных с возможностью доступа к метаданным классов (то есть к описанию классов и их членов) в компилируемом коде, также называемом интроспекцией — данная технология получила обозначение RTTI. Так как все классы наследуют функции базового класса TObject, то любой указатель на объект можно преобразовать к нему, после чего воспользоваться методом ClassType и функцией TypeInfo, которые и обеспечат интроспекцию.

     Object Pascal (Delphi) являются результатом функционального расширения Turbo Pascal.

     Delphi оказал огромное влияние на создание концепции языка C# для платформы .NET. Многие его элементы и концептуальные решения вошли в состав С#. Одной из причин называют переход Андерса Хейлсберга, одного из ведущих разработчиков Дельфи, из компании Borland Ltd. в Microsoft Corp.

     Версия 1 была предназначена для разработки под 16-разрядную платформу Win16;

     Версии  со второй компилируют программы  под 32-разрядную платформу Win32;

     Вместе  с 6-й версией Delphi вышла совместимая с ним по языку и библиотекам среда Kylix, предназначенная для компиляции программ под операционную систему GNU/Linux;

     Версия 8 способна генерировать байт-код исключительно  для платформы .NET. Это первая среда, ориентированная на разработку мультиязычных приложений (лишь для платформы .NET);

     Последующие версии (обозначаемые годами выхода, а  не порядковыми номерами, как это  было ранее) могут создавать как  приложения Win32, так и байт-код для платформы .NET.

     Delphi for .NET — среда разработки Delphi, а также язык Delphi (Object Pascal), ориентированные на разработку приложений для .NET.

     Первая  версия полноценной среды разработки Delphi для .NET — Delphi 8. Она позволяла писать приложения только для .NET.

     В настоящее время, в Delphi 2006, можно писать приложения для .NET, используя стандартную библиотеку классов .NET, VCL для .NET. Среда также позволяет создавать .NET-приложения на C# и Win32-приложения на C++. Delphi 2006 содержит функции для написания обычных приложений с использованием библиотек VCL и CLX.

     Delphi 2006 поддерживает технологию MDA с помощью ECO (Enterprise Core Objects) версии 3.0.

     В марте 2006 года компания Borland приняла решение о прекращении дальнейшего совершенствования интегрированных сред разработки JBuilder, Delphi и C++ Builder по причине убыточности этого направления. Планировалась продажа IDE-сектора компании. Группа сторонников свободного программного обеспечения организовала сбор средств для покупки у Borland прав на среду разработки и компилятор.

     Однако  в ноябре того же года было принято  решение отказаться от продажи IDE бизнеса. Тем не менее, разработкой IDE продуктов теперь будет заниматься новая компания — CodeGear, которая будет финансово полностью подконтрольна Borland.

     В августе 2006 года Borland выпустил облегченные версию RAD Studio под именем Turbo: Turbo Delphi (для Win32 и .NET), Turbo C#, Turbo C++.

     В марте 2008 года было объявлено о прекращении  развития этой линейки продуктов.

     В марте 2007 года CodeGear порадовала пользователей обновленной линейкой продуктов Delphi 2007 for Win32 и выходом совершенно нового продукта Delphi 2007 for PHP.

     В июне 2007 года CodeGear представила свои планы на будущее, то есть опубликовала так называемый roadmap.

     25 августа 2008 года компания Embarcadero, новый хозяин CodeGear, опубликовала пресс-релиз на Delphi for Win32 2009. Версия принесла множество нововведений в язык, таких как:

     По  умолчанию полная поддержка Юникода  во всех частях языка, VCL и RTL; замена обращений ко всем функциям Windows API на юникодные аналоги (то есть MessageBox вызывает MessageBoxW, а не MessageBoxA).

     Обобщённые  типы, они же generics.

     Анонимные методы.

     Новая директива компилятора $POINTERMATH [ON|OFF].

     Функция Exit теперь может принимать параметры в соответствии с типом функции.

     Цель этой работы: создание программы ведения базы данных торговой фирмы. Программа включает в себя: формирование и корректирование файлов данных; расчет комиссионного вознаграждения сотрудников фирмы. Файл данных о продавце включает его имя и фамилию, табельный номер, дату поступления на работу. Торговая фирма выплачивает продавцам комиссионное вознаграждение в размере 5%, если товара продано на сумму менее 1000 долл. в день, и 6%, если выручка составляет 1000 долл./день и выше. Продавцы, проработавшие в фирме более 10 лет, получают комиссионные на 1% больше. Сумма выручки за день для каждого продавца вводится с клавиатуры ЭВМ. Организуйте вывод общих итогов по сумме выручки и сумме комиссионного вознаграждения за месяц.

     Основная  часть

     1 Разработка эскизного и технического проектов программы

     1.1 Назначение и область применения

 

     Назначение  программы: ведение учета работы продавцов.

     Область применения:  справочная информация.

     1.2 Постановка задачи

 

     База  данных представляет собой диалоговое окно с пользователем. Программа  должна обеспечивать хранение, редактирование данных продавцов и содержать поля: Фамилия и имя, Табельный номер, год приема на работу и выручка в день.

     1.3 Организация входных и выходных данных

 

     В программе используются следующие  переменные и объекты, в которых  хранятся входные и выходные данные:

     Form1 – для отображения данных базы.

     StringGrid  – таблица, содержащая БД.

     MainMenu – для сервисных функций.

     Form2 – для ввода и изменения  данных в базе.

     1.4 Выбор состава  технических и  программных средств

 

     Среда программирования – Delphi – весьма быстрая и удобная для разработки приложений различного назначения для Windows. Для нормальной работы программы необходим IBM совместимый компьютер с тактовой частотой процессора не ниже 144МГц и выше, оперативной памятью 16 Мб, жесткий диск объемом не менее 500Мб.  
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

     2 Разработка рабочего  проекта

     2.1 Разработка программы

 

     С точки зрения пользователя, база данных — это программа, которая обеспечивает работу с информацией. При запуске  такой программы на экране, как  правило, появляется таблица, просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную. С точки зрения программиста, база данных — это набор файлов, содержащих информацию. Разрабатывая базу данных для пользователя, программист создает программу, которая обеспечивает работу с файлами данных.1

     В настоящее время существует достаточно большое количество программных  систем, позволяющих создавать и  использовать локальные (dBASE, FoxPro, Access, Paradox) и удаленные (Interbase, Oracle, Sysbase, Infomix, Microsoft SQL Server) базы данных.2

     В состав Delphi входят компоненты, позволяющие создавать программы работы с файлами данных, созданными различными системами: от SE до Infomix и Oracle. Delphi также позволяет программисту, используя утилиту Borland Database Desktop, создавать файлы баз данных в Различных форматах.

     2.2 Спецификация программы

 

     База  данных — это набор однородной, как правило, упорядоченной по некоторому критерию, информации. База данных может быть представлена в "бумажном" или в компьютерном виде. Типичным примером "бумажной" базы данных является каталог библиотеки — набор бумажных карточек, содержащих информацию о книгах. Информация в этой базе однородная (содержит сведения только о книгах) и упорядоченная (карточки расставлены, например, в соответствии с алфавитным порядком фамилий авторов). 3

     Следует обратить внимание, что каждая запись состоит из одинаковых полей. Некоторые  поля могут быть не заполнены, однако они все равно присутствуют в записи. На бумаге базу данных удобно представить в виде таблицы. Каждая строка таблицы соответствует записи, а ячейка таблицы — полю. При этом заголовок столбца таблицы — это имя поля, а номер строки таблицы — номер записи. Информацию компьютерных баз данных обычно выводят на экран в виде таблиц.

     Таблицы физически хранится в отдельном  файле. В простейшем случае источником информации для программы, работающей с базой данных, может быть вся  таблица. Однако, как правило, пользователя интересует не вся информация, находящаяся в базе данных, а только какая-то ее часть. Он выбирает и просматривает только некоторые, удовлетворяющие его запросу записи. Поэтому в модель базы данных  помимо таблицы, представляющей собой всю базу данных, было введено понятие запроса, являющегося выборкой, т. е. группой записей базы данных.

     База  данных — это набор файлов (таблиц), в которых находится информация. Как правило, база данных состоит  из нескольких таблиц, которые размещают  в одном каталоге. Каталог для новой базы данных создается обычным образом, например, при помощи Проводника.

     Исполняемый файл программы «База данных Торговая фирма» имеет название Basa.exe и находится в корневом каталоге диска А. Состав проекта представлен в приложении. 

     2.3 Текст программы

 

     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.

     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. 
 
 
 
 
 
 
 
 

     Заключение

           С точки зрения пользователя, база данных — это программа,  которая обеспечивает работу  с информацией. При запуске  такой программы на экране, как  правило, появляется таблица,  просматривая которую пользователь может найти интересующие его сведения. Если система позволяет, то он может внести изменения в базу данных: добавить новую информацию или удалить ненужную.

            С точки зрения программиста, база данных — это набор  файлов, содержащих информацию. Разрабатывая базу данных для пользователя, программист создает программу, которая обеспечивает работу с файлами данных.

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

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

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

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

     При выборе в главном меню пункта «Автор» появляется сообщение с краткой информацией о программе и разработчике (см. рис.2). 

     

     Рисунок 2 – Окно «Автор»

     Глоссарий

 
Понятия Определение
1 Объектно-ориентированное  программирование подход к  программированию,  рассматривающий  программу  как совокупность объектов и сообщений
2  
Объект
пакет информации, содержащий данные и процедуры их обработки. Сообщение – это спецификация условий выполнения одной из процедур обработки объекта
3  
 
Язык  программирования
система обозначений, служащая для точного описания программ или алгоритмов  машинных вычислений. Язык программирования – это искусственный язык, в котором алфавит ( набор различных символов языка), синтаксис (правила построения множества текстов или конструкций языка из алфавита языка) и семантика (описание соответствия между текстами и их «смыслами») строго и однозначно определены
4 Операция действие в  языке программирование, которое  выполняется над данными
5 Структура

программы

общая схема  построения программы, рассматривающая  все ее составные компоненты и взаимосвязи между ними
6 Оператор  присваивания оператор языка  программирования, предназначенный  для вычисления значения заданного  выражения и записи в память полученного  результата
7  
Файл
определенным  образом организованная совокупность данных, имеющих общее имя и размещенных на одном из внешних устройств компьютера (например, на жестком  или гибком дисках)
8 Оператор  ввода данных специальный оператор, предназначенный для ввода данных в память из файла, закрепленного  за одним из внешних устройств  компьютера
9 Оператор  вывода данных специальный оператор, предназначенный для вывода данных из памяти в файл, закрепленный за одним  из внешних устройств компьютера
10

     Качество

программы

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