Получение сведений о наличии билетов аэрофлот
Автор: Пользователь скрыл имя, 17 Ноября 2010 в 19:19, курсовая работа
Описание работы
В настоящей пояснительной записке приведены результаты разработки программы решения задачи «Получение сведений о наличии билетов на рейсы Аэрофлота», выполненной в соответствии с заданием по курсовой работе по дисциплине «Программирование» – постановка указанной задачи, проектные решения и программа (на языке Турбо-Паскаль), результаты испытания (тестирования) программы.
Содержание
1. Описание постановки задачи 4
1.1. Характеристика задачи 4
1.2. Исходные данные 4
1.3. Результаты решения 4
2. Описание проектных решений 5
2.1. Функциональная структура задачи, программы 5
2.2. Описание алгоритма задачи 7
3. Описание программы 14
3.1. Структура программы 14
3.2. Текст программы 14
3.3. Исполнение программы 14
4. Описание результатов испытаний программы 16
ПРИЛОЖЕНИЯ 17
Работа содержит 1 файл
Курсовая.doc
— 154.00 Кб (Скачать)До начала исполнения программы на магнитном диске должен быть сформирован файл с исходными данными, структура, содержание и имя которого описаны в 1.2. В начале исполнения программы необходимо ввести с клавиатуры запрос, конкретизирующий условия решения задачи (см. 1.2).
4. Описание результатов испытаний программы
В
ходе испытаний (тестирования и контрольных
примеров исполнения) программы решения
задачи «Получение сведений о наличии
билетов на рейсы Аэрофлота» использовался
тестовый файл, текст которого приведен
в приложении 2 (программы создания и печати
тестового файла приведен в приложении
3), а также запросы для разных вариантов
решения задачи:
- Пункт назначения: москва
Время вылета: 01.00
- Пункт назначения: москва
Время вылета: 23.59
- Пункт назначения: с.пЕТЕрБург
Время вылета: 13.00
- Пункт назначения: _
- Пункт назначения: лондон
Время вылета: 10.00
- Пункт назначения: москва
Время вылета: time
- Пункт назначения: москва
Время
вылета: 30.00
После устранения ошибок в программе для указанных исходных данных (контрольных примеров) получены правильные результаты решения задачи (приложение 4), что свидетельствует о правильности разработанной программы.
ПРИЛОЖЕНИЯ
Приложение 1
Исходный
текст программы решения задачи
«Получение сведений о наличии билетов
на рейсы Аэрофлота»
Основная
программа
Program P_AEROFLOT;
uses U1,U2,U3,U4;
var city,time:string; e:boolean;
result:mas; m:integer;
Begin
InA(city,time,e);
if e=false then writeln('Ошибка при вводе запроса') else begin
GetR(city,time,result,m);
if m=0 then writeln('Нет сведений по запросу') else begin
if m>1 then SortR(result,m);
OutR(city,time,result,m);
end;
end;
Readln;
End.
Модуль
U1
Unit U1;
Interface
Function UpcaseR(city:string):string;
Function VerA2(time:string):boolean;
Procedure InA(var city,time:string; var e:boolean);
Implementation
Function UpcaseR(city:string):string;
const AS='
AB='
var n,i:byte; a:string;
Begin
a:='';
for i:=1 to length(city) do begin
n:=Pos(city[i],AS);
if n>0 then a:=a+copy(AB,n,1) else a:=a+city[i];
end;
UpcaseR:=a;
End;
Function VerA2(time:string):boolean;
var v:string; dv,code:integer; c:boolean;
Begin
c:=false;
if length(time)=5 then
if (time[3]='.') then begin
v:=copy(time,1,2); val(v,dv,code);
if (code=0)and(dv>=00)and(dv<=23)
then begin
v:=copy(time,4,2); val(v,dv,code);
if (code=0)and(dv>=00)and(dv<=59) then c:=true;
end;
end;
VerA2:=c;
End;
Procedure InA(var city,time:string; var e:boolean);
Begin
Write ('Введите пункт назначения: '); readln(city);
if city='' then begin
writeln ('Вы не ввели пункт назначения!');
e:=false
end else begin
city:=UpcaseR(city);
write ('Введите время вылета (чч.мм): '); readln(time);
e:=VerA2(time);
end;
End;
End.
Модуль
U2
Unit U2;
Interface
uses u4;
Procedure GetR(city,time:string; var result:mas; var m:integer);
Procedure SortR(var result:mas; m:integer);
Implementation
Procedure GetR(city,time:string; var result:mas; var m:integer);
Var F:file of zap; a:zap;
Begin
Assign(F,'AEROFLOT.dat');
Reset(F);
m:=0;
While not eof (F) do begin
Read (F, a);
If (a.pn=city) and (a.vv>=time) and (a.mesta>0) then begin
m:=m+1;
result[m]:=a;
end;
end;
Close (F);
End;
Procedure SortR(var result:mas; m:integer);
var i,j:integer; a:zap;
Begin
For i:=1 to (m-1) do
For j:=i+1 to m do
if result[i].vv>result[j].vv then begin
a:=result[i]; result[i]:=result[j]; result[j]:=a;
end;
End;
End.
Модуль
U3
Unit U3;
Interface
uses crt,U4;
Procedure OutR(city,time:string; result:mas; m:integer);
Implementation
Procedure OutR(city,time:string; result:mas; m:integer);
var i:integer;
Begin
clrscr;
Writeln (' Сведения о рейсах Аэрофлота ');
Writeln (' Пункт назначения: ',city);
Writeln (' Время вылета после: ',time);
Writeln ('┌───────┬──────────┬────────
Writeln
('│ Номер │ Время │ Время │ Количество │');
Writeln
('│ рейса │ вылета │ прибытия │ свободных мест │');
Writeln ('├───────┼──────────┼────────
for i:=1 to m do
Writeln
('│',result[i].nomer:5,' │',result[i].vv:6,' │',
result[i].vp:6,'
│',result[i].mesta:3, │');
Writeln ('└───────┴──────────┴────────
End;
End.
Модуль U4
Unit U4;
Interface
Type zap=record
nomer:integer;
pn:string[25];
vv:string[5];
vp:string[5];
mesta:integer
end;
mas=array
[1..16] of zap;
Implementation
End.
Приложение 2
Текст тестового
файла на магнитном диске
| номер
рейса |
пункт
назначения |
время
вылета |
время прибытия | свободных мест |
| 1010
1011 1012 1013 1014 1101 1102 1103 1500 1501 2010 2011 2100 2200 |
МОСКВА
МОСКВА МОСКВА МОСКВА МОСКВА С.ПЕТЕРБУРГ С.ПЕТЕРБУРГ С.ПЕТЕРБУРГ БАКУ БАКУ ЯКУТСК ЯКУТСК САРАНСК ВОЛОГДА |
06.00
10.00 14.00 17.00 21.00 07.00 12.00 18.00 11.00 20.00 06.00 17.00 13.00 12.00 |
07.00
11.00 15.00 18.00 22.00 07.40 12.40 18.40 13.00 22.00 12.00 23.00 16.00 16.00 |
40
40 60 30 30 15 40 50 60 70 60 55 70 50 |
Приложение 3
Текст программ
создания и печати тестового файла
Program CREATE;
Uses CRT,U1,U4;
Var AF:file of ZAP;
x:zap;
k,l:integer;
name:string;
Begin
clrscr;
k:=0;
assign(AF,'AEROFLOT.dat');
rewrite(AF);
writeln('Для ввода данных нажмите Enter');
writeln('Для окончания работы нажмите *');
while not (readkey='*') do begin
write('Номер рейса: ');
readln(x.nomer);
write('Пункт назначения: ');
readln(x.pn);
x.pn:=UPCASER(x.pn);
write('Время вылета хх.хх: ');
readln(x.vv);
write('Время прибытия хх.хх: ');
readln(x.vp);
write('Количество свободных мест: ');
readln(x.mesta);
k:=k+1;
write(AF,x);
writeln;
writeln('Для продолжения
writeln('Для окончания работы
writeln;
end;
clrscr;
writeln('В файле ',k:3,' записей');
reset(AF);
writeln('┌────────┬───────────
writeln('│ номер │ пункт │ время │ время │ свободных │');
writeln('│ рейса │ назначения │ вылета │ прибытия │ мест │');
writeln('├────────┼───────────
while not eof(AF) do begin
read(AF,x);
with x do
writeln('│',nomer:7,' │',pn:22,' │',vv:9,' │',vp:9,' │',mesta:10,' │');
end;
writeln('└────────┴───────────