Список абонентов на С++

Задание:

Автоматизировать телефонную книгу абонентов.

Данный проект имеет разделение пользователей: на администратора и пользователя.

Администратор может:

  • Загрузка данных из файла.
  • Вывод записей.
  • Удаление одной или всех записей.
  • Поиск записи.
  • Редактирование записи.
  • Запись в файл.
  • Изменение пароля.

Пользователь может:

  • Просмотр записей.
  • Поиск записи.

Содержимое проекта:

Для данной задачи лучше всего подходят текстовые файлы. Во время своей работы, программа оперирует структурами которые ввиду своей простоты без проблем записываются и считываются из текстового файла.

Для объединения данных внутри программы используется контейнер std::list из стандартной библиотеки

Пример кода:

// Ф-ция редактирования существующей записи
void editAbonentV(list<AbonentStruct> &abonentList)
{
	system("Cls");
	std::string TEXT;
	cin.ignore();

	int iInvNomer = 0, iEditChoose = 0, iPosition = 0, iBuffer = 0;	
	bool bInvNomer = false;

	//Проверка на пустоту
	if (abonentList.empty())
	{
		cout << "Элементов не обнаружено!!!" << endl;
		return;
	}	

	//Ввод инвентарного номера
	//Цикл который выполниться минимум 1 раз
	do
	{
		cout << "Введите инв.номер: ";
		getline(cin, TEXT);

		try
		{
			//Конверт данных в число
			iBuffer = std::stoi(TEXT);
		}
		catch(...)
		{
			cout << "Неправильный формат инвентарного номера!!! Попробуйте еще!!!" << endl;
			//tmp->position = 0;
			iBuffer = -2;
		}

		if (iBuffer != -2 && iBuffer < 0)
		{
			cout << "Неправильный формат инвентарного номера!!! Попробуйте еще!!!" << endl;
		}
	}
	while(iBuffer < 0);

	iInvNomer = iBuffer;
	iBuffer = 0;

	//Организовываем цикл по листу структур
	for ( list<AbonentStruct>::iterator iter = abonentList.begin(); iter != abonentList.end(); iter++)
	{
		//Если в структуре имеется нужные нам значения, то сразу печатаем
		if ((*iter).iPosition == iInvNomer)
		{
			cout << "Инв. номер: ";
			cout << (*iter).iPosition << endl;
			cout << "Фамилия абонента: ";
			cout << (*iter).sSecondName<< endl;
			cout << "Имя абонента: ";
			cout << (*iter).sFirstName << endl;
			cout << "Отчество абонента: ";;
			cout << (*iter).sThirdName << endl;
			cout << "Год установки телефона: ";
			cout << (*iter).iYearOfInstall << endl;
			cout << "Страна абонента: ";
			cout << (*iter).sCountry << endl;
			cout << "Адрес абонента: ";
			cout << (*iter).sAddress << endl;
			cout << "\n";

			bInvNomer = true;

			break;
		}
		else
		{
			bInvNomer = false;
		}
	}

	//Если не нашло записи
	if (bInvNomer == false)
	{
		cout << "Записи с таким инвентарным номером не обнаружено!!!" << endl;
		system("pause");
		return;
	}

	//Зацикленное меню редактирования выбранной записи
	do
	{
		cout << "Выберите поле для редактирования: " << endl;
		cout << "1. Фамилия абонента" << endl;
		cout << "2. Имя абонента" << endl;
		cout << "3. Отчество абонента" << endl;
		cout << "4. Год установки телефона" << endl;
		cout << "5. Страна абонента" << endl;
		cout << "6. Адрес абонента" << endl;
		cout << "0. Выйти из фунции редактирования записи" << endl;

		cin >> iEditChoose;

		//Создаем временную переменную
		AbonentStruct *abonStr = new AbonentStruct;

		cin.ignore();

		switch(iEditChoose)
		{

			//Редактирование имени
		case 1:

			cout << "Введите новое значение Фамилии: ";
			getline(cin, TEXT);

			//Организовываем цикл по листу структур
			for ( list<AbonentStruct>::iterator iter = abonentList.begin(); iter != abonentList.end(); iter++)
			{
				//Если в структуре есть запись с таким инвентарным номер, то заменяем фио сотрудник новым значением
				if ((*iter).iPosition == iInvNomer)
				{
					(*iter).sSecondName = TEXT;
					break;
				}
			}

			cout << "Данные Фамилии изменены!!!" << endl << endl;

			break;

			//Редактирование года поездки
		case 2:

			cout << "Введите новое значение Имени: ";
			getline(cin, TEXT);

			//Организовываем цикл по листу структур
			for ( list<AbonentStruct>::iterator iter = abonentList.begin(); iter != abonentList.end(); iter++)
			{
				//Если в структуре есть запись с таким инвентарным номер, то заменяем фио сотрудник новым значением
				if ((*iter).iPosition == iInvNomer)
				{
					(*iter).sFirstName = TEXT;
					break;
				}
			}

			cout << "Данные Имени изменены!!!" << endl << endl;

			break;

			//Редактирование месяца
		case 3:

			cout << "Введите новое значение Отчества: ";
			getline(cin, TEXT);

			//Организовываем цикл по листу структур
			for ( list<AbonentStruct>::iterator iter = abonentList.begin(); iter != abonentList.end(); iter++)
			{
				//Если в структуре есть запись с таким инвентарным номер, то заменяем фио сотрудник новым значением
				if ((*iter).iPosition == iInvNomer)
				{
					(*iter).sThirdName = TEXT;
					break;
				}
			}

			cout << "Данные Отчества изменены!!!" << endl << endl;

			break;

			//Редактирование количества дней поездки
		case 4:

			//Ввод года установки телефона
			//Цикл который выполниться минимум 1 раз
			do
			{
				cout << "Введите новое значение Года установки телефона: ";
				getline(cin, TEXT);

				try
				{
					//Конверт данных в число
					iBuffer = std::stoi(TEXT);
				}
				catch(...)
				{
					cout << "Неправильный формат года!!! Попробуйте еще!!!" << endl;
					//tmp->position = 0;
					iBuffer = -2;
				}

				if (iBuffer != -2 && iBuffer < 0)
				{
					cout << "Неправильный формат года!!! Попробуйте еще!!!" << endl;
				}
			}
			while(iBuffer < 0);

			//Организовываем цикл по листу структур
			for ( list<AbonentStruct>::iterator iter = abonentList.begin(); iter != abonentList.end(); iter++)
			{
				//Если в структуре есть запись с таким инвентарным номер, то заменяем фио сотрудник новым значением
				if ((*iter).iPosition == iInvNomer)
				{
					(*iter).iYearOfInstall = iBuffer;
					break;
				}
			}

			iBuffer = 0;

			cout << "Данные Года установки телефона изменены!!!" << endl << endl;

			break;

			//Редактирование города
		case 5:

			cout << "Введите новое значение Страны абонента: ";
			getline(cin, TEXT);

			//Организовываем цикл по листу структур
			for ( list<AbonentStruct>::iterator iter = abonentList.begin(); iter != abonentList.end(); iter++)
			{
				//Если в структуре есть запись с таким инвентарным номер, то заменяем фио сотрудник новым значением
				if ((*iter).iPosition == iInvNomer)
				{
					(*iter).sCountry = TEXT;
					break;
				}
			}

			cout << "Данные Страны изменены!!!" << endl << endl;

			break;

			//Редактирование суммы выделенной на поездку
		case 6:

			cout << "Введите новое значение Адреса абонента: ";
			getline(cin, TEXT);

			//Организовываем цикл по листу структур
			for ( list<AbonentStruct>::iterator iter = abonentList.begin(); iter != abonentList.end(); iter++)
			{
				//Если в структуре есть запись с таким инвентарным номер, то заменяем фио сотрудник новым значением
				if ((*iter).iPosition == iInvNomer)
				{
					(*iter).sAddress = TEXT;
					break;
				}
			}

			cout << "Данные Адреса изменены!!!" << endl << endl;

			break;

			//Выход из блока switch
		case 0:
			break;
		default:
			cerr << "Ошибка! Попробуйте снова!" << endl;
		}

		//Цикл замены значения
	}
	while(iEditChoose != 0);
}

Содержание архива

  • Исходный код на C++ для Visual Studio
Купить

1000,00 

(без учета комиссии 3,8 %)

После оплаты Вы получите работу на электронную почту.
SpisokAbonentov_SmallSize.rar
19437
Оцени работу

рейтинг

Поделись работой с друзьями

Комментарии (0)

Zicise

/ /

Оставить комментарий

Ты не можешь комментировать

Только зарегестрированые пользователи имеют возможность комментировать работы
Список абонентов на С++
Курсовая работа содержащая список абонентов: ФИО абонента, адрес, год установки, номер телефона и страну установку телефона.
Категория: Образование
Стоимость: 1000,00