Система выставление счета за телефонную связь

12533
знака
0
таблиц
7
изображений

ЧЕБОКСАРСКИЙ ПОЛИТЕХНИЧЕСКИЙ ИНСТИТУТ (ФИЛИАЛ)

ФГБОУ ВПО «МОСКОВСКИЙ ГОСУДАРСТВЕННЫЙ

МАШИНОСТРОИТЕЛЬНЫЙ УНИВЕРСИТЕТ (МАМИ)»

УНИВЕРСИТЕТ МАШИНОСТРОЕНИЯ

КУРСОВОЙ ПРОЕКТ

по дисциплине: Объектно-ориентированное программирование

на тему: «Система выставление счета за телефонную связь»

для специальности 230100

Вариант №7

Выполнил:

Студент 2-го курса

заочного отделения

специальность 230100

шифр 613217

Ильин Никита Александрович

Проверил: старший преподаватель

Исаева Ирина Николаевна

Чебоксары, 2015

СОДЕРЖАНИЕ

ВВЕДЕНИЕ.. 3

1 ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ.. 4

2 UML ДИАГРАММА КЛАССОВ.. 5

3 ЛИСТИНГ СИСТЕМЫ ВЫСТАВЛЕНИЕ СЧЕТА ЗА ТЕЛЕФОННУЮ СВЯЗЬ. 7

4 ТЕСТИРОВАНИЕ ПРОГРАММЫ... 11

ЗАКЛЮЧЕНИЕ.. 14

СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ... 15


ВВЕДЕНИЕ

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


1 ЗАДАНИЕ НА КУРСОВОЕ ПРОЕКТИРОВАНИЕ

Класс Bill представляет собой разовый платёж за телефонный разговор и включает поля: фамилия плательщика, номер телефона, тариф за минуту разговора, скидка в процентах), время начала разговора, время окончания разговора, сумма к оплате. Используя класс Bill, реализовать класс ListPayer. Класс ListPayer содержит список плательщиков за телефонные услуги, дату создания списка, номер списка. Один элемент списка включает информацию о плательщике (класс Bill), статус оплаты, дату платежа, сумму платежа. Реализовать методы добавления плательщиков в список и удаления из него; метод поиска плательщика по номеру телефона и по фамилии, по дате платежа; метод вычисления полной стоимости платежей всего списка. Реализовать операцию объединения и операцию пересечения списков. Реализовать операцию генерации конкретного объекта Group (группа), содержащего список плательщиков, из объекта типа ListPayer. Должна быть возможность выбирать группу плательщиков по признаку оплаты, по дате платежа, по номеру телефона. Дата представляется структурой с тремя полями типа unsigned int: год, месяц, день. Время представляется структурой с тремя полями типа unsigned int: час, минута, секунда.


2 UML ДИАГРАММА КЛАССОВ

Диаграмма классов (англ. Static Structure diagram) — диаграмма, демонстрирующая классы системы, их атрибуты, методы и взаимосвязи между ними. Входит в UML.

Существует два вида:

- Статический вид диаграммы рассматривает логические взаимосвязи классов между собой;

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

Существуют разные точки зрения на построение диаграмм классов в зависимости от целей их применения:

- Концептуальная точка зрения — диаграмма классов описывает модель предметной области, в ней присутствуют только классы прикладных объектов;

- Точка зрения спецификации — диаграмма классов применяется при проектировании информационных систем;

- Точка зрения реализации — диаграмма классов содержит классы, используемые непосредственно в программном коде (при использовании объектно-ориентированных языков программирования).

1.jpg

Рисунок 2.1 – Диаграмма классов «Системы выставление счета за телефонную связь»


Построение диаграммы классов в курсовом проекте осуществлялось автоматически в среде разработки MS Visual Studio 2010.

2.jpg

Рисунок 2.2 – Окно добавление элемента Class Diagram

Для создания диаграммы классов необходимо добавить в проект объект Class Diagram, затем выбрать классы, поля и методы для отображения, среда разработки построит связи наследование классов и покажет тип связи.


3 ЛИСТИНГ СИСТЕМЫ ВЫСТАВЛЕНИЕ СЧЕТА ЗА ТЕЛЕФОННУЮ СВЯЗЬ

#include "stdafx.h"

#include <iostream>

#include <fstream>

#include <string>

#include <vector>

#include <string>

#include <locale>

using namespace std;

const int NotUsed = system( "color 70" );

const int N = 5;

class bill

{

std::string number, first_name, last_name;

public:

bill(std::string number, std::string first_name, std::string last_name)

{

this->number = number;

this->first_name = first_name;

this->last_name = last_name;

}

std::string getNumber()

{

return number;

}

std::string getFirst_name()

{

return first_name;

}

std::string getLast_name()

{

return last_name;

}

};

struct list_el

{

std::string number, first_name, last_name, date;

double time_call, tarif, discount, sum;

};

class listPlayer : bill

{

int n;

std::string date;

std::vector<list_el> list;

public:

listPlayer(std::string number, std::string first_name, std::string last_name, int n, int date) : bill(number, first_name, last_name)

{

this->n = n;

this->date = date;

}

void addBill(bill el, std::string date, double time_call, double tarif, double discount, double sum)

{

list_el l;

l.number = el.getNumber();

l.first_name = el.getFirst_name();

l.last_name = el.getLast_name();

l.date = date;

l.time_call = time_call;

l.tarif = tarif;

l.discount = discount;

l.sum = sum;

list.push_back(l);

std::cout<< l.number<<" "<< l.first_name<<" "<< l.last_name<<" "<< l.date<<" "<< l.time_call<<" "<<l.tarif <<" "<< l.discount<<" "<< l.sum;

}

void delBill(int del_bill)

{

if (list.size() >= del_bill)

list.erase(list.begin() + del_bill);

std::cout<<"Информация была удалена";

}

void printBill()

{

for (int i = 0; i < list.size(); i++)

std::cout<<list[i].number<<" "<<list[i].first_name<<" "<<list[i].last_name<<" "<<list[i].date<<" "<<list[i].time_call<<" "<<list[i].tarif<<" "<<list[i].discount<<" "<<list[i].sum<<" ";

}

std::vector<list_el> findNumber(std::string number)

{

std::vector<list_el> v;

for (int i = 0; i < list.size(); i++)

if (list[i].number == number)

{

v.push_back(list[i]);

std::cout<<"Номер найден!";

}

else

{

std::cout<<"Номер отсутствует!";

}

return v;

}

std::vector<list_el> findLastName(std::string last_name)

{

std::vector<list_el> v;

for (int i = 0; i < list.size(); i++)

if (list[i].last_name == last_name)

{

v.push_back(list[i]);

std::cout<<"Фамилия найдена!";

}

else

{

std::cout<<"Фамилия не найдена!";

}

return v;

}

std::vector<list_el> findDate(std::string date)

{

std::vector<list_el> v;

for (int i = 0; i < list.size(); i++)

if (list[i].date == date)

{

v.push_back(list[i]);

std::cout<<"Дата найдена!";

}

else

{

std::cout<<"Дата не найдена!";

}

return v;

}

int sum()

{

int t = 0;

for (int i = 0; i < list.size(); i++)

t += list[i].sum;

return t;

}

};

int main()

{setlocale(LC_ALL,"russian_russia");

listPlayer list(" ", " ", " ", 1, 0000);

std::string number, date, first_name, last_name,faml,numb,fnddate;

double time_call, tarif, sum, discount;

int choose;

while(1)

{

std::cout<<"Что вы хотите сделать?\n";

std::cout<<"Нажмите 1 для создания счета \n";

std::cout<<"Нажмите 2 для удаления счета \n";

std::cout<<"Нажмите 3, чтобы увидить сумму \n";

std::cout<<"Нажмите 4, чтобы найти счет по имени \n";

std::cout<<"Нажмите 5, чтобы найти счет по номеру \n";

std::cout<<"Нажмите 6, чтобы найти счет по дате \n";

std::cout<<"Нажмите 7, чтобы просмотреть список \n";

std::cin>>choose;

switch (choose)

{

case 1:

std::cout<<"Введите номер \n";

std::cin>>number;

std::cout<<"Введите имя \n";

std::cin>>first_name;

std::cout<<"Введите фамилию \n";

std::cin>>last_name;

std::cout<<"Введите дату \n";

std::cin>>date;

std::cout<<"Введите время разговора \n";

std::cin>>time_call;

std::cout<<"Введите тариф \n";

std::cin>>tarif;

std::cout<<"Введите скидку \n";

std::cin>>discount;

sum=(time_call*tarif)-((time_call*tarif)*(discount/100));

list.addBill(bill(number, first_name, last_name), date, time_call, tarif, discount,sum);

std::cout << std::endl;

break;

case 2:

int del_bill;

std::cout<<"Введите порядковый номер, начиная с 0 \n";

std::cin>>del_bill;

list.delBill(del_bill);

std::cout << std::endl;

break;

case 3:

std::cout << "Сумма по счету\n";

std::cout << list.sum();

std::cout << std::endl;

break;

case 4:

std::cout<<"Введите фамилию\n";

std::cin>>faml;

list.findLastName(faml);

std::cout << std::endl;

break;

case 5:

std::cout<<"Введите номер\n";

std::cin>>numb;

list.findNumber(numb);

std::cout << std::endl;

break;

case 6:

std::cout<<"Введите дату\n";

std::cin>>fnddate;

list.findDate(fnddate);

std::cout << std::endl;

break;

case 7:

list.printBill();

std::cout << std::endl;

break;

}

getchar();

system("pause");

}

}


4 ТЕСТИРОВАНИЕ ПРОГРАММЫ

Тестирование программного обеспечения — процесс исследования, испытания программного продукта, имеющий две различные цели:

- продемонстрировать разработчикам и заказчикам, что программа соответствует требованиям;

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

3.jpg

Рисунок 4.1 – Меню программы

В меню реализована возможность выбора действия:

- Нажмите 1 для создания счета;

- Нажмите 2 для удаления счета;

- Нажмите 3, чтобы увидеть сумму;

- Нажмите 4, чтобы найти счет по имени;

- Нажмите 5, чтобы найти счет по номеру;

- Нажмите 4, чтобы найти счет по дате;

- Нажмите 7, чтобы просмотреть список.

4.jpg

Рисунок 4.2 – Создание счета

Для создания счета необходимо ввести следующие данные:

- Номер телефон;

- Имя;

- Фамилию;

- Дату;

- Время разговора;

- Тариф;

- Скидку.

После чего на экране отобразиться полная информация о занесенных данных.

5.jpg

Рисунок 4.3 – Удаление информации

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


6.jpg

Рисунок 4.4 – Операции поиска

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

- по имени;

- по номеру;

- по дате.

Приводить отдельные тестовые скриншоты по каждому из пунктов (4-6) не имеет смысла, т.к. в конце операции программа выдает информация в режиме Найдено/Не найдено.

7.jpg

Рисунок 4.5 – Вывод суммы по счетам

Программа умеет выводит сумму оплаты по счетам (3), так же вы можете просмотреть все объекты, находящиеся в списках.


ЗАКЛЮЧЕНИЕ

В результате выполнения курсового проекта было сделано:

1. Изучены и применены принципы поэтапной разработки и отладки программ средней сложности.

2. Разработаны собственные классы, из них созданы разнообразные объекты и совместно применены для реализации требуемых алгоритмов функционирования программы.

3. Разработан собственный интерфейс программы.

5. Созданы необходимые события, делегаты и потоки и применены для эффективного параллельного функционирования объектов и их взаимодействия.

6. Разработанный программный продукт описан как с точки зрения его пользователя, отражая его внешнюю сторону, так и с точки зрения программиста, отражая особенности его реализации.


СПИСОК ИСПОЛЬЗУЕМОЙ ЛИТЕРАТУРЫ

1 Голицына, О. Л. Основы алгоритмизации и программирования [текст] : учебное пособие / О. Л. Голицына, И. И. Попов. - М. : ФОРУМ - ИНФРА-М, 2006. - 432 c.

2 Демидович Е.М. Основы алгоритмизации и программирования. Язык СИ : учебн. Пособие. – СПб.: БХВ-Петербург, 2006.

3 Павловская Т.А. С/С++. Программирование на языке высокого уровня [текст] : учебник / Т. А. Павловская. - СПб. : Питер, 2009. - 460 с.

4 Плохотников К.Э. Методы разработки курсовых работ. Моделирование, вычисления, программирование на С/С++ и МАТLAB, виртуализация, образцы лучших студенческих курсовых работ: учебное пособие. – М.: СОЛОН-ПРЕСС, 2006.

5 Программирование на алгоритмических языках. Лабораторный практикум /Артемьев И.Т./, ЧГУ: Чебоксары, 2005.

6 Пышкин, Е. В. Основные концепции и механизмы объектно-ориентированного программирования. Теория и технология программирования [текст] : учебное пособие / Е. В. Пышкин. - СПб : БХВ-Петербург, 2005.

7 Рихтер, Д. Windows Visual C/C++. Программирование на языке Visual C++ [текст] : пер. с англ. / Д. Рихтер, К. Назар. - М. : Русская Редакция ; СПб. : Питер, 2008. - 878с.

8 Юрагов, Е. А. Объектное моделирование и программирование информационных систем [текст] : учеб. пособие / Е. А. Юрагов. - М. : Изд-во МГОУ, 2011. - 258 с.


Информация о реферате «Система выставление счета за телефонную связь»
Раздел: Информатика, программирование
Количество знаков с пробелами: 12533
Количество таблиц: 0
Количество изображений: 7

Похожие материалы

Скачать
55843
11
0

... DES и ГОСТ-28147-89, а также тем, что они могут быть использованы в самых распространенных в мире стандартных каналах связи. 4. Назначение, принцип действия и функциональная схема Прибор запрета телефонной связи по заданным номерам является устройством охраной автоматики и предназначен для предотвращения несанкционированной связи абонента с платными телефонными службами. Прибор анализирует ...

Скачать
279915
38
96

... Юрасова Алексея Валентиновича Факультет: «Экономика и менеджмент» Кафедра: «Менеджмент финансов и кредита» Руководитель: Лесовой В.В., ст. пр. Тема дипломной работы: «Развитие безналичных форм расчетов на основе использования средств мобильной связи» Выполненная студентом Юрасовым А.В. дипломная работа на тему: «Развитие безналичных форм расчетов на основе использования средств мобильной связи» ...

Скачать
78560
1
0

... выдан документ) 7. Просьба заявителя о рассмотрении возможности заключения договора об оказании услуг телефонной связи __________________________________________________________________ __________________________________________________________________ __________________________________________________________________ (указать тип абонентского устройства, которое заявитель ...

Скачать
37963
0
4

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

0 комментариев


Наверх