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;
}

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

猜你喜欢

转载自blog.csdn.net/aa731679676/article/details/80548144
今日推荐