Федеральное агентство Российской Федерации по атомной энергии
Снежинская государственная физико-техническая академия
КУРСОВОЙ ПРОЕКТ
На тему:
"Создание базы данных о поездах дальнего следования"
Снежинск 2006
Реферат
Мы считаем, что для создания этой программы более эффективно воспользоваться алгоритмом деревьев. Деревья осуществляют более улучшенный способ поиска в отличии от других, и создание самого дерева не составляет труда. Существуют разные деревья: бинарные, m‑арные, сбалансированные, идеально сбалансированные, крупномасштабные и множество других. Для того чтобы выбрать способ, который лучше будет подходить к созданию нашей программы, посмотрим что собой представляют некоторые представители из этого семейства.
1. Описание программы и её модулей
Для удобства пользования в программе реализовано меню. В нем идет описание работы по созданию, чтению дерева, поиску по номеру в дереве, поиску по названию станции.
int main()
{pp=1; T=0;
*menu[0]= «1. Создание дерева»;
*menu[1]= «2. Чтение дерева»;
*menu[2]= «3. Поиск по номеру в дереве»;
*menu[3]= «4. Поиск по названию станции в дереве»;
*menu[4]= «5. Конец работы»;
*menu[5]= «Введите номер строки:»;
clrscr();
}
/*Функция меню*/
Main_Menu(void)
{int ns, s;
flushall();
do
{for (i=0; i<k; i++)
printf («\n % s»,*menu[i]);
printf («\n»);
if (s=((scanf («%d»,&ns)<1)))
{flushall(); clrscr();
printf («\n Ошибкавномере!! Будьтевнимательны»);
}
}
while(s);
switch(ns)
{case 1: Crt_Der(); break;
case 2: print_der(kr);
getche();
break;
case 3:
/*Поиск по времени*/
printf («\n Введите номер поезда:»);
int v;
scanf («%d»,&v);
Poisk_nom_p (kr, v); break;
case 4:
/*Поиск по станции назначения*/
int sr/*, fl*/;
char s[20];
printf («\n Введите станцию назначения:»);
scanf («%s», s);
Poisk_st (kr, s); break;
case 5: pp=0;
} return 0;
}
Просмотрим функции для реализации программы:
1) Функция TREE *der (TREE *kr, SISTEMA word)
{if (kr==NULL)
{kr=new TREE;
printf («\n Номерпоезда % d», word.nom_p);
printf («\n Станция назначения % s», word.st);
printf («\n Время отправления%.2f», word.vr);
kr->w=word;
kr->c=1;
kr->l=kr->r=NULL;
}
else if (word.nom_p==kr->w.nom_p)
kr->c++;
else if (word.nom_p<kr->w.nom_p) kr->l=der (kr->l, word);
else kr->r=der (kr->r, word;
return kr;
)
Функция предназначена для формирования дерева. Если дерево пустое, записываем информацию в вершину. Выделяется память под новый элемент, сравнивается поступившая информация с информацией в узле. Если элементы одинаковы, включается счётчик.
2) Функция voidCrt_Der()
{
SISTEMAa;
a.nom_p=0;
while (a.nom_p!=-1)
{
printf («\n Введите номер поезда: (-1 – выход)»);
scanf («%d», &a.nom_p);
if (a.nom_p==-1)
break;
flushall();
{printf («\n Введите название станции:»);
scanf(«%s», a.st);
printf («\n Введите время отправления:»);
scanf («%f», &a.vr);
if (a.nom_p!=-1)
kr=der (kr, a);
}
}
}
Функция предназначена для записи в дерево информации и вывод дерева на экран.
3) Функция void print_der (TREE *kr)
{if(kr)
{print_der (kr->l);
printf («\n Номерпоезда % d», kr->w.nom_p);
printf («\n Станция назначения % s», kr->w.st);
printf («\n Время отправления%.2f», kr->w.vr);
printf («\n»);
print_der (kr->r);
}
}
Функция предназначена для печати дерева. В print_der (kr->l) используется обход левых ветвей, иначе в print_der (kr->r) обход правых ветвей.
4) Функция int Poisk_nom_p (TREE *d, int v)
{
if (d==NULL)
{
printf («\n \t Элемент с заданным ключом не найден\n»);
return 0;
}
else
{if (v==d->w.nom_p)
{
printf («\n Станция назначения % s», d->w.st);
printf («\n Время отправления%.2f», d->w.vr);
getch();
}
if (v<d->w.nom_p) Poisk_nom_p (d->l, v);
if (v>d->w.nom_p) Poisk_nom_p (d->r, v);
}
Функция предназначена для поиска по номеру поезда. Осуществляется поиск элемента с заданным ключом. Используется рекурсивный обход.
5) Функция int Poisk_st (TREE *d, char s[20])
{int sr, fl;
if (d==NULL)
printf («\n \t Элемент с заданным ключом не найден\n»);
else
{sr=strcmp (s, d->w.st);
if (sr<0)
{q=d;
fl=1;
Poisk_st (d->l, s);
}
else
if (sr>0)
{q=d;
fl=0;
Poisk_st (d->r, s);
}
else
{if (sr==0)
printf («\n Номерпоезда % d», kr->w.nom_p);
printf («\n Время отправления%.2f», kr->w.vr);
getch();
}
if (s<d->w.st) Poisk_st (d->l, s);
if (s>d->w.st) Poisk_st (d->r, s);
}
}
Функция предназначена для поиска по названию станции. Осуществляется поиск элемента с заданным ключом. (q=d – сохраняем предыдущую вершину, fl=1 – двигаемся влево,
Poisk_st(d->l, s) – спускаемся влево, fl=0 – двигаемся вправо, Poisk_st(d->l, s) – спускаемся вправо). Используется рекурсивный обход.
2. Программная документация
Техническое задание, определяющее требования, предъявляемые к ПО, необходимые стадии и сроки разработки, виды испытаний
1. Введение.
Программа «Расписание ж/д 2007» применяется в работе на ж/д вокзалах оператором и обычными пользователями, т.е. людьми.
2. Основание для разработки.
Разработка этого изделия ведется на основании помощи в работе по легкости создания и введения изменений в расписание поездов дальнего следования.
3. Назначение разработки.
Функциональное и эксплуатационное назначение программы заключается в выявлении различного рода ошибок, проблем, а также в эффективности работы в любое время суток.
4. Требования к программе:
Каждая функция отвечает за свою работу, а, следовательно, и за работу программы в целом. Должны быть созданы функции, выполняющие такие действия как: формирование базы данных, запись в базу данных информации и вывод данных из нее на экран, печать базы данных, должен осуществляться поиск по номеру поезда и по названию станции.
Нужно внимательно заполнять входные данные, т.е. названия писать буквами, время – цифрами, причем часы от минут отделять точкой, номера поездов также заполняются цифрами.
Вид обслуживания – работа с людьми на ж/д вокзале. Количество персонала зависит только от управляющего, но лучше ему подбирать квалифицированный персонал.
Программа должна обеспечивать ввод (вывод) данных, как с русского языка, так и с английского. Время вводится (выводится) на экран через точку, которая отделяет часы от минут.
5. Требования к программной документации.
Программная документация должна содержать такие пункты как: основание для разработки, назначение разработки, определённые требования к программе (к функциональным характеристикам, к условиям эксплуатации, к информационной и программной совместимости и др.), технико-экономические показатели, этапы разработки и порядок контроля и приемки.
6. Технико-экономические показатели.
С помощью такой программы люди в любое время суток, если даже не работает оператор, могут подойти к экрану монитора, расположенного в удобном месте и посмотреть расписание поездов.
7. Этапы разработки.
Разрабатывается программа по этапам. Вначале создается база данных о поездах дальнего следования (вводится номер поезда, название станции назначения, время отправления), после обеспечивается ее вывод на экран, далее можно осуществлять поиск по номеру и названию станции.
8. Порядок контроля и приемки.
Виды испытаний вы можете посмотреть в Приложении 2. Общие требования к приемке работы: отлаженная работа программы, обеспечивающая правильную работу всех пунктов технического задания, т.е. создание базы данных о поездах дальнего следования и обеспечение поиска по номеру поезда и станции назначения.
Программа и методика испытаний
1. Объект испытаний.
Наименование программного продукта – «Расписание ж/д 2007». Применяется этот продукт может на ж/д вокзалах как оператором, так и простыми людьми. «Расписание ж/д 2007» проходит эксплуатацию в целях упрощения работы обслуживающего персонала.
Техническое задание:
Создать базу данных о поездах дальнего следования. Информация о поезде должна содержать следующие пункты:
1) Номер поезда
2) Название станции
3) Время отправления
Поиск осуществлять по номеру поезда и по названию станции.
2. Цель проведения испытаний.
В результате испытания происходит выявление ошибок, сбоев, различных погрешностей в работе программы, а также небезразлична и комфортабельность.
3. Требования к программе.
Проверке должны подлежать данные о поездах дальнего следования, т.е.: номер поезда, название станции и время отправления. Также должен проверяться поиск по номеру поезда и по названию станции назначения. Результаты на экран должны выдаваться все, т.е. независимо от того, сколько поездов идет до этой станции, если такого поезда нет, то должно выдаваться соответствующее сообщение.
4. Требования к программной документации.
Состав программной документации состоит из объекта испытаний, который и включает в себя техническое задание, цели проведения испытаний, определенных требований к программе и список порядка проведения испытаний.
5. Порядок проведения испытаний.
1) Создание базы данных о поездах дальнего следования.
2) Просмотр полученной информации.
3) Осуществить поиск в базе данных по номеру поезда.
4) Осуществить поиск в базе данных по названию станции назначения.
Текст программы
Текст программы с подробными комментариями мы можем просмотреть в Приложении 1. Посмотрим назначение главных функций:
1. Функция TREE *der (TREE*kr, SISTEMAword) – предназначена для формирования дерева. Если дерево пустое, записываем информацию в вершину. Выделяется память под новый элемент, сравнивается поступившая информация с информацией в узле. Если элементы одинаковы, включается счётчик.
2. Функция voidCrt_Der() – предназначена для записи в дерево информации и вывод дерева на экран.
3. Функция voidprint_der (TREE*kr) – предназначена для печати дерева.
4. Функция intPoisk_nom_p (TREE*d, intv) – предназначена для поиска по номеру поезда.
5. Функция intPoisk_st (TREE*d, chars[20]) – предназначена для поиска по названию станции.
Описание программы, в которой содержатся сведения о логической структуре и функционировании ПО