Смекни!
smekni.com

Разработка программы при помощи языка программирования языка Delphi (стр. 4 из 4)

1. Валентин Озеров «Советы по Delphi», 1999

2. Зуев Е.А. Программирование на языке Turbo Pascal 6.0,7.0. – М.: Радио и связь, Веста, 1993.

3. ФароновВ.В. Turbo Pascal 7.0. Начальный курс. - М.: Нолидж, 2000.

4. Фаронов В.В. «DELPHI. Программирование на языке высокого уровня». – Питер, 2005.

5. Дятченко Д.А. Методические указания к выполнению курсовой работы по дисциплине «Программирование и алгоритмические языки»– Северодонецк, 2005.

ПРИЛОЖЕНИЕ А

Алгоритм программы

Рисунок А.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);

229. end;

230. // Создание нового массива записей

231. procedure TForm1.NCreateClick(Sender: TObject);

232. begin

233. CurK:=0;

234. SetLength(AComp,0);

235. Fname:='';

236. ShowAComp(AComp,SGrid1);

237. end;

238. // созание формы - формирование шапки таблицы

239. procedure TForm1.FormCreate(Sender: TObject);

240. begin

241. SGrid1.Cells[0,0]:='№ п/п';

242. SGrid1.Cells[1,0]:='Имя ПК';

243. SGrid1.Cells[2,0]:='Объём памяти';

244. SGrid1.Cells[3,0]:='Объём ОП';

245. SGrid1.Cells[4,0]:='Тип монитора';

246. SGrid1.Cells[5,0]:='Подключениек Internet';

247. end;

248. // чтение инофрмации из полей ввода и обновление

249. // данных текцщей записи в массиве AComp

250. procedure TForm1.BBUpdateClick(Sender: TObject);

251. begin

252. Comp.Name:=EName.Text;

253. Comp.HDD:=StrToFloat(EHDD.Text);

254. Comp.RAM:=StrToInt(ERAM.Text);

255. Comp.Monitor:=EMonitor.Text;

256. Comp.Inet:=RgrInet.ItemIndex = 1;

257. //

258. AComp[CurK]:=Comp;

259. ShowCompInGrid(Comp,SGrid1,CurK+1);

260. end;

261. // ввод информации типизированного файла на форму

262. procedure TForm1.NShowClick(Sender: TObject);

263. var k:integer;

264. begin

265. AssignFile(F,Fname);

266. ReSet(f);

267. k:=0;

268. SetLength(AComp,0);

269. while not eof(f) do

270. begin

271. read(f,Comp);

272. SetLength(AComp,k+1);

273. AComp[k]:=Comp;

274. k:=k+1;

275. end;

276. CloseFile(F);

277. ShowAComp(AComp,SGRid1);

278. end;

279. // поиск записей, удовлетворяющих условию поиска

280. procedure TForm1.BBSearchClick(Sender: TObject);

281. var i,k:integer;

282. Ares:ATComp;

283. begin

284. Comp.Name := EName.Text;

285. if EHDD.Text = '' then

286. Comp.HDD:=0

287. else

288. Comp.HDD:=StrtoFloat(EHDD.Text);

289. if ERAM.Text = '' then

290. Comp.RAM:=0

291. else

292. Comp.RAM:=StrtoInt(ERAM.Text);

293.

294. Comp.Monitor:=EMonitor.Text;

295. Comp.Inet:=RgrInet.ItemIndex = 1;

296. //

297. k:=0;

298. for i:=0 to Length(AComp) do

299. if ((Comp.Name='')or(Pos(Comp.Name,AComp[i].Name)<>0))and

300. ((Comp.HDD=0)or(Comp.HDD = AComp[i].HDD))and

301. ((Comp.RAM=0)or(Comp.RAM = AComp[i].RAM))and

302. ((Comp.Monitor='')or

303. (Pos(Comp.Monitor,AComp[i].Monitor)<>0))and

304. (Comp.Inet = AComp[i].Inet) then

305. begin

306. SetLength(Ares,k+1);

307. Ares[k]:=AComp[i];

308. k:=k+1;

309. end;

310. ShowAComp(Ares,SGrid1);

311. end;

312. // вывод информации о программе

313. procedure TForm1.NInfoClick(Sender: TObject);

314. begin

315. AboutBox.ShowModal;

316. end;

317. // завершение работы приложения

318. procedure TForm1.NExitClick(Sender: TObject);

319. begin

320. close;

321. end;

322. end.


ПРИЛОЖЕНИЕ В

Протокол выполнения программы

Созданная программа позволяет добавлять, редактировать и удалять записи, так же позволяет осуществлять поиск по нескольким полям.

При редактировании или удалении данных