Санкт-Петербургский государственный политехнический университет
Факультет инноватики
Курсовая работа
Дисциплина: Теория и технология программирования
Тема: База данных «Расписание поездов»
Выполнил студент гр. 2221/1 | Керсанова Л.В ________________ (подпись)Селиванова С.В ________________ (подпись) |
Преподаватель: | к.т.н., доц. Культин Н.Б. |
«__» ____________ 2008 |
Санкт-Петербург
2008
Оглавление
1. Постановка задачи
Написать программу работы с базой данных «Расписание поездов» (рис. 1).
Адрес | Телефон | Район | |
ДМШ № 19 | Рижский пр. д.8 | 2596342 | Адмиралтейский |
ДМШ № 31 | Наб. Обводного канала д. 123-б | 3161201 | Адмиралтейский |
ДМШ им. Ляховильцкой | Садовая ул. д. 32 | 3100456 | Адмиралтейский |
Вдохновение | 4-я линия д.29 | 3237377 | Василеостровский |
ДМШ № 38 | ул. Симонова д. 8 | 5154003 | Выборгский |
ДМШ им. Бородина | пр. Просвещения д. 82 | 5944645 | Калининский |
ДМШ № 9 | ул. Гладкова д. 3 | 7865058 | Кировский |
ДМШ № 41 | ул. Косыгина д. 28 | 5241562 | Красногвардейский |
Рис. 1. База данных, представленная в виде таблицы
Программа должна обеспечить решение следующих задач:
- Подготовку файла данных;
- Вывод информации на экран;
- Поиск информации в базе данных;
- Добавление записей в базу данных;
- Взаимодействие с пользователем через меню.
Запрос в базе данных выполняется по району, в котором расположена музыкальная школа. Результатом является вывод на экран полной информации о школах запрашиваемого района (название школы, адрес, телефон).
2. Структура данных
На диске компьютера база данных представляет собой текстовый файл. (Листинг 1).
Листинг 1. Файл данных:
ДМШ № 19
Рижский пр. д.8
2596342
Адмиралтейский
ДМШ № 31
Наб. Обводного канала д. 123-б
3161201
Адмиралтейский
ДМШ им. Ляховильцкой
Садовая ул. д. 32
3100456
Адмиралтейский
Вдохновение
4-я линия д.29
3237377
Василеостровский
ДМШ № 38
ул. Симонова д. 8
5154003
Выборгский
ДМШ им. Бородина
пр. Просвещения д. 82
5944645
В оперативной памяти база данных представлена в виде совокупности массивов:
name:array [1..HB] of string[25];
adres: array [1..HB] of string[60];
phone: array [1..HB] of string[10];
rayon: array [1..HB] of string[20];
3. Алгоритм
Алгоритм программы приведен на рис. 2.
com=1 com=3
com=2Нет Да
Рис. 2.1. Алгоритм программы
true
Рис. 2.2. Алгоритм загрузки БД
4. Интерфейс
Взаимодействие с пользователем осуществляется при помощи меню и диалогов.
(Рис. 3.1 – Рис. 3.3)
Рис. 3.1. Главное меню
Рис. 3.2. Диалоги ввода информации
Рис. 3.3. Выполнение запроса
5. Процедуры и функции
Таблица 1. Процедуры и функции.
Процедура (функция) | Описание | Разработчик |
FunctionMenu | Меню базы данных | Керсанова Л.В. |
ProcedureLoadDB | Загрузка БД из файла | Керсанова Л.В |
ProcedureShowDB | Просмотр информации | Керсанова Л.В |
ProcedureSearchDB | Поиск в БД | Селиванова С.В |
ProcedureAddDB | Добавление данных в БД | Керосанова Л.В |
ProcedureSave | Сохранение БД | СелтвановаС.В |
Оформительская работа | Оформление отчета | Селиванова С.В |
6. Листинги
В листингах приведены процедуры загрузки БД из файла, просмотра информации, поиска в БД и добавления информации в БД.
Листинг 6.1. Процедура загрузки БД из файла
procedure LoadDB;{Процедура загрузки данных из файла}
var
f:text;
begin
assign(f,'c:\tp7\School.txt');{Указание пути к файлу}
reset(f); {открыть файл для чтения}
nRec:=0; {количество записей}
while not EOF(f) do{пока не будет достигнут конец файла выполняется цикл}
begin
nRec:= nRec+1;
readln(f,name[nRec]);
readln(f,adres[nRec]);
readln(f,phone[nRec]);
readln(f,rayon[nRec]);
end;
close(f);{Закрытие файла}
clrscr;{Очистка экрана}
end;
Листинг 6.2. Процедура просмотра информации
procedureShowDB;{Процедура вывода на экран}
var
i:integer;
Begin
writeln ('Nazvanie_____________|Adres___________________________|Phone____|Rayon_______________');
for i:=1 to nRec do {Вывод всех записей-цикл выполняется столько
раз сколько было найдено записей в базе данных}
begin
write (name[i]:20,' | ');
write (adres[i]:30,' | ');
write (phone[i]:7,' | ');
writeln (rayon[i]:15);
end;
readln;
end;
Листинг 6.3. Процедура поиска в БД
procedureSearch;{Процедура поиска}
var
Words:string;{Переменная для поиска слова}
i:INTEGER;
found:boolean;
begin
found:=FALSE;
Writeln('Поиск по району');
Write('Введите район:_');
readln(Words);
For i:=1 to nRec do
if rayon[i]=Words{Если элемент массива year совподет
со значением поискового слова то выполнится действие вывода на
экран а переменная found примит значение TRUE}
then
Begin
Writeln('В базе данных найдены сведения ') ;
writeln(name[i],' | ',adres[i],' | ',phone[i],' | ',rayon[i]);
writeln;
found:=True;
i:=i+1;
end;
readln;
if found=False then{Если переменная found не была изенена на
значение TRUE (то есть поиск закончился неудачей , то будет
выведено сообщение что такого элемента найдено не было}
begin
Writeln('В базе данных не найдено сведений об этом районе');
readln;
end;
end;
Листинг 6.4. Процедура добавления информации в БД
ProcedureAddDB;{Процедура добавления в базу данных}