Главная Учебники - Разные Лекции (разные) - часть 34
|
Санкт-Петербургский государственный политехнический университет Факультет инноватики Дисциплина: Теория и технология программирования
Тема: База данных «Расписание поездов»
Керсанова Л.В ________________ (подпись) Селиванова С.В ________________ (подпись) Санкт-Петербург 2008 Оглавление
1.
Постановка задачи
Написать программу работы с базой данных «Расписание поездов» (рис. 1). Рис. 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 Нет Да Рис. 2.1.
Алгоритм программы true Рис. 2.2.
Алгоритм загрузки БД 4.
Интерфейс
Взаимодействие с пользователем осуществляется при помощи меню и диалогов. (Рис. 3.1 – Рис. 3.3) Рис. 3.1.
Главное меню Рис. 3.2.
Диалоги ввода информации Рис. 3.3.
Выполнение запроса 5.
Процедуры и функции
Таблица 1. Процедуры и функции.
СелтвановаС.В 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;{Процедура добавления в базу данных} var f:text; begin nRec:=nRec+1;{Увеличиваем значение записей на единицу} Write('Введите назване: '); Readln(name[nRec]); Write('Введите адрес: '); Readln(adres[nRec]); Write('Введите телефон: '); Readln(phone[nRec]); Write('Введите район: '); Readln(rayon[nRec]); end; 7. Выводы
В процессе работы над проектом получен опыт разработки и отладки компьютерной программы средней сложности. Разделение задачи на подзадачи и реализация каждой задачи в виде процедуры или функции позволяет структурировать программу и сделать ее более наглядной. Кроме того, благодаря работе с программой Turbo Pascal, мы приобрели навыки командной работы над проектом, научились разделять обязанности и нести за них ответственность. 8. Литература
1. Культин Н. Б. «
Программирование в Turbo Pascal 7.0 и Delphi»: 3-е изд. – СПб.: БХВ- Петербург, 2007. 2. Вирт Н. «Алгоритмы и структуры данных»: пер. с англ. – М.: Мир, 1989. 360 с. 3. Гринзоу Лу. «Философия программирования для Windows 95/NT»: пер. с англ. — СПб.: Символ-Плюс, 1997. — 640 с. 4. Зелковиц М., Шоу А, Гэннон Дж. «Принципы разработки программного обеспечения»: пер. с англ. – М.: Мир, 1982. 368 с. 5. Фокс Дж. «Программное обеспечение и его разработка»: пер. с англ. – М.: Мир, 1985. 368 с.
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||