Читайте также: |
|
Для запуска программы необходимо открыть файл Project2.exe.
Для того чтобы создать список элементов (сведенья о принтерах) необходимо нажать кнопку «F9» для запуска программы. После чего зайти в «меню» и нажать команду «Создать список», либо «Загрузить список». После этого требуется нажать кнопку «Просмотр списка». После того как все элементы внесены в список можно его сохранить нажав на кнопку «Сохранить список».
Также можно удалить элемент из списка при помощи кнопки «Удалить». Для этого требуется ввести в поле «Удалить элемент №» номер элемента, который Вы хотите удалить, а затем нажать кнопку «Просмотр списка» для просмотра результата удаления.
Мы можем произвести поиск по интересующим нас элементам. Требуется только кликнуть на команду «Меню» и выбрать команду «Поиск». Для этого с помощью синтаксического анализатора нужно выбрать интересующую нас строку (по названию, по фирме изготовителю, по качеству) и затем нажимаем кнопку «Найти».
Также в меню есть вспомогательные кнопки (команды), при нажатии которых выводится информация об авторе, задание курсовой работы, сохраняются данные списка, загружаются данные, раннее сохраненные, и кнопка выхода из программы.
Вывод:
В процессе выполнения курсового проекта я достигла цель построения двунаправленного неупорядоченного списка, а также некоторые операции над данным списком (создание, добавление элемента, удаление элемента, удаление списка, организация синтаксического анализатора, сохранение и загрузка файла). А также я научилась разрабатывать программу в объектно-ориентированной среде Borland Delphi 7.0 на языке Object Pascal, позволяющую организовать работу со списком.
В результате подготовки теоретического материала я научилась строить алгоритмы реализации различных операций при работе со списком. Эти алгоритмы были реализованы в программной среде Borland Delphi 7.0. Также в этой курсовой работе я закрепила свои теоретические знания, узнала много нового и интересного для себя, получила практические навыки.
СПИСОК ИСПОЛЬЗОВАННОЙ ЛИТЕРАТУРЫ:
1. Л. А. Гнучих, Є. М. Литвиненко, О. В. Мерлак-.Моделі та структури даних. Частина 1. Структура даних: Навчально-методичний посібник. - Харків: ХДТУБА, 2006. - 78 с.
2. Є. М. Литвиненко -Методичні вказівки до виконання лабораторних робіт з дисципліни "Моделі та структури даних". Розділ "Побудова баз даних". Для студентів спец. 6.050102 "Економічна кібернетика". - Харків: ХДТУБА, 2007. - 48 с.
3. Архангельский А.Я. Программирование в Delphi 7. – Т.: «Бином-Пресс»,2004.
4. Сухарев М.П. Turbo Pascal. – СПб: наука и техника, 2004
5. http://delphi.icm.edu.pl/ Delphi Super page
6. Конспект лекций по Моделям и структурам данных.
7. Учебное пособие по делфи в електронном виде.
8. Бакнелл. Фундаментальные алгоритмы и структуры данных в Delphi. «Питер».
9. Бобровский С.И. Delphi 7. Учебный курс – СПб.: Питер, 2004. – 736 с.:
Приложение А
Листинг программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Menus, StdCtrls, ExtCtrls, Grids, ActnList, Mask, ToolWin,
ActnMan, ActnCtrls, ActnMenus;
type
pr=^el;
el=record
typ:string[20];
kaches:integer;
firmaIzg:string[20];
naz:string[20];
next:pr;
pred:pr;
end;
FF=record
typ:string[20];
kaches:integer;
firmaIzg:string[20];
naz:string[20];
end;
TForm1 = class(TForm)
GroupBox1: TGroupBox;
sg2: TStringGrid;
Button4: TButton;
Button5: TButton;
MainMenu1: TMainMenu;
N1: TMenuItem;
N2: TMenuItem;
N5: TMenuItem;
N6: TMenuItem;
GroupBox2: TGroupBox;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit3: TEdit;
Label3: TLabel;
Edit4: TEdit;
Label4: TLabel;
Edit5: TEdit;
Button2: TButton;
Prorisov: TButton;
sg: TStringGrid;
Button1: TButton;
Label7: TLabel;
Edit8: TEdit;
yaj1: TMenuItem;
N7: TMenuItem;
N8: TMenuItem;
cbPoisk: TComboBox;
Save: TSaveDialog;
Open: TOpenDialog;
N3: TMenuItem;
N4: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure StrZap(k, l: integer);
procedure StrClear(nn: integer);
procedure ProrisovClick(Sender: TObject);
procedure N11Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
//procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure N2Click(Sender: TObject);
procedure N7Click(Sender: TObject);
procedure N5Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure N6Click(Sender: TObject);
procedure N3Click(Sender: TObject);
procedure N4Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
top,endd:pr;
spissozdan:boolean;
end;
var n:pr;
Form1: TForm1;
implementation
uses Unit2, Unit3;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
sg.Cells[0,0]:='№';
sg.Cells[1,0]:='Тип';
sg.Cells[2,0]:='Качество';
sg.Cells[3,0]:='Фирма изготовитель';
sg.Cells[4,0]:='Название';
sg2.Cells[0,0]:='№';
sg2.Cells[1,0]:='Тип';
sg2.Cells[2,0]:='Качество';
sg2.Cells[3,0]:='Фирма изготовитель';
sg2.Cells[4,0]:='Название';
N3.Visible:=false;
N5.Visible:=false;
end;
procedure TForm1.StrZap(k, l: integer);
begin
sg.Cells[0,k]:=inttostr(k);
sg.Cells[1,k]:=n^.typ;
sg.Cells[2,k]:=inttostr(n^.kaches);
sg.Cells[3,k]:=n^.firmaIzg;
sg.Cells[4,k]:=n^.naz;
end;
procedure TForm1.StrClear(nn: integer);
var t,c:integer;
begin
case nn of
1:
for t:=1 to sg.RowCount do
for c:=0 to 5 do
sg.Cells[c,t]:='';
2:
for t:=1 to sg2.RowCount do
for c:=0 to 5 do
sg2.Cells[c,t]:='';
end;
end;
procedure TForm1.ProrisovClick(Sender: TObject);
var n:pr;
i:integer;
begin
sg.Visible:=true;
n:=top;
sg.RowCount:=1;
i:=1;
while n<>nil do
begin
sg.RowCount:=sg.RowCount+1;
sg.FixedRows:=1;
sg.Cells[0,i]:=inttostr(i);
sg.Cells[1,i]:=n^.typ;
sg.Cells[2,i]:=inttostr(n^.kaches);
sg.Cells[3,i]:=n^.firmaIzg;
sg.Cells[4,i]:=n^.naz;
n:=n^.next;
i:=i+1;
end;
end;
procedure TForm1.N11Click(Sender: TObject);
begin
Form3.ShowModal;
end;
procedure TForm1.Button2Click(Sender: TObject);
var vs,b:boolean;
st:string;
i:integer;
begin
b:=true;
if edit1.Text='' then
begin
b:=false;
application.MessageBox('Не правильно введено поле тип принтера','Ошибка', mb_ok);
end
else
if edit3.Text='' then
begin
b:=false;
application.MessageBox('Не правильно введено поле качество','Ошибка', mb_ok);
end
else
if edit4.Text='' then
begin
b:=false;
application.MessageBox('Не правильно введено поле фирма изготовитель','Ошибка', mb_ok);
end
else
if edit5.Text='' then
begin
b:=false;
application.MessageBox('Не правильно введено поле название принтера','Ошибка', mb_ok);
end;
if b=true then
begin
new(n);
n^.typ:=Edit1.Text;
n^.kaches:=strtoint(Edit3.Text);
n^.firmaIzg:=Edit4.Text;
n^.naz:=Edit5.Text;
vs:=false;
while vs= false do
begin
if endd=nil then
begin
n^.pred:=nil;
n^.next:=nil;
endd:=n;
top:=n;
spissozdan:=true;
vs:=true;
end
else
begin
endd^.next:=n;
n^.pred:=endd;
n^.next:=nil;
endd:=n;
vs:=true;
break;
end;
end;
edit1.Text:='';
edit3.Text:='';
edit4.Text:='';
edit5.Text:='';
end;
Prorisov.Enabled:=true;
N3.Visible:=true;
N5.Visible:=true;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
GroupBox1.Visible:=false;
end;
procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
n:pr;
begin
n:=top;
if n=nil then
begin
Application.MessageBox('Список пуст!!!','Ошибка',mb_ok);
exit;
end;
if edit8.Text='' then
begin
Application.MessageBox('Введите № элемента, который хотите удалить!!!','Ошибка',mb_ok);
exit;
end;
if strtoint(edit8.Text)=1 then
begin
top:=n^.next;
top^.pred:=nil;
dispose(n);
end
else
begin
for i:=2 to strtoint(edit8.Text)do
n:=n^.next;
if n^.next=nil then
begin
endd:=n^.pred;
endd^.next:=nil;
dispose(n);
end
else
begin
endd:=n^.next;
endd^.pred:=n^.pred;
n^.pred^.next:=endd;
dispose(n);
end;
end;
edit8.Text:='';
end;
procedure TForm1.N2Click(Sender: TObject);
begin
GroupBox2.Visible:=true;
end;
procedure TForm1.N7Click(Sender: TObject);
begin
Form3.showmodal;
end;
procedure TForm1.N5Click(Sender: TObject);
begin
GroupBox1.Visible:=true;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
form2.Show;
end;
procedure TForm1.N6Click(Sender: TObject);
begin
close;
end;
procedure TForm1.N3Click(Sender: TObject);
var fa:FF;
f:file of FF;
begin
try
n:=top;
if Save.Execute then
begin
AssignFile(f,Save.FileName+'.lbd');
rewrite(f);
repeat
fa.typ:=n^.typ;
fa.kaches:=n^.kaches;
fa.firmaIzg:=n^.firmaIzg;
fa.naz:=n^.naz;
write(f,fa);
n:=n^.Next;
until n=nil;
closefile(f);
end;
except
Application.MessageBox('Невозможно сохранить из-за неверных параметров','Ошибка',mb_ok);
end;
end;
procedure TForm1.N4Click(Sender: TObject);
var fa:FF;
f:file of FF;
i:integer;
begin
i:=0;
StrClear(1);
if open.Execute then
begin
AssignFile(f,open.FileName);
reset(f);
while not eof(f) do
begin
read(f,fa);
if i=0 then
begin
inc(i);
new(n);
n^.Next:=nil;
n^.Pred:=nil;
n^.typ:=fa.typ;
n^.kaches:=fa.kaches;
n^.firmaIzg:=fa.firmaIzg;
n^.naz:=fa.naz;
top:=n;
endd:=n;
end
else
begin
if i>=2 then sg.RowCount:=i+1;
new(n^.Next);
n:=n^.Next;
n^.typ:=fa.typ;
n^.kaches:=fa.kaches;
n^.firmaIzg:=fa.firmaIzg;
n^.naz:=fa.naz;
n^.Next:=nil;
n^.Pred:=endd;
endd:=n;
end;
StrZap(i,1);
inc(i);
end;
end;
GroupBox2.Visible:=true;
Prorisov.Enabled:=true;
N3.Visible:=true;
N5.Visible:=true;
end;
procedure TForm1.Button4Click(Sender: TObject);
var l,n:pr;
findZp:integer;
s:string;
begin
n:=top;
if cbPoisk.Text='' then
begin
Application.MessageBox('Введите данные поиска!!!','Ошибка',mb_ok);
exit;
end;
if n=nil then
begin
Application.MessageBox('Список пуст!!!','Ошибка',mb_ok);
exit;
end;
l:=n;
findzp:=0;
{ПОИСОК ПО НАЗВАНИЮ}
if pos('Название=',cbPoisk.Text)>0 then
begin
s:=copy(cbPoisk.Text,10,length(cbPoisk.Text));
StrClear(2);
while l<>nil do
begin
if l^.naz=s then
begin
findzp:=findzp+1;
if findzp>10 then sg2.RowCount:=sg2.RowCount+1;
sg2.Cells[0,findzp]:=inttostr(findzp);
sg2.Cells[1,findzp]:=l^.typ;
sg2.Cells[2,findzp]:=inttostr(l^.kaches);
sg2.Cells[3,findzp]:=l^.firmaIzg;
sg2.Cells[4,findzp]:=l^.naz;
end;
l:=l^.next;
cbPoisk.Text:='';
end;
exit;
end;
{ПОИСК ПО ФИРМА ИЗГОТОВИТЕЛЬ}
if pos('Фирма изготовитель=',cbPoisk.Text)>0 then
begin
s:=copy(cbPoisk.Text,20,length(cbPoisk.Text));
StrClear(2);
while l<>nil do
begin
if l^.firmaIzg=s then
begin
findzp:=findzp+1;
if findzp>10 then sg2.RowCount:=sg2.RowCount+1;
sg2.Cells[0,findzp]:=inttostr(findzp);
sg2.Cells[1,findzp]:=l^.typ;
sg2.Cells[2,findzp]:=inttostr(l^.kaches);
sg2.Cells[3,findzp]:=l^.firmaIzg;
sg2.Cells[4,findzp]:=l^.naz;
end;
l:=l^.next;
cbPoisk.Text:='';
end;
exit;
end;
{ПОИСК ПО КАЧЕСТВУ}
if pos('Качество>',cbPoisk.Text)>0 then
begin
s:=copy(cbPoisk.Text,10,length(cbPoisk.Text));
StrClear(2);
while l<>nil do
begin
if l^.kaches>strtoint(s) then
begin
findzp:=findzp+1;
if findzp>10 then sg2.RowCount:=sg2.RowCount+1;
sg2.Cells[0,findzp]:=inttostr(findzp);
sg2.Cells[1,findzp]:=l^.typ;
sg2.Cells[2,findzp]:=inttostr(l^.kaches);
sg2.Cells[3,findzp]:=l^.firmaIzg;
sg2.Cells[4,findzp]:=l^.naz;
end;
l:=l^.next;
cbPoisk.Text:='';
end;
exit;
end;
if pos('Качество<',cbPoisk.Text)>0 then
begin
s:=copy(cbPoisk.Text,10,length(cbPoisk.Text));
StrClear(2);
while l<>nil do
begin
if l^.kaches<strtoint(s) then
begin
findzp:=findzp+1;
if findzp>10 then sg2.RowCount:=sg2.RowCount+1;
sg2.Cells[0,findzp]:=inttostr(findzp);
sg2.Cells[1,findzp]:=l^.typ;
sg2.Cells[2,findzp]:=inttostr(l^.kaches);
sg2.Cells[3,findzp]:=l^.firmaIzg;
sg2.Cells[4,findzp]:=l^.naz;
end;
l:=l^.next;
cbPoisk.Text:='';
end;
exit;
end
else
begin
Application.MessageBox('Не правильно введены данные поиска!!!','Ошибка',mb_ok);
StrClear(2);
cbPoisk.Text:='';
end;
end;
end.
Приложение Б
Дата добавления: 2015-11-04; просмотров: 46 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Теоретическая часть | | | ПОЯСНЮВАЛЬНА ЗАПИСКА |