- «Открыть файл» (при нажатии запускается
диалог открытия файла, изображенный на
рисунке 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.
Перечень ссылок
- Валентин
Озеров «Советы по Delphi», 1999
- Зуев
Е.А. Программирование на языке Turbo Pascal
6.0,7.0. – М.: Радио и связь, Веста, 1993.
- Фаронов В.В. Turbo Pascal
7.0. Начальный курс. - М.: Нолидж, 2000.
- Фаронов
В.В. «DELPHI. Программирование на языке высокого
уровня». – Питер, 2005.
- Дятченко
Д.А. Методические указания к выполнению курсовой работы по дисциплине «Программирование и алгоритмические языки»– Северодонецк, 2005.
ПРИЛОЖЕНИЕ А
Алгоритм программы
Рисунок А.1 – Обработка событий
главной формы программы
Рисунок А.2 – Открытие файла
типизированный файл программирование
delphi
Рисунок А.3 – Алгоритм процедуры
сохранения в файл
Рисунок А.4 – Алгоритм вывода
содержимого массива AComp на форму
ПРИЛОЖЕНИЕ Б
Листинг программы
- unit Unit1;
- interface
- uses
- Windows, Messages, SysUtils, Variants, Classes, Graphics,
- Controls, Forms,Dialogs, Menus, StdCtrls, Buttons,
ExtCtrls,
- Grids;
- type
- TForm1 = class(TForm)
- MainMenu1: TMainMenu;
- N1: TMenuItem;
- NOpen: TMenuItem;
- NSave: TMenuItem;
- NSaveAs: TMenuItem;
- NCreate: TMenuItem;
- N6: TMenuItem;
- NExit: TMenuItem;
- NInfo: TMenuItem;
- NShow: TMenuItem;
- SaveDlg: TSaveDialog;
- OpenDlg: TOpenDialog;
- Label1: TLabel;
- Label2: TLabel;
- Label3: TLabel;
- Label4: TLabel;
- Label9: TLabel;
- EHDD: TEdit;
- ERAM: TEdit;
- EMonitor: TEdit;
- RGrInet: TRadioGroup;
- EName: TEdit;
- SGrid1: TStringGrid;
- BBPrev: TBitBtn;
- BBNext: TBitBtn;
- BBDelete: TBitBtn;
- BBAdd: TBitBtn;
- BBUpdate: TBitBtn;
- BBSearch: TBitBtn;
- procedure FormCreate(Sender: TObject);
- procedure NCreateClick(Sender: TObject);
- procedure NOpenClick(Sender: TObject);
- procedure NShowClick(Sender: TObject);
- procedure NSaveClick(Sender: TObject);
- procedure NSaveAsClick(Sender: TObject);
- procedure NExitClick(Sender: TObject);
- procedure NInfoClick(Sender: TObject);
- procedure BBPrevClick(Sender: TObject);
- procedure BBNextClick(Sender: TObject);
- procedure BBUpdateClick(Sender: TObject);
- procedure BBAddClick(Sender: TObject);
- procedure BBDeleteClick(Sender: TObject);
- procedure BBSearchClick(Sender: TObject);
- private
- { Private declarations }
- public
- { Public declarations }
- end;
- TComp = record
- Name:string[20];
- HDD:real;
- RAM:integer;
- Monitor:string[20];
- Inet:boolean; {true - есть, false - нет}
- end;
- ATComp = array of TComp;
- var
- Form1: TForm1;
- F:file of TComp;
- Comp:TComp;
- AComp:ATComp;
- CurK:integer;
- Fname:string;
- implementation
- uses Unit2;
- {$R *.dfm}
- // поиск компьютера по имени
- Function GetComp(name:string;AComp:ATComp;var Comp:TComp):boolean;
- var i:integer;
- begin
- for i:=0 to Length(AComp)-1 do
- if AComp[i].Name = Name then
- begin
- Comp:=AComp[i];
- GetComp:=true;
- exit;
- end;
- GetComp:=false;
- end;
- // вывод информации об одном компьютерера из типизированного файла на экранную форму
- Procedure ShowComp(Comp:TComp);
- begin
- Form1.EName.Text:=Comp.Name;
- Form1.EHDD.Text:=FloatToStr(Comp.HDD);
- Form1.ERAM.Text:=IntToStr(Comp.RAM);
- if Comp.Inet then
- Form1.RgrInet.ItemIndex := 1
- else
- Form1.RgrInet.ItemIndex:=0;
- Form1.EMonitor.Text:=Comp.Monitor;
- end;
- // вывод информации о компьютере из типизированного файла в таблицу
- Procedure ShowCompInGrid(Comp:TComp;Sgr:TStringGrid;Row:integer);
- begin
- Sgr.Cells[0,Row]:=IntToStr(Row);
- Sgr.Cells[1,Row]:=Comp.Name;
- Sgr.Cells[2,Row]:=FloatToStr(Comp.HDD);
- Sgr.Cells[3,Row]:=IntToStr(Comp.RAM);
- Sgr.Cells[4,Row]:=Comp.Monitor;
- if Comp.Inet then
- Sgr.Cells[5,Row]:='есть'
- else
- Sgr.Cells[5,Row]:='нет';
- end;
- // вывод содержимого массива FComp в таблицу
- Procedure ShowAComp(AComp:ATComp;Sgr:TStringGrid);
- var i,ln:integer;
- begin
- ln:=Length(AComp);
- if ln = 0 then
- Sgr.RowCount:=2
- else
- Sgr.RowCount:=ln+1;
- SGr.FixedRows:=1;
- for i:=0 to LN-1 do
- ShowCompInGrid(AComp[i],Sgr,i+1);
- end;
- // добавление новой записи в массив
- procedure TForm1.BBAddClick(Sender: TObject);
- var
- k:integer;
- begin
- Comp.Name:=EName.Text;
- Comp.HDD:=StrToFloat(EHDD.Text);
- Comp.RAM:=StrToInt(ERAM.Text);
- Comp.Monitor:=EMonitor.Text;
- Comp.Inet:=RgrInet.ItemIndex = 1;
- //
- if GetComp(Comp.Name,AComp,Comp) then
- begin
- MessageBox(0,PAnsiChar(String('Ошибка! Запись компьютера с именем '+Comp.Name+' уже существует!')),'Ошибка',0);
- exit;
- end;
- k:=Length(AComp);
- SetLength(AComp,k+1);
- AComp[k]:=Comp;
- CurK:=k;
- ShowAComp(AComp,SGrid1);
- end;
- // переход на предыдущую запись массива
- procedure TForm1.BBPrevClick(Sender: TObject);
- begin
- curK:=CurK-1;
- if CurK<0 then CurK:=Length(AComp)-1;
- if CurK < Length(AComp) then
- ShowComp(AComp[CurK]);
- end;
- // переход на последующую запись массива
- procedure TForm1.BBNextClick(Sender: TObject);
- begin
- curK:=CurK+1;
- if CurK>=Length(AComp) then CurK:=0;
- if CurK < Length(AComp) then
- ShowComp(AComp[CurK]);
- end;
- // сохранение содержимого массива в типизированном файле
- procedure TForm1.NSaveClick(Sender: TObject);
- var i:integer;
- begin
- if Fname = '' then
- MessageBox(0,'Имя файла не задано!','Ошибка',0)
- else begin
- AssignFile(F,Fname);
- Rewrite(f);
- for i:=0 to Length(AComp)-1 do
- write(f,AComp[i]);
- CloseFile(F);
- end;
- end;
- // сохранение в содержимого массива в типизированном файле
- // с возможностью указания имени файла
- procedure TForm1.NSaveAsClick(Sender: TObject);
- var i:integer;
- begin
- if SaveDlg.Execute then
- begin
- Fname:=SaveDlg.FileName;
- AssignFile(F,Fname);
- Rewrite(f);
- for i:=0 to Length(AComp)-1 do
- write(f,AComp[i]);
- CloseFile(F);
- end;
- end;
- // открытие типизированного файла и вывод его содержимого на форму
- procedure TForm1.NOpenClick(Sender: TObject);
- var K:integer;
- begin
- if OpenDlg.Execute then
- begin
- Fname:=OpenDlg.FileName;
- AssignFile(F,Fname);
- ReSet(f);
- k:=0;
- SetLength(AComp,0);
- while not eof(f) do
- begin
- read(f,Comp);
- SetLength(AComp,k+1);
- AComp[k]:=Comp;
- k:=k+1;
- end;
- CloseFile(F);
- ShowAComp(AComp,SGRid1);
- end;
- end;
- // удаление текущей записи из массива записей AComp
- procedure TForm1.BBDeleteClick(Sender: TObject);
- var i,Ln:integer;
- begin
- Ln:=Length(AComp);
- for i:=CurK to Ln-2 do
- AComp[i]:=AComp[i+1];
- if Ln>0 then
- SetLength(AComp,Ln-1);
- if CurK<ln then
- ShowComp(AComp[CurK]);
- ShowAComp(AComp,SGrid1);
- end;
- // Создание нового массива записей
- procedure TForm1.NCreateClick(Sender: TObject);
- begin
- CurK:=0;
- SetLength(AComp,0);
- Fname:='';
- ShowAComp(AComp,SGrid1);
- end;
- // созание формы - формирование шапки таблицы
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- SGrid1.Cells[0,0]:='№ п/п';
- SGrid1.Cells[1,0]:='Имя ПК';
- SGrid1.Cells[2,0]:='Объём памяти';
- SGrid1.Cells[3,0]:='Объём ОП';
- SGrid1.Cells[4,0]:='Тип монитора';
- SGrid1.Cells[5,0]:='Подключение к Internet';
- end;
- // чтение инофрмации из полей ввода и обновление
- // данных текцщей записи в массиве AComp
- procedure TForm1.BBUpdateClick(Sender: TObject);
- begin
- Comp.Name:=EName.Text;
- Comp.HDD:=StrToFloat(EHDD.Text);
- Comp.RAM:=StrToInt(ERAM.Text);
- Comp.Monitor:=EMonitor.Text;
- Comp.Inet:=RgrInet.ItemIndex = 1;
- //
- AComp[CurK]:=Comp;
- ShowCompInGrid(Comp,SGrid1,CurK+1);
- end;
- // ввод информации типизированного файла на форму
- procedure TForm1.NShowClick(Sender: TObject);
- var k:integer;
- begin
- AssignFile(F,Fname);
- ReSet(f);
- k:=0;
- SetLength(AComp,0);
- while not eof(f) do
- begin
- read(f,Comp);
- SetLength(AComp,k+1);
- AComp[k]:=Comp;
- k:=k+1;
- end;
- CloseFile(F);
- ShowAComp(AComp,SGRid1);
- end;
- // поиск записей, удовлетворяющих условию поиска
- procedure TForm1.BBSearchClick(Sender: TObject);
- var i,k:integer;
- Ares:ATComp;
- begin
- Comp.Name := EName.Text;
- if EHDD.Text = '' then
- Comp.HDD:=0
- else
- Comp.HDD:=StrtoFloat(EHDD.Text);
- if ERAM.Text = '' then
- Comp.RAM:=0
- else
- Comp.RAM:=StrtoInt(ERAM.Text);
- Comp.Monitor:=EMonitor.Text;
- Comp.Inet:=RgrInet.ItemIndex = 1;
- //
- k:=0;
- for i:=0 to Length(AComp) do
- if ((Comp.Name='')or(Pos(Comp.Name,AComp[i].Name)<>0))and
- ((Comp.HDD=0)or(Comp.HDD = AComp[i].HDD))and
- ((Comp.RAM=0)or(Comp.RAM = AComp[i].RAM))and
- ((Comp.Monitor='')or
- (Pos(Comp.Monitor,AComp[i].Monitor)<>0))and
- (Comp.Inet = AComp[i].Inet) then
- begin
- SetLength(Ares,k+1);
- Ares[k]:=AComp[i];
- k:=k+1;
- end;
- ShowAComp(Ares,SGrid1);
- end;
- // вывод информации о программе
- procedure TForm1.NInfoClick(Sender: TObject);
- begin
- AboutBox.ShowModal;
- end;
- // завершение работы приложения
- procedure TForm1.NExitClick(Sender: TObject);
- begin
- close;
- end;
- end.
ПРИЛОЖЕНИЕ В
Протокол выполнения программы
Созданная программа позволяет
добавлять, редактировать и удалять записи,
так же позволяет осуществлять поиск по
нескольким полям.
При редактировании или удалении
данных