Разработка программы при помощи языка программирования языка Delphi

Курсовой проект - Компьютеры, программирование

Другие курсовые по предмету Компьютеры, программирование

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

В результате выполнения данной курсовой работы, я убедилась в широких возможностях языка программирования 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. uses Unit2;
  74. {$R *.dfm}
  75. // поиск компьютера по имени
  76. Function GetComp(name:string;AComp:ATComp;var Comp:TComp):boolean;
  77. var i:integer;
  78. begin
  79. for i:=0 to Length(AComp)-1 do
  80. if AComp[i].Name = Name then
  81. begin
  82. Comp:=AComp[i];
  83. GetComp:=true;
  84. exit;
  85. end;
  86. GetComp:=false;
  87. end;
  88. // вывод информации об одном компьютерера из типизированного файла на экранную форму
  89. Procedure ShowComp(Comp:TComp);
  90. begin
  91. Form1.EName.Text:=Comp.Name;
  92. Form1.EHDD.Text:=FloatToStr(Comp.HDD);
  93. Form1.ERAM.Text:=IntToStr(Comp.RAM);
  94. if Comp.Inet then
  95. Form1.RgrInet.ItemIndex := 1
  96. else
  97. Form1.RgrInet.ItemIndex:=0;
  98. Form1.EMonitor.Text:=Comp.Monitor;
  99. end;
  100. // вывод информации о компьютере из типизированного файла в таблицу
  101. Procedure ShowCompInGrid(Comp:TComp;Sgr:TStringGrid;Row:integer);
  102. begin
  103. Sgr.Cells[0,Row]:=IntToStr(Row);
  104. Sgr.Cells[1,Row]:=Comp.Name;
  105. Sgr.Cells[2,Row]:=FloatToStr(Comp.HDD);
  106. Sgr.Cells[3,Row]:=IntToStr(Comp.RAM);
  107. Sgr.Cells[4,Row]:=Comp.Monitor;
  108. if Comp.Inet then
  109. Sgr.Cells[5,Row]:=есть
  110. else
  111. Sgr.Cells[5,Row]:=нет;
  112. end;
  113. // вывод содержимого массива FComp в таблицу
  114. Procedure ShowAComp(AComp:ATComp;Sgr:TStringGrid);
  115. var i,ln:integer;
  116. begin
  117. ln:=Length(AComp);
  118. if ln = 0 then
  119. Sgr.RowCount:=2
  120. else
  121. Sgr.RowCount:=ln+1;
  122. SGr.FixedRows:=1;
  123. for i:=0 to LN-1 do
  124. ShowCompInGrid(AComp[i],Sgr,i+1);
  125. end;
  126. // добавление новой записи в массив
  127. procedure TForm1.BBAddClick(Sender: TObject);
  128. var
  129. k:integer;
  130. begin
  131. Comp.Name:=EName.Text;
  132. Comp.HDD:=StrToFloat(EHDD.Text);
  133. Comp.RAM:=StrToInt(ERAM.Text);
  134. Comp.Monitor:=EMonitor.Text;
  135. Comp.Inet:=RgrInet.ItemIndex = 1;
  136. //
  137. if GetComp(Comp.Name,AComp,Comp) then
  138. begin
  139. MessageBox(0,PAnsiChar(String(Ошибка! Запись компьютера с именем +Comp.Name+ уже существует!)),Ошибка,0);
  140. exit;
  141. end;
  142. k:=Length(AComp);
  143. SetLength(AComp,k+1);
  144. AComp[k]:=Comp;
  145. CurK:=k;
  146. ShowAComp(AComp,SGrid1);
  147. end;
  148. // переход на предыдущую запись массива
  149. procedure TForm1.BBPrevClick(Sender: TObject);
  150. begin
  151. curK:=CurK-1;
  152. if CurK<0 then CurK:=Length(AComp)-1;
  153. if CurK < Length(AComp) then
  154. ShowComp(AComp[CurK]);
  155. end;
  156. // переход на последующую запись массива
  157. procedure TForm1.BBNextClick(Sender: TObject);
  158. begin
  159. curK:=CurK+1;
  160. if CurK>=Length(AComp) then CurK:=0;
  161. if CurK < Length(AComp) then
  162. ShowComp(AComp[CurK]);
  163. end;
  164. // сохранение содержимого массива в типизированном файле
  165. procedure TForm1.NSaveClick(Sender: TObject);
  166. var i:integer;
  167. begin
  168. if Fname = then
  169. MessageBox(0,Имя файла не задано!,Ошибка,0)
  170. else begin
  171. AssignFile(F,Fname);
  172. Rewrite(f);
  173. for i:=0 to Length(AComp)-1 do
  174. write(f,AComp[i]);
  175. CloseFile(F);
  176. end;
  177. end;
  178. // сохранение в содержимого массива в типизированном файле
  179. // с возможностью указания имени файла
  180. procedure TForm1.NSaveAsClick(Sender: TObject);
  181. var i:integer;
  182. begin
  183. if SaveDlg.Execute then
  184. begin
  185. Fname:=SaveDlg.FileName;
  186. AssignFile(F,Fname);
  187. Rewrite(f);
  188. for i:=0 to Length(AComp)-1 do
  189. write(f,AComp[i]);
  190. CloseFile(F);
  191. end;
  192. end;
  193. // открытие типизированного файла и вывод его содержимого на форму
  194. procedure TForm1.NOpenClick(Sender: TObject);
  195. var K:integer;
  196. begin
  197. if OpenDlg.Execute then
  198. begin
  199. Fname:=OpenDlg.FileName;
  200. AssignFile(F,Fname);
  201. ReSet(f);
  202. k:=0;
  203. SetLength(AComp,0);
  204. while not eof(f) do
  205. begin
  206. read(f,Comp);
  207. SetLength(AComp,k+1);
  208. AComp[k]:=Comp;
  209. k:=k+1;
  210. end;
  211. CloseFile(F);
  212. ShowAComp(AComp,SGRid1);
  213. end;
  214. end;
  215. // удаление текущей записи из массива записей AC