Разработка программной системы для использования сотовой связи
1. Первая итерация
Анализ требований
В предметной области выделены следующие объекты:
Provider - класс, который является главным управляющим элементом нашей программной системы. Он необходим для предоставления сервисов клиенту, которые впоследствии будут использоваться. Также реализуется просмотр деятельности клиента. программный сотовый клиент провайдер
Client - класс, которому предоставляется возможность использования сервисов мобильной связи, предусмотренные выбранным провайдером.
Events - класс, в котором отображаются все действия, совершенные клиентом в процессе использования выбранного сервиса.
Диаграмма прецедентов
На первой итерации были поставлены следующие задачи:
1) Разработка удобного интерфейса для работы клиентов и провайдеров
2) Заключение нового договора с клиентом
3) Изменение информации о клиенте
4) Удаление клиента
5) Просмотр информации о клиенте
6) Вход клиента в систему под своим номером договора
7) Использование клиентом выбранного сервиса
Описание процесса проектирования
Опишем существующие отношения между вводимыми классами:
Между классами Provider и Client существует отношение ассоциации. Кратность отношения: 1 и *, поскольку при начале работы программной системы у провайдера может не быть ни одного зарегистрированного клиента, а каждый клиент привязан только к одному провайдеру.
Между классами Provider и Events существует отношение однонаправленной ассоциации (от Provider к Events), так как провайдер должен просматривать событие, совершенное клиентом, но по событию не нужно определять к какому провайдеру оно относится (то есть не требуется обеспечивать переход от события к провайдеру). Кратность отношения 1 и *, поскольку провайдер отслеживает события нескольких клиентов, а каждое событие относится к конкретному провайдеру.
Между классами Client и Events существует отношение однонаправленной ассоциации (от Client к Events), так как необходим переход от клиента к событию, при совершении какого-либо действия, но обратный переход от события к клиенту не нужен. Кратность отношения 1 и *, поскольку каждый клиент может выполнять несколько событий, или не выполнять вообще, а каждое событие относится к конкретному клиенту.
Описание классов
Опишем поля и методы, введенные нами в каждом классе на данной итерации.
В классе Client используются следующие поля:
Имя - имя клиента, носит информативный характер.
Фамилия - фамилия клиента, идентификатор клиента.
Отчество - отчество клиента, носит информативный характер.
Номер договора - порядковый номер договора (уникальный идентификатор клиента).
Выбранный провайдер - имя провайдера, выбранного клиентом при регистрации нового договора (Билайн, Мегафон, МТС).
Выбранный сервис - название сервиса, выбранного клиентом при регистрации (Звонки, СМС, Интернет), может быть изменено при вызове метода Изменение клиента.
Баланс - информация о состоянии счета клиента, изменяется при каждом использовании сервиса клиентом, а также при вводе суммы клиентом для пополнения баланса (целое, неотрицательное число).
Опишем теперь основные методы, реализуемые в данном классе:
Активность клиента - в этом методе моделируется использование клиентом различных сервисов, предоставляемых провайдером: мобильная связь, СМС, интернет. В частности, происходит снятие денег со счета клиента при использовании выбранного сервиса, соответственно тарифу провайдера.
Удаление клиента - этот метод позволяет удалить ранее зарегистрированного клиента, в частности файл с предоставленными личными данными.
Добавление клиента - метод реализующий создание нового клиента. Для этого необходимо создать новый файл и записать туда информацию о личных данных клиента, предоставленную при регистрации.
Изменение клиента - метод позволяющий изменить информацию о клиенте. Для этого очищается существующий файл выбранного клиента и записывается туда измененная информация.
В классе Provider используются следующие поля:
Имя - имя провайдера, выбранного пользователем при регистрации договора, носит информативный характер.
Цена интернета - цена за каждый скачанный Мб, которая снимается с баланса клиента при использовании данного сервиса.
Цена звонков - цена за каждую минуту разговора, которая снимается с баланса клиента при использовании данного сервиса.
Цена СМС - цена за каждое отправленное сообщение, которая снимается с баланса клиента при использовании данного сервиса.
Основные методы, реализуемые в данном классе:
Чтение файла провайдера - метод, позволяющий получить информацию о тарифах провайдера для использования ее в методе Активность клиента, класса Client.
В классе Events используются следующие поля:
Время окончания использования сервисов - время окончания использования какого-либо сервиса клиентом, требуется для вывода в статистике, а также для проверки клиента на последнюю активность.
Время использования сервиса - время, в течение которого клиент использовал сервис, носит информативный характер.
Используемый сервис - название сервиса, который в данный момент использует клиент. В зависимости от используемого сервиса выбирается соответствующий метод и снимается сумма, согласная тарифа на этот сервис.
Активность (булева переменная) - поле, показывающее активен ли данный клиент, изменяется, если клиент неактивен в течение определенного времени (месяц).
А также методы:
Проверка баланса - метод для проверки баланса на не отрицательность. Возвращает истину, если баланс положительный и ложь, если он отрицательный, чтобы впоследствии разрешать или запрещать использование сервиса в методе Активность клиента, класса Client.
Изменение баланса - в этом методе происходит изменение счета клиента на введенную им сумму.
Диаграмма классов
Программирование
Для хранения информации используются текстовые файлы: файл с информацией о клиенте (для просмотра полной информации о клиенте), файл базы данных с краткой информацией о клиенте, необходимой для вывода в таблицу базы данных, файл с порядковым номером договора.
Файл с порядковым номером договора хранит в себе номер, который присваивается следующему регистрирующемуся клиенту (после каждой регистрации хранящееся значение увеличивается на единицу).
Опишем структуру данных, хранимых в файле клиента:
Записывается построчно:
Номер договора / Имя / Фамилия / Отчество / Выбранный провайдер / Выбранный сервис / Баланс
Структура данных в файле базы данных:
Номер договора / Фамилия / Выбранный провайдер / Выбранный сервис / Адрес файла клиента
Описание классов
Client
Поля:
1) ClientName - переменная строкового типа: имя клиента
2) ClientSurname - переменная строкового типа: фамилия клиента
3) ClientSecondName - переменная строкового типа: отчество клиента
4) ClientRecordNumber - переменная строкового типа: номер договора
5) ChosenProvider - переменная строкового типа: выбранный провайдер
6) ChosenService - переменная строкового типа: выбранный сервис
7) Balance - переменная строкового типа: баланс
Методы:
1) Client - конструктор
2) activity_client - метод реализующий использование сервиса
3) Del_Client - метод реализующий удаление файла клиента
4) Add_Client - метод реализующий добавление файла клиента
5) Change_Client - метод позволяющий изменить информацию о клиенте в файле
Provider
Поля:
1) Provider_name - переменная строкового типа: имя провайдера
2) InternetPrice - переменная целого типа: цена на интернет
3) CallPrice - переменная целого типа: цена на звонки
4) SMSPrice - переменная целого типа: цена за СМС
Методы:
1) Provider - конструктор
2) ReadProviderFile - метод для чтения файла провайдера
Events
Поля:
1) EndTime - переменная типа DateTime:время окончания использования сервисов
2) TimeUsingService - переменная целого типа: время использования сервиса
3) used_service - переменная строкового типа: используемый сервис
4) activity - булева переменная: показывает, активен ли пользователь
Методы:
1) Events - конструктор
2) balance_sheet_audit - имеет параметр balance, проверка баланса на неотрицательность
3) Change_balance - имеет параметры balance, sum(сумма, на которую изменяется баланс), метод изменения баланса клиента
Интерфейс системы
Главное окно
Таблица базы данных клиентов