рефераты
рефераты рефераты
 логин:   
 пароль:  Регистрация 

МЕНЮ
   Архитектура
География
Геодезия
Геология
Геополитика
Государство и право
Гражданское право и процесс
Делопроизводство
Детали машин
Дистанционное образование
Другое
Жилищное право
Журналистика
Компьютерные сети
Конституционное право зарубежныйх стран
Конституционное право России
Краткое содержание произведений
Криминалистика и криминология
Культурология
Литература языковедение
Маркетинг реклама и торговля
Математика
Медицина
Международные отношения и мировая экономика
Менеджмент и трудовые отношения
Музыка
Налоги
Начертательная геометрия
Оккультизм и уфология
Педагогика
Полиграфия
Политология
Право
Предпринимательство
Программирование и комп-ры
Психология - рефераты
Религия - рефераты
Социология - рефераты
Физика - рефераты
Философия - рефераты
Финансы деньги и налоги
Химия
Экология и охрана природы
Экономика и экономическая теория
Экономико-математическое моделирование
Этика и эстетика
Эргономика
Юриспруденция
Языковедение
Литература
Литература зарубежная
Литература русская
Юридпсихология
Историческая личность
Иностранные языки
Эргономика
Языковедение
Реклама
Цифровые устройства
История
Компьютерные науки
Управленческие науки
Психология педагогика
Промышленность производство
Краеведение и этнография
Религия и мифология
Сексология
Информатика программирование
Биология
Физкультура и спорт
Английский язык
Математика
Безопасность жизнедеятельности
Банковское дело
Биржевое дело
Бухгалтерский учет и аудит
Валютные отношения
Ветеринария
Делопроизводство
Кредитование



Главная > Программирование и комп-ры > Касса аэропорта

Программирование и комп-ры : Касса аэропорта

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

[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);

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(bu