Автор работы: Пользователь скрыл имя, 03 Марта 2013 в 11:56, курсовая работа
Цель курсовой работы - выработать умение выбирать рациональные структуры данных и языковых конструкций, обеспечивающих построение эффективных алгоритмов программ обработки данных применительно к задачам со сложной организацией данных, т.е. задач невычислительного характера, где сложность данных превышает сложность алгоритмов их обработки.
ВВЕДЕНИЕ 4
1. СОДЕРЖАТЕЛЬНАЯ ПОСТАНОВКА ЗАДАЧИ 5
1.1. Характеристика задачи 5
1.2. Входные данные 5
1.3. Выходные данные 5
2. ФОРМАЛИЗОВАННАЯ ПОСТАНОВКА ЗАДАЧИ 6
2.1. Разработка модели предметной области (МПО) 6
2.1.1. Определение объектов 6
2.1.2. Анализ процессов (запросов к информационной базе) 8
2.1.3. Установление функциональных связей и задание их характеристик 8
2.1.4. Установление структурных связей и задание их характеристик 11
2.2. Оптимизация и проверка корректности инфологической схемы МПО 13
3. АБСТРАКТНЫЙ АНАЛИЗ И СИНТЕЗ МПО ЗАДАЧИ 15
3.1. Представление МПО при помощи абстрактных структур данных (АСД) 15
3.2. Предварительное преобразование структуры данных 15
3.3. Декомпозиция структуры данных на более простые АСД 16
4. РАЗРАБОТКА ВНЕШНИХ СПЕЦИФИКАЦИЙ ПРОГРАММЫ 18
4.1. Разработка представления данных при помощи логических структур данных (ЛСД) 18
4.2. Интерфейс программы. Разработка макетов ввода/вывода 20
4.3. Разработка функций программы 21
4.4. Разработка функций программы по обработке ошибок 21
5. РАЗРАБОТКА ВНУТРЕННИХ СПЕЦИФИКАЦИЙ ПРОГРАММЫ 22
5.1. Разработка структуры программы 22
5.2. Разработка представления данных на уровне модели памяти 23
6. ОПИСАНИЕ ПРОГРАММЫ TOURISTAGENCY 24
6.1. Вводная часть 24
6.2. Функциональное назначение 24
6 . Описание информации 2
6.4. Описание логики программы 25
7. ОПИСАНИЕ ПОДПРОГРАММЫ TFORM1.FORMCREATE 26
8. ОПИСАНИЕ ПОДПРОГРАММЫ TFORM1.BUTTON10CLICK 27
9. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR1 28
10. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR2 29
11. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR3 30
12. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR4 31
13. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR5 32
14. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR6 33
15. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR7 34
16. ОПИСАНИЕ ПОДПРОГРАММЫ ZAPR8 35
17. ТЕСТИРОВАНИЕ ПРОГРАММЫ 36
17.1. Разработка плана тестирования и набора тестов 36
17.2. Результаты тестирования 37
ЗАКЛЮЧЕНИЕ 42
Список литературы 43
Приложение 1 ТЕКСТ ПРОГРАММЫ TOURISTAGENCY 44
Приложение 2 СОДЕРЖИМОЕ ВХОДНЫХ ФАЙЛОВ 53
Приложение 3 РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ 55
Приложение 4 РУКОВОДСТВО ПРОГРАММИСТА 57
Button5: TButton;
Button6: TButton;
Button7: TButton;
Button8: TButton;
Button9: TButton;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
Edit2: TEdit;
Edit3: TEdit;
Edit4: TEdit;
Label11: TLabel;
Label12: TLabel;
Edit5: TEdit;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
Button10: TButton;
Memo1: TMemo;
Edit1: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button10Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button8Click(Sender: TObject);
procedure Button9Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
pKurort=^tKurort;
tKurort=record
name:string[15];
strana:string[12];
turAg:string[20];
next:pKurort;
end;
pTurAg=^tTurAg;
tTurAg=record
name:string[20];
gorod:string[15];
next:pTurAg
end;
pOtel=^tOtel;
tOtel=record
name:string[20];
kurort:string[15];
next:pOtel;
end;
pAvia=^tAvia;
tAvia=record
num:string[3];
otprav:string[15];
prib:string[15];
turAg:string[20];
next:pAvia;
end;
var
Form1: TForm1;
F:text;
N_Zaprosa:byte;
i:integer;
kurort, pervKurort:pKurort;
TurAg,pervTurAg:pTurAg;
otel, pervOtel:pOtel;
avia, pervAvia:pAvia;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
begin
close;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Memo1.Clear;
assignfile (F,'D:\FKurorty.dat');
reset(F);
if IOResult=0 then
begin
new(kurort);
pervkurort:=kurort;
while not eof(F) do
begin
readln(F,kurort^.strana);
readln(F,kurort^.name);
readln(F,kurort^.turag);
if not eof(F) then
begin
new(kurort^.next);
kurort:=kurort^.next;
end;
end;
kurort^.next:=nil;
end
else
MessageDlg('Ошибка.Файл FKurorty пуст!',mtError,[mbOk],0);
closefile(F);
assignfile (F,'D:\FTurAg.dat');
reset(F);
if IOResult=0 then
begin
new(turag);
pervturag:=turag;
while not eof(F) do
begin
readln(F,turag^.name);
readln(F,turag^.gorod);
if not eof(F) then
begin
new(turag^.next);
turag:=turag^.next;
end;
end;
turag^.next:=nil;
end
else
MessageDlg('Ошибка.Файл FTurAg пуст!',mtError,[mbOk],0);
closefile(F);
assignfile (F,'D:\FOtely.dat');
reset(F);
if IOResult=0 then
begin
new(otel);
pervotel:=otel;
while not eof(F) do
begin
readln(F,otel^.name);
readln(F,otel^.kurort);
if not eof(F) then
begin
new(otel^.next);
otel:=otel^.next;
end;
end;
otel^.next:=nil;
end
else
MessageDlg('Ошибка.Файл FOtely пуст!',mtError,[mbOk],0);
closefile(F);
assignfile (F,'D:\FAviaLines.dat');
reset(F);
if IOResult=0 then
begin
pervavia:=avia;
while not eof(F) do
begin
readln(F,avia^.num);
readln(F,avia^.otprav);
readln(F,avia^.prib);
readln(F,avia^.turag);
if not eof(F) then
begin
new(avia^.next) ;
avia:=avia^.next;
end;
end;
avia^.next:=nil;
end
else
MessageDlg('Ошибка.Файл FAviaLines пуст!',mtError,[mbOk],0);
i:=1;
avia:=pervavia;
while(avia<>nil) do
begin
form1.Memo1.Lines[i]:='#'+
avia:=avia^.next;
inc(i);
end;
avia:=pervavia;
closefile(F);
end;
procedure Zapr1;
begin
Memo1.Lines[i]:='Турагенства, удовлетворяющие запросу:';
otel:=pervotel;
while (otel<>nil)and(otel^.name<>
otel:=otel^.next;
if (otel<>nil)and(otel^.name=
begin
kurort:=pervkurort;
repeat
while (kurort<>nil)and(kurort^.name<
kurort:=kurort^.next;
if (kurort<>nil)and(kurort^.name=
begin
turag:=pervturag;
while (turAg<>nil)and(turag^.name<>
turag:=turag^.next;
if (turag<>nil)and(turag^.name=ku
then
begin
inc(i);
Memo1.Lines[i]:=turag^.name;
end;
end;
if kurort<>nil then
kurort:=kurort^.next;
until kurort=nil;
end;
end;
Procedure Zapr2;
begin
Memo1.Lines[i]:='Авиарейсы, удовлетворяющие запросу:';
avia:=pervavia;
repeat
while (avia<>nil)and(avia^.prib<>
avia:=avia^.next;
if (avia<>nil)and(avia^.prib=
begin
kurort:=pervkurort;
while (kurort<>nil)and(kurort^.name<
kurort:=kurort^.next;
if (kurort<>nil)and(kurort^.name=
then
begin
inc(i);
Memo1.Lines[i]:=avia^.otprav+' - '+avia^.prib+' №'+avia^.num;
end;
end;
if avia<>nil then
avia:=avia^.next;
until avia=nil;
end;
Procedure Zapr3;
begin
Memo1.Lines[i]:='Отели, удовлетворяющие запросу:';
otel:=pervotel;
repeat
while (otel<>nil)and(otel^.kurort<>
otel:=otel^.next;
if (otel<>nil)and(otel^.kurort=
begin
kurort:=pervkurort;
while (kurort<>nil)and(kurort^.
kurort:=kurort^.next;
if (kurort<>nil)and(kurort^.
(kurort^.name=Edit3.Text)then
begin
inc(i);
Memo1.Lines[i]:=otel^.name;
end;
end;
until otel=nil;
end;
Procedure Zapr4;
begin
Memo1.Lines[i]:='Курорты, удовлетворяющие запросу:';
kurort:=pervkurort;
repeat
while (kurort<>nil)and(kurort^.
kurort:=kurort^.next;
if (kurort<>nil)and(kurort^.
begin
inc(i);
Memo1.Lines[i]:=kurort^.name;
end;
if kurort<>nil then
kurort:=kurort^.next;
until kurort=nil;
end;
Procedure Zapr5;
begin
Memo1.Lines[i]:='Авиарейсы, удовлетворяющие запросу:';
avia:=pervavia;
repeat
while (avia<>nil)and(avia^.otprav<>
avia:=avia^.next;
if (avia<>nil)and(avia^.otprav=
begin
inc(i);
Memo1.Lines[i]:=avia^.otprav+' - '+avia^.prib+' №'+avia^.num +' '+avia^.turag;
end;
if avia<>nil then
avia:=avia^.next;
until avia=nil;
end;
Procedure Zapr6;
begin
Memo1.Lines[i]:='Отели, удовлетворяющие запросу:';
otel:=pervotel;
repeat
while (otel<>nil)and(otel^.kurort<>
otel:=otel^.next;
if (avia<>nil)and(otel^.kurort=
begin
inc(i);
Memo1.Lines[i]:=otel^.name;
end;
if otel<>nil then
otel:=otel^.next;
until otel<>nil;
end;
Procedure Zapr7;
begin
Memo1.Lines[i]:='Турагенства, удовлетворяющие запросу:';
turag:=pervturag;
repeat
while (turag<>nil)and(turag^.gorod<>
turag:=turag^.next;
if (turag<>nil)and(turag^.gorod=
begin
inc(i);
Memo1.Lines[i]:=turag^.name;
end;
if turag<>nil then
turag:=turag^.next;
until turag<>nil;
end;
Procedure Zapr8;
begin
Memo1.Lines[i]:='Авиарейсы, удовлетворяющие запросу:';
avia:=pervavia;
repeat
while (avia<>nil) and (avia^.otprav<>Edit1.Text)do
avia:=avia^.next;
if (avia<>nil)and(avia^.otprav=
begin
inc(i);
Memo1.Lines[i]:=avia^.otprav+' - '+avia^.prib+' №'+avia^.num+' '+avia^.turAg;
end;
if avia<>nil then
avia:=avia^.next;
until avia<>nil;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
N_Zaprosa:=1;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=True;
Edit2.Enabled:=False;
Edit3.Enabled:=True;
Edit4.Enabled:=True;
Edit5.Enabled:=True;
Button10.Enabled:=True;
Edit1.SetFocus;
end;
procedure TForm1.Button10Click(Sender: TObject);
begin
i:=0;
Memo1.Clear;
case N_Zaprosa of
1:Zapr1;
2:Zapr2;
3:Zapr3;
4:Zapr4;
5:Zapr5;
6:Zapr6;
7:Zapr7;
8:Zapr8;
end;
if i=0 then
begin
Memo1.Lines[1]:='На данный запрос ничего не найдено!';
ShowMessage('На данный запрос ничего не найдено!');
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
N_Zaprosa:=2;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=True;
Edit2.Enabled:=True;
Edit3.Enabled:=False;
Edit4.Enabled:=True;
Edit5.Enabled:=False;
Button10.Enabled:=True;
Edit1.SetFocus;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
N_Zaprosa:=3;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=False;
Edit2.Enabled:=True;
Edit3.Enabled:=True;
Edit4.Enabled:=False;
Edit5.Enabled:=False;
Button10.Enabled:=True;
Edit2.SetFocus;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
N_Zaprosa:=4;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=False;
Edit2.Enabled:=False;
Edit3.Enabled:=False;
Edit4.Enabled:=True;
Edit5.Enabled:=False;
Button10.Enabled:=True;
Edit4.SetFocus;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
N_Zaprosa:=5;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=True;
Edit2.Enabled:=False;
Edit3.Enabled:=False;
Edit4.Enabled:=False;
Edit5.Enabled:=False;
Button10.Enabled:=True;
Edit1.SetFocus;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
N_Zaprosa:=6;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=False;
Edit2.Enabled:=False;
Edit3.Enabled:=True;
Edit4.Enabled:=False;
Edit5.Enabled:=False;
Button10.Enabled:=True;
Edit3.SetFocus;
end;
procedure TForm1.Button8Click(Sender: TObject);
begin
N_Zaprosa:=7;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=True;
Edit2.Enabled:=False;
Edit3.Enabled:=False;
Edit4.Enabled:=False;
Edit5.Enabled:=False;
Button10.Enabled:=True;
Edit1.SetFocus;
end;
procedure TForm1.Button9Click(Sender: TObject);
begin
N_Zaprosa:=8;
ShowMessage('Заполните соответствующие поля!');
Edit1.Enabled:=True;
Edit2.Enabled:=False;
Edit3.Enabled:=True;
Edit4.Enabled:=False;
Edit5.Enabled:=False;
Button10.Enabled:=True;
Edit1.SetFocus;
end;
end.
ПРИЛОЖЕНИЕ 2
СОДЕРЖИМОЕ ВХОДНЫХ ФАЙЛОВ
Текст входного файла FTurAg.dat:
ИКС-тур
Москва
Виа-тревел
Ижевск
Зори-тур
Ижевск
Лаймен
Париж
Текст входного файла FKurorty.dat:
Россия
Сочи
Виа-тревел
Россия
Сочи
Зори-тур
Россия
Сочи
ИКС-тур
Россия
Ижевск
ИКС-тур
Россия
Ижевск
Виа-тревел
Франция
Марсель
Франция
Париж
Текст входного файла FOtely.dat:
Файр
Марсель
Корсика
Сочи
Лазурь
Сочи
Ижевск
Ижевск
Россия
Москва
Текст входного файла FAviaLines.dat:
1
Ижевск
Москва
ИКС-тур
1
Ижевск
Москва
Зори-Тур
2
Ижевск
Москва
Зори-Тур
1
Новосибирск
Марсель
Виа-тревел
2
Сочи
Марсель
Виа-тревел
3
Москва
Марсель
Виа-тревел
ПРИЛОЖЕНИЕ 3
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Назначение программы
Данная программа
- для данного ГОРОДА выдать список ТУРАГЕНТСТВ, предоставляющих путёвку в данный ОПТОВАЯ БАЗА данной СТРАНЫ и с расположением в данном ОТЕЛЕ;
- для данного ТУРАГЕНТСТВА выдать список АВИАРЕЙСОВ из данной СТРАНЫ в данный ГОРОД;
- для данного ТУРАГЕНТСТВА выдать список ОТЕЛЕЙ, расположенных в данном КУРОРТЕ;
- выдать список КУРОРТОВ в данной СТАНЕ;
- выдать список АВИАРЕЙСОВ из данного ГОРОДА;
- для данного КУРОРТА выдать список ОТЕЛЕЙ;
- для данного ГОРОДА выдать список ТУРАГЕНТСТВ;
- выдать список АВИАРЕЙСОВ из данного ГОРОДА в данный ОПТОВАЯ БАЗА.
Условия применения
Для работы с программой необходимо:
- накопитель на жестких или гибких магнитных дисках;
- компьютер, совместимый с IBM PC;
- монитор:
- свободная оперативная память не менее 2 760 Кб;
- операционная система Linux/
Запуск программы
Для запуска программы необходимо запустить исполняемый файл программы Touristagency.exe.
Сообщения оператору
В начале работы программы на монитор выводится основная форма программы (см. рис. П.3.1). Для выбора запроса необходимо нажать на соответствующую запросу кнопку.
Рабочая форма
Рис. П.3.1
Перед оператором могут возникнуть сообщения представленные на рис. П.3.2. и рис. П.3.3.
Сообщения оператору