База данных Расписание поездов

1









Санкт-Петербургский государственный политехнический университет

Факультет инноватики









Курсовая работа



Дисциплина: Теория и технология программирования



Тема: База данных «Расписание поездов»

 





Выполнил студент гр. 2221/1

Керсанова Л.В              ________________

                                                                                                        (подпись)

Селиванова С.В ________________

                                                                                                       (подпись)

Преподаватель:

к.т.н., доц. Культин Н.Б.



«__» ____________    2008



	

		













Санкт-Петербург

2008

Оглавление



Постановка задачи………………………………………………………………………     2

Структура данных……………………………………………………………………...       3

Алгоритм………………………………………………………………………………..       3

Интерфейс………………………………………………………………………………       6

Процедуры и функции…………………………………………………………………       7

Листинги………………………………………………………………………………...      7

Выводы………………………………………………………………………………….       9

Литература……………………………………………………………………………...     10





















































































Постановка задачи 



Написать программу работы с базой данных «Расписание поездов» (рис. 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.















LoadBD











Меню 









com

                                                                           



		

				

	                  	

	                          com=1               	com=3

		com=2

	

showDB



AddDB





Search

	





		















com=0?



				

			Нет	Да

          







SaveDB

                                     

		

		

	

                                            











                             







Рис. 2.1. Алгоритм программы

 

 





                                              









Reset(f)







                                                                   





EOF(F)

                                                                                                        

		true



                                                                                      



		

		false

			



(name[i]);

(adres[i]);

(phone[i]); 

(rayon[i])







     

























































Рис. 2.2. Алгоритм загрузки БД

Интерфейс



Взаимодействие с пользователем осуществляется при помощи меню и диалогов. 

(Рис. 3.1 – Рис. 3.3)











        Рис. 3.1. Главное меню



	









          





        Рис. 3.2. Диалоги ввода информации









           

          



      Рис. 3.3. Выполнение запроса



















Процедуры и функции



	                                                                                            Таблица 1. Процедуры и функции.

Процедура (функция)

Описание

Разработчик

Function Menu

Меню базы данных

Керсанова Л.В. 

Procedure LoadDB

Загрузка БД из файла 

Керсанова Л.В

Procedure ShowDB

Просмотр информации

Керсанова Л.В

Procedure SearchDB

Поиск в БД

Селиванова С.В

Procedure AddDB

Добавление данных в БД

Керосанова Л.В

Procedure Save

Сохранение БД



СелтвановаС.В

Оформительская работа

Оформление отчета

Селиванова С.В















    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.  Процедура просмотра информации



procedure ShowDB;{Процедура вывода на экран}

   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.  Процедура поиска в БД



procedure Search;{Процедура поиска}

    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.  Процедура добавления информации в БД



Procedure AddDB;{Процедура добавления в базу данных}

  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. Литература



Культин Н. Б. «Программирование в Turbo Pascal 7.0 и Delphi»: 3-е изд. – СПб.: БХВ- Петербург, 2007.



Вирт Н. «Алгоритмы и структуры данных»: пер. с англ. – М.: Мир, 1989. 360 с.

Гринзоу Лу. «Философия программирования для Windows 95/NT»: пер. с англ. — СПб.: Символ-Плюс, 1997. — 640 с. 

Зелковиц М., Шоу А, Гэннон Дж. «Принципы разработки программного обеспечения»: пер. с англ. – М.: Мир, 1982. 368 с. 

Фокс Дж. «Программное обеспечение и его разработка»: пер. с англ. – М.: Мир, 1985. 368 с.