Scott3 2020-11-07 10:28 采纳率: 0%
浏览 49

通讯录管理系统代码有问题

通讯录管理系统

1、系统需求

通讯录是一个可以记录亲人、好友信息的工具。

本教程主要利用C++来实现一个通讯录管理系统

系统中需要实现的功能如下:

  • 添加联系人:向通讯录中添加新人,信息包括(姓名、性别、年龄、联系电话、家庭住址)最多记录1000人

  • 显示联系人:显示通讯录中所有联系人信息

  • 删除联系人:按照姓名进行删除指定联系人

  • 查找联系人:按照姓名查看指定联系人信息

  • 修改联系人:按照姓名重新修改指定联系人

  • 清空联系人:清空通讯录中所有信息

  • 退出通讯录:退出当前使用的通讯录

  • #include<iostream>
    using namespace std;
    #define MAX 1000
    
    //设计联系人结构体
    struct Person
    {
    	string m_Name;
    	int m_Sex; //1 男 2 女
    	int m_Age;
    	string m_Phone;
    	string m_Addr;
    };
    
    //设计通讯录结构体
    struct Addressbooks
    {
    	//通讯录中保存的联系人数组
    	struct Person personArray[MAX];
    
    	//通讯录中当前记录的联系人个数
    	int m_Size;
    };
    
    //1.添加联系人
    void addPerson(Addressbooks* abs)
    {
    	//判断通讯录是否已满,若果满了就不再添加
    	if (abs->m_Size == MAX)
    	{
    		cout << "通讯录已满,无法添加!" << endl;
    		return;
    	}
    	else
    	{
    		//添加具体联系人
    		//姓名
    		string name;
    		cout << "请输入姓名:" << endl;
    		cin >> name;
    		abs->personArray[abs->m_Size].m_Name;
    
    		//性别
    		cout << "请输入性别:" << endl;
    		cout << "1 --- 男 " << endl;
    		cout << "2 --- 女 " << endl;
    		int sex = 0;
    		
    		while (true)
    		{
    			//如果输入的是1或2,可退出循环,
    			//否则输入有误,重新输入
    			cin >> sex;
    			if (sex == 1 || sex == 2)
    			{
    				abs->personArray[abs->m_Size].m_Sex;
    				break;
    			}
    			cout << "输入错误,请重新输入!" << endl;
    		}
    
    		//年龄
    		int age = 0;
    		cout << "请输入年龄:" << endl;
    
    		while (true) //若年龄超出实际可能的范围,要重新输入,否则赋值后退出循环
    		{
    			cin >> age;
    			if (age < 0 || age>120)
    			{
    				cout << "输入错误,请重新输入!" << endl;
    			}
    			else
    			{
    				abs->personArray[abs->m_Size].m_Age = age;
    				break;
    			}
    		}
    
    		//电话
    		string phone;
    		cout << "请输入联系电话:" << endl;
    		cin >> phone;
    		abs->personArray[abs->m_Size].m_Phone = phone;
    
    		//住址
    		string address;
    		cout << "请输入家庭住址:" << endl;
    		cin >> address;
    		abs->personArray[abs->m_Size].m_Addr;
    
    		//更新通讯录人数
    		abs->m_Size++;
    
    		cout << "添加成功" << endl;
    
    		system("pause");
    		system("cls"); //清屏
    	}
    }
    
    //2.显示所有联系人
    void showPerson(Addressbooks* abs)
    {
    	//判断通讯录中人数是否为0,若是,提示记录为空
    	//否则显示联系人的信息
    	if (abs->m_Size == 0)
    	{
    		cout << "当前记录为空" << endl;
    	}
    	else
    	{
    		for (int i = 0; i < abs->m_Size; i++)
    		{
    			cout << "姓名:" << abs->personArray[i].m_Name << "\t";
    			cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";
    			cout << "年龄:" << abs->personArray[i].m_Age << "\t";
    			cout << "电话:" << abs->personArray[i].m_Phone << "\t";
    			cout << "住址:" << abs->personArray[i].m_Addr << endl;
    		}
    	}
    	system("pause");
    	system("cls"); //清屏
    }
    
    //菜单界面
    void showMenu()
    {
    	cout << "************************" << endl;
    	cout << "***** 1.添加联系人 *****" << endl;
    	cout << "***** 2.显示联系人 *****" << endl;
    	cout << "***** 3.删除联系人 *****" << endl;
    	cout << "***** 4.查找联系人 *****" << endl;
    	cout << "***** 5.修改联系人 *****" << endl;
    	cout << "***** 6.清空联系人 *****" << endl;
    	cout << "***** 0.退出通讯录 *****" << endl;
    	cout << "************************" << endl;
    }
    
    int main()
    {
    	//创建通讯录结构体变量
    	Addressbooks abs;
    	//初始化通讯录中当前人员个数
    	abs.m_Size = 0;
    
    	int select = 0;
    
    	while (true)
    	{
    		//调用菜单
    		showMenu();
    
    		cin >> select;
    
    		switch (select)
    		{
    		case 1: //添加联系人
    			addPerson(&abs); //利用地址传递,可以修饰实参
    			break;
    		case 2: //显示联系人
    			showPerson(&abs);
    			break;
    		case 3: //删除联系人
    			break;
    		case 4: //查找联系人
    			break;
    		case 5: //修改联系人
    			break;
    		case 6: //清空联系人
    			break;
    		case 0: //退出通讯录
    			cout << "欢迎下次使用" << endl;
    			system("pause");
    			return 0;
    			break;
    		default:
    			break;
    		}
    	}
    
    	system("pause");
    	return 0;
    }

    这是一个通讯录管理系统项目及其要实现的功能和我写的代码。还没写完,目前只写了显示菜单(及主框框)、添加联系人、显示联系人、推出通讯录的功能。可为什么我在调试的时候发现,无论添加联系人时输入的是1还是2,显示出来的性别都是“女”,而且住址添加不进去。

  • 注:我是C++小白,比0基础强不到哪儿去,目前在传智播客上找了免费的教程自学,可我看教程中老师的

    代码也是这么写的,他调试起来却没有问题啊?对了,他用的是VS2017,我是VS2019.

  • 写回答

1条回答 默认 最新

  • jeyawn 2020-11-07 11:38
    关注
    #include<iostream>
    using namespace std;
    #define MAX 1000
    
    //设计联系人结构体
    struct Person
    {
    	string m_Name;
    	int m_Sex; //1 男 2 女
    	int m_Age;
    	string m_Phone;
    	string m_Addr;
    };
    
    //设计通讯录结构体
    struct Addressbooks
    {
    	//通讯录中保存的联系人数组
    	struct Person personArray[MAX];
    
    	//通讯录中当前记录的联系人个数
    	int m_Size;
    };
    
    //1.添加联系人
    void addPerson(Addressbooks* abs)
    {
    	//判断通讯录是否已满,若果满了就不再添加
    	if (abs->m_Size == MAX)
    	{
    		cout << "通讯录已满,无法添加!" << endl;
    		return;
    	}
    	else
    	{
    		//添加具体联系人
    		//姓名
    		string name;
    		cout << "请输入姓名:" << endl;
    		cin >> name;
    		abs->personArray[abs->m_Size].m_Name = name;//这里忘记了赋值
    
    		//性别
    		cout << "请输入性别:" << endl;
    		cout << "1 --- 男 " << endl;
    		cout << "2 --- 女 " << endl;
    		int sex = 0;
    		
    		while (true)
    		{
    			//如果输入的是1或2,可退出循环,
    			//否则输入有误,重新输入
    			cin >> sex;
    			if (sex == 1 || sex == 2)
    			{
    				abs->personArray[abs->m_Size].m_Sex = sex;//这里忘记了赋值
    				break;
    			}
    			cout << "输入错误,请重新输入!" << endl;
    		}
    
    		//年龄
    		int age = 0;
    		cout << "请输入年龄:" << endl;
    
    		while (true) //若年龄超出实际可能的范围,要重新输入,否则赋值后退出循环
    		{
    			cin >> age;
    			if (age < 0 || age>120)
    			{
    				cout << "输入错误,请重新输入!" << endl;
    			}
    			else
    			{
    				abs->personArray[abs->m_Size].m_Age = age;
    				break;
    			}
    		}
    
    		//电话
    		string phone;
    		cout << "请输入联系电话:" << endl;
    		cin >> phone;
    		abs->personArray[abs->m_Size].m_Phone = phone;
    
    		//住址
    		string address;
    		cout << "请输入家庭住址:" << endl;
    		cin >> address;
    		abs->personArray[abs->m_Size].m_Addr = address;//这里忘记了赋值
    
    		//更新通讯录人数
    		abs->m_Size++;
    
    		cout << "添加成功" << endl;
    
    		system("pause");
    		system("cls"); //清屏
    	}
    }
    
    //2.显示所有联系人
    void showPerson(Addressbooks* abs)
    {
    	//判断通讯录中人数是否为0,若是,提示记录为空
    	//否则显示联系人的信息
    	if (abs->m_Size == 0)
    	{
    		cout << "当前记录为空" << endl;
    	}
    	else
    	{
    		for (int i = 0; i < abs->m_Size; i++)
    		{
    			cout << "姓名:" << abs->personArray[i].m_Name << "\t";
    			cout << "性别:" << (abs->personArray[i].m_Sex == 1 ? "男" : "女") << "\t";
    			cout << "年龄:" << abs->personArray[i].m_Age << "\t";
    			cout << "电话:" << abs->personArray[i].m_Phone << "\t";
    			cout << "住址:" << abs->personArray[i].m_Addr << endl;
    		}
    	}
    	system("pause");
    	system("cls"); //清屏
    }
    
    //菜单界面
    void showMenu()
    {
    	cout << "************************" << endl;
    	cout << "***** 1.添加联系人 *****" << endl;
    	cout << "***** 2.显示联系人 *****" << endl;
    	cout << "***** 3.删除联系人 *****" << endl;
    	cout << "***** 4.查找联系人 *****" << endl;
    	cout << "***** 5.修改联系人 *****" << endl;
    	cout << "***** 6.清空联系人 *****" << endl;
    	cout << "***** 0.退出通讯录 *****" << endl;
    	cout << "************************" << endl;
    }
    
    int main()
    {
    	//创建通讯录结构体变量
    	Addressbooks abs;
    	//初始化通讯录中当前人员个数
    	abs.m_Size = 0;
    
    	int select = 0;
    
    	while (true)
    	{
    		//调用菜单
    		showMenu();
    
    		cin >> select;
    
    		switch (select)
    		{
    		case 1: //添加联系人
    			addPerson(&abs); //利用地址传递,可以修饰实参
    			break;
    		case 2: //显示联系人
    			showPerson(&abs);
    			break;
    		case 3: //删除联系人
    			break;
    		case 4: //查找联系人
    			break;
    		case 5: //修改联系人
    			break;
    		case 6: //清空联系人
    			break;
    		case 0: //退出通讯录
    			cout << "欢迎下次使用" << endl;
    			system("pause");
    			return 0;
    			break;
    		default:
    			break;
    		}
    	}
    
    	system("pause");
    	return 0;
    }

     

    评论

报告相同问题?

悬赏问题

  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊
  • ¥15 安装svn网络有问题怎么办