Курсовая работа: Разработка программы при помощи языка программирования языка Delphi
Алгоритм программы

Рисунок
А.1 – Обработка событий главной формы программы

Рисунок
А.2 – Открытие файла
типизированный
файл программирование delphi

Рисунок
А.3 – Алгоритм процедуры сохранения в файл

Рисунок
А.4 – Алгоритм вывода содержимого массива AComp на форму
ПРИЛОЖЕНИЕ Б
Листинг программы
1.
unit Unit1;
2.
interface
3.
uses
4.
Windows, Messages, SysUtils,
Variants, Classes, Graphics,
5.
Controls, Forms,Dialogs,
Menus, StdCtrls, Buttons, ExtCtrls,
6.
Grids;
7.
type
8.
TForm1 = class(TForm)
9.
MainMenu1: TMainMenu;
10.
N1: TMenuItem;
11.
NOpen: TMenuItem;
12.
NSave: TMenuItem;
13.
NSaveAs: TMenuItem;
14.
NCreate: TMenuItem;
15.
N6: TMenuItem;
16.
NExit: TMenuItem;
17.
NInfo: TMenuItem;
18.
NShow: TMenuItem;
19.
SaveDlg: TSaveDialog;
20.
OpenDlg: TOpenDialog;
21.
Label1: TLabel;
22.
Label2: TLabel;
23.
Label3: TLabel;
24.
Label4: TLabel;
25.
Label9: TLabel;
26.
EHDD: TEdit;
27.
ERAM: TEdit;
28.
EMonitor: TEdit;
29.
RGrInet: TRadioGroup;
30.
EName: TEdit;
31.
SGrid1: TStringGrid;
32.
BBPrev: TBitBtn;
33.
BBNext: TBitBtn;
34.
BBDelete: TBitBtn;
35.
BBAdd: TBitBtn;
36.
BBUpdate: TBitBtn;
37.
BBSearch: TBitBtn;
38.
procedure FormCreate(Sender: TObject);
39.
procedure NCreateClick(Sender: TObject);
40.
procedure NOpenClick(Sender: TObject);
41.
procedure NShowClick(Sender: TObject);
42.
procedure NSaveClick(Sender: TObject);
43.
procedure NSaveAsClick(Sender: TObject);
44.
procedure NExitClick(Sender: TObject);
45.
procedure NInfoClick(Sender: TObject);
46.
procedure BBPrevClick(Sender: TObject);
47.
procedure BBNextClick(Sender: TObject);
48.
procedure BBUpdateClick(Sender: TObject);
49.
procedure BBAddClick(Sender: TObject);
50.
procedure BBDeleteClick(Sender: TObject);
51.
procedure BBSearchClick(Sender: TObject);
52.
private
53.
{ Private declarations }
54.
public
55.
{ Public declarations }
56.
end;
57.
TComp = record
58.
Name:string[20];
59.
HDD:real;
60.
RAM:integer;
61.
Monitor:string[20];
62.
Inet:boolean; {true - есть, false - нет}
63.
end;
64.
ATComp = array of TComp;
65.
var
66.
Form1: TForm1;
67.
F:file of TComp;
68.
Comp:TComp;
69.
AComp:ATComp;
70.
CurK:integer;
71.
Fname:string;
72.
implementation
73.
74.
uses Unit2;
75.
76.
{$R *.dfm}
77.
// поиск компьютера по имени
78.
Function
GetComp(name:string;AComp:ATComp;var Comp:TComp):boolean;
79.
var i:integer;
80.
begin
81.
for i:=0 to Length(AComp)-1
do
82.
if AComp[i].Name = Name then
83.
begin
84.
Comp:=AComp[i];
85.
GetComp:=true;
86.
exit;
87.
end;
88.
GetComp:=false;
89.
end;
90.
// вывод информации об одном компьютерера из типизированного файла
на экранную форму
91.
Procedure ShowComp(Comp:TComp);
92.
begin
93.
Form1.EName.Text:=Comp.Name;
94.
Form1.EHDD.Text:=FloatToStr(Comp.HDD);
95.
Form1.ERAM.Text:=IntToStr(Comp.RAM);
96.
if Comp.Inet then
97.
Form1.RgrInet.ItemIndex := 1
98.
else
99.
Form1.RgrInet.ItemIndex:=0;
100.
Form1.EMonitor.Text:=Comp.Monitor;
101. end;
102. // вывод информации о компьютере из типизированного файла в
таблицу
103.
Procedure
ShowCompInGrid(Comp:TComp;Sgr:TStringGrid;Row:integer);
104. begin
105.
Sgr.Cells[0,Row]:=IntToStr(Row);
106.
Sgr.Cells[1,Row]:=Comp.Name;
107.
Sgr.Cells[2,Row]:=FloatToStr(Comp.HDD);
108.
Sgr.Cells[3,Row]:=IntToStr(Comp.RAM);
109.
Sgr.Cells[4,Row]:=Comp.Monitor;
110. if Comp.Inet then
111. Sgr.Cells[5,Row]:='есть'
112. else
113. Sgr.Cells[5,Row]:='нет';
114. end;
115. // вывод содержимого массива FComp в таблицу
116.
Procedure
ShowAComp(AComp:ATComp;Sgr:TStringGrid);
117. var i,ln:integer;
118. begin
119. ln:=Length(AComp);
120. if ln = 0 then
121. Sgr.RowCount:=2
122. else
123. Sgr.RowCount:=ln+1;
124. SGr.FixedRows:=1;
125. for i:=0 to LN-1 do
126.
ShowCompInGrid(AComp[i],Sgr,i+1);
127. end;
128. // добавление новой записи в массив
129.
procedure
TForm1.BBAddClick(Sender: TObject);
130. var
131. k:integer;
132. begin
133. Comp.Name:=EName.Text;
134.
Comp.HDD:=StrToFloat(EHDD.Text);
135.
Comp.RAM:=StrToInt(ERAM.Text);
136. Comp.Monitor:=EMonitor.Text;
137. Comp.Inet:=RgrInet.ItemIndex = 1;
138. //
139.
if
GetComp(Comp.Name,AComp,Comp) then
140. begin
141. MessageBox(0,PAnsiChar(String('Ошибка! Запись компьютера с именем
'+Comp.Name+' уже существует!')),'Ошибка',0);
142. exit;
143. end;
144. k:=Length(AComp);
145. SetLength(AComp,k+1);
146. AComp[k]:=Comp;
147. CurK:=k;
148. ShowAComp(AComp,SGrid1);
149. end;
150. // переход на предыдущую запись массива
151.
procedure
TForm1.BBPrevClick(Sender: TObject);
152. begin
153. curK:=CurK-1;
154.
if CurK<0 then
CurK:=Length(AComp)-1;
155. if CurK < Length(AComp) then
156. ShowComp(AComp[CurK]);
157. end;
158. // переход на последующую запись массива
159.
procedure
TForm1.BBNextClick(Sender: TObject);
160. begin
161. curK:=CurK+1;
162.
if CurK>=Length(AComp)
then CurK:=0;
163. if CurK < Length(AComp) then
164. ShowComp(AComp[CurK]);
165. end;
166. // сохранение содержимого массива в типизированном файле
167.
procedure
TForm1.NSaveClick(Sender: TObject);
168. var i:integer;
169. begin
170. if Fname = '' then
171. MessageBox(0,'Имя файла не задано!','Ошибка',0)
172. else begin
173. AssignFile(F,Fname);
174. Rewrite(f);
175.
for i:=0 to Length(AComp)-1
do
176. write(f,AComp[i]);
177. CloseFile(F);
178. end;
179. end;
180. // сохранение в содержимого массива в типизированном файле
181. // с возможностью указания имени файла
182.
procedure
TForm1.NSaveAsClick(Sender: TObject);
183. var i:integer;
184. begin
185. if SaveDlg.Execute then
186. begin
187. Fname:=SaveDlg.FileName;
188. AssignFile(F,Fname);
189. Rewrite(f);
190.
for i:=0 to Length(AComp)-1
do
191. write(f,AComp[i]);
192. CloseFile(F);
193. end;
194. end;
195. // открытие типизированного файла и вывод его содержимого на форму
196.
procedure
TForm1.NOpenClick(Sender: TObject);
197. var K:integer;
198. begin
199. if OpenDlg.Execute then
200. begin
201. Fname:=OpenDlg.FileName;
202. AssignFile(F,Fname);
203. ReSet(f);
204. k:=0;
205. SetLength(AComp,0);
206. while not eof(f) do
207. begin
208. read(f,Comp);
209. SetLength(AComp,k+1);
210. AComp[k]:=Comp;
211. k:=k+1;
212. end;
213. CloseFile(F);
214. ShowAComp(AComp,SGRid1);
215. end;
216. end;
217. // удаление текущей записи из массива записей AComp
218.
procedure
TForm1.BBDeleteClick(Sender: TObject);
219. var i,Ln:integer;
220. begin
221. Ln:=Length(AComp);
222.
for i:=CurK to Ln-2 do
223. AComp[i]:=AComp[i+1];
224. if Ln>0 then
225. SetLength(AComp,Ln-1);
226. if CurK<ln then
227. ShowComp(AComp[CurK]);
228. ShowAComp(AComp,SGrid1);
Страницы: 1, 2, 3, 4, 5, 6 |