4 ИНСТРУКЦИЯ ОПЕРАТОРУ
Разработанная программа представляет собой исполняемый файл Computers.exe размером 493 568 байт. В программе выполняется обработка типизированных файлов.
После запуска программы появляется окно, изображенное на рисунке 4.1.
Рисунок 4.1 – Главное окно программы
Главное меню содержит пункты:
- «Информация» (при нажатии запускается диалог с информацией о задании и разработчике, изображенный на рисунке 4.2);
- «Открыть файл» (при нажатии запускается диалог открытия файла, изображенный на рисунке 4.3)
- «Перенос» (при нажатии выполняются действия согласно заданию)
- «Сохранить результат» (при нажатии запускается диалог сохранения файла, изображенный на рисунке 4.4);
- «Выход» (закрывает программу)
Рисунок 4.2 – Информационное окно «Задание»
Рисунок 4.3 – Диалог открытия файла
Рисунок 4.4 – Диалог сохранения файла
В качестве примера введем некоторые данные о нескольких компьютерах и сохраним в файле, нажав на пункт меню «Сохранить как».
При помощи кнопок «Предыдущая запись» и «Следующая запись» можно перемещаться между записями о компьютерах. Если необходимо изменить данные о каком то компьютере, то необходимо перейти на запись о нем, изменить соответствующие данные в индивидуальных полях, а потом нажать на кнопку «Обновить». Запись этого компьютера в массиве будет изменена.
Для удаления записи следует нажать на кнопку «Удалить».
Для поиска нужно в требуемые поля написать данные запроса и нажать на кнопку «Поиск». Если записи по заданным критериям найдены, то информация об этих компьютерах будет выведена на форму.
Например, пусть критерием поиска будет имя ‘USER1 ’, а остальные поля оставим незаполненными. В результате будет выполнен поиск, выведены результаты, изображенные на рисунке 4.5. По результатам видно, что выводится компьютер с указанным именем.
Если мы хотим вновь отобразить содержимое обо всех введенных компьютерах, необходимо нажать на пункт главного меню Файл-> Показать. (см рисунок 4.6).
Рисунок 4.5 – Пример поиска
Рисунок 4.6 - Содержимое файла
Можно осуществить поиск по нескольким полям, например: выведем все компьютеры с объемом оперативной памяти 256 Мб и имеющих подключение к интернет. Пример запроса и результат приведен на рисунке 4.7.
Рисунок 4.7 – Результат поиска по нескольким полям
ВЫВОДЫ
Данный курсовой проект был выполнен в полном соответствии поставленному заданию и отлажен в среде DELPHI 7.0. В ходе выполнения курсовой работы была разработана программа для обработки типизированных файлов, а также создан визуальный интерфейс для создания и ведения базы о компьютерах предприятия.
В результате выполнения данной курсовой работы, я убедилась в широких возможностях языка программирования Object Pascal и среды проектирования Delphi 7.
Перечень ссылок
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.
|
Протокол выполнения программы
Созданная программа позволяет добавлять, редактировать и удалять записи, так же позволяет осуществлять поиск по нескольким полям.
При редактировании или удалении данных
... решения на каждый из вопросов, возможности пропустить некоторые вопросы, чтобы вернуться к ним и ответить на них в случае наличия времени и др. В результате выполнения данной курсовой работы, я убедилась в широких возможностях языка программирования Delphi 7. Перечень ссылок 1. Валентин Озеров «Советы по Delphi», 1999 2. Зуев Е.А. Программирование на языке Turbo Pascal 6. 0,7.0. – М.: ...
... . И хотя, используя недокументированные возможности и определённые ухищрения, всё это можно реализовать и на VB; пользоваться этими трюками гораздо сложнее, чем, например, на Delphi. 4. ПРАКТИЧЕСКАЯ РЕАЛИЗАЦИЯ ЗАДАЧ С ИСПОЛЬЗОВАНИЕМ ЯЗЫКА ПРОГРАММИРОВАНИЯ DELPHI 4.1 Задача 1. Примитивный калькулятор 1. Войдите в среду Delphi, дважды щелкнув мышью на пиктограмму Delphi или через меню “ ...
... выбрать имя в ListBox’e и нажать кнопку «OK», после чего выбранное имя автоматически отобразиться в окне получателя сообщения. Рис. 1.10. Выбор адресата получателя Поиск компьютеров в локальной сети Приведём пример кода программы, реализующую поиск компьютеров в локальной сети Microsoft. procedure TForm4. Button1Click (Sender: TObject); var Q, BufferSize: DWord; R: THandle; Buf: ^ ...
... , и на практике 5NF не используется. Заметим, что зависимость соединения является обобщением как многозначной зависимости, так и функциональной зависимости. 4. РАЗРАБОТКА БАЗЫ ДАННЫХ 4.1 Предметная область базы данных База данных предназначена для хранения информации об электронных источниках литературы в виде файлов, упакованных в архивы. Файлы архивов физически располагаются на сервере ...
0 комментариев