Автор работы: Пользователь скрыл имя, 18 Июня 2013 в 15:49, курсовая работа
Целью работы является - создание программы для учета городского транспорта, которая будет хранить введенную информацию в базах данных.
Для достижения поставленной цели необходимо решить ряд задач:
• подробно изучить базу данных программы;
• исследовать средства, которые нам понадобятся для создания программы;
• описать интерфейс полученной программы.
ВВЕДЕНИЕ 5
1 ОБЗОР 7
1.1 Информация, характеризующая городской транспорт 7
1.2 Преимущества ООП для программной реализации базы данных, хранящей информацию о городском транспорте 7
1.3 Постановка задачи 7
2 АЛГОРИТМИЧЕСКОЕ КОНСТРУИРОВАНИЕ 9
2.1 Общая блок-схема работы программы 9
2.2 Алгоритм поиска по заранее заданному критерию 11
3 ПРОГРАММНОЕ КОНСТРУИРОВАНИЕ 12
3.1 Обоснование выбора языка программирования 12
3.2 Описание основных классов 12
4 РЕЗУЛЬТАТЫ РАБОТЫ ПРОГРАММНОГО СРЕДСТВА 15
ЗАКЛЮЧЕНИЕ 26
5 СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 27
ПРИЛОЖЕНИЕ А. ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ПРОГРАММНОЕ СРЕДСТВО 28
ПРИЛОЖЕНИЕ Б. ЛИСТИНГ ПРОГРАММЫ 32
ПРИЛОЖЕНИЕ В. 59
Для запуска программы запустим файл СУГТ.exe. Открывается главное окно программы с заголовком “Система учета городского транспорта”.
Рисунок 4 - Главное окно программы.
При помощи кнопок “Добавить маршрутное такси”, “Добавить автобус” и “Добавить трамвай” добавим по одному транспорту каждого типа (рис 5,6,7). Результат добавления можно увидеть на рисунке 8.
Рисунок 5 - Добавление маршрутного такси.
Рисунок 6 - Добавление автобуса.
Рисунок 7 - Добавление трамвая.
Рисунок 8 - Результат добавления записей.
При помощи кнопок “удалить” и “изменить” удалим запись №16 и изменим номер маршрута для записи №3 результат изменений на рисунке 9.
Рисунок 9 - Результат изменений.
Проведем сортировку записей по максимальному числе мест, используя кнопку “сортировать”. Результат сортировки на рисунке 10.
Рисунок 10 - Сортировка по максимальному числу мест.
Выполним расчет рентабельности для одного из видов транспортных средств, используя кнопку “Рентабельность трамвая”. Результат на рисунке 11.
Рисунок 11 - Расчет рентабельности.
Выполним поиск по заранее заданному критерию. Введем число поле “максимальное число мест >=”. Результаты поиска на рисунке 12.
Рисунок 12 - Поиск по заданному критерию.
Теперь удалим найденные элементы, по нажатию на кнопку “Удалить найденное”, как это продемонстрировано на рисунке 13.
Рисунок 13 - Удаление найденных записей.
Во время проведения тестирования была проверена работоспособность всех элементов интерфейса программы. Добавление, удаление, редактирование, поиск записей и расчет рентабельности выполняются корректно. Информация сохраняется в файлы и доступна при последующих запусках программы.
Работоспособность программы подтверждена
в приложении В.
ЗАКЛЮЧЕНИЕ
В результате данной работы была создана база данных позволяющая хранить информацию о городском транспорте.
Получены и закреплены навыки работы в среде PascalABC.net, и программирования с использованием классов, наследования, полиморфизма, и перегрузки операций.
ПРИЛОЖЕНИЕ А. ТЕХНИЧЕСКОЕ ЗАДАНИЕ НА ПРОГРАММНОЕ СРЕДСТВО
доцент каф. «ПОВТ и АС»
« » 2012 г.
___________ /Скляренко А.А./
Наименование: «Система учета городского транспорта».
Краткое наименование: «СУГТ».
Область применения: автотранспортные предприятия.
Разработка ведется на основании документа «Учебный план для студентов ВУЗа», факультета «Информатика и вычислительная техника», обучающихся по специальности 231000 «Программная Инженерия», в соответствии с которым студенты, заканчивающие изучение дисциплины «Основы программирования», должны предоставить к защите работу, выполненную в ходе разработки курсовой работы. Предметным основанием является задание на курсовую работу.
Функциональное назначение: реализация систему учета городского транспорта.
Эксплуатационное назначение: программа может использоваться в диспетчерских автотранспортных предприятий.
Программа должна обеспечивать возможность выполнения перечисленных ниже функций:
Входные данные вводятся пользователями и обрабатываются программным средством и представляют собой различную совокупность текстовой информации, набор байт (файлов):
Выходные данные выводятся программным
средством пользователям и
Надежное функционирование программы должно быть обеспечено выполнением совокупности нижеописанных мероприятий:
В состав технических средств, обеспечивающих работоспособность программного средства должен входить IBM – совместимый персональный компьютер, включающий в себя:
Для реализации программы «Автоматизированная система обработки и хранения информации о преподавателях» должен быть использован язык программирования PascalABC.NET. Основанием для выдвижения этого требования является использование указанного языка при реализации.
Программа должна функционировать в любой операционной системе семейства Windows.
В состав программной документации должны входить следующие разделы:
Порядок и контроль приемки определяются заведующим кафедрой «ПОВТ и АС» и основаны на демонстрации знаний технологии и умении создавать программные средства для различных предметных областей. Главным требованием к приемке является наличие правильно работающего программного средства, иллюстрируемого тестовым примером и отчетом, представленным в печатном виде.
Разработал
студент гр. ВПРS-22
Гребенщиков Игорь Александрович
ПРИЛОЖЕНИЕ Б. ЛИСТИНГ ПРОГРАММЫ
uses System.Windows.Forms;
const mk:integer=10; //маршрутное такси
const ak:integer=20; //автобус
const tk:integer=30; //трамвай
type
transport=class //базовый класс транспорт
protected
kod:integer;
tip:integer;
numroute:integer;
mark:string;
name:string;
year:string;
public
constructor Create(k,t,nr:integer; m,n,y:string);
begin
kod:=k;
tip:=t;
numroute:=nr;
mark:=m;
name:=n;
year:=y;
end;
procedure setTransport(k,t,nr:integer; m,n,y:string);
begin
kod:=k;
tip:=t;
numroute:=nr;
mark:=m;
name:=n;
year:=y;
end;
function ToString():string; virtual; abstract; //строковое представление
function Rent(stoimost,proezd: integer):integer; virtual; abstract; //рентабельность: стоимость топлива - плата за проезд пасажиров
function MaxPassagir():integer; virtual; abstract; //максимум пасажиров в день перевозимых т.с.
function ToStringRent():string; virtual; abstract; //строковое представление #2
function getName():string;
begin
Result:=name;
end;
function getMark():string;
begin
Result:=mark;
end;
function getYear():string;
begin
Result:=year;
end;
function getRoute():integer;
begin
Result:=numroute;
end;
function getKod():integer;
begin
Result:=kod;
end;
function getTip():integer;
begin
Result:=tip;
end;
end;
MT=class(transport) //маршрутное такси наследуется от транспорта
protected
maxmest: integer;
sitmest: integer;
long: integer;
rashod: integer;
public
constructor Create(k,t,nr,mm,sm,l,r:intege
begin
inherited Create(k,t,nr,m,n,y);
maxmest:=mm;
sitmest:=sm;
long:=l;
rashod:=r;
end;
procedure setMT(mm,sm,l,r:integer);
begin
maxmest:=mm;
sitmest:=sm;
long:=l;
rashod:=r;
end;
function ToString():string; override;
begin
Result:='Код: ' + IntToStr(kod) + ' Маршрутное такси, № маршрута ' + IntToStr(numroute)
+ ' ' + mark + ' ' + name + ', год ' + year + ', макс. мест ' + IntToStr(maxmest) + ', сид. мест ' + IntToStr(sitmest)
+ ', длина ' + IntToStr(long) + ', расход ' + IntToStr(rashod);
end;
function ToStringRent():string; override;
begin
Result:='Код: ' + IntToStr(kod) + ' Трамвай, № маршрута ' + IntToStr(numroute)
+ ' ' + mark + ' ' + name + ' ' + year + ' Рентабельность: ' + IntToStr(Rent(30,17));
end;
function Rent(stoimost,proezd: integer):integer; override;
begin
Result := 8*rashod*stoimost - proezd*MaxPassagir();
end;
function MaxPassagir():integer; override;
begin
Result:=Round( ((maxmest-sitmest)/2 + sitmest)*8*60/15 );
end;
function getMaxMest():integer;
begin
Result:=maxmest;
end;
function getSitMest():integer;
begin
Result:=sitmest;
end;
function getLong():integer;
begin
Result:=long;
end;
function getRashod():integer;
begin
Result:=rashod;
end;
end;
autobus=class(MT) //автобус наследуется от MT
public
constructor Create(k,t,nr,mm,sm,l,r:intege
begin
inherited Create(k,t,nr,mm,sm,l,r,m,n,y)
end;
function ToString():string; override;
begin
Result:='Код: ' + IntToStr(kod) + ' Автобус, № маршрута ' + IntToStr(numroute)
+ ' ' + mark + ' ' + name + ', год ' + year + ', макс. мест ' + IntToStr(maxmest) + ', сид. мест ' + IntToStr(sitmest)
+ ', длина ' + IntToStr(long) + ', расход ' + IntToStr(rashod);
end;
function ToStringRent():string; override;
begin
Result:='Код: ' + IntToStr(kod) + ' Трамвай, № маршрута ' + IntToStr(numroute)
+ ' ' + mark + ' ' + name + ' ' + year + ' Рентабельность: ' + IntToStr(Rent(25,15));
end;
function Rent(stoimost,proezd: integer):integer; override;
begin
Result := 12*rashod*stoimost - proezd*MaxPassagir();
end;
function MaxPassagir():integer; override;
begin
Result:=Round( ((maxmest-sitmest)/3 + sitmest)*12*60/15 );
end;
end;
tramway = class (autobus) //трамвай наследуется от автобуса
protected
countw:integer; //количество вагонов
public
constructor Create(k,t,nr,mm,sm,l,r,cw:int
begin
inherited Create(k,t,nr,mm,sm,l,r,m,n,y)
countw:=cw;
end;
procedure setTramway(cw:integer);
begin
countw := cw;
end;
function ToString():string; override;
begin
Result:='Код: ' + IntToStr(kod) + ' Трамвай, № маршрута ' + IntToStr(numroute)
+ ' ' + mark + ' ' + name + ', год ' + year + ', макс. мест ' + IntToStr(maxmest) + ', сид. мест ' + IntToStr(sitmest)
+ ', длина ' + IntToStr(long) + ', расход ' + IntToStr(rashod) + ', вагонов ' + IntToStr(countw);
end;
function ToStringRent():string; override;
begin
Result:='Код: ' + IntToStr(kod) + ' Трамвай, № маршрута ' + IntToStr(numroute)
+ ' ' + mark + ' ' + name + ' ' + year + ' Рентабельность: ' + IntToStr(Rent(3,12));
end;
function Rent(stoimost,proezd: integer):integer; override;
begin
Result := 10*rashod*stoimost - proezd*MaxPassagir();
end;
function MaxPassagir():integer; override;
begin
Result := Round(sitmest*10*60/30 );
end;
function GetCountW():integer;
begin
Result:=countw;
end;
end;
Node = class //элемент списка
public
data: transport;
prev, next: Node;
constructor (d: transport; p, n: Node);
begin
data := d;
prev := p;
next := n;
end;
end;
BD = class //управление базой данных
protected
head:Node;
tail:Node;
index:integer;
public
constructor Create();
begin
head:=nil;
tail:=nil;
end;
procedure addNodeFirst(h:transport);
begin
head := new Node(h, nil, head);
if head.next <> nil then
head.next.prev := head