Проектирование и реализация интерфейса программы
Содержание
Введение ………………………………………………………………………..4
1. Анализ предметной области ……………………………………………......5
2. Описание входной и выходной информации……………………………...6
2.1.Входная информация……………………
2.2. Выходная информация ……………………………………………...…..7
3.Обоснование выбора среды
3.1. Выбор среды реализации ……………………………………………….8
3.2.Выбор состава и
4. Построение реляционной базы данных…………………………………....10
4.1.Разработка логической и физической модели базы данных……….....10
5.Проектирование и реализация интерфейса программы…………………...12
Заключение……………………………………………………
Список использованных источников …………………………………………17
Приложение……………………………………………………
Ведение
В курсовой работе будет разработана программа, которая автоматизирует работу кассира, позволяет автоматически генерировать отчеты в разрезе материально-ответственных лиц, также будут получены навыки по созданию баз данных с использованием 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 предназначена для выхода из программы.
Заключение
В рамках курсового проектирования был разработан проект, который автоматизирует рабочее место кассира.
Разработана база данных для хранения информации данных характеристик товара,
В результате изучены информационные потоки данных, определена технология обработки данных, вид входных и выходных документов.
Внедрение разработанной информационной системы позволит предприятию вести централизованный учет расходов на товары и оперативно формировать отчеты по кассирам.
Список использованных источников
- Фленов М.Е. Библия Delphi: 2004. – 668с.
- Петров В.Н. Информационные системы. – СПб.: Питер, 2008.
- Фаронов В.В. Программирование баз данных в Delphi 7: Учебный курс. – СПб.: Питер, 2004 – 464 с.
- Карпова Т.С. Базы данных: модели, разработка, реализация. – СПб.: Питер, 2005. – 304с.
- Ульман Дж., Уидом Дж. Введение в системы баз данных. – М.: Лори, 2006. – 374с.
- Карпова Т.С. Базы данных: модели, разработка. – СПб.: Питер, 2009, 304 с.
- http://www.delphiclub.ru.
- http://www.samouchka.net.
- http://www.booksgid.com.
- 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(
begin
Edit1.Text:=Ligidov.Tovar.
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
Var
a0:string;
a1:string;
a2:string;
// stoim, naz,nar:string;
begin
Ligidov.GurOper1.Insert;
Ligidov.GurOper1.FieldByName('
Ligidov.GurOper1.FieldByName('
Ligidov.GurOper1.FieldByName('
Ligidov.GurOper1.FieldByName('
Ligidov.GurOper1.FieldByName('
a0:=CalKuljator(Edit1.Text,
a0:=ZnakZamena(a0,'.',',');
Ligidov.GurOper1.FieldByName('
edit5.Text:=a0;
if radiobutton1.Checked then
begin
Edit7.Text:=a0;
Edit8.Text:=inttostr(0);
a1:='продажа ';
a2:=a1+Ligidov.Tovar.
Ligidov.GurOper1.FieldByName('
end;
if radiobutton2.Checked then
begin
Edit7.Text:=inttostr(0);
Edit8.Text:=a0;
a1:='возврат ';
a2:=a1+Ligidov.Tovar.
Ligidov.GurOper1.FieldByName('
end;
if radiobutton3.Checked then
begin
a2:=edit6.text;
Ligidov.GurOper1.FieldByName('
end;
if radiobutton4.Checked then
begin
Edit7.Text:=inttostr(0);
Edit8.Text:=a0;
a1:='Оклад';
a2:=a1+Ligidov.Kassir.
Ligidov.GurOper1.FieldByName('
end;
if radiobutton5.Checked then
begin
Edit7.Text:=inttostr(0);
Edit8.Text:=a0;
a1:='наличка в Банк';
a2:=a1;
Ligidov.GurOper1.FieldByName('
end;
if radiobutton6.Checked then
begin
Edit7.Text:=a0;
Edit8.Text:=inttostr(0);
a1:='погасили долг';
a2:=a1;
Ligidov.GurOper1.FieldByName('
end;
Ligidov.GurOper1.FieldByName('
Ligidov.GurOper1.FieldByName('
Ligidov.GurOper1.Post;
end;
procedure TForm1.RadioButton3Click(
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,
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
begin
With Ligidov do begin
//KodPr1:=Kassir.fieldbyname('
dat0:='01.01.2000';
a0:=DateToStr(DateTimePicker1.
dat1:=a0;
//a01:=DateToStr(
//dat2:=a01;
XLApp:=CreateOleObject('Excel.
XLApp.Visible:=true;
XLApp.Workbooks.Add(-4167);
XLApp.Workbooks[1].WorkSheets[
Colum:=XLApp.Workbooks[1].
N2:=1;
Colum.Columns[1].ColumnWidth:=
Colum.Columns[2].ColumnWidth:=
Colum.Columns[3].ColumnWidth:=
Colum.Columns[4].ColumnWidth:=
Colum.Columns[5].ColumnWidth:=
Colum.Columns[6].ColumnWidth:=
Colum.Columns[7].ColumnWidth:=
Colum.Columns[8].ColumnWidth:=
Colum:=XLApp.Workbooks[1].
Colum.Rows[2].Font.Bold:=true;
Colum.Rows[1].Font.Bold:=true;
Colum.Rows[1].Font.Color:=
Colum.Rows[1].Font.Size:=12;
Sheet:=XLApp.Workbooks[1].
//n2:=0;
Sheet.Cells[n2,1]:='Журнал операций за '+a0 +'+'+Kassir.fieldbyname('FIO')
iNC(n2);
Sheet.Cells[n2,2]:='Остаток
Ligidov.SetBase4('GurOper1.DB'
Ligidov.SetBase4('GurOper1.DB'
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','
Query1.First;
Repeat
//a1:=Query1.fieldbyname('
//KodPr:=Query1.fieldbyname('
Sheet.Cells[n2,2]:=Query1.
Sheet.Cells[n2,3]:=Query1.
Sheet.Cells[n2,4]:=Query1.
Sheet.Cells[n2,5]:=Query1.
Sheet.Cells[n2,6]:=Query1.
Sheet.Cells[n2,7]:=Query1.
Sheet.Cells[n2,1]:=IntToStr(
s2:=s2+Query1.fieldbyname('Deb
s3:=s3+Query1.fieldbyname('
s1:=s2-s3;
Query1.Next;
iNC(n2);
until Query1.Eof;
Sheet.Cells[n2,2]:='Итого';
Sheet.Cells[n2,4]:=IntToStr(
Sheet.Cells[n2,6]:=IntToStr(
Sheet.Cells[n2,7]:=IntToStr(
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,
Procedure SetBase4(Fils,Datp,Buhp,
private
{ Private declarations }
public
{ Public declarations }
end;
var
Ligidov: TLigidov;
TekDir:string;
implementation
{$R *.dfm}
Procedure TLigidov.SetBase4(Fils,Datp,
Var
TekDir,s,s1,s0,a1,a0:string;
i1:integer;
Koli1, summ1:real;
begin
SetBase3(Fils,Datp,Buhp,
//SetBase3(Fils,Datp,KodWrkPl,
Koli1:=0; summ1:=0;
Query1.First;
For i1:=1 to Query1.RecordCount do begin
//Koli1:=Koli1+Query1.
summ1:=summ1+Query1.
Query1.Next;
end;//i
Kol1:=Koli1;
Sum1:=summ1;
end;
Procedure TLigidov.SetBase3(Fils,Datp,
Var
TekDir,s,s1,s0,a1,a0:string;
begin
//TekDir:='C:\Scet60';
DataSource4.DataSet:=Query1;
//Dbgrid1.DataSource:=
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.
Query1.open;
end;
end.
end.