Касса аэропорта
Касса аэропорта
[pic]
Волжский университет имени В.Н. Татищева
Кафедра «Информатика и системы управления»
Специальность: 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);
Страницы: 1, 2
|