p>
Волзький університет імені В.Н. Татіщева p>
Кафедра «Інформатика та системи управління» p>
Спеціальність: 220100 «Обчислювальні машини, комплекси системи та мережі» p>
Завдання p>
на курсовий проект з дисципліни p>
«Основи технології програмування»
Студенту________________________________________________________
Группа__________________________________________________________
Тема проекта____________________________________________________
Календарний графік заданія_______________________________________ p>
Зміст завдання p>
При продажу квитків реєструють пасажирів.
Інформацію про кожного пасажира вводиться в діалозі по запитах програми.
Інформація про кожного пасажира складається з наступних полів:
-Прізвище, ім'я, по батькові;
-Номер паспорта;
-Пункт призначення;
-Номер рейсу.
Відомості про пасажирів зберігаються у файлі airbase.dat, що складається зокремих записів, де один запис зберігає всю інформацію про однепасажира.
Програма містить наступні процедури і функції;
-Продаж квитка (реєструє нового пасажира);
-Знайти пасажира;
-Видалити пасажира;
-Вихід;
Зазначені процедури і функції вибираються з меню.
У пункті продажу квитків - вводиться ПІБ, номер паспорта, рейс, тобтореєструється новийпасажир, інформація про нього вноситься до бази даних.
У пункті ЗНАЙТИ - виводиться інформація про пасажира.
У пункті ВИДАЛИТИ ПАСАЖИРА - по введеної П.І.Б інформація про данийпасажира видаляється з бази даних.
ВИХІД - вихід з програми. P>
Керівник курсової роботи
Студент
Укладач:
Старший викладач ___________________________Ахмедханли Д.М.
Завідувач кафедрою ІіСУ __________________________Краснов С.В.
Декан ФііТ _________________________________________Краснов С.В. p>
Опис предметної області p>
Введення даних в програму здійснюється у діалозі за запитами програми.
Оператор програми пересувається по пунктах меню і ініціює запуск тієїчи іншої процедури натисканням клавіш "Enter", "стрілка вгору", "стрілкавниз ". p>
Програма починається з виведення меню на екран, меню складається p>
Меню складається з семи пунктів, розташованих в наступнійпослідовності: p>
. ОФОРМЛЕННЯ НОГОГО ПАСАЖИРА p>
. Версії всіх ПАСАЖИРІВ p>
. ВИДАЛИТИ Інформація про пасажирів p>
. ЗНАЙТИ ПАСАЖИРА p>
. ОЧИСТИТИ СПИСОК p>
. ВИХІД p>
Вживання процедур пунктів меню. P>
Процедура "версії всіх ПАСАЖИРІВ" використовується для переглядувсіх пасажирів усіх рейсів. p>
Процедура "ВИДАЛИТИ Інформація про пасажирів" використовується для видаленняпасажира. Спочатку вводиться прізвище пасажира, якого необхідновидалити, прізвище вводиться з клавіатури. Якщо таке прізвище є, топрограма запитує підтвердження для видалення "Пасажир знайдений, видалитийого д/н "якщо буде натиснута клавіша" д ", то пасажир буде вилучено з базиданих, якщо ж "н", то видалення буде скасовано. p>
Процедура "ЗНАЙТИ ПАСАЖИРА" використовується для зручності пошуку пасажира.
Прізвище вводиться з клавіатури. При знаходженні прізвища пасажира виводятьсяйого дані: прізвище, номер паспорта, номер рейсу і напрям. При незнаходженні прізвища виводиться на екран повідомлення "Пасажир відсутній !". p>
Процедура" ОЧИСТИТИ СПИСОК "видаляє всі прізвища зі списку. При вході вцю процедуру з'являється повідомлення "Ви дійсно хочете видалити базуданих про пасажирів (д/н) ", якщо буде натиснута клавіша" д ", то база данихбуде видалена, якщо ж "н", то видалення буде скасовано. p>
Опис алгоритму задачі p>
Спочатку, підключаємо модуль crt-дозволяє простіше керувати режимамиекрана, розширеними кодами клавіатури і кольором.
Вводимо константи stand - колір невиділений пункту меню і sel - колірвиділеного пункту меню, а так само n - кількість пунктів.
Потім йде опис записів файлу «train.dat.»: Pas, nomertown-змінні
П. І. П. пасажира і номер - напрямок поїзда, що мають строковий тип, pasp,nomertrain - змінні номера паспорта та номера поїзда, що мають цілий тип. p>
Тепер йде опис записів файлу «railst.dat»: time, model,nrnap - час відходу, тип поїзда, номер - напрямок, price, chpm - цінаквитка, кількість посадкових місць. p>
Глобальні змінні: масиви 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-прапорець. P>
Програма містить 14 процедур. P>
Дві з них «menutoscr» і «menutoscr1» відповідають за виведення меню і підменюна екран. Процедури містять опис однієї локальної змінної iпараметра циклу. Починаються процедури з очищення екрана - clrscr. Далі йдецикл for ... to ... do, що виводить меню на екран.
У циклах, за допомогою процедури gotoxy, курсор кожного разу переміщається напозицію вниз, де і виводиться заголовок відповідних пунктів меню іпідменю.
Вводимо змінну textattr, яка відповідає за колір фону і символів.
Надаємо їй значення константи sel, тобто ставимо колір виділеногопункту і переводимо курсор на поточний пункт. Виділяємо його і ставимо колірневиділений пункту. p>
Процедура «new_pass» вводить нового пасажира. Починаємо процедуру з описулокальних змінних. Обнуляємо локальний прапорець mozno, потім відбуваєтьсяочищення екрана - clrscr. Відкриваємо для запису даних нового пасажира файл
«Airport.dat». Тут вводиться: ПІБ, номер паспорта. P>
Процедура «maspas» - Призначена для формування з пасажирівмасиву, для подальшого їх видалення. Відкриваємо вже існуючий файлtrain.dat Надаємо змінної j-1. А в циклі постусловія repeat ... untilформуємо з пасажирів масив, який потрібний для видалення пасажирів. p>
Процедура «delete_pass» починається з очищення екрана - clrscr, Обнуляємопрапорець. Потім вводиться прізвище, яку потрібно видалити. У циклі repeat ... until оператор умови if ... then виконується (пасажир знайдено), то відбуваєтьсявидалення пасажира, якщо пасажир був успішно видалений, то з'являєтьсяповідомлення-"Пасажир "----" був знищений!" і прапорці присвоюється 1. Інакшеприсвоюється-2. У наступному if ... then файл оновлюється, і масив безпасажира записується у файл. Далі створюється новий файл з цим же ім'ям.
У циклі з постусловіем repeat ... until змінною buf присвоюється i-тезначення елемента масиву. Файл закривається. P>
Коли прапорець не дорівнює 1, то в циклі if ... then друкується повідомлення
"Пасажир не знайдений!". Якщо ж прапорець дорівнює 2, то друкується повідомлення
"Видалення скасовано!". Delay - використовується для затримки повідомлення провидаленні. p>
Процедура «search_pass» призначена для пошуку пасажира в базіданих. Починаємо процедуру з опису локальних змінних, потімвідбувається очищення екрана - clrscr. Використовуємо оператор reset для відкриттяіснуючого файлу. У циклі repeat ... until читається інформація. Уумовному операторі if ... then читається введені ПІБ, і роздруковуютьсядані про конкретного пасажира (тобто ПІБ, ном. паспорти, ном. рейсу --пункт призначення). Закриваємо файл. Після цього прапорця присвоюєтьсязначення-1. Якщо прапорець дорівнює -0, то друкується повідомлення "Пасажир незнайдений! " p>
Процедура« new_airbase »проводить повну очистку бази даних пропасажирів. Починаємо процедуру з очищення екрана - clrscr. У операторіif ... then задаємо умова очищення бази даних. Виводимо повідомлення "Видійсно хочете очистити базу даних про пасажирів (д/н )?-".< br>Відповідно, змінної k присвоюється одне з значень «д» або «н».
При k = «д», за допомогою процедур rewrite, дані у файлах видаляються. УІнакше вихід з процедури. Після цього виводиться її на екранповідомлення-"База Аеропорту очищена !". p>
Процедура« search_base »призначена для пошуку рейсу в базі даних.
Починаємо процедуру з очищення екрана - clrscr. Вводиться номер рейсу інапрямок через тире. Використовуємо оператор reset для відкриття вжеіснуючого файлу. У циклі repeat ... until читається інформація. В умовномуоператорі if ... then читається введений номер рейсу і напрям, іроздруковуються дані про рейсі (тобто номер рейсу - напрямок, часвідходу, ціна квитка (в крб.), тип поїзда). Закриваємо файл. Після цьогопрапорці присвоюється значення-1. Якщо прапорець дорівнює -0, то друкуєтьсяповідомлення "Рейс не знайдений!" p>
Процедура «new_base» проводить повну очистку бази даних про рейси.
Починаємо процедуру з очищення екрана - clrscr. У операторі if ... then задаємоумова очищення бази даних про рейси. Виводимо повідомлення "Ви дійснохочете очистити базу даних розкладу (д/н )?-". Відповідно, змінноїk присвоюється одне з значень «д» або «н». При k = «д», за допомогоюпроцедур rewrite, дані у файлах видаляються. В іншому випадку вихід зпроцедури. Після цього виводиться її на екран повідомлення-"База розкладу
Аеропорту очищена !". p>
Основна програма так само починається з очищення екрана - clrscr.
Визначаємо імена файлів «Airport.dat», «Airbase.dat» і зв'язати їх зфайловими змінними процедурою assign. p>
Задаємо назви пунктів меню. Змінній номера виділеного пунктуприсвоюємо значення одиниці. Визначаємо координати першого рядка меню.
Змінній кольору символів і фону присвоюємо значення невиділений пункту.
Звертаємося до процедури menutoscr. Заходимо в цикл пересування по менюrepeat ... until ch = chr (27) (до звернення до пункту «Вихід »). p>
У циклі зчитуємо код натиснутою клавіші. За допомогою умовного операторавходимо в оператор вибору кодів клавіш. Якщо натиснута стрілка вниз, то здопомогою процедури gotoxy, оператора write, констант sel і stand виділяємонеобхідний пункт меню. Аналогічні операції проводимо при натисканні стрілкивгору. При натисненні Enter в операторі вибору відкривається процедуранеобхідного пункту. Наприкінці циклу звертаємося до процедури Menutoscr.
Аналогічні операції виконуються і для процедури Menutoscr1. P>
Наприкінці програми закриваємо файли «Airport.dat» і «Airbase.dat». P>
Програми p>
Лістинг програми
Роздруківка результатів рішення задачі за даними контрольного прикладу p>
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; p>
procedure new_pass; var ff: file of airport; buf: airport; p>
ch, k: char; p>
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; p>
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; p>
delay (9999); delay (5000); until (ch = chr (162)) and (ch = chr (130 )); p>
close (ff); p>
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 ( 'Пасажир знайдений, видалити його p>
(д/н )-'); 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; p>
begin clrscr; gotoxy (36,12); textbackground (red); textcolor (blink); writeln ( 'УВАГА!'); textattr: = norm; gotoxy (10,13); write ( 'Ви дійсно хочете очистити базу даних про пасажирів p>
(д/н )?-'); 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; p>
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; p>
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; p>
delay (9999); delay (5000); until (ch = chr (162)) and (ch = chr (130 )); p>
close (ff); p>
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 ,'; p>
Вартість квитка:', 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 ( 'Рейс знайдений, видалити його (д/н) - p>
'); 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; p>
begin clrscr; gotoxy (36,12); textbackground (red); textcolor (blink); writeln ( 'УВАГА!'); textattr: = norm; gotoxy (10,13); write ( 'Ви дійсно хочете очистити базу даних розкладу p>
(д/н )?-'); 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; p>
menu [1]: = 'ОФОРМЛЕННЯ НОВОГО ПАСАЖИРА'; menu [2]: = 'вивести СПИСОК ПАСАЖИРІВ'; menu [3]: = 'ВИДАЛИТИ Інформація про пасажирів'; menu [4 ]: = 'ЗНАЙТИ ПАСАЖИРА'; menu [5]: = 'ОЧИСТИТИ СПИСОК'; menu [6]: = 'ВИХІД'; menu [7]: = 'ПЕРЕГЛЯД БАЗИ'; p>
menu1 [1 ]: = 'ЗАПИС НОВОГО РЕЙСУ'; menu1 [2]: = 'ПОКАЗАТИ РОЗКЛАД'; menu1 [3]: = 'ВИДАЛИТИ РЕЙС'; menu1 [4]: = 'ПОШУК РЕЙСУ'; menu1 [5]: = 'ОЧИСТИТИ РОЗКЛАД '; menu1 [6]: =' ПОВЕРНУТИСЯ В ГОЛОВНЕ МЕНЮ '; punkt: = 1; x: = 30; y: = 8; textattr: = norm; n1: = 6; p>
Menutoscr; repeat ch: = Readkey; if ch = chr (0) then begin ch: = ReadKey; case ch of chr (80): стрілка вниз if punkt p>