Автор работы: Пользователь скрыл имя, 12 Марта 2012 в 19:19, курсовая работа
В настоящее время уровень компьютеризации во всех сферах человеческой жизни достиг небывалых высот. Уже трудно представить какое либо крупное промышленное предприятие без компьютерного управления производством, наука шагает семимильными шагами опять же благодаря компьютерным технологиям, медицина стала более эффективна благодаря «умным машинам».
Введение 3
1. Основные понятия
1.1 Описание среды разработки. 4
1.2 Организация баз данных 5
1.3 Поддержка языков БД 7
1.4 BDE………………………………………………………………….8
1.5 Архитектура СУБД 9
2. Постановка задачи 11
3. Использованные инструменты Delphi 12
4. Описание базы данных 12
4.1 Связь таблиц……………………………………………………….. 13
5. Структура программного продукта 14
5.1 Межмодульные связи………………………………………………15
6. Разработанные алгоритмы по теме работы…….....…………16
6.1 Сортировка………………………………………………………….16
6.2 Поиск………………………………………………………………...16
6.3 Фильтрация………………………………………………………….16
6.4 Формирование запросов……………………………………………16
6.5 Формирование отчетов 16
7. Описание пользовательского интерфейса 17
8. Заключение 23
9. Список использованной литературы 24
Приложение А. Текст программы. 18
Приложение Б. Экранные формы. 35
5. Структура программного продукта:
Программный продукт использует для своей работы следующие пользовательские модули:
fmRashet.pas – главный модуль, содержащий форму главного окна.
fmDobavForm.pas – модуль, содержащий форму добавления новой записи.
fmIzmenForm.pas – модуль, содержащий форму изменения записей.
fmVibor.pas - модуль, содержащий форму удаления записей.
fmSortForm.pas - модуль, содержащий форму сортировки.
fmPoisk.pas - модуль, содержащий форму поиска.
fmFilterForm.pas - модуль, содержащий форму фильтрации.
fmZapros.pas - модуль, содержащий форму запросов.
fmDiag.pas - модуль, содержащий форму с диаграммами.
fmPassword.pas – модуль, содержащий форму ввода пароля.
fmSmenaPass.pas - модуль, содержащий форму изменения пароля.
fmOProge.pas – модуль, содержащий форму справки о программе
fmAvtorForm.pas – модуль, содержащий форму справки об авторе.
Также были использованы стандартные модули:
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, Menus, XPMan;
Для получения кода программы необходимы:
Файл проекта prRashet.dpr.
Файлы форм с расширением *.dfm и соответствующие им файлы *.pas.
Файлы базы данных *.db.
Для функционирования программы необходимы:
Файл prRashet.exe, который формируется в результате компиляции программы.
Файлы базы данных *.db.
Файлы с шаблонами отчетов *. rav
5.1 Межмодульные связи:
6. Разработанные алгоритмы по теме работы:
6.1 Сортировка:
Сортировка в программном продукте осуществляется посредством использования вторичных индексов, которые были созданы при разработке исходных таблиц с данными.
Используется 2 типа индексов: для сортировки в прямом и обратном порядке. Переключение между ними выполняется при смене типа сортировки, внутри программы. Это ведет за собой следующее: свойство IndexName компонента TTable, сменяется на необходимый нам индекс и выполняется сортировка по требуемому полю.
6.2 Поиск:
Поиск реализован при использовании языка SQL. При выборе поля по которому будет осуществляться поиск и при вводе критерия поиска внутри программы осуществляется построение SQL-запроса, который затем заносится в свойство SQL компонента Query. После чего этот компонент выполняет поставленный запрос и выводит необходимые поля из выбранной таблицы.
6.3 Фильтрация:
Фильтрация реализуется способом подобным тому, который использовался в поиске. Разница лишь в том, что точное равенство при построении запроса заменили знаки «<=» и «>=». Результатом фильтрации обычно является диапазон полей с искомыми значениями.
6.4 Формирование запросов:
При формировании запросов, в зависимости от выбранных полей и их значений, формируется SQL-запрос, который может выполняться одновременно для всех таблиц.
Происходит выборка подходящих значений из необходимых таблиц. Повторяющиеся значения в таблицах исключаются методом DISTINCT. Режимы MIN\MAX реализуются соответствующими методами. Также может выполняться сравнение значений в нескольких полях. Метод построения запросов такой же как и в поиске и фильтрации.
6.5 Формирование отчетов:
В данном программном продукте есть возможность создания отчетов по годовым и квартальным платежам, для вывода на печать информации из базы данных. Эта функция была реализована при использовании утилиты Rave Designer, встроенной в среду Delphi, а также компонентов с вкладки Rave. В частности RvTableConnection и RvProject.
Описание пользовательского интерфейса:
Важную роль для удобного использования программного продукта играет интерфейс, который должен быть не только функционально полным, но и понятным для всех типов пользователей. Также интерфейс должен обеспечивать быструю навигацию по разделам программного продукта. Что и было реализовано в системе главного и контекстных меню.
Главное меню программы.
Подменю «Файл»
Подменю «Работа с данными»
Подменю «Управление данными»
Подменю «Отчеты»
Подменю «Справка»
Окно ввода пароля
Интерфейс главного окна
Окно смены пароля
Окно редактирования записи в таблице «Общие платежи»
Окно редактирования записи в таблице «Показатели»
Окно редактирования записи в таблице «Вещества»
Окно редактирования записи в таблице нормативы
Окно удаления записи
Окно сортировки
Окно поиска
Окно фильтрации
Окно запросов
Окно диаграмм
Окно общего отчета
Окно информации об авторе
Окно информации о программе
8. Заключение:
После завершения разработки, проектирования, создания и тестирования программного продукта:
- программа соответствует требованиям, предъявленным в пункте «Постановка задачи».
- программа работает корректно с сортировкой, поиском и фильтрацией.
- программа корректно формирует запросы.
- программа корректно формирует отчеты.
9. Список использованной литературы:
При создании данного программного продукты была использована следующая литература:
1. С. И. Бобровский «Delphi 7. Учебный курс» - СПб.: Питер, 2006. – 736с.:
2. В.В.Фаронов «Программирование баз данных в Delphi 7. Учебный курс» - СПб.: Питер, 2004. – 459с.
3. В.В.Фаронов «DELPHI. Программирование на языке высокого уровня. Учебник для вузов» - СПб.: Питер, 2003.- 640 с.:ил.
Приложение А. Текст программы.
Основная программа:
unit fmRashet;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, DBCtrls, StdCtrls, Buttons, Grids, DBGrids, ExtCtrls, Menus, XPMan;
type
TGlavForm = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
Splitter1: TSplitter;
Panel3: TPanel;
DBGrid1: TDBGrid;
DBGrid2: TDBGrid;
MainMenu1: TMainMenu;
N1: TMenuItem;
N3: TMenuItem;
N4: TMenuItem;
N5: TMenuItem;
Label1: TLabel;
PopupMenu1: TPopupMenu;
N7: TMenuItem;
N8: TMenuItem;
N9: TMenuItem;
PopupMenu2: TPopupMenu;
N13: TMenuItem;
N14: TMenuItem;
N15: TMenuItem;
N18: TMenuItem;
N19: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N12: TMenuItem;
N20: TMenuItem;
N21: TMenuItem;
N22: TMenuItem;
N23: TMenuItem;
DBGrid3: TDBGrid;
N2: TMenuItem;
Panel4: TPanel;
DBGrid4: TDBGrid;
PopupMenu3: TPopupMenu;
N6: TMenuItem;
N16: TMenuItem;
N17: TMenuItem;
PopupMenu4: TPopupMenu;
N24: TMenuItem;
Button1: TButton;
N25: TMenuItem;
OpenDialog1: TOpenDialog;
N26: TMenuItem;
N27: TMenuItem;
Button2: TButton;
N28: TMenuItem;
N29: TMenuItem;
N30: TMenuItem;
procedure N4Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure N12Click(Sender: TObject);
procedure N13Click(Sender: TObject);
procedure N14Click(Sender: TObject);
procedure N9Click(Sender: TObject);
procedure N15Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N18Click(Sender: TObject);
procedure N19Click(Sender: TObject);
procedure N23Click(Sender: TObject);
procedure N21Click(Sender: TObject);
procedure N22Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N16Click(Sender: TObject);
procedure N24Click(Sender: TObject);
procedure N17Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure N25Click(Sender: TObject);
procedure N26Click(Sender: TObject);
procedure N27Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure FormActivate(Sender: TObject);
procedure N29Click(Sender: TObject);
procedure N30Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
GlavForm: TGlavForm;
F:file;
implementation
uses dmRashet, fmPoisk, fmOProge, fmAvtorForm,
fmVoprosForm, fmVoprosForm2, fmFilterForm, fmSortForm,
fmIzmenForm, fmDobavForm, fmZapros, fmVoprosForm3, fmVibor, fmPassword,
fmDiag, fmSmenaPass;
{$R *.dfm}
procedure TGlavForm.N4Click(Sender: TObject);
begin
PoiskForm.ShowModal;
end;
procedure TGlavForm.N7Click(Sender: TObject);
begin
DobavForm.ShowModal;
DobavForm.PageControl1.
end;
procedure TGlavForm.N8Click(Sender: TObject);
begin
IzmenForm.Show;
IzmenForm.PageControl1.
end;
procedure TGlavForm.N11Click(Sender: TObject);
begin
AvtorForm.ShowModal;
end;
procedure TGlavForm.N12Click(Sender: TObject);
begin
OProgeForm.ShowModal;
end;
procedure TGlavForm.N13Click(Sender: TObject);
begin
DobavForm.ShowModal;
DobavForm.PageControl1.
end;
procedure TGlavForm.N14Click(Sender: TObject);
begin
IzmenForm.Show;
IzmenForm.PageControl1.
end;
procedure TGlavForm.N9Click(Sender: TObject);
begin
VoprosForm2.ShowModal;
end;
procedure TGlavForm.N15Click(Sender: TObject);
begin
VoprosForm3.ShowModal;
end;
procedure TGlavForm.BitBtn2Click(Sender: TObject);
var
i,max:integer;
begin
max:=dm.Pokaz.RecordCount;
dm.Pokaz.First;
for i:=1 to max do
dm.Pokaz.FieldByName('Fakt').
end;
procedure TGlavForm.N6Click(Sender: TObject);
begin
DobavForm.ShowModal;
DobavForm.PageControl1.
end;
procedure TGlavForm.N5Click(Sender: TObject);
begin
FilterForm.ShowModal;
end;
procedure TGlavForm.N18Click(Sender: TObject);
begin
PasswordDlg.Close;
end;
procedure TGlavForm.N19Click(Sender: TObject);
begin
SortForm.Show;
end;
procedure TGlavForm.N23Click(Sender: TObject);
begin
ViborForm.ShowModal;
end;
procedure TGlavForm.N21Click(Sender: TObject);
begin
DobavForm.ShowModal;
end;
procedure TGlavForm.N22Click(Sender: TObject);
begin
IzmenForm.Show;
IzmenForm.PageControl1.
end;
procedure TGlavForm.N2Click(Sender: TObject);
begin
ZaprosForm.ShowModal;
end;
procedure TGlavForm.N16Click(Sender: TObject);
begin
IzmenForm.Show;
IzmenForm.PageControl1.
end;
procedure TGlavForm.N24Click(Sender: TObject);
begin
IzmenForm.Show;
IzmenForm.PageControl1.
end;
procedure TGlavForm.N17Click(Sender: TObject);
begin
VoprosForm.ShowModal;
end;
procedure TGlavForm.Button1Click(Sender: TObject);
begin
PasswordDlg.Close;
end;
procedure TGlavForm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
PasswordDlg.Close;
end;
procedure TGlavForm.N25Click(Sender: TObject);
begin
Diag.Show;
end;
procedure TGlavForm.N26Click(Sender: TObject);
begin
if OpenDialog1.Execute then begin
AssignFile(F,OpenDialog1.
end;
end;
procedure TGlavForm.N27Click(Sender: TObject);
begin
SmenaPass.Show;
end;
procedure TGlavForm.FormCreate(Sender: TObject);
begin
N26.Visible:=false;
end;
procedure TGlavForm.Button2Click(Sender: TObject);
var
n1,n2,n3,i:integer;
sum,sumO:real;
begin
n1:=dm.Limit.RecNo;
n2:=dm.Pokaz.RecNo;
n3:=dm.Vesh.RecNo;
for i:=1 to (dm.Pokaz.RecordCount) do begin
dm.Pokaz.RecNo:=i;
dm.Vesh.First;
sum:=0;
While (not dm.Vesh.Eof) do begin
sum:=sum+dm.Vesh.Fields.
dm.Vesh.Edit;
dm.Vesh.FieldByName('Plata').
dm.Vesh.Next;
end;
dm.Pokaz.Edit;
dm.Pokaz.FieldByName('
dm.Pokaz.Post;
end;
for i:=1 to (dm.Limit.RecordCount) do begin
dm.Limit.RecNo:=i;
dm.Pokaz.First;
sumO:=0;
while (not dm.Pokaz.Eof) do begin
sumO:=sumO+dm.Pokaz.
dm.Pokaz.Next;
end;
dm.Limit.Edit;
dm.Limit.FieldByName('
dm.Limit.Post;
end;
dm.Limit.RecNo:=n1;
dm.Pokaz.RecNo:=n2;
dm.Vesh.RecNo:=n3;
end;
procedure TGlavForm.FormActivate(Sender: TObject);
begin
//Button2.Click;
end;
procedure TGlavForm.N29Click(Sender: TObject);
begin
dm.RvProject1.Execute;
end;
procedure TGlavForm.N30Click(Sender: TObject);
begin
Button2.Click;
end;
end.
Текст модуля dmRashet
unit dmRashet;
interface
uses
SysUtils, Classes, DB, DBTables, RpDefine, RpCon, RpConDS, RpConBDE,
RpRave;
type
Tdm = class(TDataModule)
Database1: TDatabase;
Limit: TTable;
Pokaz: TTable;
Vesh: TTable;
Norma: TTable;
DataSource1: TDataSource;
DataSource2: TDataSource;
DataSource3: TDataSource;
DataSource6: TDataSource;
Query3: TQuery;
q1: TQuery;
q2: TQuery;
q3: TQuery;
q4: TQuery;
DataSource4: TDataSource;
DataSource5: TDataSource;
DataSource7: TDataSource;
DataSource8: TDataSource;
Query1: TQuery;
Query2: TQuery;
VeshVeshID: TAutoIncField;
VeshNormID: TSmallintField;
VeshVeshestvo: TStringField;
VeshNormPlatZaTonn: TCurrencyField;
VeshPovKoef: TFloatField;
VeshObemZagr: TFloatField;
VeshClassVesh: TStringField;
VeshPlata2: TCurrencyField;
VeshSum: TCurrencyField;
DataSource9: TDataSource;
LimitID: TAutoIncField;
LimitLimit: TStringField;
LimitTipL: TStringField;
LimitGod: TSmallintField;
LimitKvartal: TSmallintField;
LimitAllPlata: TCurrencyField;
RvTableConnection1: TRvTableConnection;
RvProject1: TRvProject;
q4VeshNID: TSmallintField;
q4NormGod: TFloatField;
q4Norm1: TFloatField;
q4Norm2: TFloatField;
q4Norm3: TFloatField;
q4Norm4: TFloatField;
q3ClassVesh: TStringField;
q3NormID: TSmallintField;
q3Veshestvo: TStringField;
q3NormPlatZaTonn: TCurrencyField;
q3PovKoef: TFloatField;
q3ObemZagr: TFloatField;
q3Plata: TCurrencyField;
q2TipP: TStringField;
q2ClassPokaz: TStringField;
q2Pokazatel: TStringField;
q2PlataPoPlanu: TCurrencyField;
q2PlataPoFaktu: TCurrencyField;
q2PlataVBudjet: TCurrencyField;
q1TipL: TStringField;
q1Limit: TStringField;
q1God: TSmallintField;
q1Kvartal: TSmallintField;
q1AllPlata: TCurrencyField;
q3VeshID: TIntegerField;
procedure VeshCalcFields(DataSet: TDataSet);
private
{ Private declarations }
public
{ Public declarations }
end;
var
dm: Tdm;
implementation
uses fmZapros, fmRashet;
{$R *.dfm}
procedure Tdm.VeshCalcFields(DataSet: TDataSet);