Автоматизация учета работ произведенных сотрудниками районных электрических сетей

Автор работы: Пользователь скрыл имя, 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

Файлы: 1 файл

Пояснительная записка.doc

— 965.50 Кб (Скачать файл)

 

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.ActivePageIndex:=0;

end;

 

procedure TGlavForm.N8Click(Sender: TObject);

begin

IzmenForm.Show;

IzmenForm.PageControl1.ActivePageIndex:=1;

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.ActivePageIndex:=0;

end;

 

procedure TGlavForm.N14Click(Sender: TObject);

begin

IzmenForm.Show;

IzmenForm.PageControl1.ActivePageIndex:=2;

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').AsCurrency:=1;

 

end;

 

procedure TGlavForm.N6Click(Sender: TObject);

begin

DobavForm.ShowModal;

DobavForm.PageControl1.ActivePageIndex:=0;

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.ActivePageIndex:=0;

end;

 

procedure TGlavForm.N2Click(Sender: TObject);

begin

ZaprosForm.ShowModal;

end;

 

procedure TGlavForm.N16Click(Sender: TObject);

begin

IzmenForm.Show;

IzmenForm.PageControl1.ActivePageIndex:=0;

end;

 

procedure TGlavForm.N24Click(Sender: TObject);

begin

IzmenForm.Show;

IzmenForm.PageControl1.ActivePageIndex:=3;

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.FileName);

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.Fields[8].AsFloat;

   dm.Vesh.Edit;

   dm.Vesh.FieldByName('Plata').AsString:=dm.Vesh.Fields.Fields[8].AsString;

   dm.Vesh.Next;

  end;

   dm.Pokaz.Edit;

   dm.Pokaz.FieldByName('PlataPoFaktu').AsString:=FloatToStr(sum);

   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.FieldByName('PlataVBudjet').AsCurrency;

   dm.Pokaz.Next;

  end;

   dm.Limit.Edit;

   dm.Limit.FieldByName('AllPlata').AsCurrency:=sumO;

   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);

Информация о работе Автоматизация учета работ произведенных сотрудниками районных электрических сетей