headerphoto
Касса аэропорта

Касса аэропорта

Информация о каждом пассажире состоит из следующих полей : -Фамилия, имя, отчество; -Номер паспорта; -Пункт назначения; -Номер рейса.

Сведения о пассажирах сохраняются в файле airbase .dat ,состоящем из отдельных записей ,где одна запись хранит всю информацию об одном пассажире.

Программа содержит следующие процедуры и функции; -Продажа билета (регистрирует нового пассажира); -Найти пассажира; -Удалить пассажира; -Выход; Указанные процедуры и функции выбираются из меню. В пункте ПРОДАЖА БИЛЕТА - вводится Ф.И.О , номер паспорта , рейс, т.е регистрируется новый пассажир , информация о нем вносится в базу данных. В пункте НАЙТИ - выводится информация о пассажире. В пункте УДАЛИТЬ ПАССАЖИРА - по введенной Ф.И.О информация о данном пассажире удаляется из базы данных. ВЫХОД - выход из программы.

Руководитель курсовой работы Студент Составитель: Старший преподаватель ___________________________Ахмедханлы Д.М. Заведующий кафедрой ИиСУ __________________________Краснов С.В. Декан ФииТ _________________________________________Краснов С.В. Описание предметной области Ввод данных в программу осуществляется в диалоге по запросам программы.

Оператор программы передвигается по пунктам меню и инициирует запуск той или иной процедуры нажатием клавиш “ Enter ”, “стрелка вверх”, ”стрелка вниз”. Программа начинается с вывода меню на экран, меню состоит Меню состоит из семи пунктов, расположенных в следующей последовательности: · ОФОРМЛЕНИЕ НОГОГО ПАССАЖИРА · ВЫВЕСТИ СПИСОК ВСЕХ ПАССАЖИРОВ · УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕ · НАЙТИ ПАССАЖИРА · ОЧИСТИТЬ СПИСОК · ВЫХОД Употребление процедур пунктов меню.

Процедура “ВЫВЕСТИ СПИСОК ВСЕХ ПАССАЖИРОВ” используется для просмотра всех пассажиров всех рейсов.

Процедура “УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕ” используется для удаления пассажира.

Сначала вводится фамилия пассажира, которого необходимо удалить, фамилия вводиться с клавиатуры. Если такая фамилия есть, то программа спрашивает подтверждение для удаления “Пассажир найден, удалить его д/н” если будет нажата клавиша “д”, то пассажир будет удален из базы данных, если же “н”, то удаление будет отменено.

Процедура “НАЙТИ ПАССАЖИРА” используется для удобства поиска пассажира.

Фамилия вводится с клавиатуры. При нахождении фамилии пассажира выводятся его данные: фамилия, номер паспорта, номер рейса и направление. При не нахождении фамилии выводится на экран сообщение “Пассажир отсутствует!”. Процедура “ОЧИСТИТЬ СПИСОК” удаляет все фамилии из списка. При входе в эту процедуру появляется сообщение “Вы действительно хотите удалить базу данных о пассажирах (д/н)”, если будет нажата клавиша “д”, то база данных будет удалена, если же “н”, то удаление будет отменено.

Описание алгоритма задачи Сначала, подключаем модуль crt - позволяющий проще управлять режимами экрана, расширенными кодами клавиатуры и цветом.

Вводим константы stand – цвет невыделенного пункта меню и sel – цвет выделенного пункта меню, а так же n – количество пунктов. Затем идет описание записей файла « train . dat .»: pas , nomertown – переменные Ф.И.О пассажира и номер – направление поезда, имеющие строковый тип, pasp , nomertrain – переменные номера паспорта и номера поезда, имеющие целый тип.

Теперь идёт описание записей файла « railst . dat »: time , model , nrnap – время отхода, тип поезда, номер – направление, price , chpm – цена билета, число посадочных мест.

Глобальные переменные: массивы menu , menu 1 строкового типа с количеством элементов от 1 до n , хранят названия пунктов меню и подменю; переменная целого типа punkt обозначает номер выделенного пункта; символьная переменная ch выведенный символ; x и y целого типа - координаты первой строки меню; j , j 1 - параметры цикла; ff и w файловые переменные « airport . dat » и « airbase . dat » соответственно, аналогично buf и buv – переменные компонент файлов; dlprov , nrnap – переменная проверки и номер - направление; mas , mas 1 – массивы для “ tairport . dat ”, “ airbase . dat ”; символьная переменная k определяет условия да/нет в операторах if … then … else ; f –флажок.

Программа содержит 14 процедур. Две из них « menutoscr » и « menutoscr 1» отвечают за вывод меню и подменю на экран.

Процедуры содержат описания одной локальной переменной i параметра цикла.

Начинаются процедуры с очистки экрана – clrscr . Далее идет цикл for … to … do , выводящий меню на экран. В циклах, с помощью процедуры gotoxy , курсор каждый раз перемещается на позицию вниз, где и выводится заголовок соответствующих пунктов меню и подменю.

Вводим переменную textattr, которая отвечает за цвет фона и символов.

Присваиваем ей значение константы sel, то есть задаем цвет выделенного пункта и переводим курсор на текущий пункт.

Выделяем его и задаем цвет невыделенного пункта.

Процедура « new _ pass » вводит нового пассажира.

Начинаем процедуру с описания локальных переменных.

Обнуляем локальный флажок mozno , потом происходит очистка экрана – clrscr . Открываем для записи данных нового пассажира файл « airport . dat ». Здесь вводиться: Ф.И.О, номер паспорта.

Процедура « maspas » - Предназначена для формирования из пассажиров массива, для последующего их удаления.

Открываем уже существующий файл train . dat Присваиваем переменной j -1. А в цикле постусловия repeat … until формируем из пассажиров массив, который нужен для удаления пассажиров.

Процедура « delete _ pass » начинается с очистки экрана – clrscr , обнуляем флажок. Потом вводится фамилия, которую нужно удалить. В цикле repeat … until оператор условия if … then выполняется (пассажир найден), то происходит удаление пассажира, если пассажир был успешно удалён, то появляется сообщение- “Пассажир”----” был удалён!” и флажку присваивается 1. Иначе присваивается-2. В следующем if … then файл обновляется, и массив без пассажира записывается в файл. Далее создаётся новый файл с этим же именем. В цикле с постусловием repeat … until переменной buf присваивается i –тое значение элемента массива. Файл закрывается. Когда флажок не равняется 1, то в цикле if … then печатается сообщение “Пассажир не найден!”. Если же флажок равняется 2, то печатается сообщение ”Удаление отменено!”. Delay - используется для задержки сообщения об удалении.

Процедура « search _ pass » предназначена для поиска пассажира в базе данных.

Начинаем процедуру с описания локальных переменных, потом происходит очистка экрана – clrscr . Используем оператор reset для открытия уже существующего файла. В цикле repeat … until читается информация. В условном операторе if … then читается введённые Ф.И.О, и распечатываются данные о конкретном пассажире (т.е. Ф.И.О, ном. паспорта, ном. рейса - пункт назначения). Закрываем файл. После этого флажку присваивается значение-1. Если флажок равняется -0 , то печатается сообщение “Пассажир не найден!” Процедура « new _ airbase » производит полную очистку базы данных о пассажирах.

Начинаем процедуру с очистки экрана – clrscr . В операторе if … then задаём условие очистки базы данных.

Выводим сообщение “Вы действительно хотите очистить базу данных о пассажирах (д/н)?-”. Соответственно, переменной k присваивается одно из значений «д» или «н». При k = «д», с помощью процедур rewrite , данные в файлах удаляются. В противном случае выход из процедуры. После этого выводится ее на экран сообщение- “База Аэропорта очищена!”. Процедура « search _ base » предназначена для поиска рейса в базе данных.

Начинаем процедуру с очистки экрана – clrscr . Вводится номер рейса и направление через тире.

Используем оператор reset для открытия уже существующего файла. В цикле repeat … until читается информация. В условном операторе if … then читается введённый номер рейса и направление, и распечатываются данные об рейсе (т.е номер рейса - направление, время отхода, цена билета (в руб.), тип поезда). Закрываем файл. После этого флажку присваивается значение-1. Если флажок равняется -0 , то печатается сообщение “Рейс не найден!” Процедура « new _ base » производит полную очистку базы данных о рейсах.

Начинаем процедуру с очистки экрана – clrscr . В операторе if … then задаём условие очистки базы данных о рейсах.

Выводим сообщение “Вы действительно хотите очистить базу данных расписания (д/н)?-“. Соответственно, переменной k присваивается одно из значений «д» или «н». При k = «д», с помощью процедур rewrite , данные в файлах удаляются. В противном случае выход из процедуры. После этого выводится ее на экран сообщение- “База расписания Аэропорта очищена!”. Основная программа так же начинается с очистки экрана – clrscr . Определяем имена файлов « Airport . dat », « Airbase . dat » и связываем их с файловыми переменными процедурой assign . Задаём названия пунктов меню.

Переменной номера выделенного пункта присваиваем значение единицы.

Определяем координаты первой строки меню.

Переменной цвета символов и фона присваиваем значение невыделенного пункта.

Обращаемся к процедуре menutoscr . Входим в цикл передвижения по меню repeat … until ch = chr (27) (до обращения к пункту «Выход»). В цикле считываем код нажатой клавиши. С помощью условного оператора входим в оператор выбора кодов клавиш. Если нажата стрелка вниз, то с помощью процедуры gotoxy , оператора write , констант sel и stand выделяем необходимый пункт меню.

Аналогичные операции проводим при нажатии стрелки вверх. При нажатии Enter в операторе выбора открывается процедура необходимого пункта. В конце цикла обращаемся к процедуре Menutoscr . Аналогичные операции выполняются и для процедуры Menutoscr 1. В конце программы закрываем файлы « Airport . dat » и « Airbase . dat ». Приложения Листинги программы Распечатка результатов решения задачи по данным контрольного примера program kursovik; uses crt; type airport=record fio,city:string[30]; pasp,nomerreisa:string[6]; end; airbase=record time,model,kuda:string[15]; price,klass,numreis:integer; end ; const norm =$20;цвет невыделенного пункта sel =$50; цвет выделенного пункта n=7; var menu,menu1:array[1..n] of string[30]; название пунктов меню mas:array[1..50] of airport; mas1:array[1..50] of airbase; punkt : integer ;номер выделенного пункта ch : char ;введенный символ j , j 1: integer ;переменная содержащая общее число пассажиров, число рейсов x , y , n 1: integer ;координаты первой строки меню procedure Menutoscr;вывод меню на экран var i:integer; begin punkt:=1; clrscr; for i:=1 to n do begin gotoxy(x,y+i); writeln(menu[i+1]); end ; textattr -предопределенная переменная,отвечающая за цвет фона и символов textattr := sel ; gotoxy(x,y+punkt-1); write ( menu [ punkt ]); выделим строку меню textattr:=norm; end; procedure Menutoscr1;вывод меню на экран var i:integer; begin punkt:=1; clrscr; for i:=1 to n1 do begin gotoxy(x,y+i); writeln(menu1[i+1]); end ; textattr -предопределенная переменная,отвечающая за цвет фона и символов textattr := sel ; gotoxy(x,y+punkt-1); write ( menu 1[ punkt ]); выделим строку меню textattr:=norm; end; procedure new_pass; var ff:file of airport; buf:airport; ch,k:char; begin clrscr; assign(ff,'airport.dat'); reset(ff); seek(ff,filesize(ff)); writeln (' 'Оформление нового пассажира''); writeln (' Введите фио--------------'); writeln (' Введите номер паспорта---'); writeln (' Введите пункт назначения-'); writeln (' Введите номер рейса------'); writeln (' Подтверждение д/н--------'); with buf do begin gotoxy(29,2);readln(fio); gotoxy(29,3);readln(pasp); gotoxy(29,4);readln(city); gotoxy(29,5);readln(nomerreisa); end; gotoxy(29,6);readln(k); if (k='д') or (k='Д') then begin clrscr; write(ff,buf); gotoxy (30,12); write ('Пассажир записан в базу данных!'); end else begin clrscr; gotoxy (30,12); write ('Запись в базу отменена!'); end; delay(9999); delay(5000); until (ch=chr(162)) and (ch=chr(130)); close(ff); end; procedure print_pass; var ff:file of airport; buf:airport; ch,k:char; et:integer; begin clrscr; assign(ff,'airport.dat'); reset ( ff ); writeln (' Список пассажиров:'); et:=1; repeat read(ff,buf); writeln(' -',buf.fio); if et=23 then readln; et:=et+1; until eof(ff); close(ff); readln; end; procedure maspas; var buf:airport; ff:file of airport; begin assign(ff,'airport.dat'); reset(ff); j:=1; repeat read(ff,buf); mas[j]:=buf; j:=j+1; until eof(ff); j:=j-1; close(ff); end; procedure delete_pass; var ff:file of airport; i,i1,f:integer; buf:airport; k:char; name:string[30]; begin clrscr; writeln (' Удалени e информации о пассажире:'); writeln (' Введите Ф.И.О. пассажира, которого хотите удалить из базы данных'); write(' -');readln(name); i:=1; f:=0; repeat if mas[i].fio=name then begin gotoxy (30,12); write ('Пассажир найден, удалить его (д/н)-'); readln(k); if (k='д') or (k='Д') then begin for i1:=i to j-1 do mas[i1]:=mas[i1+1]; j:=j-1; gotoxy(30,12); write ('Пассажир-'', name ,''-был удалён! '); f:=1; end else begin i:=j; f:=2; end; end; i:=i+1; until (i=j+1) or (f=1); if f=1 then begin assign(ff,'airport.dat'); rewrite(ff); i:=1; repeat buf:=mas[i]; write(ff,buf); i:=i+1; until i=j+1; close(ff); end else begin gotoxy(30,12); if f=0 then writeln('Пассажир не найден! '); end; if f=2 then writeln('Удаление отменено! '); delay(9999); delay(5000); end; procedure search_pass; var ff:file of airport; i,i1,f:integer; buf:airport; k:char; name:string[30]; begin clrscr; writeln (' Поиск информации о пассажире:'); writeln (' Введите Ф.И.О. пассажира, которого хотите найти'); write(' -');readln(name); i:=1; f:=0; assign(ff,'airport.dat'); reset(ff); repeat read(ff,buf); if buf.fio=name then begin clrscr ; writeln (' Информация о пассажире:'); writeln(' Ф.И.О.-----------'); writeln (' Номер паспорта---'); writeln (' Пункт назначения-'); writeln (' Номер рейса------'); gotoxy(22,2);writeln(buf.fio); gotoxy(22,3);writeln(buf.pasp); gotoxy(22,4);writeln(buf.city); gotoxy(22,5);writeln(buf.nomerreisa); f:=1; readln; end; until eof(ff); close(ff); if f=0 then begin writeln ('Пассажир не найден!'); delay(9999); delay(5000); end; end; procedure new_airport; var ff:file of airport; k:char; begin clrscr; gotoxy(36,12); textbackground(red); textcolor(blink); writeln('ВНИМАНИЕ!'); textattr:=norm; gotoxy(10,13); write ('Вы действительно хотите очистить базу данных о пассажирах (д/н)?-'); readln(k); if (k='д') or (k='Д') then begin clrscr; assign(ff,'airport.dat'); rewrite(ff); gotoxy(30,12); writeln ('База АЭРОПОРТА очищена!'); close(ff); delay(9999); delay(5000); end; end; procedure new_reis; var ff:file of airbase; buf:airbase; ch,k:char; begin clrscr; assign(ff,'airbase.dat'); reset(ff); seek(ff,filesize(ff)); writeln (' 'Расписание вылетов:''); writeln (' Номер рейса--------------'); writeln (' Направление--------------'); writeln (' Время вылета(моск)-------'); writeln (' Цена билета(руб)---------'); writeln (' Тип самолета-------------'); writeln (' Класс(1 или 2)-----------'); writeln (' Подтверждение д/н--------'); with buf do begin gotoxy(29,2);readln(numreis); gotoxy(29,3);readln(kuda); gotoxy(29,4);readln(time); gotoxy(29,5);readln(price); gotoxy(29,6);readln(model); gotoxy(29,7);readln(klass); end; gotoxy(29,8);readln(k); if (k='д') or (k='Д') then begin clrscr; write(ff,buf); gotoxy (30,12); write ('Рейс записан в базу данных!'); end else begin clrscr; gotoxy (30,12); write ('Запись в базу отменена!'); end; delay(9999); delay(5000); until (ch=chr(162)) and (ch=chr(130)); close(ff); end; procedure print_reis; var ff:file of airbase; buf:airbase; ch,k:char; et:integer; begin clrscr; assign(ff,'airbase.dat'); reset ( ff ); writeln (' Расписание вылетов(время московское):'); et:=1; repeat read(ff,buf); writeln(' Рейс-',buf.numreis,': Самара-',buf.kuda,'; ',buf.time,'; Стоимость билета:',buf.price,'(рублей)'); if et=23 then readln; et:=et+1; until eof(ff); close(ff); readln; end; procedure masbase; var buf:airbase; ff:file of airbase; begin assign(ff,'airbase.dat'); reset(ff); j1:=1; repeat read(ff,buf); mas1[j1]:=buf; j1:=j1+1; until eof(ff); j1:=j1-1; close(ff); end; procedure delete_base; var ff:file of airbase; i,i1,f:integer; buf:airbase; k:char; nreis:integer; begin clrscr; writeln (' Удаление рейса из расписания:'); writeln (' Введите номер рейса,который хотите удалить из расписания'); write(' -');readln(nreis); i:=1; f:=0; repeat if (mas1[i].numreis=nreis) then begin gotoxy (30,12); write ('Рейс найден, удалить его (д/н)-'); readln(k); if (k='д') or (k='Д') then begin for i1:=i to j1-1 do mas1[i1]:=mas1[i1+1]; j1:=j1-1; gotoxy(30,12); write ('Рейс номер-'', nreis ,''-был удалён! '); f:=1; end else begin i:=j; f:=2; end; end; i:=i+1; until (i=j1+1) or (f=1); if f=1 then begin assign(ff,'airbase.dat'); rewrite(ff); i:=1; repeat buf:=mas1[i]; write(ff,buf); i:=i+1; until i=j1+1; close(ff); end else begin gotoxy(30,12); if f=0 then writeln('Рейс не найден! '); end; if f=2 then writeln('Удаление отменено! '); delay(9999); delay(5000); end; procedure search_base; var ff:file of airbase; i,i1,f:integer; buf:airbase; k:char; nreis:integer; begin clrscr; writeln (' Поиск рейса в расписании:'); writeln (' Введите номер рейса, который хотите найти'); write(' -');readln(nreis); i:=1; f:=0; assign(ff,'airbase.dat'); reset(ff); repeat read(ff,buf); if buf.numreis=nreis then begin clrscr; writeln(' Номер рейса--------------'); writeln (' Направление--------------'); writeln (' Время вылета(моск)-------'); writeln (' Цена билета(руб)---------'); writeln (' Тип самолета-------------'); writeln (' Класс(1 или 2)-----------'); gotoxy(29,1);writeln(buf.numreis); gotoxy(29,2);writeln(buf.kuda); gotoxy(29,3);writeln(buf.time); gotoxy(29,4);writeln(buf.price); gotoxy(29,5);writeln(buf.model); gotoxy(29,6);writeln(buf.klass); f:=1; readln; end; until eof(ff); close(ff); if f=0 then begin writeln ('Рейс не найден!'); delay(9999); delay(5000); end; end; procedure new_base; var ff:file of airbase; k:char; begin clrscr; gotoxy(36,12); textbackground(red); textcolor(blink); writeln('ВНИМАНИЕ!'); textattr:=norm; gotoxy(10,13); write ('Вы действительно хотите очистить базу данных расписания (д/н)?-'); readln(k); if (k='д') or (k='Д') then begin clrscr; assign(ff,'airbase.dat'); rewrite(ff); gotoxy(30,12); writeln ('База расписания АЭРОПОРТА очищена!'); close(ff); delay(9999); delay(5000); end; end; основная программа Begin clrscr ; menu [1]:='ОФОРМЛЕНИЕ НОВОГО ПАССАЖИРА'; menu [2]:='ВЫВЕСТИ СПИСОК ПАССАЖИРОВ'; menu [3]:='УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕ'; menu [4]:='НАЙТИ ПАССАЖИРА'; menu [5]:='ОЧИСТИТЬ СПИСОК'; menu [6]:='ВЫХОД'; menu [7]:='ПРОСМОТР БАЗЫ'; menu 1[1]:='ЗАПИСЬ НОВОГО РЕЙСА'; menu 1[2]:='ПОКАЗАТЬ РАСПИСАНИЕ'; menu 1[3]:='УДАЛИТЬ РЕЙС'; menu 1[4]:='ПОИСК РЕЙСА'; menu 1[5]:='ОЧИСТИТЬ РАСПИСАНИЕ'; menu 1[6]:='ВЕРНУТЬСЯ В ГЛАВНОЕ МЕНЮ'; punkt:=1;x:=30;y:=8;textattr:=norm;n1:=6; Menutoscr; repeat ch:=Readkey; if ch=chr(0) then begin ch:=ReadKey; case ch of chr(80): стрелка вниз if punkt begin gotoxy(x,y+punkt-1); write(menu[punkt]); punkt:=punkt+1; textattr:=sel; gotoxy(x,y+punkt-1); write(menu[punkt]); textattr:=norm; end; chr(72): стрелка вверх if (punkt 1) then begin gotoxy(x,y+punkt-1); write(menu[punkt]); punkt:=punkt-1; textattr:=sel; gotoxy(x,y+punkt-1); write(menu[punkt]); textattr:=norm; end; end; case of end else if ch=chr(13) then нажата клавиша begin case punkt of 1:new_pass; 2:print_pass; 3: begin maspas; delete_pass; end; 4:search_pass; 5:new_airport; 6:ch:=chr(27); 7:begin Menutoscr1; repeat ch:=Readkey; if ch=chr(0) then begin ch:=ReadKey; case ch of chr(80): стрелка вниз if punkt chr (72): стрелка вверх if (punkt 1) then begin gotoxy(x,y+punkt-1); write(menu1[punkt]); punkt:=punkt-1; textattr:=sel; gotoxy(x,y+punkt-1); write(menu1[punkt]); textattr:=norm; end; end; case of end else if ch=chr(13) then нажата клавиша begin case punkt of 1:new_reis; 2:print_reis; 3: begin masbase; delete_base; end; 4:search_base; 5:new_base; 6:ch:=chr(162); end; case of menutoscr1; end; until (ch=chr(27)) or (ch=chr(162)) or(ch=chr(130));27код end; case of end; Menutoscr; end; until ch=chr(27);27код End. Оформление нового пассажира Продажа билетов Вывести список всех пассажиров Удалить информацию о пассажире Найти пассажира Очистить список Выход Продажа билетов Расписание отходов поездов: {ВЫВОДИТ РАСПИСАНИЕ} “Оформление нового пассажира”

Ведите Ф. И. О Пенкин И.В. Петров П.П Иванов И.И.
Номер паспорта 564743 812763 247398
Рейс 123 456 789
Подтверждение д/н Д Д Д
Замечание: Пассажиров необходимо вводить по очереди.


Подобные работы

Создание текстового редактора в Turbo Pascal

echo "Создать программу, обеспечивающую: 1. 2. 3. 4. 5. Программа должна быть написана на Turbo Pascal в текстовом режиме с использованием любых модулей, которые необходимы для её реализации (допускаю

Программирование и алгоритмические языки

echo "Вищевикладене може обгрунтовано свідчити про те, що програма виконана вірно. Опис формату підпрограми функції Підпрограма функція використовується, якщо в програмі виявляються однотипні ділянки,

Касса аэропорта

echo "Информация о каждом пассажире состоит из следующих полей : -Фамилия, имя, отчество; -Номер паспорта; -Пункт назначения; -Номер рейса. Сведения о пассажирах сохраняются в файле airbase .dat ,сос

Работа с Базами данных в Delphi

echo "Причем разработчик получает в свое распоряжение мощные средства отладки (вплоть до пошагового выполнения команд процессора), удобную контекстную справочную систему (в том числе и по Microsoft AP

Программное сопровождение практических работ по курсу "Конструирование и проектирование одежды"

echo "Исходя из поставленных задач, анализ литературы по конструированию и проектированию одежды показывает что: - источник [19] содержит современные методы инженерного проектирования одежды из различ