Проектирование и реализация интерфейса программы

Содержание

 

Введение ………………………………………………………………………..4

1. Анализ предметной области  ……………………………………………......5

2. Описание входной и выходной информации……………………………...6

   2.1.Входная информация………………………………………………….....6

   2.2. Выходная информация  ……………………………………………...…..7

3.Обоснование выбора среды реализации………………….………………...8

   3.1. Выбор среды реализации  ……………………………………………….8

   3.2.Выбор состава и параметров  технических средств…………………....9

4. Построение реляционной базы данных…………………………………....10

   4.1.Разработка логической и физической модели базы данных……….....10

5.Проектирование и реализация интерфейса программы…………………...12

Заключение…………………………………………………………………..….16

Список использованных источников …………………………………………17

Приложение……………………………………………………………………..18

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ведение

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

Разработка программы будет вестись Delphi 7- это среда быстрой разработки, в которой в качестве языка программирования используется строго типизированный объектно-ориентированный язык Delphi.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1. Анализ предметной области

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2.Описание входной и выходной информации

2.1. Входная информация

Входная информация  – это информация, поступающая извне и используемая для её решения.

В качестве входной информации используются 2 базы данных, которые мы создали на Database Deckopt:

–Kassir.db

–Tovar.db

В базе данных Kassir.db входными информациями служат:

–Код кассира

-ФИО

–Адрес

–Оклад

В базе данных Tovar.db входными информациями служат:

–Код товара

–Товар

–Характеристика

–Цена

 

 

 

 

 

 

 

 

 

 

 

 

2.2. Выходная информация

Выходная информация –это информация, полученная на основе входной информации.

Выходной информацией является база данных GurOper1.db.

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

№

Ostatok na nachala

Kod kassira

Debet

DebetS

Kredit

KreditS

DataOper

Kolic

Ostatok na conec

Summa

Operac

                       



 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3.ОБОСНОВАНИЕ ВЫБОРА СРЕДЫ РЕАЛИЗАЦИИ

3.1. Выбор среды реализации

Delphi 7 — это среда быстрой разработки, в которой в качестве языка программирования используется строго типизированный объектно-ориентированный язык Delphi. 
Delphi 7 представляет собой полное решение для разработки приложений от проектирования до развертывания по архитектуре, управляемой моделью (MDA), которое позволяет интегрировать моделирование, разработку и развертывание приложений и систем электронного бизнеса для платформы Windows. Delphi 7 содержит развитые библиотеки и инструменты для создания приложений электронного бизнеса и веб-сервисов, полностью интегрирует соответствующие технологии и качественно повышает производительность разработчиков, предоставляя все необходимое для исследования вопросов перехода на Microsoft .NET. 
Визуальная среда web-разработки Delphi 7 позволяет визуально строить web-приложения и кардинально уменьшает обычные временные затраты, связанные с созданием серверной составляющей приложений, включая управление сессиями в многопользовательском режиме доступа. 
Включённая в состав Delphi 7 технология проектирования и моделирования приложений UML позволяет эффективно проектировать свои приложения при помощи средств визуального моделирования и реорганизации кода (refactoring). Возможности Delphi 7 по интеграции, реинжинирингу и мгновенной визуализации позволяют создавать высококачественные проекты и тексты программ, применяя готовые шаблоны проектирования и создавая более крупные модели.

Database Desktop - это утилита, во многом похожая на Paradox, которая поставляется вместе с Delphi для интерактивной работы с таблицами различных форматов локальных баз данных - Paradox и dBase, а также SQL-серверных баз данных InterBase, Oracle, Informix, Sybase (с использованием SQL Links).

 

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

Для решения задачи необходим состав следующих технических средств:

  • Процессор Pentium  с частотой 1.8 ГГц и выше;
  • Минимальный объем оперативной памяти – 256 Мбайт. Рекомендуемый – 1 Гбайт и выше;
  • Жесткий диск с объемом свободного пространства не менее 10 Гбайт при минимальной конфигурации и до 20 Гбайт при полной установке;
  • Операционная система Microsoft Windows XP SP2 (или выше);
  • Разрешение 1024x768 или  1280х1024;
  • Устройство для чтения компакт-дисков.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4. Построение реляционной базы данных

4.1. Разработка логической и физической модели базы данных

Построение логической модели осуществим с помощью   программного средства ERWin 4.0.

Программа ERWin- средство концептуального моделирования БД.

Выберем тип модели Logical/Physical,  и на логическом уровне определим:

– сущности,

– связи между ними,

Результат построения Логической модели представлен на рис.1, а Физическая модель изображена на рис.2.

 

Рис.1. Логическая модель

В построенной модели используется  следующий вид связи – не идентифицирующая связь, типа «один ко многим». Значит, что один экземпляр одной сущности связан с множеством экземпляров другой сущности.

 

Рис.2.Физическая модель

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5. Проектирование и реализация интерфейса программы

Представленный курсовой проект содержит следующий перечень форм:

–Form1;

–Data Module;

Data Module- это средство для эффективной работы с базами данных.На форме Data Module установлены компоненты для работы с базами данных.В данном случаи это компоненты:

–Table(контейнеры для размещения БД)

– DataSource(связующие компоненты)

В результате мы получаем следующий вид для формы Data Module:

Рис.3.форма Data Module

На Form 1 будут находиться основные элементы, а Data Module предназначен для эффективной работы с БД.

На Form1 представлены следующие компоненты:

– DBGrid(специальная таблица для базы данных)

–Button(командная кнопка для реализации в программе команд)

–Edit(основной компонент для ввода)

–BitBtn(пиктографическая кнопка представляющая собой один из вариантов стандартной кнопки Button.

–DBNavigator(для навигации в таблице DBGrid)

–Label (надпись)

–RadioButton("радиокнопка" служит для "переключения каналов" )

–Date Time Picker(поле ввода даты и времени)

В результате мы получаем следующий вид для формы Form1:

Рис.4. Форма Form1

После запуска программы мы из базы данных Kassir.db выбираем кассира, выбираем из БД Tovar любой товар, при этом цена автоматически заполняет компонент Edit:

Рис.5. Выбор товара из БД Tovar на форме Form1

 

Далее  в ручную заполняем Дебет, Кол-во, Кредит, устанавливаем дату, из групп операций выбираем операцию , которую нужно провести и нажимаем на кнопку ОК.

Рис.6. Заполнение  оставшихся компонентов на форме  Form1

Кнопка ОК предназначена для добавление операций в журнал операций, которая представляет собой базу данных GurOper1.db, а также получение результата для выполненного процесса.

В результате мы имеем следующий вид:

Рис.7. Выполнение процесса при нажатии кнопки ОК на форме  Form1

Кнопка Отчет кассира предназначен для вывода в excel формат отчет кассира. Этот отчет строится на основе выборке из журнала операции GurOper1. Для вывода мы указываем дату операции и выбираем из базы данных Kassir .db кассира, и если такие есть в журнале операций GurOper1.db, то они выводятся в excel формате.  

 

Рис.8. Отчет кассира

Кнопка Close предназначена для выхода из программы.

 

 

 

 

 

 

 

 

 

 

 

 

Заключение

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

Разработана база данных для хранения информации данных характеристик товара,

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

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

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список использованных источников

  1. Фленов М.Е. Библия Delphi: 2004. – 668с.
  2. Петров В.Н. Информационные системы. – СПб.: Питер, 2008.
  3. Фаронов В.В. Программирование баз данных в Delphi 7: Учебный курс. – СПб.: Питер, 2004 – 464 с.
  4. Карпова Т.С. Базы данных: модели, разработка, реализация. – СПб.: Питер, 2005. – 304с.
  5. Ульман Дж., Уидом Дж. Введение в системы баз данных. – М.: Лори, 2006. – 374с.
  6. Карпова Т.С. Базы данных: модели, разработка. – СПб.: Питер, 2009, 304 с.
  7. http://www.delphiclub.ru.
  8. http://www.samouchka.net.
  9. http://www.booksgid.com.
  10. http://www.delphisource.com.

 

Приложение

Листинг кода главной формы проекта:

unit Unit1;

 

interface

 

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, Buttons, StdCtrls, ExtCtrls, DBCtrls, Grids, DBGrids,ComObj, ComCtrls;

 

type

  TForm1 = class(TForm)

    DBGrid1: TDBGrid;

    DBNavigator1: TDBNavigator;

    DBGrid2: TDBGrid;

    DBNavigator2: TDBNavigator;

    DBGrid3: TDBGrid;

    DBNavigator3: TDBNavigator;

    GroupBox1: TGroupBox;

    Label1: TLabel;

    Edit1: TEdit;

    Label2: TLabel;

    Edit2: TEdit;

    Label3: TLabel;

    Edit3: TEdit;

    Label4: TLabel;

    Edit4: TEdit;

    Label5: TLabel;

    Edit5: TEdit;

    GroupBox2: TGroupBox;

    RadioButton1: TRadioButton;

    RadioButton2: TRadioButton;

    RadioButton3: TRadioButton;

    Edit6: TEdit;

    Edit7: TEdit;

    Edit8: TEdit;

    Label6: TLabel;

    Label7: TLabel;

    BitBtn1: TBitBtn;

    BitBtn2: TBitBtn;

    DateTimePicker1: TDateTimePicker;

    RadioButton4: TRadioButton;

    RadioButton5: TRadioButton;

    RadioButton6: TRadioButton;

    Button2: TButton;

    procedure DBGrid1CellClick(Column: TColumn);

    procedure BitBtn1Click(Sender: TObject);

    procedure RadioButton3Click(Sender: TObject);

 

    procedure Button2Click(Sender: TObject);

 

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

  a0:string;

flag :boolean;

n1 : integer;

implementation

 

uses LAV,Modul1;

{$R *.dfm}

 

procedure TForm1.DBGrid1CellClick(Column: TColumn);

begin

 

Edit1.Text:=Ligidov.Tovar.FieldByName('Cena').AsString;

end;

 

procedure TForm1.BitBtn1Click(Sender: TObject);

Var

a0:string;

a1:string;

a2:string;

// stoim, naz,nar:string;

begin

Ligidov.GurOper1.Insert;

Ligidov.GurOper1.FieldByName('Debet').AsString:= Edit3.Text;

Ligidov.GurOper1.FieldByName('Kredit').AsString:= Edit4.Text;

Ligidov.GurOper1.FieldByName('DatOper').AsString:=DateToStr(DateTimePicker1.Date);

Ligidov.GurOper1.FieldByName('KodKassira').AsString:=Ligidov.Kassir.FieldByName('KodKassira').AsString;

Ligidov.GurOper1.FieldByName('Kolic').AsString:=Edit2.Text;

a0:=CalKuljator(Edit1.Text,Edit2.Text,'*',2);

a0:=ZnakZamena(a0,'.',',');

Ligidov.GurOper1.FieldByName('summa').AsString:=a0;

edit5.Text:=a0;

if radiobutton1.Checked then

        begin

        Edit7.Text:=a0;

        Edit8.Text:=inttostr(0);

        a1:='продажа ';

        a2:=a1+Ligidov.Tovar.FieldByName('Tovar').AsString;

        Ligidov.GurOper1.FieldByName('Operac').AsString:=a2;

        end;

if radiobutton2.Checked then

        begin

        Edit7.Text:=inttostr(0);

        Edit8.Text:=a0;

        a1:='возврат ';

        a2:=a1+Ligidov.Tovar.FieldByName('Tovar').AsString;

        Ligidov.GurOper1.FieldByName('Operac').AsString:=a2;

        end;

        if radiobutton3.Checked then

        begin

        a2:=edit6.text;

         Ligidov.GurOper1.FieldByName('Operac').AsString:=a2;

        end;

        if radiobutton4.Checked then

        begin

        Edit7.Text:=inttostr(0);

        Edit8.Text:=a0;

        a1:='Оклад';

        a2:=a1+Ligidov.Kassir.FieldByName('FIO').AsString;

        Ligidov.GurOper1.FieldByName('Operac').AsString:=a2;

        end;

        if radiobutton5.Checked then

        begin

        Edit7.Text:=inttostr(0);

        Edit8.Text:=a0;

        a1:='наличка в Банк';

        a2:=a1;

        Ligidov.GurOper1.FieldByName('Operac').AsString:=a2;

        end;

        if radiobutton6.Checked then

        begin

        Edit7.Text:=a0;

        Edit8.Text:=inttostr(0);

        a1:='погасили долг';

        a2:=a1;

        Ligidov.GurOper1.FieldByName('Operac').AsString:=a2;

        end;

        Ligidov.GurOper1.FieldByName('DebetS').AsString:= Edit7.Text;

        Ligidov.GurOper1.FieldByName('KreditS').AsString:= Edit8.Text;

Ligidov.GurOper1.Post;

end;

 

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

edit6.Text:='';

end;

 

 

 

procedure TForm1.Button2Click(Sender: TObject);

Var

dat0,dat1,dat2,G0,s0,k0, kodW,KodPr,a0,a01,a1,a2 :string;

Gir0,Gir1,SGir1,sum0,kol0,Sum1,kol1,Ssum1,Skol1:real;

code, n2,i1,i,s1,s2,s3:integer;

XLApp,Sheet,Colum:Variant;

skold1,skolk1,skold2, skolk2, skold3,skolk3, kold1,kolk1,kold2, kolk2, kold3,kolk3,

d1,sd1,k1,sk1,sk2,d2,k2,sd2,d3,sd3,k3,sk3:real;

begin

With Ligidov do begin

//KodPr1:=Kassir.fieldbyname('KodKassira').AsString;

dat0:='01.01.2000';

a0:=DateToStr(DateTimePicker1.Date);

dat1:=a0;

//a01:=DateToStr(DateTimePicker2.Date);

//dat2:=a01;

 

XLApp:=CreateOleObject('Excel.Application');

XLApp.Visible:=true;

XLApp.Workbooks.Add(-4167);

XLApp.Workbooks[1].WorkSheets[1].Name:='Оборотка';

Colum:=XLApp.Workbooks[1].WorkSheets['Оборотка'].Columns;

 

N2:=1;

Colum.Columns[1].ColumnWidth:=5;

Colum.Columns[2].ColumnWidth:=30;

Colum.Columns[3].ColumnWidth:=10;

Colum.Columns[4].ColumnWidth:=15;

Colum.Columns[5].ColumnWidth:=10;

Colum.Columns[6].ColumnWidth:=15;

Colum.Columns[7].ColumnWidth:=10;

Colum.Columns[8].ColumnWidth:=10;

 

Colum:=XLApp.Workbooks[1].WorkSheets['Оборотка'].Rows;

Colum.Rows[2].Font.Bold:=true;

Colum.Rows[1].Font.Bold:=true;

Colum.Rows[1].Font.Color:=clBlue;

Colum.Rows[1].Font.Size:=12;

Sheet:=XLApp.Workbooks[1].WorkSheets['Оборотка'];

//n2:=0;

 

Sheet.Cells[n2,1]:='Журнал операций за   '+a0 +'+'+Kassir.fieldbyname('FIO').AsString;

iNC(n2);

Sheet.Cells[n2,2]:='Остаток на начала '+a0 ;

Ligidov.SetBase4('GurOper1.DB','DatOper','Debet','','','Summa','Summa','01.01.2000',a0,'50','','',kold1,d1);

Ligidov.SetBase4('GurOper1.DB','DatOper','Kredit','','','Summa','Summa','01.01.2000',a0,'50','','',kold1,d2);

d3:=d1-d2;

Str(d3:13:2,a1);

a1:=Trim(a1);

Sheet.Cells[n2,5]:=a1;

iNC(n2);

//Sheet.Cells[n2,0]:='?? ';

Sheet.Cells[n2,1]:='№№ ';

 

Sheet.Cells[n2,2]:='Наименование операции';

Sheet.Cells[n2,3]:='Дебет';

Sheet.Cells[n2,4]:=' суммаДебет';

Sheet.Cells[n2,5]:='Кредит';

Sheet.Cells[n2,6]:='суммаКредит';

Sheet.Cells[n2,7]:='Сумма ';

iNC(n2);

s1:=0; s2:=0;s3:=0;

With Ligidov do begin

SetBase4('GurOper1.DB','DatOper','','','','','Summa',a0,a0,'','','',kold1,d1);

 

Query1.First;

Repeat

//a1:=Query1.fieldbyname('KodTovara').AsString;

//KodPr:=Query1.fieldbyname('KodKassira').AsString;

 

 

Sheet.Cells[n2,2]:=Query1.fieldbyname('Operac').AsString;

Sheet.Cells[n2,3]:=Query1.fieldbyname('Debet').AsString;

Sheet.Cells[n2,4]:=Query1.fieldbyname('DebetS').AsString;

Sheet.Cells[n2,5]:=Query1.fieldbyname('Kredit').AsString;

Sheet.Cells[n2,6]:=Query1.fieldbyname('KreditS').AsString;

Sheet.Cells[n2,7]:=Query1.fieldbyname('Summa').AsString;

Sheet.Cells[n2,1]:=IntToStr(n2-2);

s2:=s2+Query1.fieldbyname('DebetS').AsInteger;

s3:=s3+Query1.fieldbyname('KreditS').AsInteger;

s1:=s2-s3;

Query1.Next;

iNC(n2);

until Query1.Eof;

Sheet.Cells[n2,2]:='Итого';

Sheet.Cells[n2,4]:=IntToStr(s2);

Sheet.Cells[n2,6]:=IntToStr(s3);

Sheet.Cells[n2,7]:=IntToStr(s1);

Sheet.Cells[n2+3,7]:='Подпись кассира ___________________________';

Sheet.Cells[n2+5,7]:='Подпись бугалтера _________________________';

end;

end;

end;

 

 

 

 

 

 

Листинг кода формы Data Module проекта:

unit LAV;

interface

 

uses

  SysUtils, Classes, DBTables, DB;

 

type

  TLigidov = class(TDataModule)

    DataSource1: TDataSource;

    DataSource2: TDataSource;

    DataSource3: TDataSource;

    DataSource4: TDataSource;

    Tovar: TTable;

    Kassir: TTable;

    GurOper1: TTable;

    Query1: TQuery;

  Procedure SetBase3(Fils,Datp,Buhp,KodWrkPl,ScetPl,DaTT1,DaTT2,szet,KodWrk,Korenscet:string);

    Procedure SetBase4(Fils,Datp,Buhp,KodWrkPl,ScetPl,Kolp,Sump,DaTT1,DaTT2,szet,KodWrk,Korenscet:string; Var Kol1,Sum1:real);

 

  private

    { Private declarations }

  public

   { Public declarations }

  end;

 

var

  Ligidov: TLigidov;

   TekDir:string;

implementation

 

{$R *.dfm}

Procedure TLigidov.SetBase4(Fils,Datp,Buhp,KodWrkPl,ScetPl,Kolp,Sump,DaTT1,DaTT2,szet,KodWrk,Korenscet:string; Var Kol1,Sum1:real);

Var

TekDir,s,s1,s0,a1,a0:string;

i1:integer;

Koli1, summ1:real;

begin

SetBase3(Fils,Datp,Buhp,KodWrkPl,ScetPl,DaTT1,DaTT2,szet,KodWrk,Korenscet);

//SetBase3(Fils,Datp,KodWrkPl,ScetPl,DaTT1,DaTT2,KodWrk,Korenscet);

Koli1:=0; summ1:=0;

Query1.First;

For i1:=1 to Query1.RecordCount do begin

//Koli1:=Koli1+Query1.FieldByName(Kolp).AsFloat;

summ1:=summ1+Query1.FieldByName(Sump).AsFloat;

Query1.Next;

end;//i

Kol1:=Koli1;

Sum1:=summ1;

end;

      Procedure TLigidov.SetBase3(Fils,Datp,Buhp,KodWrkPl,ScetPl,DaTT1,DaTT2,szet,KodWrk,Korenscet:string);

Var

TekDir,s,s1,s0,a1,a0:string;

begin

//TekDir:='C:\Scet60';

DataSource4.DataSet:=Query1;

//Dbgrid1.DataSource:=FDataSource4;

Query1.DatabaseName:=TekDir;

Query1.Close;

Query1.sql.Clear;

Query1.sql.Add('SELECT * FROM '+Fils);

a1:='WHERE ('+Datp+' BETWEEN "'+DaTT1+'" and "'+DaTT2+'")';

Query1.sql.Add(a1);

//if length(BuhP)>0 then Query1.sql.Add('and ('+BuhP+' LIKE "%" ||'+'"'+szet+'" || "%")');

if length(BuhP)>0 then Query1.sql.Add('and ('+BuhP+'="'+szet+'")');

if length(ScetPl)>0 then Query1.sql.Add('and ('+ScetPl+' LIKE "%" ||'+'"'+Korenscet+'" || "%")');

if length(KodWrkPl)>0 then Query1.sql.Add('and ('+KodWrkPl+'="'+KodWrk+'")');

{

a1:='and ('+Datp+' BETWEEN "'+DaTT1+'" and "'+DaTT2+'")';

Form11.Query1.sql.Add(a1);

}

Query1.sql.SaveToFile('sql11.txt');

Query1.open;

end;

end.

end.

 

 

 

 

 

 

 

 


Проектирование и реализация интерфейса программы