Получение сведений о наличии билетов аэрофлот

Автор: Пользователь скрыл имя, 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), а также запросы для разных вариантов решения задачи: 

  1. Пункт назначения: москва

     Время вылета: 01.00

  1. Пункт назначения: москва

     Время вылета: 23.59

  1. Пункт назначения: с.пЕТЕрБург

     Время вылета: 13.00

  1. Пункт назначения: _
  2. Пункт назначения: лондон

     Время вылета: 10.00

  1. Пункт назначения: москва

     Время вылета: time

  1. Пункт назначения: москва

     Время вылета: 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('Для продолжения ввода данных  нажмите Enter');

      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('└────────┴───────────────────────┴──────────┴──────────┴───────────┘');

Информация о работе Получение сведений о наличии билетов аэрофлот