Кафедра «Информатика и системы управления»
Специальность: 220100 «Вычислительные машины, комплексы системы и сети»
Заданиена курсовой проект по дисциплине
«Основы технологии программирования»
Студенту________________________________________________________
Группа__________________________________________________________
Тема проекта____________________________________________________
Календарный график задания_______________________________________
Содержание задания
При продаже билетов регистрируют пассажиров.
Информацию о каждом пассажире вводится в диалоге по запросам программы.
Информация о каждом пассажире состоит из следующих полей :
-Фамилия, имя, отчество;
-Номер паспорта;
-Пункт назначения;
-Номер рейса.
Сведения о пассажирах сохраняются в файле airbase.dat ,состоящем из
отдельных записей ,где одна запись хранит всю информацию об одном пассажире.
Программа содержит следующие процедуры и функции;
-Продажа билета (регистрирует нового пассажира);
-Найти пассажира;
-Удалить пассажира;
-Выход;
Указанные процедуры и функции выбираются из меню.
В пункте ПРОДАЖА БИЛЕТА - вводится Ф.И.О , номер паспорта , рейс, т.е регистрируется новый
пассажир , информация о нем вносится в базу данных.
В пункте НАЙТИ - выводится информация о пассажире.
В пункте УДАЛИТЬ ПАССАЖИРА - по введенной Ф.И.О информация о данном пассажире удаляется из базы данных.
ВЫХОД - выход из программы.
Руководитель курсовой работы
Студент
Составитель:
Старший преподаватель ___________________________Ахмедханлы Д.М.
Заведующий кафедрой ИиСУ __________________________Краснов С.В.
Декан ФииТ _________________________________________Краснов С.В.
Описание предметной области
Ввод данных в программу осуществляется в диалоге по запросам программы. Оператор программы передвигается по пунктам меню и инициирует запуск той или иной процедуры нажатием клавиш “Enter”, “стрелка вверх”, ”стрелка вниз”.
Программа начинается с вывода меню на экран, меню состоит
Меню состоит из семи пунктов, расположенных в следующей последовательности:
ОФОРМЛЕНИЕ НОГОГО ПАССАЖИРА
ВЫВЕСТИ СПИСОК ВСЕХ ПАССАЖИРОВ
УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕ
НАЙТИ ПАССАЖИРА
ОЧИСТИТЬ СПИСОК
ВЫХОД
Употребление процедур пунктов меню.
Процедура “ВЫВЕСТИ СПИСОК ВСЕХ ПАССАЖИРОВ” используется для просмотра всех пассажиров всех рейсов.
Процедура “УДАЛИТЬ ИНФОРМАЦИЮ О ПАССАЖИРЕ” используется для удаления пассажира. Сначала вводится фамилия пассажира, которого необходимо удалить, фамилия вводиться с клавиатуры. Если такая фамилия есть, то программа спрашивает подтверждение для удаления “Пассажир найден, удалить его д/н” если будет нажата клавиша “д”, то пассажир будет удален из базы данных, если же “н”, то удаление будет отменено.
Процедура “НАЙТИ ПАССАЖИРА” используется для удобства поиска пассажира. Фамилия вводится с клавиатуры. При нахождении фамилии пассажира выводятся его данные: фамилия, номер паспорта, номер рейса и направление. При не нахождении фамилии выводится на экран сообщение “Пассажир отсутствует!”.
Процедура “ОЧИСТИТЬ СПИСОК” удаляет все фамилии из списка. При входе в эту процедуру появляется сообщение “Вы действительно хотите удалить базу данных о пассажирах (д/н)”, если будет нажата клавиша “д”, то база данных будет удалена, если же “н”, то удаление будет отменено.
Описание алгоритма задачи
Сначала, подключаем модуль crt- позволяющий проще управлять режимами экрана, расширенными кодами клавиатуры и цветом.
Вводим константы stand – цвет невыделенного пункта меню и sel – цвет выделенного пункта меню, а так же n – количество пунктов.
Затем идет описание записей файла «train.dat.»:pas, nomertown– переменные Ф.И.О пассажира и номер – направление поезда, имеющие строковый тип, pasp, nomertrain – переменные номера паспорта и номера поезда, имеющие целый тип.
Теперь идёт описание записей файла «railst.dat»:time, model, nrnap – время отхода, тип поезда, номер – направление, price, chpm – цена билета, число посадочных мест.
Глобальные переменные: массивы menu, menu1 строкового типа с количеством элементов от 1 до n, хранят названия пунктов меню и подменю; переменная целого типа punkt обозначает номер выделенного пункта; символьная переменная ch выведенный символ; x и y целого типа - координаты первой строки меню; j, j1 - параметры цикла; ff и w файловые переменные «airport.dat» и «airbase.dat» соответственно, аналогично buf и buv – переменные компонент файлов;dlprov, nrnap – переменная проверки и номер - направление; mas, mas1 – массивы для “tairport.dat”, “airbase.dat”; символьная переменная k определяет условия да/нет в операторах if…then…else ; f–флажок.
Программа содержит 14 процедур.
Две из них «menutoscr» и «menutoscr1» отвечают за вывод меню и подменю на экран. Процедуры содержат описания одной локальной переменной 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. Аналогичные операции выполняются и для процедуры Menutoscr1.
В конце программы закрываем файлы «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,j1:integer;переменная содержащая общее число пассажиров,
число рейсов
x,y,n1: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(menu1[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]:='ПРОСМОТР БАЗЫ';
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
Похожие работы
... инфекционное заболевание, при этом ВС направляется на санитарную стоянку. Дальнейшие действия регламентируются Планом первичных противоэпидемических мероприятий. ОБСЛУЖИВАНИЯ ТРАНЗИТНЫХ И ТРАНСФЕРТНЫХ ПАССАЖИРОВ В АГЕНТСТВЕ И АЭРОПОРТУ Обслуживание трансфертных пассажиров при продаже авиабилета • Во время первого контакта с пассажирами следует: Выяснить точный маршрут полета с учетом его ...
... автобусами во внутреннем сообщении Как уже отмечалось, на территории РФ действует ряд нормативных документов, направленных на обеспечение безопасности автомобильных перевозок. Для транспортного обслуживания туристов наиболее важным является «Положение об обеспечении безопасности перевозок пассажиров автобусами». В нем определены основные задачи юридических и физических лиц, ответственных за ...
... в организации регистрации на рейсы, и во всем остальном. С 1 февраля 2004 года Аэрофлот - первый из российских авиаперевозчиков - вводит единый, соответствующий международным, стандарт обслуживания пассажиров в аэропортах. В новых правилах оговаривается все (вплоть до мелочей), что связано с организацией обслуживания клиентов до вылета и после прибытия. Очевидно, что с введением единых стандартов, ...
... 411 авиакомпаний, таких как: "Аэрофлот", "Внуковские авиалинии", "Трансаэро", "Пулково", ПО "Домодедовское", "Уральские авиалинии", "Сибирь", "Авиалинии Алмаз-Саха" и др. Однако на рынке воздушных перевозок активно работает не многим более половины из них. На международном рынке авиаперевозок работает незначительное число российских авиакомпаний. Лидером российской авиации на рынке международных ...
0 комментариев