Касса аэропорта
Волжский ниверситет имени В.Н. Татищева
Кафедра Информатика и системы правления
Специальность: 220100 Вычислительные машины, комплексы системы и сети
Задание
на курсовой проект по дисциплине
Основы технологии программирования
Студенту
Группа
Тема проекта
Календарный график задания
Содержание задания
При продаже билетов регистрируют пассажиров.
Информацию о каждом пассажире вводится в диалоге по запросам программы.
Информация о каждом пассажире состоит из следующих полей :
-Фамилия, имя,
отчество;
-Номер паспорта;
-Пункт назначения;
-Номер рейса.
Сведения о пассажирах сохраняются в файле airbase.dat
,состоящем из
отдельных записей,где одна запись хранит всю информацию об одном пассажире.
Программа содержит следующие процедуры и функции;
-Продажа билета
(регистрирует нового пассажира);
-Найти пассажира;
-Удалить пассажира;
-Выход;
Указанные процедуры и функции выбираются из меню.
В пункте ПРОДАЖА БИЛЕТА - вводится Ф.И.О, номер паспорта, рейс, т.е регистрируется новый
пассажир, информация о нем вносится в базу данных.
В пункте НАЙТИ -
выводится информация о пассажире.
В пункте ДАЛИТЬ ПАССАЖИРА - по введенной Ф.И.О информация о данном пассажире даляется из базы данных.
ВЫХОД - выход из программы.
Руководитель курсовой работы
Студент
Составитель:
Старший преподаватель Ахмедханлы Д.М.
Заведующий кафедрой ИиСУ Краснов С.В.
Декан ФииТ Краснов С.В.
Описание предметной области
Ввод данных в программу осуществляется в диалоге по запросам программы. Оператор программы передвигается по пунктам меню и инициирует запуск той или иной процедуры нажатием клавиш УEnterФ, стрелка вверх, Фстрелка вниз.
Программа начинается с вывода меню на экран, меню состоит
Меню состоит из семи пунктов, расположенных в следующей последовательности:
ОФОРМЛЕНИЕ НОГОГО ПАССАЖИРА
ВЫВЕСТИ СПИСОК ВСЕХ ПАССАЖИРОВ
УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕ
НАЙТИ ПАССАЖИРА
ОЧИСТИТЬ СПИСОК
ВЫХОД
Употребление процедур пунктов меню.
Процедура ВЫВЕСТИ СПИСОК ВСЕХ ПАССАЖИРОВФ используется для просмотра всех пассажиров всех рейсов.
Процедура УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕФ используется для даления пассажира. Сначала вводится фамилия пассажира, которого необходимо далить, фамилия вводиться с клавиатуры. Если такая фамилия есть, то программа спрашивает подтверждение для даления Пассажир найден, далить его д/н если будет нажата клавиша д, то пассажир будет дален из базы данных, если же н, то даление будет отменено.
Процедура НАЙТИ ПАССАЖИРАФ используется для добства поиска пассажира. Фамилия вводится с клавиатуры. При нахождении фамилии пассажира выводятся его данные: фамилия, номер паспорта, номер рейса и направление. При не нахождении фамилии выводится на экран сообщение Пассажир отсутствует!Ф.
Процедура ОЧИСТИТЬ СПИСОКФ даляет все фамилии из списка. При входе в эту процедуру появляется сообщение Вы действительно хотите далить базу данных о пассажирах (д/н)Ф,
если будет нажата клавиша д, то база данных будет далена, если же н, то даление будет отменено.
Описание алгоритма задачи
Сначала, подключаем модуль
Вводим константы
Затем идет описание записей файла л
Теперь идёт описание записейа файла railst.dat:
Глобальные переменные: массивы
Программа содержит 14
процедур.
Две из них л
В циклах, с помощью процедуры
Вводим переменную textattr,
которая отвечает за цвет фона и символов. Присваиваем ей значение константы
sel, то есть задаем цвет выделенного пункта и переводим курсор на текущий пункт. Выделяем его и задаем цвет невыделенного пункта.
Процедура л
Процедура л
Процедура delete<_
Когда флажок не равняется 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;
ar
menu,menu1:array[1..n] of string[30]; название пунктов меню
mas:array[1..50] of airport;
mas1:array[1..50] of airbase;
punkt:
ch:
j,
число рейсов
x,
procedure Menutoscr;вывод меню на экран
ar
begin
punkt:=1;
clrscr;
for i:=1 to n do
begin
gotoxy(x,y+i);
writeln(menu[i+1]);
end;
textattr<-предопределенная переменная,отвечающая за цвет фона
и символов
textattr:=
gotoxy(x,y+punkt-1);
write(
textattr:=norm;
end;
procedure Menutoscr1;вывод меню на экран
ar
begin
punkt:=1;
clrscr;
for i:=1 to n1 do
begin
gotoxy(x,y+i);
writeln(menu1[i+1]);
end;
textattr<-предопределенная переменная,отвечающая за цвет фона
и символов
textattr:=
gotoxy(x,y+punkt-1);
write(
textattr:=norm;
end;
procedure new_pass;
ar
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();
delay(5);
until
(ch=chr(162)) and (ch=chr(130));
close(ff);
end;
procedure print_pass;
ar
ff:file of airport;
buf:airport;
ch,k:char;
et:integer;
begin
clrscr;
assign(ff,'airport.dat');
reset(
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;
ar
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;
ar
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;
repeat
if mas[i].fio=name then
begin
gotoxy(30,12);
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('Пассажир-"',
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();
delay(5);
end;
procedure search_pass;
ar
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();
delay(5);
end;
end;
procedure new_airport;
ar
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();
delay(5);
end;
end;
procedure new_reis;
ar
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();
delay(5);
until
(ch=chr(162)) and (ch=chr(130));
close(ff);
end;
procedure print_reis;
ar
ff:file of airbase;
buf:airbase;
ch,k:char;
et:integer;
begin
clrscr;
assign(ff,'airbase.dat');
reset(
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;
ar
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;
ar
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);
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('Рейс номер-"',
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();
delay(5);
end;
procedure search_base;
ar
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();
delay(5);
end;
end;
procedure new_base;
ar
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();
delay(5);
end;
end;
основная программа
Beginа
menu[1]:='ОФОРМЛЕНИЕ НОВОГО ПАССАЖИРА';
menu[2]:='ВЫВЕСТИ СПИСОК ПАССАЖИРОВ';
menu[3]:='УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕ';
menu[4]:='НАЙТИ ПАССАЖИРА';
menu[5]:='ОЧИСТИТЬ СПИСОК';
menu[6]:='ВЫХОД';
menu[7]:='ПРОСМОТР БАЗЫ';
menu1[1]:='ЗАПИСЬ НОВОГО РЕЙСА';
menu1[2]:='ПОКАЗАТЬ РАСПИСАНИЕ';
menu1[3]:='УДАЛИТЬ РЕЙС';
menu1[4]:='ПОИСК РЕЙСА';
menu1[5]:='ОЧИСТИТЬ РАСПИСАНИЕ';
menu1[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<n 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;
chr(72):
стрелка вверх
if (punkt<=n) and (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а нажата клавиша <Enter>
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<n1 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;
chr(72):
стрелка вверх
if (punkt<=n1) and (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а нажата клавиша <Enter>
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код <Esc>
end;
case of
end;
Menutoscr; end;
until
ch=chr(27);27код <Esc>
End.
Оформление нового пассажира
Продажа билетов
Вывести список всех пассажиров
Удалить информацию о пассажире
Найти пассажира
Очистить список
Выход
Продажа билетов
Расписание отходов поездов:
{ВЫВОДИТ РАСПИСАНИЕ}
Оформление нового пассажира
Ведите Ф. И. О
Пенкин И.В.
Петров П.П
Иванов И.И.
Номер
паспорта
564743
812763
247398
Рейс
123
456
789
Подтверждение
д/н
Д
Д
Д
Замечание:
Пассажиров необходимо вводить по очереди.
Вывести списока всех пассажиров
Продажа билетов
Вывести список всех пассажиров
Удалить информацию о пассажире
Найти пассажира
Очистить список
Выход
Ф. И. О.
Пенкин
И.В.
Петров П.П.
Иванов И.И.
Удалить информацию о пассажире
Продажа билетов
Вывести список всех пассажиров
Удалить информацию о пассажире
Найти пассажира
Очистить список
Выход
Введите Ф.И.О пассажира, которого хотите удалить:
Пенкин И.В.
Список пассажиров после даления:
Ф. И. О.
Петрова П.П.
Иванов
И.И
Номер
паспорта
812763
247398
Номер рейса
Подтверждение
д/н
Д
Д
Продажа билетов
Вывести список всех пассажиров
Удалить информацию о пассажире
Найти пассажира
Очистить список
Выход
Введите Ф.И.О.,которого хотите найти:
Иванов И.И
Информация о пассажире:
Ф. И. О.
Иванов И.И
Номер
паспорта
247398
Номер рейса
Продажа билетов
Вывести список всех пассажиров
Удалить информацию о пассажире
Найти пассажира
Очистить список
Выход
Вы действительно хотите очистить базу данных о пассажирах(д/н)?-Д
База данных о пассажирах очищена!
Область применения:
Эта программа используется в кассе Аэропорта, для упрощённой работы с пассажирами и рейсами.
Список используемой литературы:
Turbo
Шаг за шагом Turbo
Лекции по Паскалю.