Автор: Пользователь скрыл имя, 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.2. В начале исполнения программы необходимо ввести с клавиатуры запрос, конкретизирующий условия решения задачи (см. 1.2).
В
ходе испытаний (тестирования и контрольных
примеров исполнения) программы решения
задачи «Получение сведений о наличии
билетов на рейсы Аэрофлота» использовался
тестовый файл, текст которого приведен
в приложении 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('└────────┴───────────
Информация о работе Получение сведений о наличии билетов аэрофлот