Интерфейс пользователя демонстрационного приложения.

 

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

При выборе первого пункта меню осуществляется заполнение полей профиля пользователя (рисунок 2.2).

После заполнения полей профиля пользователя приложение возвращает в главное меню (рисунок 2.3).

При выборе второго пункта отображается меню второго уровня (рисунок 2.4). При выборе соответствующего пункта меню осуществляется ввод фамилии пользователя (рисунок 2.5), после чего на экран выводится информация о найденном пользователе (рисунок 2.6), или о том, что пользователь не найден (рисунок 2.7).

Чтобы редактировать профиль пользователя, необходимо выбрать первый пункт меню третьего уровня, после чего осуществляется ввод новых данных о профиле пользователя (рисунок 2.8).

Чтобы удалить профиль пользователя, необходимо выбрать второй пункт меню третьего уровня, после чего осуществляется метод удаления профиля найденного пользователя (рисунок 2.9).

При выборе третьего пункта в главном меню на экран выводится список всех пользователей с содержимым полей всех классов, содержащихся в UserContainer (рисунок 2.10).

 

 

 
 

Рисунок 2.1 – Главное меню

 


 

 
 

Рисунок 2.2 – Заполнение полей профиля пользователя

 

Рисунок 2.3 – Возврат в главное меню

 

 


 

Рисунок 2.4 – Меню второго уровня

 


Рисунок 2.5 – Ввод фамилии пользователя

 
 

Рисунок 2.6 – Вывод информация о найденном пользователе

 
 

 

Рисунок 2.7 – Пользователь не найден

 

Рисунок 2.8 – Редактирование профиля

 

 

 
 

Рисунок 2.9 – Удаление профиля пользователя

 

 
 

Рисунок 2.10 – Вывод списка всех пользователей

 

 

ЗАКЛЮЧЕНИЕ

 

В ходе данной курсовой работы были изучены методы и средства использования стандартной библиотеки шаблонов (STL). Были закреплены навыки практического применения ООП, а так же реализовано демонстрационное приложение на языке программирования C++ в среде разработки Visual Studio 2015 Comunity.

 

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

 

· 1. Скотт Мейерс: Эффективное использование STL

· 2. Ирэ Пол, «ООП с использованием С++», Киев, «ДиаСофт», 2010

·

· 3. Ричард Вайнер, Льюис Пинсон, «С++ изнутри» Киев, «ДиаСофт», 1993

· 5. Дейтел П. Дж., Дейтел Х. М. Как программировать на С++. Введение в объектно-ориентированное проектирование с использованием UML. / Пер. с англ. — М.: Издательство < Бином>, 2009.

· 6. Элджер Дж. С++: библиотека программиста. — СПб.: ЗАО Издательство Питер, 2009.

 

ПРИЛОЖЕНИЕ А. Листинг CourseWORK.cpp :

 

#include "stdafx.h"

#include "User.h"

#include "UserContainer.h"

#include "Menu.h"

#include <locale.h>

 

using namespace std;

 

int main()

{

setlocale(LC_CTYPE, "Russian");

UserContainer *container = new UserContainer();

Menu *menu = new Menu();

menu->container = container;

 

menu->mainMenu();

 

return 0;

}

 

 

Листинг Menu.h :

 

#pragma once

#include "iostream"

#include "conio.h"

#include "User.h"

#include "UserContainer.h"

 

using namespace std;

 

class Menu

{

public:

UserContainer *container;

 

Menu();

~Menu();

 

void mainMenu();

 

};

 

 

Листинг Menu.cpp :

 

#include "stdafx.h"

#include "Menu.h"

 

 

Menu::Menu()

{

}

 

 

Menu::~Menu()

{

}

 

 

void Menu::mainMenu() {

system("CLS");

 

cout << "Всего пользователей в системе: " << container->userList.size() << endl << endl;

cout << "Выбирете действие" << endl << endl;

cout << "1 - создать и добавить пользователя" << endl;

cout << "2 - найти пользователя по фамилии" << endl; //редактировать/удалить

cout << "3 - вывести всех пользователей" << endl;

cout << "0 - выход" << endl;

 

std::cin.clear();

int c;

 

cin >> c;

 

if (c == 0) {

return;

}

 

if (c == 1) {

system("CLS");

 

User *user = new User();

 

cout << "Введите идентификатор пользователя (int)" << endl;

cin >> user->userId;

cout << "Введите имя пользователя (string)" << endl;

cin >> user->name;

cout << "Введите фамилию пользователя (string)" << endl;

cin >> user->surname;

cout << "Введите отчество пользователя (string)" << endl;

cin >> user->patronymic;

cout << "Введите логин пользователя (string)" << endl;

cin >> user->login;

cout << "Введите email пользователя (string)" << endl;

cin >> user->email;

cout << "Введите пароль пользователя(string)" << endl;

cin >> user->password;

cout << "Введите контактный телефон пользователя(int)" << endl;

cin >> user->phone;

cout << "Введите дату регистрации пользователя(string)" << endl;

cin >> user->regDate;

cout << "Введите дату последнего действия в системе(string)" << endl;

cin >> user->lastActivityDate;

cout << "Введите онлайн/офлайн пользователя(bool)" << endl;

cin >> user->onlineFlag;

cout << "Введите код роли в системе пользователя(int)" << endl;

cin >> user->roleCode;

cout << "Введите код филиала пользователя(int)" << endl;

cin >> user->branchCode;

cout << "Введите код подразделения пользователя(int)" << endl;

cin >> user->partCode;

cout << "Введите код должности пользователя(int)" << endl;

cin >> user->userPositionCode;

 

container->addUser(*user);

 

mainMenu();

}

 

if (c == 2) {

system("CLS");

 

cout << "1 - ввести фамилию" << endl;

cout << "0 - возврат в главное меню" << endl;

 

std::cin.clear();

int c;

 

cin >> c;

 

if (c == 1)

{

system("CLS");

 

string surname;

 

cout << "Введите фамилию для поиска" << endl;

cin >> surname;

 

cout << endl;

cout << "Найденный пользователь:" << endl << endl;

 

User user = container->findUserBySurname(surname);

 

if (user.userId < 0)

cout << "Пользователь не найден" << endl << endl;

else

user.printUser();

 

cout << "1 - редактировать профиль пользователя" << endl;

cout << "2 - удалить профиль пользователя" << endl;

cout << "0 - возврат в главное меню" << endl;

 

std::cin.clear();

int c;

 

cin >> c;

 

if (c == 0) {

mainMenu();

}

 

if (c == 1) {

system("CLS");

 

cout << "Введите имя пользователя (string)" << endl;

cin >> user.name;

cout << "Введите фамилию пользователя (string)" << endl;

cin >> user.surname;

cout << "Введите отчество пользователя (string)" << endl;

cin >> user.patronymic;

cout << "Введите логин пользователя (string)" << endl;

cin >> user.login;

cout << "Введите email пользователя (string)" << endl;

cin >> user.email;

cout << "Введите пароль пользователя(string)" << endl;

cin >> user.password;

cout << "Введите контактный телефон пользователя(int)" << endl;

cin >> user.phone;

cout << "Введите дату регистрации пользователя(string)" << endl;

cin >> user.regDate;

cout << "Введите дату последнего действия в системе(string)" << endl;

cin >> user.lastActivityDate;

cout << "Введите онлайн/офлайн пользователя(bool)" << endl;

cin >> user.onlineFlag;

cout << "Введите код роли в системе пользователя(int)" << endl;

cin >> user.roleCode;

cout << "Введите код филиала пользователя(int)" << endl;

cin >> user.branchCode;

cout << "Введите код подразделения пользователя(int)" << endl;

cin >> user.partCode;

cout << "Введите код должности пользователя(int)" << endl;

cin >> user.userPositionCode;

 

container->updateUser(user);

 

mainMenu();

}

 

if (c == 2) {

container->deleteUser(user);

mainMenu();

}

}

 

if (c == 0)

{

system("CLS");

mainMenu();

}

}

 

if (c == 3) {

system("CLS");

 

cout << "Список всех пользователей" << endl << endl;

 

container->printAllUsers();

 

cout << "0 - возврат в главное меню" << endl;

 

std::cin.clear();

int c;

 

cin >> c;

 

if (c == 0)

{

mainMenu();

}

}

 

mainMenu();

 

 

}

 

Листинг UserContainer.h :

#pragma once

#include "User.h"

#include "deque"

 

using namespace std;

 

class UserContainer

{

public:

UserContainer();

~UserContainer();

 

User findUserBySurname(string surname);

void printAllUsers();

void addUser(User user);

void deleteUser(User user);

void updateUser(User user);

 

deque<User> userList;

 

};

 

Листинг UserContainer.cpp :

#include "stdafx.h"

#include "UserContainer.h"

#include "iostream"

 

UserContainer::UserContainer()

{

}

 

 

UserContainer::~UserContainer()

{

}

 

void UserContainer::addUser(User user) {

userList.push_front(user);

}

 

void UserContainer::printAllUsers() {

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

{

userList[i].printUser();

}

}

 

User UserContainer::findUserBySurname(string surname)

{

User findUser;

 

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

{

if (userList[i].surname == surname)

{

findUser = userList[i];

break;

}

}

 

return findUser;

}

 

void UserContainer::deleteUser(User user)

{

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

if (userList[i].userId == user.userId) {

userList.erase(userList.begin() + i);

break;

}

}

}

 

void UserContainer::updateUser(User user)

{

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

if (userList[i].userId == user.userId) {

 

userList[i] = user;

 

break;

}

}

}

 

 

Листинг User.h :

#pragma once

#include <string>

 

using namespace std;

 

class User

{

public:

int userId;

string name;

string surname;

string patronymic;

string login;

string email;

string password;

string phone;

string regDate;

string lastActivityDate;

bool onlineFlag;

int roleCode;

int branchCode;

int partCode;

int userPositionCode;

 

User();

 

~User();

 

void printUser();

 

 

};

 

 

Листинг User.cpp :

#include "stdafx.h"

#include "User.h"

#include "iostream"

 

using namespace std;

 

User::User()

{

 

}

 

 

User::~User()

{

}

 

 

void User::printUser()

{

cout << "Иентификатор пользователя " << userId << endl;

cout << "Имя пользователя " << name << endl;

cout << "Фамилия пользователя " << surname << endl;

cout << "Отчество пользователя " << patronymic << endl;

cout << "Логин пользователя " << login << endl;

cout << "Email пользователя " << email << endl;

cout << "Пароль пользователя " << password << endl;

cout << "Контактный телефон пользователя " << phone << endl;

cout << "Дата регистрации пользователя " << regDate << endl;

cout << "Дата последнего действия в системе " << lastActivityDate << endl;

cout << "Онлайн/офлайн пользователя " << onlineFlag << endl;

cout << "Код роли в системе пользователя " << roleCode << endl;

cout << "Код филиала пользователя " << branchCode << endl;

cout << "Код подразделения пользователя " << partCode << endl;

cout << "Код должности пользователя " << userPositionCode << endl << endl;

}