Программный код с комментариями

Модуль основного интерфейса программы представляет собой работу основных функциональных элементов программы. Этот модуль является основой программы, исходный код, который представлен ниже.

unit usprint;

interface

uses

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

Dialogs, Grids, StdCtrls, Printers, ComCtrls, DBGrids, Clipbrd,

OleServer, EXCEL97, EXCEL2000, ComObj, ActiveX, ExtCtrls, ExcelXP;

type

TForm1 = class(TForm)

StringGrid1: TStringGrid;

SaveDialog1: TSaveDialog;

XLApp: TExcelApplication;

Panel1: TPanel;

Label1: TLabel;

Button3: TButton;

ComboBox1: TComboBox;

Button8: TButton;

ComboBox2: TComboBox;

Button4: TButton;

Button12: TButton;

Label2: TLabel;

procedure FormCreate(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button8Click(Sender: TObject);

procedure ComboBox1Change(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button12Click(Sender: TObject);

procedure StringGrid1Click(Sender: TObject);

procedure StringGrid1DblClick(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses adsbaz;

{$R *.dfm}

type

TNote=record

kod: string[200];

prod: string[255];

kol: string[150];

st: string[150];

data: string[100];

post: string[200];

adr: string[200];

post1: string[200];

adr1: string[150];

end;

var

NoteFile: file of TNote;

NoteData: TNote;

_Pos: integer;

function GetProgramPath : String;

begin

GetProgramPath:=ExtractFilePath(ParamStr(0));

end;

procedure ShowRecord;

begin

Form3.Edit1.Text:=NoteData.kod;

Form3.RichEdit1.Text:=NoteData.prod;

Form3.Edit2.Text:=NoteData.kol;

Form3.Edit3.Text:=NoteData.st;

Form3.Edit6.Text:=NoteData.data;

Form3.ComboBox2.Text:=Notedata.post;

Form3.ComboBox3.Text:=Notedata.adr;

Form3.ComboBox1.Text:=Notedata.post1;

Form3.ComboBox4.Text:=Notedata.adr1;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

AssignFile(NoteFile,GetProgramPath+'data\'+'adsbaz.dat'); // ñâÿçûâàåìïåðåìåííóþ ñ ôàéëîì

Reset(NoteFile); // îòêðûòèåôàéëà

_Pos:=0;

if not Eof(NoteFile) then // åñëè â ôàéëååñòüäàííûå

begin

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

_Pos:=FilePos(NoteFile)-1; // îïðåäåëåíèåðàñïîëîæ. óêàçàòåëÿ

ShowRecord; // ïîêàçàòüäàííûå

end;

StringGrid1.ColWidths[0]:=10;

StringGrid1.ColWidths[1]:=50;

StringGrid1.ColWidths[2]:=100;

StringGrid1.ColWidths[3]:=100;

StringGrid1.ColWidths[4]:=98;

StringGrid1.ColWidths[5]:=100;

StringGrid1.ColWidths[6]:=95;

StringGrid1.ColWidths[7]:=95;

StringGrid1.ColWidths[8]:=100;

StringGrid1.ColWidths[9]:=100;

StringGrid1.ColWidths[10]:=100;

StringGrid1.RowHeights[0]:=20;

StringGrid1.RowCount:=2;

StringGrid1.Cells[1,0]:='¹';

StringGrid1.Cells[2,0]:='Êîäïðîäóêöèè';

StringGrid1.Cells[3,0]:='Íàèìåíîâàíèåïðîäóêöèè';

StringGrid1.Cells[4,0]:='Êîëè÷åñòâî';

StringGrid1.Cells[5,0]:='Ñòîèìîñòü';

StringGrid1.Cells[6,0]:='Äàòà';

StringGrid1.Cells[7,0]:='Ïîñòàâùèê';

StringGrid1.Cells[8,0]:='Àäðåñ';

StringGrid1.Cells[9,0]:='Îòäåë';

StringGrid1.Cells[10,0]:='Àäìèíèñòðàòîð';

Form1.Caption:='Âûáîðêà... (0 çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

end;

procedure TForm1.Button3Click(Sender: TObject);

Label Thenext1;

Label Thenext2;

Label Thenext3;

var

pPos,i,ch,zap: integer;

s: string;

begin

ch:=0;

for i:=1 to StringGrid1.RowCount-1 do

StringGrid1.Rows[i].Clear;

StringGrid1.RowCount:=2;

StringGrid1.FixedCols:=1;

StringGrid1.FixedRows:=1;

////////////////////////////////////////////////////////////////

if ComboBox1.Text='Äàòà'

then

begin

zap:=0;

for pPos:=0 to FileSize(NoteFile)-1 do

begin

Seek(NoteFile,pPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

if NoteData.data=''

then goto Thenext2;

s:=NoteData.data;

if pos(ComboBox2.Text,s)<>0

then

begin

ch:=ch+1;

StringGrid1.Cells[1,ch]:=IntToStr(ch)+'.';

StringGrid1.Cells[2,ch]:=NoteData.kod;

StringGrid1.Cells[3,ch]:=NoteData.prod;

StringGrid1.Cells[4,ch]:=NoteData.kol;

StringGrid1.Cells[5,ch]:=NoteData.st;

StringGrid1.Cells[6,ch]:=NoteData.data;

StringGrid1.Cells[7,ch]:=NoteData.post;

StringGrid1.Cells[8,ch]:=NoteData.adr;

StringGrid1.Cells[9,ch]:=NoteData.post1;

StringGrid1.Cells[10,ch]:=NoteData.adr1;

StringGrid1.RowCount:=StringGrid1.RowCount+1;

zap:=zap+1;

Form1.Caption:='Âûáîðêà ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

Application.ProcessMessages;

end;

Thenext2:

end;

Form1.Caption:='Âûáîðêà... ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

StringGrid1.RowCount:=StringGrid1.RowCount-1;

end;

////////////////////////////////////////////////////////////////

if ComboBox1.Text='Ïîñòàâùèê'

then

begin

zap:=0;

for pPos:=0 to FileSize(NoteFile)-1 do

begin

Seek(NoteFile,pPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

if NoteData.post='' then goto Thenext1;

s:=NoteData.post;

if s=ComboBox2.Text then

begin

ch:=ch+1;

StringGrid1.Cells[1,ch]:=IntToStr(ch)+'.';

StringGrid1.Cells[2,ch]:=NoteData.kod;

StringGrid1.Cells[3,ch]:=NoteData.prod;

StringGrid1.Cells[4,ch]:=NoteData.kol;

StringGrid1.Cells[5,ch]:=NoteData.st;

StringGrid1.Cells[6,ch]:=NoteData.data;

StringGrid1.Cells[7,ch]:=NoteData.post;

StringGrid1.Cells[8,ch]:=NoteData.adr;

StringGrid1.Cells[9,ch]:=NoteData.post1;

StringGrid1.Cells[10,ch]:=NoteData.adr1;

StringGrid1.RowCount:=StringGrid1.RowCount+1;

zap:=zap+1;

Form1.Caption:='Âûáîðêà... ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

Application.ProcessMessages;

end;

Thenext1:

end;

Form1.Caption:='Âûáîðêà... ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

StringGrid1.RowCount:=StringGrid1.RowCount-1;

end;

////////////////////////////////////////

if ComboBox1.Text='Íàèìåíîâàíèåïðîäóêöèè'

then

begin

zap:=0;

for pPos:=0 to FileSize(NoteFile)-1 do

begin

Seek(NoteFile,pPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

if NoteData.prod='' then goto Thenext3;

s:=NoteData.prod;

if s=ComboBox2.Text then

begin

ch:=ch+1;

StringGrid1.Cells[1,ch]:=IntToStr(ch)+'.';

StringGrid1.Cells[2,ch]:=NoteData.kod;

StringGrid1.Cells[3,ch]:=NoteData.prod;

StringGrid1.Cells[4,ch]:=NoteData.kol;

StringGrid1.Cells[5,ch]:=NoteData.st;

StringGrid1.Cells[6,ch]:=NoteData.data;

StringGrid1.Cells[7,ch]:=NoteData.post;

StringGrid1.Cells[8,ch]:=NoteData.adr;

StringGrid1.Cells[9,ch]:=NoteData.post1;

StringGrid1.Cells[10,ch]:=NoteData.adr1;

StringGrid1.RowCount:=StringGrid1.RowCount+1;

zap:=zap+1;

Form1.Caption:='Âûáîðêà... ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

Application.ProcessMessages;

end;

Thenext3:

end;

Form1.Caption:='Âûáîðêà... ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

StringGrid1.RowCount:=StringGrid1.RowCount-1;

end;

////////////////////////////////////////////////////////////////

if ComboBox1.Text='Âñå'

then

begin

zap:=0;

for pPos:=0 to FileSize(NoteFile)-1 do

begin

Seek(NoteFile,pPos);

Read(NoteFile,NoteData); //÷òåíèåäàííûõ

StringGrid1.Cells[1,pPos+1]:=IntToStr(pPos+1)+'.';

StringGrid1.Cells[2,pPos+1]:=NoteData.kod;

StringGrid1.Cells[3,pPos+1]:=NoteData.prod;

StringGrid1.Cells[4,pPos+1]:=NoteData.kol;

StringGrid1.Cells[5,pPos+1]:=NoteData.st;

StringGrid1.Cells[6,pPos+1]:=NoteData.data;

StringGrid1.Cells[7,pPos+1]:=NoteData.post;

StringGrid1.Cells[8,pPos+1]:=NoteData.adr;

StringGrid1.Cells[9,pPos+1]:=NoteData.post1;

StringGrid1.Cells[10,pPos+1]:=NoteData.adr1;

StringGrid1.RowCount:=StringGrid1.RowCount+1;

zap:=zap+1;

Form1.Caption:='Âûáîðêà... ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

Application.ProcessMessages;

end;

Form1.Caption:='Âûáîðêà... ('+IntToStr(zap)+' çàïèñåéèç '+IntToStr(FileSize(NoteFile))+')';

StringGrid1.RowCount:=StringGrid1.RowCount-1;

end;

////////////////////////////////////////////////////////////////

//Button1.Enabled:=true;

//Button2.Enabled:=true;

// Button6.Enabled:=true;

//Button6.Enabled:=true;

Button8.Enabled:=true;

//Button9.Enabled:=true;

Button12.Enabled:=true;

end;

procedure AutoSizeGridColumn(Grid: TStringGrid; column: integer);

var

i: integer;

temp: integer;

max: integer;

begin

max:=0;

for i:=0 to Grid.RowCount-1 do

begin

temp:=Grid.Canvas.TextWidth(Grid.Cells[column, i]);

if temp>max

then max:=temp;

end;

Grid.ColWidths[column]:=Max+Grid.GridLineWidth+6;

end;

procedure TForm1.Button8Click(Sender: TObject);

var

i: integer;

begin

for i:=0 to StringGrid1.ColCount-1 do

AutoSizeGridColumn(StringGrid1, i);

end;

procedure TForm1.ComboBox1Change(Sender: TObject);

var

cPos, i, j: integer;

s: string;

begin

if ComboBox1.Text='Âñå'

then ComboBox2.Enabled:=false

else ComboBox2.Enabled:=true;

//////////// ïîñòàâùèê

if ComboBox1.Text='Ïîñòàâùèê' then

begin

ComboBox2.Text:='';

ComboBox2.Items.Clear;

cPos:=0;

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.post;

for i:=0 to FileSize(NoteFile)-1 do

begin

if s<>'' then

begin

ComboBox2.Text:=s;

ComboBox2.Items.Add(s);

break;

end;

inc(cPos);

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.post;

end;

for cPos:=0 to FileSize(NoteFile)-1 do

begin

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.post;

if s<>'' then

begin

for i:=0 to ComboBox2.Items.Count-1 do

if pos(s,ComboBox2.Items.Strings[i])=0

then j:=2

else

begin

j:=1;

Break;

end;

end;

if j=2 then ComboBox2.Items.Add(s);

j:=0;

end;

end;

//////////// Íàèìåíîâàíèå

if ComboBox1.Text='Íàèìåíîâàíèåïðîäóêöèè' then

begin

ComboBox2.Text:='';

ComboBox2.Items.Clear;

cPos:=0;

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.prod;

for i:=0 to FileSize(NoteFile)-1 do

begin

if s<>'' then

begin

ComboBox2.Text:=s;

ComboBox2.Items.Add(s);

break;

end;

inc(cPos);

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.prod;

end;

for cPos:=0 to FileSize(NoteFile)-1 do

begin

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.prod;

if s<>'' then

begin

for i:=0 to ComboBox2.Items.Count-1 do

if pos(s,ComboBox2.Items.Strings[i])=0

then j:=2

else

begin

j:=1;

Break;

end;

end;

if j=2 then ComboBox2.Items.Add(s);

j:=0;

end;

end;

//////////////Äàòà

if ComboBox1.Text='Äàòà' then

begin

ComboBox2.Text:='';

ComboBox2.Items.Clear;

cPos:=0;

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.data;

for i:=0 to FileSize(NoteFile)-1 do

begin

if s<>'' then

begin

ComboBox2.Text:=s;

ComboBox2.Items.Add(s);

break;

end;

inc(cPos);

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.data;

end;

for cPos:=0 to FileSize(NoteFile)-1 do

begin

Seek(NoteFile,cPos);

Read(NoteFile,NoteData); // ÷òåíèåäàííûõ

s:=NoteData.data;

if s<>'' then

begin

for i:=0 to ComboBox2.Items.Count-1 do

if pos(s,ComboBox2.Items.Strings[i])=0

then j:=2

else

begin

j:=1;

Break;

end;

end;

if j=2 then ComboBox2.Items.Add(s);

j:=0;

end;

////////////////////////////////////////////////////////////////

ComboBox2.Sorted:=true;

end;

end;

procedure TForm1.Button12Click(Sender: TObject);

var

i,j,r,c: integer;

Excel,WorkBook,Sheet,TabGrid: Variant;

iIndex: OleVariant;

s: string;

f: textfile;

begin

AssignFile(f,ExtractFilePath(Application.ExeName)+'\data\firm_name.txt');

if FileExists(ExtractFilePath(Application.ExeName)+'\data\firm_name.txt')

then

begin

Reset(f);

Read(f,s);

end

else

begin

s:='Íàèìåíîâàíèå îðãàíèçàöèè';

Rewrite(f);

Write(f,s);

end;

CloseFile(f);

//

s:=InputBox('Íàèìåíîâàíèå âàøåéîðãàíèçàöèè','Ââåäèòåíàèìåíîâàíèå:',s);

if s='' then

begin

MessageDlg('Äëÿïåðåäà÷èäàííûõ â Excelòðåáóåòñÿââåñòèíàçâàíèåâàøåéîðãàíèçàöèè!',mtInformation,[mbOK],0);

Exit;

end;

//

AssignFile(f,ExtractFilePath(Application.ExeName)+'\data\firm_name.txt');

Rewrite(f);

Write(f,s);

CloseFile(f);

// 'ÍàèìåíîâàíèåÂàøåéîðãàíèçàöèè:'

//

iIndex:=1;

r:=StringGrid1.RowCount; // êîë-âîñòðîê

c:=StringGrid1.ColCount; // êîë-âîñòîëáöîâ

// Ñîçäà¸ììàññèâ-ìàòðèöó

TabGrid:=VarArrayCreate([0,(r-1),0,(c-1)],VarOleStr);

i:=0;

// Îïðåäåëÿåìöèêëäëÿçàïîëíåíèÿìàññèâà-ìàòðèöû

repeat

for j:=0 to (c-1) do // çàïîëíåíèåTabGridèç StringGrid1

TabGrid[i,j]:=StringGrid1.Cells[j+1,i];

inc(i,1);

until i>(r-1);

// ÇàãðóæàåìExcel

try

Excel:=CreateOleObject('Excel.Application'); // äëÿîñòàëüíûõ

except

Excel:=CreateOleObject('Excel.Application.10'); // äëÿ Office XP

end;

Excel.SheetsInNewWorkbook:=1;

WorkBook:=Excel.WorkBooks.Add;

Sheet:=WorkBook.WorkSheets[1];

Sheet.Name:='Êëàäîâùèê - Îò÷åò';

Sheet.Range['A6',Sheet.Cells.Item[r+5,c-1]].Value:=TabGrid;

// Îðèåíòàöèÿñòðàíèöû: êíèæíàÿ (xlPortraitèëè :=1)

Sheet.PageSetup.CenterHorizontally:=true;

Sheet.PageSetup.Orientation:=xlLandscape; // àëüáîìíàÿ (èëè :=2)

// Ïîëÿ (äðîáíûå ÷èñëàðàçäåëÿþòñÿòîëüêî '.')

Sheet.PageSetup.LeftMargin:=Excel.CentimetersToPoints(1);

Sheet.PageSetup.RightMargin:=Excel.CentimetersToPoints(1);

Sheet.PageSetup.TopMargin:=Excel.CentimetersToPoints(1);

Sheet.PageSetup.BottomMargin:=Excel.CentimetersToPoints(1);

// Êîëîíòèòóëû (äðîáíûå ÷èñëàðàçäåëÿþòñÿòîëüêî '.')

Sheet.PageSetup.HeaderMargin:=Excel.CentimetersToPoints(0.5);

// &Ñ, &Ê, &Ä - ñòðàíèöà, êîëâî (âñåãî), äàòà (dd,mm,yy)

// òîëüêîäëÿðóññêîãî MS-Office; äëÿ English - &P, &N, &D

Sheet.PageSetup.RightHeader:='Ñòðàíèöà&Ñ èç&Ê - &Ä';

// Ñâîéñòâàòàáëèöû

Sheet.Columns.WrapText:=true; // ïåðåíîñèòüïîñëîâàì

Sheet.Cells.Columns.AutoFit; // àâòîâûñîòàñòðîê

Sheet.Range['A'+IntToStr(6),'J'+IntToStr(6)].RowHeight:=28;

Sheet.Columns.HorizontalAlignment:=xlLeft;

Sheet.Columns.VerticalAlignment:=xlCenter;

Sheet.Columns.ColumnWidth:=12;

Sheet.Columns.Font.Size:=8;

// Øàïêàíàäòàáëèöåé ([3,4] - ñòðîêà, ñòîëáåö)

Sheet.Cells[3,4]:=s+' - Îò÷åòçà '+DateToStr(Date);

Sheet.Range['A3','J3'].HorizontalAlignment:=xlHAlignCenter;

Sheet.Range['A3','J3'].Font.Name:='Times New Roman';

Sheet.Range['A3','J3'].Font.Bold:=true;

Sheet.Range['A3','J3'].Font.Size:=14;

Sheet.Range['A3','J3'].Columns.WrapText:=false;

// Îáðàìëåíèåÿ÷ååê (xlDouble,...)

Sheet.Range['A'+IntToStr(6),'J'+IntToStr(r+5)].Columns.Borders.LineStyle:=xlContinuous;

// Øèðèíàñòîëáöîâ

Sheet.Range['A'+IntToStr(6),'A'+IntToStr(r+5)].ColumnWidth:=6;

Sheet.Range['B'+IntToStr(6),'B'+IntToStr(r+5)].ColumnWidth:=24;

Sheet.Range['C'+IntToStr(6),'C'+IntToStr(r+5)].ColumnWidth:=22;

Sheet.Range['D'+IntToStr(6),'D'+IntToStr(r+5)].ColumnWidth:=14;

Sheet.Range['E'+IntToStr(6),'E'+IntToStr(r+5)].ColumnWidth:=12;

Sheet.Range['F'+IntToStr(6),'F'+IntToStr(r+5)].ColumnWidth:=12;

Sheet.Range['G'+IntToStr(6),'G'+IntToStr(r+5)].ColumnWidth:=8;

Sheet.Range['H'+IntToStr(6),'H'+IntToStr(r+5)].ColumnWidth:=12;

Sheet.Range['I'+IntToStr(6),'I'+IntToStr(r+5)].ColumnWidth:=12;

Sheet.Range['J'+IntToStr(6),'J'+IntToStr(r+5)].ColumnWidth:=12;

// Ðàçìåðøðèôòà 6-ãî ñòîëáöà

Sheet.Range['A'+IntToStr(6),'J'+IntToStr(6)].Font.Size:=10;

// Âûðàâíèâàíèåïåðâîãîñòîëáöà

Sheet.Range['A'+IntToStr(6),'A'+IntToStr(r+5)].HorizontalAlignment:=xlHAlignCenter;

Sheet.Range['A'+IntToStr(6),'A'+IntToStr(r+5)].Font.Bold:=true;

// Âûðàâíèâàíèåïåðâîéñòðîêè

Sheet.Range['A'+IntToStr(6),'J'+IntToStr(6)].HorizontalAlignment:=xlCenter;

Sheet.Range['A'+IntToStr(6),'J'+IntToStr(6)].Font.Bold:=true;

// Ïîêàçûâàåì Excel

Excel.Visible:=True;

Excel.ScreenUpdating:=true;

// Unassign the Delphi Variant Matrix

Excel:=Unassigned;

WorkBook:=Unassigned;

Sheet:=Unassigned;

TabGrid:=Unassigned;

end;

procedure TForm1.Button4Click(Sender: TObject);

begin

Close;

end;

procedure TForm1.StringGrid1Click(Sender: TObject);

begin

StringGrid1.ShowHint:=false;

end;

procedure TForm1.StringGrid1DblClick(Sender: TObject);

var

i,j:integer;

begin

StringGrid1.ShowHint:=true;

j:=StringGrid1.Row;

StringGrid1.Hint:=StringGrid1.Cells[1,j];

for i:=2 to StringGrid1.ColCount-1 do

StringGrid1.Hint:=StringGrid1.Hint+' - '+StringGrid1.Cells[i,j];

end;

end.

 
  Программный код с комментариями - student2.ru

С листингом остальных модулей можно ознакомиться в приложении на диске с программой. Программный код с комментариями - student2.ru

Руководство пользователя

Программный код с комментариями - student2.ru Программный продукт, разработанный в курсовом проекте, не требует установки и запускается с помощью исполняемого файла kommplat.exe с диска (Приложение В).

При запуске программного продукта появляется окно, для входа в программу. В окне необходимо ввести имя пользователя и пароль. Для входа в программу нужно нажать кнопку «Вход», а для отмены работы - кнопку «Отмена». Экранная форма окна входа в программу представлена на рисунке 14.

Программный код с комментариями - student2.ru

Рисунок 14 – Экранная форма входа в программу.

После успешного входа в программу на экране появляется главное окно, экранная форма которого представлена на рисунке 15.

Программный код с комментариями - student2.ru

Рисунок 15 – Экранная форма главного окна программы.

На главной форме представлена область с данными, которая в исходном состоянии неактивна. Также главная форма имеет строку меню, в которой сгруппированы основные операции работы с программой.

В программе существует два основных режима работы:

- просмотр оплаты платежей,

- работа со справочниками.

Когда установлена чистая база данных, то пользователю необходимо наполнить программу справочными данными. К таким данным относятся справочник «Абоненты» и справочник «Платежи». Доступ к работе со справочниками организован с помощью меню «Справочники» и выбора соответствующего подменю. Вид меню «Справочники» представлен на рисунке 16.

Программный код с комментариями - student2.ru

Рисунок 16 – Вид меню «Справочники».

При выборе пункта меню «Абоненты» пользователю на экран выводится окно справочника (рисунок 17), в котором можно выполнять ввод и редактирование информации об абонентах.

 
  Программный код с комментариями - student2.ru

Программный код с комментариями - student2.ru

Рисунок 17 – Вид экранной формы справочника абонентов

Выбор пункта меню «Платежи» активизирует форму справочника платежей (список коммунальных услуг), которые абоненты должны оплачивать. Внешний вид формы справочника платежей представлен на рисунке18. В этой форме пользователю предоставляются возможности ввода и редактирования информации о платежах.

Программный код с комментариями - student2.ru Программный код с комментариями - student2.ru

Рисунок 18 – Вид экранной формы справочника платежей.

Для просмотра информации об оплаченных платежах абонентов необходимо ввести параметры для просмотра. К ним относятся лицевой счет абонента или диапазон дат оплаты платежей. Для ввода параметров отведена специальная область в главном окне программы над таблицей с данными. Параметры просмотра можно вводить как по одному, так и комбинацией. Для отображения данных необходимо нажать кнопку «Показать», а для сброса и возврата программы в исходное состояние необходимо нажать кнопку «Сбросить». Внешний вид главной формы окна программы в режиме просмотра данных представлен на рисунке 19.

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

Операции добавления и редактирования информации об оплате сведены в единую экранную форму (рисунок 20), которая вызывается соответствующим пунктом меню или командой панели инструментов.После появления экранной формы редактирования, в элементы формы необходимо ввести информацию и нажать кнопку «Сохранить» либо нажать кнопку «Закрыть», если работы были завершены.

Удаление информации происходит путем выбора соответствующего пункта меню и выполняется непосредственно в окне главной формы.

Программный код с комментариями - student2.ru

Рисунок 19 – Вид главной формы программы при просмотре данных.

Программный код с комментариями - student2.ru

Рисунок 20 – Экранная форма редактирования данных об оплатах.

Программный код с комментариями - student2.ru Кроме основных операций в программе предусмотрена печать справки об оплате. Данный режим доступен только при просмотре оплат абонента и активизируется по выполнению команды «Печать оплаты» главного меню программы «операции». В этом случае, на экране появится окно предварительного просмотра (рисунок 21). В окне присутствуют возможности просмотра бланка в различных режимах, настройка принтера и непосредственно, печать бланка.

В программе предусмотрен режим работы с учетными записями пользователей. Вид формы для работы с пользователями представлен на рисунке 22. Вызов режима осуществляется с помощью меню «Сервис» - «Пользователи».

Программный код с комментариями - student2.ru

Программный код с комментариями - student2.ru Рисунок 21 – Экранная форма предварительного просмотра печати.

Программный код с комментариями - student2.ru Программный код с комментариями - student2.ru

Рисунок 22 – Экранная форма работы с пользователями программы.

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

Выход из программы осуществляется с помощью закрытия окна программы специальной кнопкой либо с помощью пункта меню «Файл» - «Выход».

Программный код с комментариями - student2.ru Заключение

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

В результате проектирования дан анализ технического задания, на основе которого приведены и рассмотрены основные пути решения поставленной задачи. Рассмотрены основные средства разработки программы, достоинства и недостатки которых позволили найти оптимальный вариант программных и аппаратных средств разработки приложения. Описан алгоритм работы программы и приведена методика пользователя. Одним из этапов проектирования являлось проведение тестирования программы, в ходе которого выявлено, что программа является логически завершенной и не содержит явных ошибок.

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

Литература Программный код с комментариями - student2.ru

1 MicrosoftAccess 2007: справочник – СПб: Питер, 2011 – 354 с.

2 MicrosoftOffice XP. Шаг за шагом: Практ. пособ. - М.: Издательство ЭКОМ, 2010 – 875 с.

3 Архангельский А. Я. Язык SQL в Delphi 2009– М.: ЗАО «Издательство БИНОМ», 2010 – 214 с.

4 Брябрин В. М. Программное обеспечение персональных ЭВМ. - М.: Hаука, 2009 – 311 с.

5 Вирт Н. Алгоритмы и структуры данных – М.: Мир, 2010 – 326 с.

6 Гетц К., Литвин П., Бэрон Э. Access. Сборник рецептов для профессионалов – СПб: Питер, 2010 – 326 с.

7 Гофман В. А., Хомоненко А. Д. Delphi2009 – СПб.: БХВ - Санкт – Петербург, 2010 – 328 с.

8 Зелковиц М., Шоу А., Гэннон Дж. Принципы разработки программного обеспечения – М.: Мир, 2009 - 368 с

9 Колесниченко Н. А., Шишигин В. С. Аппаратные средства РС. – СПб.: БХВ - Санкт – Петербург, 2009 – 542 с.

10 Кулаков А. Ф. Оценка качества программ ЭВМ. - Киев: Техника, 2010 – 167 с.

Приложение А

Блок – схема алгоритма работы программы Программный код с комментариями - student2.ru

Программный код с комментариями - student2.ru

Рисунок А. 1 – Блок-схема алгоритма работы программы

Приложение Б

Структура базы данных

Программный код с комментариями - student2.ru

Рисунок Б. 1 – Структура базы данных

 
  Программный код с комментариями - student2.ru

Приложение В

Диск с программой

 
  Программный код с комментариями - student2.ru

Наши рекомендации