C++ 编写通讯录管理系统 (适用于新手阅读)

学习过一些C++

献丑了  

欢迎各位指点   ----------镇妖塔

#include<string>
#include<fstream>
#include<iostream>
using  namespace std;

int number = 0;

typedef struct News
{
	int num;
	string name;
	int age;
	string tel;
	string address;
	string hooby;
}News;

int Choose()   //主界面
{
	int choice;
	cout << "***************手机通信录管理系统************" << endl;
	cout << "            1:根据编号查询" << endl;
	cout << "            2:修改联系人" << endl;
	cout << "            3:添加联系人" << endl;
	cout << "            4:删除联系人" << endl;
	cout << "            5:显示全部联系人" << endl;
	cout << "            6:退出" << endl;
	cout << "**********************************************" << endl;
	cout << "请输入选项(1-6):";
	cin >> choice;   //通过输入获得返回值,选择说要进入的系统
	system("cls");    //清屏
	return choice;
}  //   选择所要进入系统的函数

int SearchByNum(News *a)  //查找系统
 {
	 int i,x;
	 int SearchNum;
	 cout << "请输入联系人编号";
	 cin >> SearchNum;  //输入要查找的联系人编号
	 for (i = 0; i < number; i++)
	 {
		 if (a[i].num == SearchNum)
		 {
			 cout << "编号:" << a[i].num <<" "<< "姓名:" << a[i].name <<" "<< "年龄:" << a[i].age <<" "<< "电话:" << a[i].tel <<" "<< "地址:" << a[i].address <<" "<< "爱好:" << a[i].hooby << endl;
			 cout<<"查找结束,按任意键结束!";
			 cin>>x;
			 system("cls");
			 return i;//如果找到该联系人,返回该联系人在数组中的对应标号
		 }
	 }
	 cout << "抱歉,查无此人!" << endl;
	 cout<<"查找结束,按任意键结束!";
	 cin>>x;
	 system("cls");
	 return -1;//如果没有找到,就返回-1
 }

void EditName(News *a)//修改联系人姓名
 {
	 int i,x;
	 string newname, oldname;//定义原始名字,修改后的名字
	 cout << "原名字:";
	 cin >> oldname;
	 cout << "修改后的名字:";
	 cin >> newname;
	 for (i = 0; i < number; i++)
	 {
		 if (a[i].name == oldname)
		 {
			 a[i].name=newname;//调用成员函数setName,把该联系人的名字改为新名字newName
			 cout << "编号:" << a[i].num <<" "<< "姓名:" << a[i].name <<" "<< "年龄:" << a[i].age <<" "<< "电话:" << a[i].tel <<" "<< "地址:" << a[i].address <<" "<< "爱好:" << a[i].hooby << endl;
		 }
	 }
	 cout<<"修改完毕,按任意键结束!";
	 cin>>x;
	 system("cls");
 }

void AddMembers(News *a)//增加联系人数据
 {
	 int x;
	 int i = number; //在数组的末尾插入一个新的联系人。num既是人数,也代表数组的末尾
	 //输入新联系人的各项参数
	 cout << "编号:";
	 cin >> a[i].num;
	 cout << "姓名:";
	 cin >> a[i].name;
	 cout << "年龄:";
	 cin >> a[i].age;
	 cout << "电话:";
	 cin >> a[i].tel;
	 cout  << "地址:";
	 cin >> a[i].address;
	 cout << "爱好:";
	 cin >> a[i].hooby;
	 //将新建联系人的各项参数放到对象中去
	 number++;//学生人数加一
	 system("cls");
	 cout<<"信息已保存,按任意键结束!";
	 cin>>x;
	 system("cls");
 }

void DeleteMember(News *a)//删除联系人数据
 {
	 int i, j,x;
	 i = SearchByNum(a); //调用查找函数,查找要删除的学生是否存在。如果存在,i表示学生在数组中对应的下标;如果不存在,i的值为 - 1
	 if (i > 0)        // 如果学生存在,删除该学生
	 {
		 for (j = i; j < number - 1; j++)   // 删除时,数组中第i个元素后面的每一个元素依次往前移动,覆盖掉原有的数据
		 {
			 a[j] = a[j + 1];   // 将数组中的第j+1个元素赋值给第j个元素,相当于向前移动,即用第j+1个元素覆盖掉了第j个元素
		 }
		 number--;  //学生人数减1
		 cout << "该联系人已成功被移出您的通信录,按任意键结束!" << endl;
		 cin>>x;
		 system("cls");
	 }
 }

void DisplayAll(News *a)   //展示
 {
	int x; 
	for (int i = 0; i < number; i++)  //用for循环逐个输出通讯录中所有成员数据
	 {
		 cout << "第" << i + 1 << "个人:" << endl;//数组下标从0开始,为符合平常使用习惯,下标+1,代表第几个学生
		 cout << "编号:" << a[i].num <<" "<< "姓名:" << a[i].name <<" "<< "年龄:" << a[i].age <<" "<< "电话:" << a[i].tel <<" "<< "地址:" << a[i].address <<" "<< "爱好:" << a[i].hooby << endl;
	 }
	 cout << "展示完毕,按任意键结束!" << endl;
	 cin>>x;
	 system("cls");
 }

int main()
{
	int x=0;
	News a[50];
	while(x!=6)
	{
		x=Choose();
		switch(x)
		{
			case 1:SearchByNum(a);break;
			case 2:EditName(a);break;
			case 3:AddMembers(a);break;
			case 4:DeleteMember(a);break;
			case 5:DisplayAll(a);break;
			default: { cout << "选项为1-6,请重输!" << endl; }
		}
	}
    return 0;
}

缺陷在于没能将信息存于文件,但对于新手来说更容易理解(主要是我也不会。。。(会也懒得写))

  • 27
    点赞
  • 120
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
以下是一个简单的C++程序,用于实现通讯录管理系统: ```cpp #include <iostream> #include <string> #include <vector> using namespace std; struct Contact { string name; string phone; }; vector<Contact> contacts; void addContact() { Contact contact; cout << "请输入联系人姓名: "; cin >> contact.name; cout << "请输入联系人电话: "; cin >> contact.phone; contacts.push_back(contact); cout << "联系人已添加" << endl; } void displayContacts() { if (contacts.empty()) { cout << "通讯录为空" << endl; return; } cout << "通讯录内容:" << endl; for (const auto& contact : contacts) { cout << "姓名: " << contact.name << "\t电话: " << contact.phone << endl; } } int main() { int choice; do { cout << "请选择操作:" << endl; cout << "1. 添加联系人" << endl; cout << "2. 显示通讯录" << endl; cout << "3. 退出程序" << endl; cout << "请选择: "; cin >> choice; switch (choice) { case 1: addContact(); break; case 2: displayContacts(); break; case 3: cout << "程序已退出" << endl; break; default: cout << "无效的选择,请重新输入" << endl; } cout << endl; } while (choice != 3); return 0; } ``` 这个程序使用一个`Contact`结构体来表示每个联系人的姓名和电话。通讯录的数据存储在一个`vector`容器中。程序提供了三个操作:添加联系人、显示通讯录和退出程序。用户可以根据自己的需求选择不同的操作。 请注意,这只是一个简单的示例程序,仅用于演示基本的通讯录管理功能。实际的通讯录管理系统可能需要更复杂的功能和数据存储方式。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值