Автор работы: Пользователь скрыл имя, 28 Марта 2013 в 18:18, курсовая работа
Работа над данным курсовым проектом направлена на разработку заданной вариантом программы, используя при этом схему проектирования MVC, а также знания, полученные в процессе изучения курса по данной дисциплине.
Разрабатываемый в данной программе справочник филателиста предназначен для коллекционирования марок, имея в своем распоряжении базу данных всех известных вам марок, а также базу данных марок своей собственной коллекции. Идет расчет на то, что в любой момент пользователь может править списки марок любой из этих баз данных. Для облегченного доступа к определенной марке будет разработана поисковая система.
Введение………………………………………………………………………...…3
1 Постановка задачи ................................................................ ......... 4
1,1 Исходные данные ........................................................................ 4
1,2 Описание предметной области ........................................................ 4
1,3 Создание объектной модели ........................................................... 5
1,4 Терминологический словарь ............... .......................................... 6
2 Описание программы ........................................................... ........... 7
2,1 Описание иерархии классов и объектов ............................................ 7
3 Руководство пользователя .................. ............................................. 9
Заключение……..……………..….…………...……..…………………….……..14
Перечень ссылок ....................................... ...................................... 15
ПРИЛОЖЕНИЕ ............................................. ................................. 16
Содержание
Введение…………………………………………………………
1 Постановка задачи………..…………………………….….……………
1.1 Исходные данные …………………….………..……………………..……....
1.2 Описание предметной области…………………………..…………………...4
1.3 Создание объектной модели………………………………………..………...5
1.4 Терминологический словарь……………
2 Описание программы.……………………….…………………………
2.1 Описание иерархии классов и объектов…………………..…………………7
3 Руководство пользователя………………
Заключение……..……………..….…………...
Перечень ссылок.…………….…….……………
ПРИЛОЖЕНИЕ ..……………………………..…..…
ВВЕДЕНИЕ
Работа над данным курсовым проектом направлена на разработку заданной вариантом программы, используя при этом MVC схему проектирования, а также знания, полученные в процессе изучения курса по данной дисциплине.
Разрабатываемый в данной программе справочник филателиста предназначен для коллекционирования марок, имея в своем распоряжении базу данных всех известных вам марок, а также базу данных марок своей собственной коллекции. Идет расчет на то, что в любой момент пользователь может править списки марок любой из этих баз данных. Для облегченного доступа к определенной марке будет разработана поисковая система. Также в программе будет представлен список других коллекционеров, включающий в себя их контактные данные и наличие редких марок. Имеется возможность редактировать данный список.
Основной целью данной программы ставится облегчение поиска и систематизации марок, а также возможность иметь некоторую информацию о других филателистах.
1.1 Исходные данные
Справочник филателиста
Марки: страна, номинал, год выпуска, тираж, особенности. Коллекционеры: страна, имя, контактные данные, наличие редких марок в коллекции.
Собственная коллекция.
Справочник филателиста
Справочник может выдавать информацию о марках в виде общего списка всех марок, в виде списка марок, содержащихся в вашей коллекции, а также информацию об отдельной марке, при помощи поисковой системы. Также можно просмотреть список всех имеющихся в данный момент филателистов в справочнике.
Доступ к справочнику открытый.
Но имеется два типа работы с
ним. Первый тип - пользовательский, рассчитан
для поиска и просмотра марок
и филателистов. Второй - администратора.
Администратор имеет более
Работа со справочником начинается
с главного меню, где есть несколько
вариантов для продолжения
Если пользователь выбрал опцию «4» -меню поиска, то его вниманию предложены следующие варианты поиска марок: при вводе «1» - пользователь перейдет к поиску марки по стране, «2» - поиск марки по цене, «3» - по году, «4» - поиск марки по тиражу.
При выборе любой опции поиска пользователю будет предложено ввести соответствующий параметр поиска, после чего ему будет представлен список найденных марок по заданному параметру.
Если пользователь выбрал опцию «5» - меню администрирования, то его внимаю, предложены следующие варианты: «1» - меню редактирования общего списка марок, «2» - меню редактирования списка марок личной коллекции, «3» - меню редактирования списка филателистов. Следует отметить, что каждое меню администрирования защищено паролем, то есть при выборе «1», «2», «3» в корневом меню администрирования пользователю сначала придется ввести пароль, и только после он попадете в требуемое меню.
В каждом меню
администрирования у
В каждом меню (кроме самого первого) у пользователя есть возможность вернуться назад при помощи ввода соответствующего символа, а также выйти из программы про помощи ввода «0».
1.3 Создание объектной модели
Анализируя постановку задач и предметную область, можно выделить набор возможных классов:
Марка Пользователь
Коллекционер Система
Филателист Поиск
Коллекция Информация
Справочник Элемент
Список
Из этого списка следует исключить избыточные классы, нерелевантные классы, нечетко определенные классы, возможные атрибуты, реализационные конструкции. После исключения всех лишних имен возможных классов получаем уточненный список классов, составляющих проектируемую систему:
Марка
Филателист
Марка - специальный знак почтовой оплаты, выпускаемый и продаваемый национальными (и иными) почтовыми ведомствами и обладающий определённым номиналом. Также марка имеет свой тираж, страну, год и т.д.
Филателист - собиратель почтовых марок и других знаков почтовой оплаты, руководствующийся при создании своей коллекции принципами филателии.
2.1 Описание иерархии классов и объектов
В ходе создания и анализа модели можно выделить следующие классы и интерфейсы:
Mark
Filatelist
Model
MView
Controller
На рисунке 2.1. представлена диаграмма этих классов.
Рисунок 2.1 - Диаграмма классов
Описание связей диаграммы:
У филателиста есть марки
Одна и та же марка может быть у нескольких филателистов
Модель содержит списки марок и филателистов
В контроллер передаются данные из модели
Контроллер управляет моделью и представлением
Filatelist – класс, описывающий коллекционера. Ему присущи такие поля:
марки, страна, имя, контактные данные, наличие редких марок в коллекции.
Mark – класс, описывающий марку. Ему присущи такие поля: страна, цена, год, тиражи и ее индивидуальные особенности.
MView – класс, который отвечает за отображение информации (визуализацию).
Controller - обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции. Содержит в себе указатель на представление (View).
Model – класс отвечающий за работу со списками марок (list<Mark>* mymarks, list<Mark>* allMarks) и филателистов (list<Filatelist>* filatelists). Содержит в себе методы работы с ними.
Приложение запускается при помощи файла Sazonov.exe.
После запуска пользователь видит корневою меню программы (рисунок 3.1). Пользователь представлено несколько вариантов для продолжения работы с программой, а именно:
При вводе: «1» пользователю предложено просмотреть список всех марок в справочнике;
«2» - просмотр списка филателистов;
«3» - просмотр марок собственной коллекции;
«4» - меню поиска марки;
«5» - меню администрирования.
Рисунок 3.1 – Корневое меню
При вводе «1» пользователь видит
список всех марок в справочнике
(рисунок 3.2), при вводе «2», «3»
он видит аналогичные рисунку 3.2
списки, но уже филателистов и элементов
собственной коллекции
Рисунок 3.2 - Список всех марок в справочнике
При вводе «4» - пользователь попадет в меню поиска (рисунок 3.3).
Рисунок 3.3 - Меню поиска
Данное меню включает в себя поиск марки по заданному параметру. Есть пять параметров, по которым пользователь может искать марку, а именно: поиск по стране, по цене, по году, по тиражу и по индивидуальным особенностям марки. При вводе (рисунок 3.4) в меню поиска «1», «2», «3», «4», «5» - пользователь переходит к вводу данных для поиска (в данном случае к вводу страны «1»).
Рисунок 3.4- Поиск марки по стране
После ввода критерия поиска, пользователю будет выведен список найденных марок по заданному параметру (рисунок 3.5). А также будет предложено продолжить поиск (ввод «y» и переход к меню поиска), либо ввод «n» и выход в главное (корневое) меню.
Рисунок 3.5 - Список найденных по заданному параметру, в данному случае по стране, марок
Поиск по 4 другим параметрам осуществляется по алгоритму, аналогичному поиску по стране.
При вводе в главном меню программы «5» пользователь попадет в меню администрирования (рисунок 3.6).
Рисунок 3.6 – Меню администрирования
В данном меню предлагается ввести «1», «2» или «3» в зависимости от того, какие данные в программе требуется изменить. В частности:
при вводе «1» - пользователь перейдет в меню администрирования списка всех марок в справочнике;
«2» - меню администрирования списка марок собственной коллекции;
«3» - меню администрирования списка филателистов.
Так как работа в каждом из этих трех меню проходит по аналогичному алгоритму, рассмотрим работу в меню администрирования списка всех марок. Каждое меню администрирования защищено паролем, как это видно на рисунке 3.7.
Рисунок 3.7 – Проверка пароля для входа в меню администрирования списка всех марок
После ввода пароля пользователь попадает уже в само меню (рисунок 3.8), где ему предложены 2 опции – добавление либо удаление элементов из списка.
Рисунок 3.8 - Меню администрирования списка всех марок
Добавление марки осуществляется при помощи клавиатурного ввода ее полей, после ввода «1» в данном меню (рисунок 3.9)
Рисунок 3.9 – Добавление новой марки в список
Операция удаления элемента производиться по его id (рисунок 3.10), которое пользователь может узнать, просмотрев список, который появиться при выборе опции удаления.
Рисунок 3.10 – Удаление марки из списка
Во всех меню есть возможность вернуться в предыдущее меню, для этого нужно ввести «9» в любом меню. Для выхода из программы во всех меню предусмотрен ввод «0».
В ходе выполнения данного курсового проекта было проведено проектирования справочника филателиста. Предметная область данного проекты была разделена на классы и связи между ними. Сама программа была построена при помощи MVC паттерна.
Стоит отметить, что MVC архитектура программы и разбиение на классы и связи между ними предметной области, значительно облегчили понимание и написание самой программы.
В результате была выполнена программа – справочник филателиста,
которая выступает в своем роде некоторой базой данных марок и коллекционеров. В программе реализованы такие операции над списками марок и филателистов как удаление и добавление элементов, просмотр списка всех марок и филателистов и просмотр списка марок собственной коллекции. Также в программе реализована система поиска марки по заданному параметру. Программа имеет 2 уровня доступа: пользовательский (включает в себя просмотр списков и параметрический поиск) и администраторский (удаление или добавление компонентов в списки)
ПЕРЕЧЕНЬ ССЫЛОК
1. Буч Г. Объектно-ориентированный анализ и проектирование с примерами на С++/ Г. Буч- М.: БИНОМ , 2000.- 560с.
2. Айра П. Объектно-ориентированное программирование на C++/ П. Айра - М.: БИНОМ ,2001. – 464с.
3. Страуструп Б. Язык программирования С++/ Б. Страуструп. - М.: Радио и связь, 1995. – 353с.
Листинг программы
Файл Mark.h содержащий описание класса Mark:
#include <string>
using namespace std;
class Mark
{
string country;
double price;
int year;
long count;
string features;
public:
Mark(string,double,int,long,
Mark();
string GetCountry();
double GetPrice();
int GetYear();
string GetFeatures();
long GetCount();
void SetCountry(string);
void SetYear(int);
void SetPrice(double);
void SetCount(long);
void SetFeature(string);
bool operator==(const Mark& mark) const;
~Mark(void);
};
Файл Mark.cpp содержащий реализацию класса Mark:
#include "StdAfx.h"
#include "Mark.h"
Mark::Mark(void)
{
}
Mark::Mark(string c,double price,int year,long count,string feat)
{
this->country = c;
this->price = price;
this->year = year;
this->count = count;
this->features = feat;
}
string Mark::GetCountry()
{
return this->country;
}
double Mark::GetPrice()
{
return this->price;
}
int Mark::GetYear()
{
return this->year;
}
string Mark::GetFeatures()
{
return this->features;
}
long Mark::GetCount()
{
return this->count;
}
void Mark::SetCountry(string s)
{
this->country = s;
}
void Mark::SetYear(int y)