Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Отчет по учебной практике.docx
Скачиваний:
41
Добавлен:
11.05.2015
Размер:
325.14 Кб
Скачать

5 Руководство пользователя

Для начала работы с программой необходимо запустить файл Project3forma. После чего на экране появится главное окно приложения.

Рисунок 5.1 – Главное окно приложения

Для просмотра всей информации об изданиях нужно нажать кнопку «Просмотреть весь список».

Рисунок 5.2 – Просмотр данных

Для просмотра всех периодических изданий одного издательства нужно на панели «Поиск по издательству» ввести название необходимого издательства и нажать кнопку «Поиск по издательству».

Рисунок 5.3 – Просмотр всех периодических изданий одного издательства

Для просмотра всех одноименных периодических изданий нужно на панели «Поиск по изданию» ввести название необходимого издания и нажать кнопку «Поиск по изданию». Издания выведутся на экран, отсортированными по дате.

Рисунок 5.4 – Просмотр всех одноименных периодических изданий

Для добавления периодического изданий нужно на панели «Добавление записи» ввести информацию о добавляемом издании и нажать кнопку «Добавить».

Рисунок 5.5 – Добавление периодического издания

Для корректирования информации о периодическом издании нужно на панели «Редактирование записи» ввести номер необходимого издания и нажать кнопку «Ок». На панели «Добавление записи» появится информация о соответствующем издании. Данная информация изменятся на необходимую, после чего на панели «Редактирование записи» нужно нажать кнопку «Редактировать».

Рисунок 5.6 – Редактирование периодического издания

Для удаления периодического изданий нужно на панели «Удаление записи» ввести номер удаляемого издания и нажать кнопку «Удалить».

Рисунок 5.7 – Удаление периодического издания

Для просмотра измененной информации нужно нажать кнопку «Просмотреть весь список».

Рисунок 5.8 – Просмотр измененной информации

Заключение

Результатом выполнения учебного проекта является приложение, позволяющее вести учет периодических изданий в библиотеке, в котором реализованы следующие функции:

- просмотр всех периодических изданий одного издательства;

- поиск всех номеров изданий по названию и их вывод на экран отсортированными по дате;

- добавление, удаление и корректировка записи из списка, а так же просмотр всего списка;

В программе использовались динамические списки.

Программа может быть улучшена путём добавления различных функций, например, выдача пользователю сообщений о типе допущенной им ошибки.

В ходе выполнения учебного проекта были закреплены знания по работе с динамическими списками и текстовыми файлами.

Приложение а листинг программы

unit Unit3_2;

interface

Type

PtQueue = ^Tqueue;

TQueue=record

number:integer; //номер издания

name_periodik:string; //название периодического издания

name_izdat:string; //наименование издательства

year:integer; //год издания

month:integer; //месяц издания

day:integer; //день издания

pt:PtQueue; //указатель на следующий элемент

end;

var

F : TextFile;

head: PtQueue;

procedure Queue;

implementation

{процедура создания списка}

procedure Queue;

var

next,p: PtQueue;

begin

//создание первого звена списка

new (head);

head^.pt:=nil;

next:=head;

readln(F,next^.number);

readln(F,next^.name_periodik);

readln(F,next^.name_izdat);

readln(F,next^.year);

readln(F,next^.month);

readln(F,next^.day);

//создание списка

while not Eof(F)do

begin

new (p);

next^.pt:=p;

readln(F,p^.number);

readln(F,p^.name_periodik);

readln(F,p^.name_izdat);

readln(F,p^.year);

readln(F,p^.month);

readln(F,p^.day);

p^.pt:=nil;

next:=p;

end;

end;

end.

unit Unit3forma;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls,Unit3_2, Grids;

type

TForm1 = class(TForm)

Button1: TButton;

Button2: TButton;

Button3: TButton;

Memo1: TMemo;

Edit1: TEdit;

Edit2: TEdit;

Edit3: TEdit;

Edit4: TEdit;

Edit5: TEdit;

Edit6: TEdit;

Edit7: TEdit;

Button4: TButton;

Button5: TButton;

Button6: TButton;

Edit8: TEdit;

Edit9: TEdit;

Button7: TButton;

GroupBox1: TGroupBox;

Label11: TLabel;

GroupBox2: TGroupBox;

Label1: TLabel;

GroupBox3: TGroupBox;

Label2: TLabel;

Label12: TLabel;

Label13: TLabel;

Label14: TLabel;

Label15: TLabel;

GroupBox4: TGroupBox;

Label3: TLabel;

GroupBox5: TGroupBox;

Label4: TLabel;

Label5: TLabel;

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

procedure Button4Click(Sender: TObject);

procedure Button5Click(Sender: TObject);

procedure Button6Click(Sender: TObject);

procedure Button7Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

{процедура вывода списка}

procedure TForm1.Button1Click(Sender: TObject);

procedure Print;

var

next: PtQueue;

begin

next:=head;

//прохождение по списку

while next<>nil do

begin

//вывод номера, названия издания и названия издательства

memo1.lines.add (IntToStr(next^.number));

memo1.lines.add (next^.name_periodik);

memo1.lines.add (next^.name_izdat);

if (next<>head) then

memo1.lines.add ('');

//вывод даты

memo1.Text:=memo1.Text+IntToStr(next^.day)+'.'+IntToStr(next^.month)+

+'.'+IntToStr(next^.year);

next:=next^.pt;

end;

end;

begin

memo1.Clear;

Print;

end;

{по созданию}

procedure TForm1.FormCreate(Sender: TObject);

begin

memo1.Clear;

//работа с текстовым файлом

AssignFile(F, 'библиотека.txt');

Reset(F);

//создание списка

Queue;

CloseFile(F);

end;

{процедура поиска данных по названию издательства}

procedure TForm1.Button2Click(Sender: TObject);

procedure PoiskPoIzdatelstvy;

var

next: PtQueue;

begin

next:=head;

//поиск названия издательства

while next<>nil do

begin

if Edit1.Text=next^.name_izdat then

begin

//вывод номера, названия издания и названия издательства

memo1.lines.add (IntToStr(next^.number));

memo1.lines.add (next^.name_periodik);

memo1.lines.add (next^.name_izdat);

if (next<>head) then

memo1.lines.add ('');

//вывод даты

memo1.Text:=memo1.Text+IntToStr(next^.day)+'.'+IntToStr(next^.month)+

+'.'+IntToStr(next^.year);

end;

next:=next^.pt;

end;

end;

begin

memo1.Clear;

PoiskPoIzdatelstvy;

Edit1.Clear;

end;

{процедура поиска данных по названию издания}

procedure TForm1.Button3Click(Sender: TObject);

var

headN: PtQueue;

{вывод отсортированных данных}

Procedure Print;

var

nextN:PtQueue;

begin

nextN:=headN^.pt^.pt;

//прохождение списка

while nextN<>nil do

begin

//вывод номера, названия издания и названия издательства

memo1.lines.add (IntToStr(nextN^.number));

memo1.lines.add (nextN^.name_periodik);

memo1.lines.add (nextN^.name_izdat);

if (nextN<>headN) then

memo1.lines.add ('');

//вывод даты

memo1.Text:=memo1.Text+IntToStr(nextN^.day)+'.'+IntToStr(nextN^.month)+

+'.'+IntToStr(nextN^.year);

nextN:=nextN^.pt;

end;

end;

{Сортировка нового списка по дате}

Procedure Sort;

var

min,temp,next,tec:PtQueue;

begin

tec:=headN^.pt;

//прохождение нового списка

while tec^.pt<>nil do

begin

next:=tec^.pt;

min:=tec^.pt;

while next<>nil do

begin

{нахождение наименьшего года}

if min^.year>next^.year then

min:=next;

if min^.year=next^.year then

begin

{для одного года, нахождение наименьшего месяца}

if min^.month>next^.month then

min:=next;

if min^.month=next^.month then

begin

{для одного год и месяца, нахождение наименьшего дня}

if min^.day>next^.day then

min:=next;

end;

end;

next:=next^.pt;

end;

//перемена местами информации записей списка

new(temp);

//сохранение значения записи на которую указывает min

temp^.number:=min^.number;

temp^.name_periodik:=min^.name_periodik;

temp^.name_izdat:=min^.name_izdat;

temp^.year:=min^.year;

temp^.month:=min^.month;

temp^.day:=min^.day;

//изменение значения записи на которую указывает min

min^.number:=tec^.pt^.number;

min^.name_periodik:=tec^.pt^.name_periodik;

min^.name_izdat:=tec^.pt^.name_izdat;

min^.year:=tec^.pt^.year;

min^.month:=tec^.pt^.month;

min^.day:=tec^.pt^.day;

//изменение значения записи на которую указывает tec^.pt

tec^.pt^.number:=temp^.number;

tec^.pt^.name_periodik:=temp^.name_periodik;

tec^.pt^.name_izdat:=temp^.name_izdat;

tec^.pt^.year:=temp^.year;

tec^.pt^.month:=temp^.month;

tec^.pt^.day:=temp^.day;

//удаление временного указателя

dispose(temp);

tec:=tec^.pt;

end;

end;

{создание нового списка с информацией о изданиях}

procedure PoiskPoIzdaniy;

var

next,nextN,p: PtQueue;

begin

next:=head;

new (headN);

headN^.pt:=nil;

nextN:=headN;

//поиск издания

while next<>nil do

begin

if Edit2.Text=next^.name_periodik then

begin

//создание звена списка с информацией об этом издании

new (p);

nextN^.pt:=p;

p^.number:=next^.number;

p^.name_periodik:=next^.name_periodik;

p^.name_izdat:=next^.name_izdat;

p^.year:=next^.year;

p^.month:=next^.month;

p^.day:=next^.day;

p^.pt:=nil;

nextN:=p;

end;

next:=next^.pt;

end;

//создание первого звена списка

nextN:=headN;

new(headN);

headN^.pt:=nextN;

end;

begin

memo1.Clear;

//вызов процедур для поиска данных по названию издания

PoiskPoIzdaniy;

Sort;

Print;

Edit2.Clear;

end;

{Добавление записи}

procedure TForm1.Button4Click(Sender: TObject);

procedure Add;

var

next,p: PtQueue;

k:integer;

begin

next:=head;

//поиск номера записи

k:=0;

while next^.pt<>nil do

begin

k:=k+1;

next:=next^.pt;

end;

//создание новой записи

new (p);

next^.pt:=p;

p^.number:=k+2;

p^.name_periodik:=Edit3.Text;

p^.name_izdat:=Edit4.Text;

p^.year:=StrToInt(Edit5.Text);

p^.month:=StrToInt(Edit6.Text);

p^.day:=StrToInt(Edit7.Text);

p^.pt:=nil;

next:=p;

end;

begin

memo1.Clear;

Add;

Edit3.Clear;

Edit4.Clear;

Edit5.Clear;

Edit6.Clear;

Edit7.Clear;

end;

{процедура удаления элемента очереди}

procedure TForm1.Button5Click(Sender: TObject);

procedure Delete;

var

next,q: PtQueue;

begin

next:=head;

//Проверка является ли удаляемая запись первой в списке

if StrToInt(Edit8.Text)=head^.number then

begin

q:=head;

head:=head^.pt;

next:=head;

dispose (q);

end

else

//Поиск записи

while next^.pt<>nil do

begin

if StrToInt(Edit8.Text)=next^.pt^.number then

begin

// Удаление записи

q:=next^.pt;

next^.pt:=next^.pt^.pt;

dispose (q);

end

else

next:=next^.pt;

end;

end;

begin

memo1.Clear;

Delete;

Edit8.Clear;

end;

{процедура1 редактирование списка}

procedure TForm1.Button6Click(Sender: TObject);

procedure Redactirovat1;

var

next: PtQueue;

begin

next:=head;

//поиск нужной записи

while next<>nil do

begin

if Edit9.Text=IntToStr(next^.number) then

begin

//сохранение в список измененной записи

next^.name_periodik:=Edit3.Text;

next^.name_izdat:=Edit4.Text;

next^.year:=StrToInt(Edit5.Text);

next^.month:=StrToInt(Edit6.Text);

next^.day:=StrToInt(Edit7.Text);

end;

next:=next^.pt;

end;

end;

begin

memo1.Clear;

Redactirovat1;

Edit9.Clear;

end;

{процедура2 редактирование списка}

procedure TForm1.Button7Click(Sender: TObject);

procedure Redactirovat2;

var

next: PtQueue;

begin

next:=head;

//Поиск нужной записи

while next<>nil do

begin

if Edit9.Text=IntToStr(next^.number) then

begin

// вывод исходной информации

Edit3.Text:=next^.name_periodik;

Edit4.Text:=next^.name_izdat;

Edit5.Text:=IntToStr(next^.year);

Edit6.Text:=IntToStr(next^.month);

Edit7.Text:=IntToStr(next^.day);

end;

next:=next^.pt;

end;

end;

begin

memo1.Clear;

Edit3.Clear;

Edit4.Clear;

Edit5.Clear;

Edit6.Clear;

Edit7.Clear;

Redactirovat2;

end;

end.