База данных о маршрутах поездов
Разработать программу создания и корректировки файла, содержащего сведения о маршрутах поездов на ближайшую неделю. Каждый элемент файла должен содержать: номер поезда, конечный пункт назначения, день недели, время отправления и перечень остановок.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.10.2008 |
Размер файла | 21,2 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
2
Министерство образования Российской Федерации
Томский государственный университет систем управления
и радиоэлектроники
курсовОЙ проект
по дисциплине "Информационные технологии обработки данных"
СОДЕРЖАНИЕ
1. Задание на проектирование
2. Введение
3. Основная часть
Назначение разрабатываемой программы
Описание структуры программы
Описание процедур и функций
Руководство пользователю
4. Заключение
5. Список использованных источников
6. Приложение 1. Текст программы
7. Приложение 2. Результаты работы программы
1. ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ
Разработать программу создания и корректировки файла, содержащего сведения о маршрутах поездов на ближайшую неделю. Каждый элемент этого файла должен содержать следующие данные: номер поезда, конечный пункт назначения, день недели, время отправления и перечень остановок. Программа должна также позволять формировать текстовый файл, содержащий список поездов, которые останавливаются в заданном городе.
2. ВВЕДЕНИЕ
В языке Турбо-Паскаль ввод и вывод информации осуществляется через файловые переменные. Перед осуществлением ввода-вывода, файловая переменная должна быть связана с конкретным файлом на диске с помощью процедуры Assign. Затем файл должен быть открыт для чтения и/или записи. Только после этого можно осуществлять ввод-вывод. По окончании работы с файлом его необходимо закрыть процедурой Close.
Под записью понимается структура данных, объединяющая под одним именем данные различных типов. Запись состоит из фиксированного числа элементов, называемых полями. Поле - это переменная определенного типа. Различные поля могут быть разных типов. При описании типа-записи после зарезервированного слова record следует перечислить все поля с указанием их типов.
Целью данного курсового проекта является освоение работы со структурными данными в языке программирования Турбо Паскаль. Закрепление пройденного материала по дисциплине «Информационные технологии обработки данных».
3. ОСНОВНАЯ ЧАСТЬ
Назначение разрабатываемой программы
Данная программа предназначена для работы с базой данных (далее БД) поездов. БД будет содержать такие записи как: номер поезда, конечный пункт назначения, день недели, время отправления и перечень остановок. В программе должны быть доступны такие функции как: добавление нового маршрута, просмотр маршрута, удаление маршрута, редактирование маршрута. Также программа должна уметь производить поиск поездов, которые останавливаются в данном городе, и записывать номера этих поездов в текстовый файл. Программа должна иметь интуитивный интерфейс, для простоты работы с ней.
Описание структуры программы
Данная программа имеет следующую структуру данных:
В данной программе применяется следующая схема последовательности обработки данных:
Описание процедур и функций
В программе создается новая запись Poezd со следующими полями:
· Number - типа integer, данное поле будет содержать номер поезда;
· КР - типа string длиной 20 символов, поле, которое будет содержать конечный пункт назначения;
· DN - типа string длиной 15 символов, поле которое будет содержать день недели;
· Time - типа string длиной 10 символов, поле которое будет содержать время отправления;
· KOst - типа integer, данное поле будет содержать количество остановок поезда (в программе предусмотрено максимальное количество остановок 100);
· Ost - строковый массив размером от 1 до 100, будет содержать перечень остановок поезда.
Также в программе создаются следующие переменные:
· i - переменная типа integer, необходима для организации меню и работы циклов;
· filename, filenametemp - переменные типа string, необходимы для хранения путей к файлам БД;
· PoezdF - типа file of Poezd, данная переменная необходима для связи нашей программы с файлом БД на диске (путь к этому файлу будет вводиться пользователем с клавиатуры при запуске программы);
· PoezdR - типа Poezd, эта переменная необходима для работы с БД Poezd.
Процедура PoezdMenu - создает меню для работы с БД. В этой процедуре при помощи операторов REPEAT CASE UNTIL WRITELN READLN, организовано меню. При вызове данной процедуры происходит очистка экрана, для этого используется оператор CLRSCR, для корректной работы данного оператора в поле USES необходимо подключить модуль Crt.
Процедура AddPoezd - добавляет маршрут в БД. Работа данной процедуры такова:
· С помощью оператора Assign открывается файл, и вся информация из него записывается в переменную PoezdF;
· С помощью оператора Reset курсор устанавливается в начальное положение;
· С помощью операторов WRITE и READ создаем интерфейс для ввода номера поезда, конечного пункта назначения, дня недели, времени отправления, количества остановок и перечня остановок, присваиваем введенные значения соответствующим полям переменной PoezdR;
· С помощью оператора WRITE записываем значения полей переменной PoezdR в БД;
· Закрываем файл при помощи оператора CLOSE.
Процедура DeletePoezd - удаляет маршрут из БД. Работа данной процедуры такова:
· Для работы данной процедуры нам потребуются дополнительные переменные. Переменная temp - типа file of Poezd будет содержать временную БД. Переменная Nom - типа integer, этой переменной будет присваиваться номер поезда, введенный пользователем с клавиатуры. Переменная f - типа boolean, с помощью этой переменной мы будем отслеживать наличие введенного номера поезда в БД;
· С помощью оператора Assign открывается файл, и вся информация из него записывается в переменную PoezdF;
· С помощью оператора Assign создаем временный файл, и вся информация из него записывается в переменную temp;
· С помощью операторов WRITE и READ создаем интерфейс для ввода номера поезда с клавиатуры и присваиваем введенное значение переменной Nom;
· Создается цикл, в теле цикла при помощи условного оператора сравниваем значение поля Number БД со значением переменной Nom. Если значения не равны то вся запись из основной БД добавляется во временную БД, иначе не добавляется;
· Закрываем файлы основной и временной БД при помощи оператора CLOSE;
· Удаляем файл основной БД при помощи оператора Erase;
· Переименовываем файл временной БД в файл основной БД при помощи оператора Rename.
Процедура EditPoezd - редактирует маршрут в БД. Работа данной процедуры аналогична работе процедуры DeletePoezd. За исключением одного момента: маршрут не удаляется из БД, а заменяется на маршрут с вновь введенными значениями, для ввода этих значений создан специальный интерфейс аналогичный интерфейсу из процедуры AddPoezd.
Процедура ViewPoezd - выводит маршрут на экран. Работа данной процедуры такова:
· С помощью оператора Assign открывается файл, и вся информация из него записывается в переменную PoezdF;
· С помощью оператора Reset курсор устанавливается в начальное положение;
· Создается цикл размером от начального положения до конечного положения. В теле цикла при помощи условного оператора находится нужный номер поезда, и вся информация о нем выводится на экран;
· Закрываем файл при помощи оператора CLOSE.
Процедура FindPoezd - находит в БД все номера поездов, которые останавливаются в заданном городе, и записывает их в текстовый файл. Работа данной процедуры такова:
· Для работы данной процедуры нам потребуются дополнительные переменные. Переменная gorod - типа string, этой переменной будет присваиваться город, введенный пользователем с клавиатуры. Переменная k - типа integer будет содержать количество найденных поездов. Переменная TPoezdF - типа Text, это и есть наш текстовый файл, в который будем записывать номера найденных поездов;
· Переменной k присваиваем значение равное 0;
· С помощью оператора Assign открывается файл, и вся информация из него записывается в переменную PoezdF, также создаем текстовый файл;
· С помощью оператора Reset курсор устанавливается в начальное положение;
· С помощью оператора Rewrite перезаписываем текстовый файл, и курсор устанавливается в начальное положение;
· С помощью операторов WRITE и READ создаем интерфейс для ввода города с клавиатуры и присваиваем введенное значение переменной gorod;
· Создается цикл в нем подцикл, в теле подцикла при помощи условного оператора сравниваем значение поля Ost БД со значением переменной gorod. Если значения равны, то выводим значение поля Number, соответствующей записи, в текстовый файл и значение переменной k увеличиваем на единицу;
· Закрываем открытые файлы при помощи оператора CLOSE;
· Выводим значение переменной k на экран.
В основном тексте программы происходит очистка экрана при помощи оператора ClrScr. Создается интерфейс для ввода пути к файлу БД при помощи операторов WRITE и READ. Вызывается процедура PoezdMenu.
Руководство пользователю
Для корректной работы программы, необходимо правильно указывать путь к файлу БД, например c:\poezd.dat или если файл находится в каталоге программы, то просто poezd.dat.
При выборе пятого пункта меню «Поиск поездов останавливающихся в городе», текстовый файл создается с тем же именем и по тому же пути, который был указан при запуске программы в качестве файла БД, меняется только расширение файла на txt. Текстовый файл создается в кодировке DOS, поэтому чтобы он корректно отображался его нужно открывать в редакторах, которые понимают DOS - кодировку.
4. ЗАКЛЮЧЕНИЕ
В процессе работы над данным курсовым проектом была освоена работа со структурными данными и файлами в языке программирования Турбо Паскаль. Закреплен пройденный материал по дисциплине «Информационные технологии обработки данных».
5. СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ
1. «Информационные технологии обработки данных», В. В. Коробова, учебное пособие, Томск, 2000 г.
6. ПРИЛОЖЕНИЕ 1. ТЕКСТ ПРОГРАММЫ
program RPoezd;
uses Crt;
type Poezd = record
Number : integer;
KP : string[20];
DN : string[15];
Time : string[10];
KOst : integer;
Ost : array[1..100] of string;
end;
var i : integer;
filename,filenametemp : string;
PoezdF : file of Poezd;
PoezdR : Poezd;
{Процедура добавления маршрута}
procedure AddPoezd;
begin
Assign(PoezdF,filename);
Reset(PoezdF);
while not Eof(PoezdF) do Read(PoezdF,PoezdR);
ClrScr;
writeln('Добавление маршрута:');
writeln;
write('Введите номер поезда:');
readln(PoezdR.Number);
write('Введите конечный пункт:');
readln(PoezdR.KP);
write('Введите день недели:');
readln(PoezdR.DN);
write('Введите время отправления:');
readln(PoezdR.Time);
write('Введите количество остановок (максимум 100):');
readln(PoezdR.KOst);
writeln('Введите (поочередно) перечень остановок:');
for i :=1 to PoezdR.KOst do readln(PoezdR.Ost[i]);
write(PoezdF,PoezdR);
Close(PoezdF);
writeln;
writeln('Маршрут добавлен!!!');
writeln;
writeln('Нажмите любую клавишу...');
ReadKey;
end;
{Процедура удаления маршрута}
procedure DeletePoezd;
var temp : file of Poezd;
Nom : integer;
f : boolean;
begin
f:=false;
Assign(PoezdF,filename);
Reset(PoezdF);
Assign(temp,filenametemp+'tmp');
Rewrite(temp);
ClrScr;
writeln('Удаление маршрута:');
writeln;
write('Введите номер поезда:');
readln(Nom);
while not Eof(PoezdF) do
begin
Read(PoezdF,PoezdR);
if PoezdR.Number<>Nom then Write(temp,PoezdR)
else f:=true;
end;
Close(temp);
Close(PoezdF);
Erase(PoezdF);
Rename(temp,filename);
writeln;
if f then writeln('Маршрут удален!!!')
else writeln('Маршрут не найден...');
writeln;
writeln('Нажмите любую клавишу...');
ReadKey;
end;
{Процедура редактирования маршрута}
procedure EditPoezd;
var temp : file of Poezd;
Nom,tn : integer;
f : boolean;
begin
f:=false;
Assign(PoezdF,filename);
Reset(PoezdF);
Assign(temp,filenametemp+'tmp');
Rewrite(temp);
ClrScr;
writeln('Редактирование маршрута:');
writeln;
write('Введите номер поезда:');
readln(Nom);
while not Eof(PoezdF) do
begin
Read(PoezdF,PoezdR);
if PoezdR.Number<>Nom then Write(temp,PoezdR)
else
begin
tn:=nom;
f:=true;
end;
end;
if f then
begin
writeln;
PoezdR.Number:=tn;
write('Введите конечный пункт:');
readln(PoezdR.KP);
write('Введите день недели:');
readln(PoezdR.DN);
write('Введите время отправления:');
readln(PoezdR.Time);
write('Введите количество остановок (максимум 100):');
readln(PoezdR.KOst);
writeln('Введите (поочередно) перечень остановок:');
for i :=1 to PoezdR.KOst do readln(PoezdR.Ost[i]);
write(temp,PoezdR);
writeln('Маршрут изменен...');
end
else
begin
writeln;
writeln('Маршрут не найден...');
end;
Close(temp);
Close(PoezdF);
Erase(PoezdF);
Rename(temp,filename);
writeln;
writeln('Нажмите любую клавишу...');
ReadKey;
end;
{Процедура вывода маршрута поезда на экран}
procedure ViewPoezd;
var Nom : integer;
f : boolean;
begin
f:=false;
Assign(PoezdF,filename);
Reset(PoezdF);
ClrScr;
writeln('Просмотр маршрута:');
writeln;
write('Введите номер поезда:');
readln(Nom);
while not Eof(PoezdF) do
begin
read(PoezdF,PoezdR);
if PoezdR.Number=Nom then
begin
f:=true;
writeln;
writeln('Номер поезда: ',Nom);
writeln('Конечный пункт: ',PoezdR.KP);
writeln('День недели: ',PoezdR.DN);
writeln('Время отправления: ',PoezdR.Time);
writeln('Перечень остановок:');
for i:=1 to PoezdR.KOst do writeln(' ',PoezdR.Ost[i]);
break;
end;
end;
Close(PoezdF);
if f=false then
begin
writeln;
writeln('Поезд с данным номером не найден...');
end;
writeln;
writeln('Нажмите любую клавишу...');
ReadKey;
end;
{Процедура поиска поезда который останавливается в указанном городе}
procedure FindPoezd;
var k : integer;
gorod : string;
TPoezdF : text;
begin
k:=0;
Assign(PoezdF,filename);
Reset(PoezdF);
Assign(TPoezdF,filenametemp+'txt');
Rewrite(TPoezdF);
ClrScr;
writeln('Поиск поезда который останавливается в указанном городе:');
writeln;
write('Введите город:');
readln(gorod);
write(TPoezdF,'Список номеров поездов останавливающихся в городе ',gorod,': ');
while not Eof(PoezdF) do
begin
read(PoezdF,PoezdR);
for i:=1 to PoezdR.KOst do
if PoezdR.Ost[i]=gorod then
begin
write(TPoezdF,PoezdR.Number);
write(TPoezdF,', ');
k:=k+1;
end;
end;
Close(PoezdF);
Close(TPoezdF);
writeln;
writeln('В городе ',gorod,' останавливается поездов: ',k);
writeln;
writeln('Нажмите любую клавишу...');
ReadKey;
end;
procedure PoezdMenu;
begin
repeat
begin
ClrScr;
writeln('Маршруты движения поездов - Главное меню');
writeln;
writeln('1. Добавить маршрут');
writeln('2. Посмотреть маршрут поезда');
writeln('3. Удалить маршрут');
writeln('4. Редактировать маршрут');
writeln('5. Поиск поездов останавливающихся в городе');
writeln('-------------------------------------------------');
writeln('6. Выход');
writeln;
write('Выберите пункт меню: ');
readln(i);
case i of
1 : AddPoezd;
2 : ViewPoezd;
3 : DeletePoezd;
4 : EditPoezd;
5 : FindPoezd;
end;
end;
until i=6;
end;
begin
ClrScr;
writeln('Введите путь к файлу содержащему маршруты поездов (например: c:\poezd.dat)');
readln(filename);
filenametemp :=copy(filename,1,length(filename)-3);
PoezdMenu;
end.
7. ПРИЛОЖЕНИЕ 2. РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММЫ
Работа программы тестировалась несколькими пользователями, ошибок выявлено не было. Тестирование проводилось с файлом БД poezd.dat, данный файл прилагается, в этом файле забиты следующие номера поездов: 110, 111, 112, 113. Также прилагается текстовый файл, созданный программой при выборе пятого пункта меню.
Подобные документы
Разработка базы данных "Расписание поездов", которая позволит узнавать все сведения о движение поездов: пункт отправления и прибытия поезда, время отправления и прибытия с начальной и конечной станции, цены и льготы. Руководство по ее использованию.
курсовая работа [2,9 M], добавлен 18.03.2011Процедура ввода исходных данных в программу, вывод результатов работы программы на экран. Принцип организации хранения логически связанных наборов информации в виде файлов. Параметры характеристики файла, способы обращения к нему, соглашения по типу.
реферат [14,5 K], добавлен 06.12.2011Сущность и основные функции СУБД Microsoft Access. Алгоритм создания базы данных расписания поездов и параметров их передвижения. Проектирование форм для сводных таблиц с помощью конструктора окон. Разработка отчетов и запросов на выборку данных.
курсовая работа [8,6 M], добавлен 18.03.2011Особенности создания и распечатки на принтере текстового файла (документа), содержащего таблицу, с использованием шрифта Times New Roman черного цвета размером 12 пунктов. Алгоритм создания справочно-поисковой системы и баз данных в Бейсик-программе.
контрольная работа [462,1 K], добавлен 04.04.2012Структура данных с указанием типов. Общая структурная схема программы. Алгоритмы сортировки вставками. Назначение make-файла. Функции управления программой; перемещения и корректировки введенных данных и их удаления справочника, загрузки данных из файла.
курсовая работа [1,3 M], добавлен 12.01.2016Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.
курсовая работа [63,7 K], добавлен 12.12.2010Создание базы данных и ее системы управления. Динамическая информационная структура, двунаправленный список. Создание файла, содержащего сведения об абонентах телефонной сети. Вывод информации в файл для печати. Обработка информации в базе данных.
курсовая работа [1,7 M], добавлен 18.03.2013Создание типизированного файла, содержащего информацию о тестировании студентов по учебным дисциплинам. Описание необходимых входных данных. Используемые компоненты при разработке программы. Процедура Output, служащая для вывода базы данных на экран.
курсовая работа [907,1 K], добавлен 10.01.2015Основы проверки и расчета входных данных и вывода выходных данных программы, их блок-схемы. Реализация функции считывания числовых данных из файла, управление (создание, уничтожение и редактирование) визуальными компонентами во время выполнения программы.
контрольная работа [1,3 M], добавлен 12.06.2009Разработка программы, имитирующую процесс пассажирских перевозок по железной дороге. Создание базы данных поездов и вагонов. Просмотр статистики выбранного поезда и вагона. Поиск нужного рейса по станциям прихода и отправления. Продажа билетов на поезд.
контрольная работа [21,7 K], добавлен 21.07.2012