0
点赞
收藏
分享

微信扫一扫

C++通讯录最新版期末不挂科系列

玩物励志老乐 2022-04-24 阅读 44

目录标题

简单说一下

此次没有什么华丽的外表,就是用c++来写的简单的通讯录管理系统,是在上次结构体联系总结之后写的,因为有一点python和Java的基础,在学完基础语法后也是很快写出来了。有需要的小伙伴可以看看或者说指导指导,谢谢了

效果演示

源码

部分源码展示

主菜单

void menu() {
	cout << "\n\n*****************主菜单************************" << endl;
	cout << "****************当前通讯录人数" <<pernum<<"****************"<< endl;
	cout << "******  1.添加联系人信息" << endl;
	cout << "******  2.显示所有联系人" << endl;
	cout << "******  3.删除联系人信息" << endl;
	cout << "******  4.查找联系人信息" << endl;
	cout << "******  5.修改联系人信息" << endl;
	cout << "******  6.清空所有联系人" << endl;
	cout << "******  7.退出" << endl;
}

防止不按规定输入函数

//确认用来防止不按照提示输入
void confirm(int* flag) {
	cout << "是否确认删除(按1确定0取消):" << endl;

	while (1) {//判定是否为合法输入
		cin >> *flag;
		if (*flag == 1 || *flag == 0) {
			break;
		}
		cout << "输入错误,请继续输入(按1确定0取消):" << endl;
	}
}

添加联系人

//添加联系人
void addPerson(P* perArr ) {
	P p;
	//cin.get();
	cout << "请输入姓名:";
	getline(cin,p.name);
	cout << "请输入性别:";
	getline(cin,p.sex);
	cout << "请输入手机号:";
	getline(cin, p.phone);
	cout << "请输入家庭地址:";
	getline(cin,p.address);
	perArr[pernum] = p;
	pernum++;
	cout<<"添加成功!"<<endl;
}

删除联系人

//删除联系人

void deletePerson(P* perArr) {
	string tempName;
	int i,flag;
	cout << "请输入要删除的联系人的姓名:" << endl;
	getline(cin, tempName);
	i=isExit(perArr, tempName);
	if (i >=0) {//如果查到了
		cout << "该联系人信息为:" << endl;
		cout << "姓名:" << perArr[i].name << "\t性别:" << perArr[i].sex << "\t手机号:" << perArr[i].phone << "\t家庭住址:" << perArr[i].address << endl;
		confirm(&flag);
		if (flag == 1) {
			for (int j = i; j < pernum-1; j++) {
				perArr[j] = perArr[j +1];
			}
			pernum--;
			cout << "删除成功!" << endl;
		}
		
	}
	else {
		error();
	}
	
}

修改联系人信息

//修改联系人
void updataPer(P* perArr) {
	string tempName;
	int i, flag;
	cout << "请输入要修改的联系人姓名:" << endl;
	getline(cin, tempName);
	i = isExit(perArr, tempName);
	cout << "要查找的联系人信息为:" << endl;
	cout << "姓名:" << perArr[i].name << "\t性别:" << perArr[i].sex << "\t手机号:" << perArr[i].phone << "\t家庭住址:" << perArr[i].address << endl;
	confirm(&flag);
	
	if (i >=0&&flag==1) {
		cout << "请重新输入该联系人信息" << endl;
		P p;
		//cin.get();
		cout << "请输入姓名:";
		getline(cin, p.name);
		cout << "请输入性别:";
		getline(cin, p.sex);
		cout << "请输入手机号:";
		getline(cin, p.phone);
		cout << "请输入家庭地址:";
		getline(cin, p.address);
		perArr[i] = p;
		cout << "修改成功!" << endl;
	}
	else {
		error();
	}
}

途中解决的问题

while陷入死循环跳过cin的问题

解决办法是两个

  • 一个清除cin缓存区。
//清除输入缓冲区的当前行 
 cin.ignore(numeric_limits<std::streamsize>::max(),'\n');
//清除输入缓冲区里所有内容 
 cin.ignore(numeric_limits<std::streamsize>::max()); 
//清除一个字符
  cin.ignore()
  • 另一个是把cin换成getline这样可以来接收string类型的数据就不会出现溢出了。

点击直接资料领取

源码可在下方获取
这里有python,Java等学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。

举报

相关推荐

C++——通讯录管理系统

c++ 通讯录管理系统

C/C++:通讯录管理系统

C++实现简单的通讯录

C语言通讯录

C语言:通讯录

0 条评论