Разработка программы при помощи языка программирования языка Delphi
Курсовая работа, 20 Мая 2015, автор: пользователь скрыл имя
Описание работы
Для выполнения данной курсовой работы необходимо разработать алгоритм решения поставленного задания, правильно указав последовательное выполнение соответствующих команд для получения необходимых результатов.
Цель работы заключается в том, чтобы правильно составить алгоритм поставленной задачи по обработке типизированного файла, разработать и отладить программу, реализующую разработанный алгоритм.
Файлы: 1 файл
Разработка программы при помощи языка программирования языка Delphi.docx
— 495.97 Кб (Скачать файл)- «Открыть файл» (при нажатии запускается диалог открытия файла, изображенный на рисунке 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.
Протокол выполнения программы
Созданная программа позволяет добавлять, редактировать и удалять записи, так же позволяет осуществлять поиск по нескольким полям.
При редактировании или удалении данных