Программа учета наличия грузовых машин в автопарке

  • Вид работы:
    Курсовая работа (т)
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Русский
    ,
    Формат файла:
    MS Word
    417,27 Кб
  • Опубликовано:
    2012-08-14
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Программа учета наличия грузовых машин в автопарке

Задание на курсовую работу

Написать программу учета наличия транспортных средств (грузовых машин) в автопарке. Программа должна иметь удобный пользовательский интерфейс с необходимыми пунктами меню. Работа с информацией должна производится в окнах. Информация организуется в виде структур, и хранится в файле. Структура содержит следующие поля: тип машины, текущее состояние (в ремонте, списали, свободна, занята), грузоподъемность. По запросу выдавать информацию о свободных машинах, занятых, ремонтируемых, списанных. Выдаваемая информация должна быть отсортирована по задаваемому признаку. При реализации операций редактирования, добавления, удаления информации необходимо предусмотреть операцию отмены последних действий. Необходимо реализовать оконный интерфейс при помощи ассемблерных вставок. Или реализовать ввод данных через собственные функции, реализованные на ассемблере.

Программа должна быть разработана на языке программирования С++ с использованием классов.

Содержание

Задание на курсовую работу

Введение

1. Обзор методов и алгоритмов решения поставленной задачи

2. Обоснование выбранных методов и алгоритмов

3. Описание программы для программиста

4. Описание алгоритмов решения задачи

5. Руководство пользователя

Заключение

Введение

Немного истории - С был создан Деннисом Ричи (Dennis Ritchie) в лабораториях Bell Telephone Laboratories в 1972 г. Этот язык создавался не от скуки, а для конкретной задачи - разработки операционной системы UNIX (которая сейчас используется на множестве компьютеров). С самого начала язык С преследовал весьма практическую цель- помочь программистам, очень занятым людям, быстро писать программы.

Язык С оказался таким гибким и мощным, что быстро вышел за пределы лабораторий Bell. Им стали пользоваться повсюду для разработки самых разных программ. Однако вскоре различные организации стали применять свои собственные версии языка, и различия между этими версиями, пусть и небольшие, доставляли программистам немало неудобств. В ответ на возникновение этой проблемы Американский Национальный Институт Стандартов (American National Standards Institute- ANSI) сформировал в 1983 году комитет для создания стандарта языка С. Именно этот стандарт известен как стандарт ANSI языка.

Язык С++ развился из С, который в свою очередь был создан на основе двух предшествующих языков - BCPL и В. Язык BCPL был создан в 1967 году Мартином Ричардом как язык для написания компиляторов и программ­ного обеспечения операционных систем. Кен Томпсон предусмотрел много возможностей в своем языке В - дубликате BCPL и использовал В для создания ранних версий операционной системы UNIX в Bell Laboratories в 1970 году на компьютере DEC PDP-7. И BCPL, и В были «нетипичными» языками - каждый элемент данных занимал одно «слово» в памяти и бремя обработки элемента данных, например, как целого или действительного числа падало на плечи программиста.

Язык С был развит из В Деннисом Ритчи в Bell Laboratories и перво­начально реализован на компьютере DEC PDP-11 в 1972 году. С использует многие важные концепции BCPL и В, а также добавляет типы данных и другие свойства. Первоначально С приобрел широкую известность как язык разработки операционной системы UNIX. Сегодня фактически все новые опе­рационные системы написаны на С или на С++. В течение двух последних десятилетий С стал доступным для большинства компьютеров. С независим от аппаратных средств. При тщательной разработке на С можно написать мобильные программы, переносимые на большинство компьютеров.

В конце 70-х годов С развился в то, что теперь относят к «традиционному С», «классическому С» или «С Кернигана и Ритчи». Публикация издатель­ством Prentice-Hall книги Кернигана и Ритчи «Язык программирования С» привлекла широкое внимание к этому языку. Эта публикация стала одной из наиболее удачных книг по вычислительной технике за все время.

Широкое распространение С на различных типах компьютеров (иногда называемых аппаратными платформами) привело, к сожалению, ко многим вариациям языка. Они были похожи, но несовместимы друг с другом. Это было серьезной проблемой для разработчиков программ, нуждавшихся в на­писании совместимых программ, которые можно было бы выполнять на не­скольких платформах. Стало ясно, что необходима стандартная версия С. В 1983 году при Американском Национальном Комитете Стандартов в области вычислительной техники и обработки информации был создан технический комитет X3J11, чтобы «обеспечить недвусмысленное и машинно-независимое определение языка». В 1989 году стандарт был утвержден. ANSI скооперировался с Международной Организацией Стандартов (International Standards Organizations - ISO), чтобы стандартизировать С в мировом масштабе; со­вместный стандарт был опубликован в 1990 году и назван ANSI/ISO 9899: 1990. Копии этого документа можно заказать в ANSI. Второе издание книги Кернигана и Ритчи, вышедшее в 1988 году, отражает эту версию, называемую ANSI С; эта версия языка используется теперь повсе­местно.

С++ - расширение С - был разработан Бьерном Строустропом в начале 80-х годов в Bell Laboratories. С++ обеспечивает ряд свойств, которые «при­водят в порядок» язык С, но, что более важно, он обеспечивает возможность объектно-ориентированного программирования. Это явилось революционной идеей в мире программного обеспечения. Быстрое, корректное и экономное создание программного обеспечения остается иллюзорной мечтой и это в то время, когда требуется проектирование нового и все более мощного программ­ного обеспечения. Объекты - это эффективные повторно используемые ком­поненты программного обеспечения, моделирующие элементы реального мира. Разработчики программного обеспечения обнаруживают, что исполь­зование достижений модульного, объектно-ориентированного проектирования может значительно повысить продуктивность групп разработки по сравнению с предшествующей популярной технологией программирования, такой, как структурное программирование. Объектно-ориентированные программы легче понимать, корректировать и модифицировать.

Было разработано много других объектно-ориентированных языков, включая наиболее заметный из них Smalltalk, разработанный в Центре Ис­следований Palo Alto компании Xerox (Palo Alto Research Centre - PARC). Smalltalk - чистый объектно-ориентированный язык - в нем буквально все является объектом. С++ - это гибридный язык, он предоставляет возмож­ность программировать и в стиле С, и в объектно-ориентированном стиле, и в обоих стилях сразу. Существует глубокая уверенность в том, что с се­редины 90-х годов С++ станет доминирующим системно-образующим языком.

1. Обзор методов и алгоритмов решения поставленной задачи

Программа учета наличия транспортных средств представляет собой программу управления базой данных. Реализация базы данных возможна несколькими способами: - использование существующих СУБД; - создание собственной структурированной базы данных.

К преимуществу СУБД можно отнести централизованное хранение всей информации о базе данных в самой БД. В системе изначально созданы и реализованы алгоритмы обработки массивов данных без внешнего вмешательства. Все операции по изменению, сохранению информации выполняются самой СУБД, следовательно, нет необходимости программисту самому реализовывать методы сохранения и открытия файла данных. К недостаткам СУБД можно отнести избыточность хранимой информации в файле БД, что существенно увеличивает размер файла БД. А так же необходимость наличия СУБД на компьютере пользователя, что существенно усложняет поставку программ конечному пользователю.

Реализация собственной структуры базы данных в виде файла дает преимущества при работе с программой на других компьютерах (нет необходимости развертывания СУБД - достаточно просто скопировать файлы на компьютер и программа готова к работе). К недостаткам такого подхода можно отнести сложность проекта, так как на плечи программиста ложится реализация работы программы управления базой данных. Причем необходимо реализовать достаточно большое количество алгоритмов работы с данными, такие как сохранение данных в файл и последующее открытие, сортировка данных по различным полям, отбор данных по параметрам и др.

Хранение информации в самой программе возможны при помощи таких структур данных как массивы и списки.

Весь набор данных можно представить как большой массив данных в котором хранится вся необходимая информация. Основным недостатком такого метода хранения является недоступность увеличение количества хранимой информации (т.е. количества записей БД), а так же в случае неполного заполнения массива информацией (когда остаются незаполненными элементы массива) потери ресурсов системы. В случае использования динамических массивов ситуация несколько улучшится.

Хранение информации в динамических списках позволяет не ограничивать пользователя в количестве хранимой информации т.к. элементы динамического списка, как правило, хранятся в разных частях памяти и добавление нового элемента в список осуществляется без потери скорости работы программы. Добавление элемента приводит к динамическому выделению памяти под новый элемент и связыванию нового элемента со списком. Таким образом программа будет более экономично использовать системные ресурсы.

В условии задачи сказано о том, что студент должен предусмотреть возможность отмены последнего действия. Реализовать данный метод отмены можно при помощи копирования старого значения в буфер для последующего возможного восстановления. Буфер можно реализовать в виде динамического списка, в таком случае пользователь получит возможность отмены не 2 - 3 действий, а всех действий программы за время ее работы.

Разрабатываемая программа должна иметь удобный пользовательский интерфейс. Программы в операционной системе Windows могут работать в нескольких основных режимах:

оконное Win32 приложение;

консольное Win32 и Win16 приложение;

консольное MS-DOS приложение (выполняется в виртуальной машине).

Основным недостаткам консольных приложений является не удобный диалог с пользователем. К преимуществам можно отнести достаточную простоту разработки программы. Оконное приложение Windows обладает приятным интерфейсом - является существенным плюсом, но реализация интерфейса сама по себе является достаточно сложной задачей.

2. Обоснование выбранных методов и алгоритмов

В качестве основного способа хранения информации выбираем структурированные файлы базы данных. Сложность программирования логики работы с базой данных перекрываются преимуществами, дающими таким способом хранения информации.

Программа будет написана в среде Visual Studio 2008 как консольное Win32 приложение, что позволит пользоваться всеми преимуществами Win 32 программ. Отказ от оконного приложения связан прежде всего в сложности программирования оконного интерфейса, выходящего за рамки данного курсового проекта. Система будет хранить данные в двусвязных динамических списках. Подсистему отмены действий реализуем так же в виде двусвязного динамического списка. Использование двусвязного списка позволяет так же реализовать метод повтора действия (в случае если пользователю необходимо вернуть предыдущую отмену). Так как все действия хранятся в динамическом двусвязном списке пользователь получит неограниченное количество отмен действий. Оконный интерфейс реализуем при помощи символов псевдографики таблицы кодов ASCII. Функции рисования окон реализуем согласно заданию при помощи вставок ассемблерного кода. Логику работы базы данных реализуем при помощи классов. Сортировку и отбор данных реализуем как методы основного класса базы данных.

3. Описание программы для программиста

В целом программа представляет собой консольное win 32 приложение. Логика работы программы построена при помощи шести классов:- класс содержащий данные (и методы обработки данных) о машине;

Класс ClsCList - класс реализующий список одним элементом которого является класс ClsCarInfo. Класс служит буфером для хранения истории изменения информации о машине;

Класс ClsMainList - класс реализует работу списка, одним элементом которого является указатель на класс ClsCList.

Класс DataBase - класс контейнер двусвязного списка, при помощи методов данного класса реализована работа с базой данных.

Класс OperList - предназначен для хранения списка операций для последующей (возможной) отмены;

Класс ClsMainDisplay - класс реализующий работу с экраном, при помощи его методов производится взаимодействие между пользователем и компьютером.

Информация о машине хранится в классе «ClsCarInfo» в закрытой области класса «private»:

ETypeCar TypeCar;//тип автоState;//состояние автоNumber[10];//номер автоGryz;//грузоподъемность авто

Информация о типе машины хранится в поле TypeCar типа ETypeCar. Состояние машины хранится в поле State типа ECarState. Номер хранится в поле Number, под номер машины отводится 9 символов (10й служит для нулевого символа строки). Грузоподъемность машины хранится в поле Gryz целого типа.

Программа сохраняет информацию в простом текстовом файле. Вся информация сохраняется в виде текстовых строк. Информация об одном автомобиле сохраняется в виде 4-х строк (информационных полей). Числовые данные сохраняются в виде строк. Тип автомобиля и его состояние так же сохраняется в виде простого целого числа.

В порядке строк файла:

) - грузоподъемность автомобиля;

) - состояние автомобиля;

) - тип автомобиля;

) - номер автомобиля.

Состояние автомобиля кодируется следующим образом:

- «Ремонт»

- «Занят»

- «Свободен»

- «Списан»

Тип автомобиля кодируется следующим образом:

- «Бортовая»

- «Лесовоз»

- «Рефрижератор»

- «Самосвал»

- «Тягач»

- «Фургон»

- «Цистерна»

В программе используются двусвязные динамические списки. Двусвязные списки используют двойную (двунаправленную) связь между элементами списка. Каждый элемент списка содержит указатель на следующий и предыдущий элемент.

Структура и связи между классами отображены на рис. 1

Рис. 3.1 - Диаграмма классов


Опишем некоторые алгоритмы и принципы работы программы без привязки к конкретному языку программирования:

Принцип работы отмены и повторения действий программы.

Все действия (будь то добавление, изменение или удаление информации) системы записываются в двусвязный список. В каждый момент времени указатель на текущий элемент списка указывает на последнюю операцию. В случае если пользователь выбирает пункт меню «Отмена». Выполняется следующий алгоритм действий:

Шаг 1. Вызывается метод «Undo» объекта класса DataBase.

Шаг 2. Метод анализирует информацию об отменяемой информации и если производится отмена операции «Добавление» либо «Удаление» производит снятие, либо установку флага удаления с текущей записи об автомобиле (ClsMainList::int Deleted;). Иначе, смещает по списку указатель текущего объекта назад по списку.

Шаг 3. Смещает указатель текущей операции в двусвязном списке операций (OperList) назад по списку.

Двусвязный список используется для возможности «повторения» действия. Алгоритм работы команды «Вернуть» аналогичен, за исключением направлений смещения по списку операций и списку информации об автомобиле.

Принцип работы операции «Добавить»:

При выборе пункта «Добавить» программа работает по следующему алгоритму:

Шаг 1. Вызов окна ввода информации об автомобиле - класс ClsMainDisplay метод void Add().

Шаг 2. Изменение параметров автомобиля.

Шаг 3. Вызывается метод добавления операции в список операций (класс OperList). В качестве основных параметров операции записывается указатель на список с информацией об автомобиле, в качестве типа операции записывается параметр «Add» перечисления EOperation.

Шаг 4. Осуществляется вставка в список нового автомобиля класс DataBase метод void AddNode(ClsCarInfo *CarInfo).

Принцип работы операции «Изменить»

Шаг 1. Получение информации о текущем автомобиле метод GetCurrentCarInfo() класса DataBase.

Шаг 2. Вывод информации об текущем автомобиле на экран в окне «Изменение информации» (класс ClsMainDisplay метод void Edit()).

Шаг 3. Изменение параметров автомобиля.

Шаг 4. Добавляется операция «Edit» в список операций (класс OperList).

Шаг 5. Добавляется новый элемент списка в список информации об автомобиле метод void EditNode(ClsCarInfo *pCarInfo) класса DataBase.

Операция удаления:

В программе «физическое» удаление информации не производится! Для возможности отмены удаления делается пометка соответствующей записи об автомобиле, что она является удаленной, и при выводе на экран эта запись игнорируется.

Шаг 1. Добавление в список операций операции удаления текущей записи об автомобиле.

Шаг 2. Установка флага удаления записи об автомобиле (ClsMainList::int Deleted;).

Шаг 3. Перерисовка информационной области программы (класс ClsMainDisplay метод void DrawInfoWindow(int FullRepaint = 1)).

Прорисовка информационной области:

Прорисовка информационной области осуществляется при помощи обхода списка автомашин с самого начала до конца. При этом необходимо учитывать большое количество параметров при перемещении по списку. В общих чертах этот алгоритм можно представить так:

Шаг 1. Сортировка списка автомобилей.

Шаг 2. Для объекта MainDB необходимо установить указатель на текущий объект в начало списка. Это осуществляется вызовом метода DoFirst(). Т.о. мы начнем обход списка с начала в конец.

Шаг 3. Если текущий элемент списка помечен на удаление то выполняем переход далее по списку - Шаг 7.

Шаг 4. Если номер выводимого элемента за границами [НомерПервогоНаЭкране… НомерПервогоНаЭкране+19] выполняем переход далее по списку - Шаг 7.

Шаг 5. Если номер текущего выводимого автомобиля равен активному (выделяется красным цветом) - устанавливаем цвет курсора 12, иначе 15.

Шаг 6. Формируем строку в памяти и затем выводим ее на экран.

Шаг 7. Выполняем переход на следующий шаг, если метод MainDB->DoBack() вернул 0, иначе на шаг 3. Метод DoBack() осуществляет смещение указателя далее по списку автомобилей с учетом фильтра и флага удаления.

Шаг 8. Выход из цикла прорисовки.

В программе для оптимизации вывода (уменьшение мерцания экрана) так же учитываются и зоны перерисовки, а так же алгоритм смещения номера первого выводимого на экран автомобиля. Это позволяет создать эффект прокрутки списка вниз/вверх по списку. Эти параметры значительно усложняют алгоритм, поэтому в словесное описание они не включены.

Основные операции в описании алгоритмов представлены укрупнено, т.к. подробное описание привело бы к избыточности информации, при этом существенно на восприятие подобное укрупнение не повлияло.

Остальные алгоритмы приведем в виде блок-схем.

Рис. 4.1 - Блок-схема алгоритма открытия файла


Рис. 4.2 - Блок-схема алгоритма сохранения файла


Рис. 4.3 - Блок-схема алгоритма очистки базы данных

Руководство пользователя

Для запуска программы необходимы следующие файлы:.exe - исполняемый файл программы;

Файлы библиотеки среды разработки Visual Studio 2008:.dll.dll.dll.VC90.CRT.manifest

Файлы библиотеки необходимы для запуска программы на компьютерах без установленной среды разработки Visual Studio 2008.

Проект скомпилирован как X86 32-х битное консольное приложение операционной системы Windows! Программа не будет работать под операционной системой MS-DOS!

Основные клавиши при работе:- добавление нового автомобиля;- удаление текущей записи о автомобиле;..F4 - выбор пункта главного меню;- выбор текущего пункта меню или редактирование текущей информации о автомобиле;- перерисовка всего окна программы;

Переход по пунктам меню и элементам программы осуществляется при помощи навигационных клавиш клавиатуры: «←», «↑», «→», «↓».

Интерфейс программы состоит из 3-х основных частей:

главное меню;

информационная область;

строка общей информации (статусная строка);

Рис. 5.1 - Окно программы

Главное меню программы состоит из 4-х пунктов:

- Файл - доступ по кнопке «F1»

- Действие - доступ по кнопке «F2»

- Сортировка - доступ по кнопке «F3»

- О программе - доступ по кнопке «F4»

В каждом пункте меню есть соответствующие пункты подменю:

. Файл:

Открыть - открывает файл данных;

Сохранить - сохраняет текущую информацию в файл;

Выход - выход из программы;

. Действие:

Отменить - отменяет последнее действие

Вернуть - возвращает назад отмененное действие

Добавить - вызывает диалоговое окно добавления информации

Изменить - вызывает диалоговое окно изменения информации для текущей машины

. Сортировка:

По номеру - устанавливает тип сортировки «По номеру»;

По гр. подъемности - сортировка по грузоподъемности;

По состоянию - сортировка машин по состоянию;

По типу - сортировка машин по типу;

Фильтр - установка/снятие фильтра отображения информации о машинах

. О программе:

О программе - вызов окна «О программе»

Открытие и сохранение файла осуществляется при помощи диалогового окна ввода имени файла:

Рис. 5.2 - Открытие файла

Окно состоит из заголовка и поля для ввода имени файла для открытия.

Добавление и изменение информации о машине осуществляется в диалоговом окне «Добавление информации» и «Изменение информации»:

Рис. 5.3 - Добавление информации

Окно состоит из заголовка «Добавление информации» (либо «Изменение информации»), а так же 4-х информационных полей: Тип грузового автомобиля, состояние грузового автомобиля, номер и грузоподъемность. Переход между полями осуществляется при помощи навигационных клавиш клавиатуры «↑» и «↓». Начало и окончание редактирования текущего выбранного поля (выделяется красным фоном) осуществляется кнопкой «Enter». В случае редактирования полей номер и грузоподъемность в области ввода информации (зеленая полоса) появится курсор, позволяющий вводить информацию. В случае изменения полей тип или состояние автомобиля появляется окно выбора соответствующего значения:

Рис. 5.4 Выбор типа грузового автомобиля

Пользователю необходимо при помощи навигационных клавиш клавиатуры «↑» и «↓» выбрать соответствующий тип автомобиля (либо состояние) и нажать на клавишу «Enter».

Завершение добавления/изменения информации осуществляется выбором пункта «Готово».

В меню «Сортировка» пользователь может выбрать один из способов сортировки выводимой информации на экран:

Рис. 5.5 Выбор пункта меню «Сортировка»

Текущий выбранный способ сортировки помечен символом «►» - для изменения параметра сортировки пользователю достаточно выделить нужный пункт при помощи навигационных клавиш клавиатуры «↑» и «↓» и нажать на клавишу «Enter». При этом программа пометит выбранный пункт символом «►» и пересортирует заново список автомобилей.

Параметр «Фильтр» отвечает за фильтрацию выводимой информации, т.е. если фильтр установлен, то он помечается символом «►» и за словом фильтр в квадратных скобках стоит параметр фильтра. Для установки/снятия фильтра его необходимо выбрать, так же как и любой из параметров сортировки. При этом если устанавливается фильтр необходимо выбрать соответствующий параметр фильтра.

Пункт меню «О программе» выводит информационное окно о разработчике программы:

Рис. 5.6 - Окно «О программе»

Особенности программы: при выходе из программы вся информация о автомобилях сохраняется во временный файл «~DBCopy.tmp».

В случае если количество машин больше чем 19 список автомобилей выводится начиная с 1 до 19. для вывода оставшейся информации необходимо клавишей «↓» сдвинуть начало списка «вниз» т.о. список будет выводиться начиная со 2го, 3го и т.д. по номеру. Т.е. осуществляется прокрутка списка.

Параметр «Количество машин» соответствует количеству машин в базе. При этом если активен фильтр, то в информационной области может выводится меньшее количество автомобилей.

Параметр «Количество объектов» - показывает количество созданных объектов в программе. При запуске программы количество объектов - 27. при выходе при нормальном завершении всех операций - 25. Вывод количества объектов осуществляется для проверки корректности работы программы с динамическим выделением памяти, а так же ее освобождением.

Заключение

На курсовое проектирование ставилась задача создать программу учета наличия транспортных средств (грузовых машин) в автопарке. В программе существуют следующие возможности:

добавление, изменение и удаление информации;

сохранение и открытие файла с информацией о транспортных средствах;

присутствует возможность отмены и возврата действий;

сортировку информации по различным полям;

фильтрация информации по типу транспортных средств.

интерфейс приложения прост и понятен для пользователя;

управление системой осуществляется при минимальном взаимодействии с пользователем, что позволило снизить количество допускаемых ошибок; программа учет алгоритм информация

В результате проектирования было рассмотрено несколько методов решения поставленной задачи, но оптимальным был выбран текущий, так как он достаточно прост и в тоже время содержит полный набор инструментов для работы с базой данных.

Приложение отвечает всем требованиям, представленным в постановке задачи, и является программным средством, готовым к внедрению и эксплуатации.

1.     

Похожие работы на - Программа учета наличия грузовых машин в автопарке

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!