Форма № У 6.01
ХАРКІВСЬКИЙ НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ РАДІОЕЛЕКТРОНІКИ
Кафедра: Програмної інженерії
Дисципліна: Об’єктно-орієнтоване програмування
Спеціальність: Програмна інженерія
Курс 1 Група ПІ-12-6 Семестр 2
ЗАВДАННЯ
На курсовий проект студента
<Фамилия имя отчество>
1. Тема проекту: довідник географа
2. Термін здачі студентом закінченого проекту: “30” - травня - 2013 р.
3. Вихідні дані до проекту: специфікація програми, методичні вказівки до виконання курсової роботи, завдання на курсове проектування.
4. Зміст розрахунково-пояснювальної записки: завдання на курсове проектування, реферат, вступ, основна частина (що складається з трьох підрозділів: специфікація програми, проектна специфікація, керівництво користувача), висновки та перелік посилань.
5. Перелік графічного матеріалу: робота містить 15 рисунків, зроблених на основі скріншотів даної програми, та 9 діаграм, що відображають зв’язки між класами програми.
КАЛЕНДАРНИЙ ПЛАН
№ | Назва етапу | Термін виконання |
Видача теми, узгодження і затвердження теми | 01-03-2013 р. | |
Аналіз предметної області | 1-03-2013 – 10-03-2013 р. | |
Розробка постановки задачі | 10-03-2013 – 20-03-2013 р. | |
Розробка об’єктної моделі | 20-03-2013 – 1-04-2013 р. | |
Кодування програмної системи | 1-04-2013 – 20-04-2013 р. | |
Тестування і доопрацювання розробленої програмної системи. | 20-04-2013 – 1-05-2013 р. | |
Оформлення пояснювальної записки, додатків, графічного матеріалу | 1-05-2013 – 29-05-2013 р. | |
Публічний захист проекту перед комісією | 30-05-2013 р. |
Студент ______________________ <Фамилия имя отчество>
Керівник ______________________ Турута А.П.
«01» березня 2013 р.
ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ
Справочник географа. Города (географические координаты, численность населения), регионы (области, провинции, штаты и т. д. – принадлежность стране, столица, численность населения), страны (площадь, численность населения, форма государственного правления, столица), материки. Поиск городов-«тезок», подсчет доли городского населения в странах и регионах, населенность материков и т. д.
Реализация удобного поиска стран, регионов, городов (возможность поиска сразу нескольких объектов). Обеспечение сохранности данных при любых (даже некорректных) действиях пользователя. Реализация удобного и приятного на вид пользовательского интерфейса, а так же функций добавления, изменения, удаления данных.
Программа должна одновременно иметь хороший функциональный потенциал и быть простой в использовании. Все исключения, возникающие в программе, должны быть должным образом обработаны, пользователь должен получать лишь абсолютно понятную и коротко сформулированную информацию об ошибках. Кроме того должна быть реализована помощь, помогающая пользователю быстро освоится в программе.
РЕФЕРАТ
Пояснительная записка состоит из 29 страниц, 3 разделов. Содержит 24 рисунка, 8 источников.
Целью курсового проектирования является написание программы “Справочник географа”, а также сопровождающей ее документации.
Данная программа является справочником который предоставляет удобные возможности для хранения, просмотра и редактирования данных о географических объектах. Рассматриваемая программа разработана на C#. Приложение проектируется как многослойная структура.
В результате работы необходимо получить работающее и устойчивое приложение, которое отвечало бы всем требованиям, заявленным вначале.
Ключевые слова: СПРАВОЧНИК, ГЕОГРАФИЯ, ГОРОДА, РЕГИОНЫ, СТРАНЫ, МАТЕРИКИ, C#, ООП, ДАННЫЕ.
ABSTRACT
Explanatory memorandum consists of 29 pages, 3 sections. Contains 24 pictures, 5 sources.
The aim of the course work is to write program, "Handbook of the geographer," and its accompanying documentation.
This program is a guide that provides convenient ways to store, view and edit data about geographic objects. This program was developed in C#. This application is designed as a multilayer structure.
The result of the work has to be a working and stable application that would meet all the requirements stated in the beginning.
Keywords: HANDBOOK, GEOGRAPHY, CITIES, REGIONS, COUNTRIES, CONTINENTS, C#, OOP, DATA.
ОГЛАВЛЕНИЕ
Задание на курсовое проектирование. 4
Реферат. 5
Введение. 7
1 Спецификация программы.. 8
1.1 Задачи. 8
1.2 Функции программы.. 8
1.3 Пользовательский интерфейс. 11
2 Проектная спецификация. 21
2.1 Архитектура программы.. 21
2.2 Диаграмма классов на UML. 22
3 Руководство пользователя. 28
Выводы.. 30
Перечень ссылок. 31
ВВЕДЕНИЕ
В мире много стран, намного больше регионов и что уже говорить о городах. Порой бывает сложно вспомнить название того или иного географического объекта, не говоря уже о его населении или других характеристиках. Отталкиваясь от этой проблематики ставятся требования к рассматриваемой программе. Она позволяет сделать хранение данных компактным и удобным, а поиск интересующего объекта простым и одновременно гибким. Программа может быть полезна широкому ряду пользователей: например, учителям географии, чтобы делать заметки для уроков, или туристам, чтобы вести собственную коллекцию мест, которые они посетили.
Целью работы является проектирование и разработка программы с вышеуказанными свойствами. Также, в конце необходимо тестирование программы. Общими требованиями к приложению являются реализация удобного для пользователя интерфейса, обеспечение максимальной устойчивости программы, ее широкая функциональность.
Так же, очень важное место занимает процесс кодирования программы. Все стандарты написания кода должны быть выдержаны, код не может дублироваться, в процессе написания кода необходимо придерживаться парадигмы объектно-ориентированного программирования.
СПЕЦИФИКАЦИЯ ПРОГРАММЫ
Задачи
Программа должна иметь функции, предоставляющие пользователю возможности для просмотра, редактирования, сохранения и загрузки данных, возможность при нажатии на соотвественную кнопку загрузить торрент-файл с фильмом, экспортировать описание фильма в html файл.
Устойчивость программы должна быть максимальной: программа не должна терять работоспособности ни при каких, даже некорректных, действиях пользователя. Всякие действия, грозящие потерей информации, должны быть подтверждены пользователем.
Интерфейс пользователя должен быть понятным и приятным внешне, а так же предоставлять удобные возможности для работы с данными.
На любом этапе нажатие любой клавиши должно игнорироваться или вызывать предусмотренные действия, описанные в средствах помощи.
Функции программы
- Предоставление данных для просмотра. Основными данными в программе являются фильмы. Таким образом, на главной форме программы расположена таблица с информацией о каждом фильме, который находится в списке загруженых фильмов. В этой таблице есть несколько столбцов, каждый из которых отвечает за конкретную информацию. Эти столбцы: название фильма, жанр, продюсер, год релиза, оценка. Так же есть столбец с исполнителями главных ролей, кратким содержанием фильма. Галочка в последнем столбце информирует пользователя о том, есть ли фильм в наличии. При нажатии на нее владелец видеотеки может ее поставить или убрать. Но при больших объемах информации таблица не является самым удобным способом просматривать данные. Поэтому предусмотрена функция более подробного просмотра информации о фильме. При двойном щелчке по строке с фильмом (кроме столбца с годом и продюсером) открывается дополнительная форма, в которой перечислены все вышеперечисленные данные о фильм, а так же: обложка фильма, которой не было видно в таблице и еще несколько функций, информация о которых изложена ниже[1].
- Добавление в программу новых и изменение существующих фильмов. В меню существует кнопка, при нажатии на которую откроется дополнительная форма для дополнения фильма. При этом если не все обязательные поля были заполнены, то форма выдаст предупреждение. Так же предусмотрено добавление картинки к фильму. Это поле не является обязательным. Если пользователь оставит его пустым, то будет автоматически выбрана картинка по умолчанию. При изменение картинки ее можно посмотреть на расположеной рядом рамке. Так же есть необязательное поле ссылки на торрент файл.
- Удаление фильма из списка. Удаление фильма из списка фильмов происходит при нажатии нажатии соответствующей кнопки в меню. При попвытке удалить фильм выводится окно подтверждения.
- Немедленное сохранение данных из программы на жесткий диск. В случае, если файл был только создан и до этого не сохранялся, то выпоняется обычная комнада «Сохранить...» с выбором файла.
- Создания нового списка, при этом все фильмы из данного списка. При этом всплывает окно подтверждения.
- Загрузки ранее сохраненного списка фильмов. При этом старый список фильмов стирается.
- Функция выхода: обрабатывается как через меню, так и через “крестик” пользователю предоставляется возможность отменить свое решение выхода или подтвердить его.
- Функция поиска. Поиск происходит по всей информации. При чем возвожный одновременный поиск по нескольким полям. Например, если нам нужно найти фильм с определенным продюсером и определенного года, или с определенными актерами. Что касается поиска по году и оценки, то он предусматривает поиск не по конкретному значению, а в интервале от до. Кроме этого программаконтролирует корректность данных. Нельзя ввести от 2010 года до 2000. В таком случае программа превратит 2000 в 2010 год. Тоже самое и с оценками.
- Функция открытия болле подробной информации. При двойном щелчке по фильму в списке. Видно все описание, фото и т.д.
- Функция «Быстрого поиска». При двойном щелчке по столбцу с продюсером или годом выполняется поиск по продюсеру или году соответственно.
- Функция помощи – дает пользователю полноценную справку о программе, как в общем так и об особенностях каждого раздела.
- При нажатии на галочку «Выдан» фильм в прогрмме выдается или возвращается в видеотеку.
- При нажатии на кнопку «Показать все» таблица обновляется и показывает все фильмы, независимо от того, какой поиск был произведен.
- Функция экспорта описания в html файл. При нажатии на соответственную кнопку по шаблону создается файл, в который записываются значения о текущем фильме. Так же в этот файл помещается ссылка на торрент файл, который можно скачать при наличии связи С Интернет. Шаблон файла сформулирован в программе.
- Функция скачивания торрент-файла. В фильме хранится ссылка на торрент файл, которая вписывается при создании фильма. Это поле не является обязательно, следовательно может быть не заполнено. Поэтому на этой форме было предусмотрена такая ситуация. При попытка скачать торрент файл всплывает окно, которое говорит об отсутсвии ссылки на файл. Для скачивания самого файла необходимо Интернет-соединение. Поэтому при неуспешнойй попытке скачать файл будет выведено сообщение о неудаче.
Пользовательский интерфейс
При запуске программы открывается главное меню (рис. 1.1):
Рисунок 1.1 Главное меню
На главной форме есть доступ почти ко всем функциям программы. Для доступа большинства из них необходимо загрузить список фильмов.
Ниже представлена форма с загруженым списком фильмов(рис 1.2). Это можно сделать, если нажать на соответственную кнопку в подменю «Файл». После загрузки таблица заполняется данными и сортируется по алфавиту.
При нажатию на какую-то ячейку она выделяется. В зависимости от того, какой фильм выделен, действия будут выполнятся по отношению к этому фильму.
Кроме таблицы на форме так же расположена область для поиска(поля для ввода и кнопки «Поиск» и «Показать все»). При заполнении этих полей и нажатии кнопки «Поиск» список фильмов будет изменен(все фильмы будут отфильтрованы согласно заданым параматрам).
Присутствует меню. Оно включает в себя три подменю. Среди них: «Файл», «Изменить», «Помощь». Подменю «Файл» предоставляет возможности по сохранению списка фильмов, загрузке, быстрому сохранению, и выходу из программы. Подменю «Изменить» - это работа с самим списком фильмов (добавление фильма, удаление, измнение выбранного фильма). И последнее подменю – «Помощь». Выводит справку о программе и краткое руководство пользователя.
Рисунок 1.2 Форма с загруженными файлами
Теперь рассмотрим все функции подробнее.
Рассмотрим подробнее процедуру загрузки списка фильмов. Для этого нужно сначала зайти в подменю «Файл»(рис 1.3).
Рисунок 1.3 Подменю «Файл»
При нажатии на кнопку загрузить в случае, если в текущем списке есть фильм, высвечивается окно подтверждения. В случае согласия с потерей несохраненных файлов открывается диалоговое окно для выбора файла со списком фильмов.
Если нажать на кнопку «Новый», то после окна подтверждения список фильмов обнулятся.
При нажатии «Сохранить» список фильмов перезаписывается в файл из которого был загружен, или в который был сохранен.
Кнопка «Выход» закрывает программу.
Рассмотрим следующие подменю «Изменить»(рис 1.4)
Рисунок 1.4 Подменю «Изменить»
Это подменю предназначено для работы с самим списком фильмов. Оно включает в себя следующие кнопки: «Добавить...», «Изменить фильм...» «Удалить выбранный фильм». Рассмотрим подробнее каждую из них.
Кнопка «Добавить» вызывает новое окно(рис 1.5)
Рисунок 1.5 Форма добавления фильма
Как можно увидеть, некоторые поля уже заполнены. В частности год и оценка заполнены минимальными значениями, картинка выставлена по умолчанию. Заполнить все остальные поля предстоит пользователю.
При попытки создать фильм с незаполненным обязательным полем(обязательным полем является название, жанр, студия, год, продюсер, главные роли, описание) появиться предупреждение о неполном заполнении формы(рис 1.6). если пользователь передумал создавать фильм, он может воспользваться кнопкой «Отмена», которая просто вернет его к главной форме.
Рисунок 1.6Форма добавления фильма
Поля год и оценка имеют ограничение по вводу. Оценка может быть в интервале от 1 до 10, а год от 1950 до 2100. При выборе величины вне этого промежутка значение будет автоматически приближено либо к минимальному либо к максимальному.
При нажатии на кнопку «...» открывается диалог открытия файла, в котором нужно выбрать картинку. После выбора картинки и нажатия на кнопку «ОК» ссылка в поле картинка изменится. Так же поменяется картинка для того, чтобы пользователь мог убедиться в правильном выборе. После того как пользователь заполнил все поля он может нажать клавишу «ОК». После этого будет создан фильм на основе заданой информации и добавлен в главный список. Список будет отсортирован по алфавиту.
Следующяя кнопка «Изменить фильм...». После нажатия на эту кнопку открывается уже описанная выше форма добавления фильма, но с уже заполненными полями (рис 1.7):
Рисунок 1.7 Форма изменения фильма
Для данного фильма отсутствует ссылка на торрент файл и картинка. Эти поля пусты. Как и при создании фильма отслеживается, чтобы поля не остались пустыми.
После нажатия на кнопку «ОК» фильм изменяется, соответственные изменения вносятся и в список, он сортируется.
И последняя кнопка «Удалить выбранный фильм» удаляет фильм из списка после подтверждения в всплывающем окне.
Теперь рассмотрим следующюю часть главной формы, область поиска(рис 1.8)
Рисунок 1.8 Подтверждение удаления
Это область предназначена для поиска фильмов о нескольким критериям. Например если нам нужно найти все фильмы с актером Джонни Деппом, которые были выпущены по после 2000 года, то нам нужно указать актера который нас интрисует, и год соответственно больше 2000. Таким образом можно получить список желаемых фильмов. Начать поиск можно либо при нажатии на кнопку «Поиск», либо нажатием кнопки Enter. Введение всех полей здесь не является обязательным. Программа контролирует, чтобы минимальное значение года или оценки были действительно минимальным и не привышало максимальное. Тоже касается и максимальных значений.
Так же есть кнопка «Показать все», которая возвращает исхходный список.
Ниже приведен пример поиска с такими параметрами: жанр – боевик, год – от 2000 до 2008(рис 1.9)
Теперь рассмотрим список фильмов. У него есть 9 столбцов, которые отвечают за отображение определенных данных. Кроме этого он выполняет некоторую функцию при двойном щелчке в зависимости от того, на каком столбце было произведено нажатие.
Рисунок 1.9 Подменю “Редактировать”
Всего возможны три варианта. Первый: если клацнуть по полю с годом. В этом случае программа оставит в списке только те фильмы, у которых год будет совпадать с выбранным. После того, как список будет отсортирован, можно повторять процедуру.
Во втором случае клип происходит по ячейкам в колонке продюсер. При этом происходит поиск по продюсеру.
В третьем случае клик должен происходить по одному из оставшихся полей. При этом будет открыто новое окно с подробной информацией о фильме.
Подробнее рассмотрим это окно (рис 1.10).
Рисунок 1.10 Добавление города
На этой форме расположена информация о самом фильме. Кроме этого здесь есть еще три функциональные кнопки.
Первая кнопка «Загрузить торрент» использует ссылку которая записана внутри фильма, и загружает из интернета файл по этой ссылке. При открывается окно сохранение файла, в котором нужно указать куда будет сохранен скаченый файл. При самой загрузке файла из Интернета может возникнуть много ошибок, например нету связи с Интернетом. Об этих ошибках пользователь будет осведомлен. Так же пользователь будет информирован, если ссылка на торрент-файл отсутствует.
Вторая кнопка – это экспорт описания. При нажатиии на эту кнопку пользователю предлагается выбрать место куда будет сохранен файл. После этого по заданному шаблону будет создан файл.
Третья кнопка закрывает текущее окно и возвращает пользователя к списку фильмов.
Еще стоит заметить что процедура выдачи/получения фильма происходит когда пользователь нажимает на флажок в списке. Все остальные поля он изменять не может. Для этого следует пользоваться кнопкой изменение фильма в меню.
ПРОЕКТНАЯ СПЕЦИФИКАЦИЯ
Архитектура программы
Данное приложение является многослойным и состоит из трех слоев: слой доступа к данным, слой моделей (слой логики) и слой представления. [1].
Для удобства группы классов в программе были объединены в подкаталоги, что дает возможность отобразить слои программы в условном графическом отображении:
Рисунок 2.1 Слои программы
Несмотря на распределенные слои, такой подкаталог, как Exceptions, с одним классом вынесен отдельно, чтобы не дублировать код.
Некоторые методы абстрактных классов из слоя с данными вызываются как вспомогательные для форматирования текста непосредственно в слое представления.
Впрочем, за исключением таких особенностей, слои четко видны в архитектурной модели программы [2], а при написании самого приложения парадигма объектно-ориентированного программирования была вверху приоритетов.
Диаграмма классов на UML
- Диаграмма подкаталога Collections (рис 2.2).
Рисунок 2.2 Подкаталог Collections
- Диаграмма подкаталога DataAccess (рис 2.3).
Рисунок 2.3 Подкаталог DataAccess
- Диаграмма подкаталога Excetptions (рис 2.4). Класс из данного подкаталога доступен во всех слоях приложения.
Рисунок 2.4 Подкаталог Exception.
- Диаграмма подкаталога Data (рис 2.5). В данном подкаталоге содержатся абстрактные данные с литеральными константами, а также классы с методами, отвечающими для подготовки текста к выводу.
Рисунок 2.5 Подкаталог Data
- Диаграмма подкаталога DialogForms (рис 2.6). Содержит все классы, отвечающие за диалоговые окна, проверку введённых в них данных, передачу данных на главную форму. При этом используется наследование, чтобы не повторять общие черты форм по несколько раз (такой прием применяется и в случае с основными формами), что позволяет полностью избежать дублирования кода, и сделать программу хорошо читаемой, а главное возможной к модификациям, так как добавление новой формы со схожей структурой не привело бы к изменению уже существующих классов, а новый класс не пришлось бы писать с нуля.
Рисунок 2.6 Подкаталог DialogForms
- Диаграмма подкаталога Models (рис. 2.7). Ниже предствлены классы, объекты которых используются для передачи информации между слоями доступа к данным, слой моделей (слой логики) и слой представления. Для исключения дублирования кода снова было применено наследование, что также позволит сделать дальнейшую модификацию программы более удобной.
Рисунок 2.7 Подкаталог Models
- Диаграмма подкаталога Forms (рис. 2.8).
Рисунок 2.8 Подкаталог Forms
- Диаграмма подкаталога Logic (рис. 2.9).
Рисунок 2.9 Подкаталог Logic
РУКОВОДСТВО ПОЛЬЗОВАТЕЛЯ
Для установки программы достаточно распаковать архив в желаемую папку. Далее следует запустить приложение из полученной папки.
При запуске вы оказываетесь в главном меню (рис 1.1). Тут вам предлагается 4 режима: города, регионы, страны и материки. Нажав на любую из четырех кнопок, вы обнаружите новое окно для просмотра, редактирования, сохранения и загрузки своих коллекций. Помните, что вы всегда можете вызвать справку нажав на подменю “Справка” или на клавишу F1, где Вам будет оказана помощь в освоении программы.
Для возврата в главное меню выберите пункт "В главное меню" в подменю "Файл" и подтвердите свое решение. При этом Вам будет дана возможность сохранить данные на диске - при согласии данные перезапишутся, а при отказе останутся такими же, как были после прошлого сохранения.
Для очистки списка выберите пункт "Новый список" в подменю "Файл", и подтвердите свое решение.
Для немедленного сохранения списка выберите пункт "Сохранить" подменю "Файл".
Для загрузки ранее сохраненного списка выберите пункт "Загрузить" в подменю "Файл".
Для выхода выберите пункт "Выход" в подменю "Файл" или нажмите на крестик в правом верхнем углу окна. При этом Вам будет дана возможность сохранить данные на диске - при согласии данные перезапишутся, а при отказе останутся такими же, как были после прошлого сохранения.
Для добавления нового экземпляра в список выберите пункт "Добавить" в подменю "Редактировать".
Для изменения существующего экземпляра в списке нажмите на него и выберите пункт "Изменить" подменю "Редактировать".
Для удаления экземпляра в списке нажмите на него и выберите пункт "Удалить" подменю "Редактировать".
Привязка действий к клавишам: F1 – помощь; Entег – согласие, завершение ввода; Еsс – отказ, закрытие диалогового окна; Таb – переход к следующему полю; Shift-Tab – возврат к предыдущему полю [8].
Для поиска заполните поля, в точности которых вы уверены (цвет прямоугольника поменяется) и нажмите кнопку "Найти". Внимание: население выводится в соответствии с округлением относительно порядка числа. При добавлении, изменении и поиске объектов помните, что название может состоять как из букв так и из цифр, население задается натуральным числом. Следует помнить, что географические координаты задаются десятичными дробями – сначала широта: от 90 до -90, потом долгота: от 180 до -180. В дроби разделителем служит запятая, а не точка. Год основания задается целым числом (если до. н. э., то со знаком минус). Площадь тоже задается натуральным числом.
Чтобы узнать долю городского населения в регионе или стране, выберите интересующий Вас объект из списка и нажмите кнопку "Доля городского населения".
ВЫВОДЫ
В результате выполнения задания был разработан программный продукт, отвечающий всем требованиям и целям поставленным при его планировании. Во время разработки программы большое внимание уделялось следованию парадигме объектно-ориентированного программирования. Кроме значительное внимание было уделено рефакторингу и тестированию программы. Благодаря абстрагированию основных классов программа имеет отличные возможности для расширения, а многослойность позволят с легкостью внедрять локальные модификации не опасаясь краха приложения [6].
Следует отметить, что в результате тестирования были обнаружены и исправлены ошибки в Tab-индексации, а так же при работе с пустым списком, что особо ставило под вопрос устойчивость программы. Тем не менее, стиль написания и организации кода позволили быстро выявить причину ошибки и исправить ее. Тестирование финальной версии программы показало, что обрабатываются все исключительные ситуации. Был положительно отмечен интерфейс программы. В процессе разработки были добавленны переходы по ссылкам чтобы ускорить перемещения между формами.
Как уже упоминалось, пользовательский состав данного приложения весьма широк. Приложение может применятся как людьми отдельных специальностей для облегчения своей роботы, так и просто любителями путешествий и географии.
ПЕРЕЧЕНЬ ССЫЛОК
1) Бондарев В.М., Объектно-ориентированное программирование на С#. Учебное пособие. – Харьков: СМИТ, 2009г. – 224 с.
2) Эндрю Троельсен. C# и платформа.NET. Библиотека программиста. – СПб.: Питер, 2005. – 796 с.
3) Карли Ватсон – С#, Издательство "Лори", Москва, 2005.
4) Нейгел Крис, Билл Ивьен и др. "C# 4.0 и платформа.NET 4 для профессионалов"
5) Адамчик М.В., Страны мира и континенты. Энциклопедический справочник. – Харвест, 2007, -384с.
6) Герберт Шилдт "C# 4.0. Полное руководство"
7) http://msdn.microsoft.com
8) http://stackoverflow.com/