C++课设通讯录管理系统(类与对象)

此代码为本人课设作业,小白一枚,还望大佬指正。

题目:通讯录管理系统

以本班同学的具体数据为背景,设计一个本班同学通讯录。

1. 设计要求:

(1)学生通讯录基本信息包括:学号、姓名、性别、年龄、电话号码、家庭地址、备注等。

(2)使用类和对象的概念实现程序设计。

(3)将学生通讯录基本信息保存到文件,所有操作都针对文件中的数据。

(4)程序算法说明清晰,理论分析与计算正确,运行情况良好,实验测试数据无误,容错性强(能对错误输入进行判断控制)。

(5)编程风格良好(包括缩进、空行、适当注释、变量名和函数名见名知意,程序容易阅读等)。

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

#define MAXPEOPLE 100
static int scount=0;
class telephone
{
	char xuehao[20];//学号
	char xingming[20];//姓名
	char xingbie[20];//性别
	char nianling[20];//年龄
	char dianhua[20];//电话
	char zhuzhi[20];//住址
	char beizhu[20];//备注

public:
	telephone()
	{

	};
	void instial(char xh[20],char xm[20],char xb[2],char nl[20],char dh[20],char zz[200],char bz[20])
	{
		strcpy_s(xuehao,xh);
		strcpy_s(xingming,xm);
		strcpy_s(xingbie,xb);
		strcpy_s(nianling,nl);
		strcpy_s(dianhua,dh);
		strcpy_s(zhuzhi,zz);
		strcpy_s(beizhu,bz);
	};
	void setxuehao(char xh[20])
	{
		strcpy_s(xuehao,xh);
	}

	void setxingming(char xm[20])
	{
		strcpy_s(xingming,xm);
	}
	void setxingbie(char xb[20])
	{
		strcpy_s(xingbie,xb);
	}
	void setnianling(char nl[20])
	{
		strcpy_s(nianling,nl);
	}
	void setdianhua(char dh[20])
	{
		strcpy_s(dianhua,dh);
	}
	void setzhuzhi(char zz[20])
	{
		strcpy_s(zhuzhi,zz);

	}
	void setbeizhu(char bz[20])
	{
		strcpy_s(beizhu,bz);

	}
	char * getxuehao()
	{
		return xuehao;
	};
	char * getxingming()
	{
		return xingming;
	};
	char * getxingbie()
	{
		return xingbie;
	};
	char * getnianling()
	{
		return nianling;
	};
	char * getdianhua()
	{
		return dianhua;
	};
	char * getzhuzhi()
	{
		return zhuzhi;
	};
	char * getbeizhu()
	{
		return zhuzhi;
	};
};

class manage//操作类
{

	telephone tel[MAXPEOPLE];
public:

	void luru();
	void shanchu();
	void xiugai();
	void chaxun();
	void paixv();
	void liulan();
};

void menu()//菜单
{
	cout<<"******************************"<<endl;
	cout<<"*****    1.录入联系人    *****"<<endl;
	cout<<"*****    2.删除联系人    *****"<<endl;
	cout<<"*****    3.修改联系人    *****"<<endl;
	cout<<"*****    4.查询联系人    *****"<<endl;
	cout<<"*****    5.排序联系人    *****"<<endl;
	cout<<"*****    6.浏览联系人    *****"<<endl;
	cout<<"*****    7.退出通讯录    *****"<<endl;
	cout<<"******************************"<<endl;
}

void manage::luru()//1.录入联系人
{
	char xuehao[20],xingming[20],xingbie[20],nianling[20],dianhua[20],zhuzhi[20],beizhu[20];
	cout<<"请输入学号:"<<endl;
	cin>>xuehao;

	cout<<"请输入姓名:"<<endl;
	cin>>xingming;

	cout<<"请输入性别:"<<endl;
	cin>>xingbie;

	cout<<"请输入年龄:"<<endl;
	cin>>nianling;

	cout<<"请输入电话:"<<endl;
	cin>>dianhua;

	cout<<"请输入住址:"<<endl;
	cin>>zhuzhi;

	cout<<"请输入备注:"<<endl;
	cin>>beizhu;
	tel[scount].instial(xuehao,xingming,xingbie,nianling,dianhua,zhuzhi,beizhu);
	scount++;
	cout<<"添加成功"<<endl;
	system("pause");
	system("cls");//清屏操作
}

void manage::shanchu()//2.删除联系人
{
	int index=0;
	cout<<"请输入要删除的学号:"<<endl;
	cin>>index;
	for(int i=index-1;i<scount;i++)
	{
		tel[i]=tel[i+1];
	}
	scount=scount-1;
	cout<<"删除成功!"<<endl;
	system("pause");
	system("cls");//清屏操作
}

void manage::xiugai()//修改联系人
{
	char xingming[20];
	int index=0;
	char xuehao[20],xingbie[20],nianling[20],dianhua[20],zhuzhi[20],beizhu[20];
	int q=-1;
	cout<<"请输入要修改的联系人姓名:"<<endl;
	cin>>xingming;
	for(int i=0;i<scount;i++)
	{
		if (strcmp(xingming,tel[i].getxingming())==0)
		{
			cout<<"将学号修改为:"<<endl;
	        cin>>xuehao;
	        tel[index].setxuehao(xuehao);

	        cout<<"将姓名修改为"<<endl;
	        cin>>xingming;
	        tel[index].setxingming(xingming);

	        cout<<"将性别修改为"<<endl;
	        cin>>xingbie;
	        tel[index].setxingbie(xingbie);
 
	        cout<<"将年龄修改为:"<<endl;
	        cin>>nianling;
	        tel[index].setnianling(nianling);

	        cout<<"将联系电话修改为:"<<endl;
	        cin>>dianhua;
            tel[index].setdianhua(dianhua);

	        cout<<"将家庭住址修改为:"<<endl;
	        cin>>zhuzhi;
	        tel[index].setzhuzhi(zhuzhi);

	        cout<<"将备注修改为:"<<endl;
	        cin>>beizhu;
            tel[index].setbeizhu(beizhu);
	        cout<<"修改成功!"<<endl;
		}
		else
		{
			cout<<"联系人不存在"<<endl;
		}
	}
	
	system("pause");
	system("cls");
}

//查询联系人
//4-1选择查询方法
int xz()
{
	int a=0;
	cout<<"1.按姓名查找"<<endl;
	cout<<"2.按学号查找"<<endl;
	cin>>a;
	return a;
}

void manage::chaxun()//查询联系人
{
	int a=xz();
	if(a==1)
	{

	    char xingming1[20];
	    char xingming2[20];
	    cout<<"请输入要查询人姓名:"<<endl;
	    cin>>xingming1;
	    for (int i=0;i<scount;i++)
	    {
		    strcpy_s(xingming2,tel[i].getxingming());
		    if (strcmp(xingming1,xingming2)==0)
		    {
			    cout<<"学号:"<<tel[i].getxuehao()<<"\t";
			    cout<<"姓名:"<<tel[i].getxingming()<<"\t";
			    cout<<"性别:"<<tel[i].getxingbie()<<"\t";
			    cout<<"年龄:"<<tel[i].getnianling()<<"\t";
			    cout<<"电话:"<<tel[i].getdianhua()<<"\t";
			    cout<<"住址:"<<tel[i].getzhuzhi()<<"\t";
			    cout<<"备注:"<<tel[i].getbeizhu()<<endl;
		    }
			else
	        {
		        cout<<"查无此人"<<endl;
	        }
	    }

	}
	if(a==2)
	{
		char xuehao1[20];
		char xuehao2[20];
		cout<<"请输入要查询的学号:"<<endl;
		cin>>xuehao1;
		for(int i=0;i<scount;i++)
		{
			strcpy_s(xuehao2,tel[i].getxuehao());
			if (strcmp(xuehao1,xuehao2)==0)
			{
				cout<<"学号:"<<tel[i].getxuehao()<<"\t";
			    cout<<"姓名:"<<tel[i].getxingming()<<"\t";
			    cout<<"性别:"<<tel[i].getxingbie()<<"\t";
			    cout<<"年龄:"<<tel[i].getnianling()<<"\t";
			    cout<<"电话:"<<tel[i].getdianhua()<<"\t";
			    cout<<"住址:"<<tel[i].getzhuzhi()<<"\t";
			    cout<<"备注:"<<tel[i].getbeizhu()<<endl;
			}
			else
			{
				cout<<"查无此人"<<endl;
			}
		}
	}

	system("pause");
	system("cls");
}

void manage::paixv()//5.排序联系人
{
	telephone var;
	for(int i=0;i<scount;i++)
	{
		for(int j=i+1;j<scount;j++)
		{

			if(strcmp(tel[j].getxuehao(),tel[i].getxuehao())<0)
			{
				var=tel[i];tel[i]=tel[j];tel[j]=var;
			}
		}
	}
	cout<<"排序后:"<<endl;
	for (int i=0;i<scount;i++)
	{
		cout<<"学号:"<<tel[i].getxuehao()<<"\t";
		cout<<"姓名:"<<tel[i].getxingming()<<"\t";
		cout<<"性别:"<<tel[i].getxingbie()<<"\t";
		cout<<"年龄:"<<tel[i].getnianling()<<"\t";
		cout<<"电话:"<<tel[i].getdianhua()<<"\t";
		cout<<"住址:"<<tel[i].getzhuzhi()<<"\t";
		cout<<"备注:"<<tel[i].getbeizhu()<<endl;
	}
	system("pause");
	system("cls");	
}

void manage::liulan()//6.浏览联系人
{
	for (int i=0;i<scount;i++)
	{
		cout<<"学号:"<<tel[i].getxuehao()<<"\t";
		cout<<"姓名:"<<tel[i].getxingming()<<"\t";
		cout<<"性别:"<<tel[i].getxingbie()<<"\t";
		cout<<"年龄:"<<tel[i].getnianling()<<"\t";
		cout<<"电话:"<<tel[i].getdianhua()<<"\t";
		cout<<"住址:"<<tel[i].getzhuzhi()<<"\t";
		cout<<"备注:"<<tel[i].getbeizhu()<<endl;
	}
	system("pause");
	system("cls");
}

int main()
{
	manage manager;
	while(1)
	{
		int choice;

		menu();
		cout<<"请输入您的选择:";
		cin>>choice;
		switch(choice)
		{
		case 1:
			manager.luru();
			break;
		case 2:
			manager.shanchu();
			break;
		case 3:
			manager.xiugai();
			break;
		case 4:
			manager.chaxun();
			break;
		case 5:
			manager.paixv();
			break;
		case 6:
			manager.liulan();
			break;
		case 7:
			cout<<"欢迎您下次使用!"<<endl;
			system("pause");
			return 0;
			break;
		}
	}
	return 0;
}

(参考资料的基础上加以修改)

  • 20
    点赞
  • 163
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 通讯录管理系统是一种面向对象的C语言程序,该程序旨在帮助用户管理通讯录中的联系人信息。 在通讯录管理系统中,可以创建联系人对象,每个联系人对象包含姓名、电话号码、电子邮件地址等属性。用户可以通过系统提供的菜单界面进行以下操作: 1. 添加联系人:用户可以输入联系人的姓名、电话号码和电子邮件地址,系统会根据输入的信息创建一个新的联系人对象,并将该对象保存在通讯录中。 2. 删除联系人:用户可以根据联系人的姓名或电话号码查找到对应的联系人对象,并将该对象从通讯录中删除。 3. 修改联系人:用户可以根据联系人的姓名或电话号码查找到对应的联系人对象,并可以对该对象的属性进行修改。 4. 查找联系人:用户可以根据联系人的姓名或电话号码查找到对应的联系人对象,并可以查看该对象的所有属性。 5. 显示通讯录:系统会将通讯录中的所有联系人对象按照一定的格式显示在屏幕上,方便用户浏览和管理。 通过使用面向对象的编程方法,可以将通讯录管理系统的功能模块化,每个联系人对象都有自己的属性和方法,使得系统更加易于维护和扩展。 在C语言中,可以使用结构体来定义联系人对象,并使用指针进行对联系人对象的操作和管理。同时,可以使用链表等数据结构来存储和组织联系人对象,实现通讯录的自动扩容和高效查找。 总之,面向对象的C语言通讯录管理系统可以帮助用户方便地管理联系人信息,提高工作效率。 ### 回答2: 通讯录管理系统是一种用来管理联系人信息的软件系统。面向对象是一种软件开发方法论,它把系统中的各个部分(对象)进行封装,通过各个对象之间的交互来完成系统中的功能。在通讯录管理系统中,可以使用面向对象的思想来设计和实现这个系统。 首先,可以创建一个Contact类来表示联系人对象,这个类可以包含联系人的姓名、电话号码、电子邮箱等属性。然后,可以创建一个AddressBook类来表示通讯录对象,这个类可以包含一个包含多个Contact对象的列表,可以实现添加联系人、查找联系人、删除联系人等功能。 在AddressBook类中,可以通过使用数组、链表或者其他数据结构来保存Contact对象,使用面向对象的封装性来保护联系人信息,只提供必要的接口方法供外部使用。比如,可以提供addContact()方法来添加联系人,deleteContact()方法来删除联系人,findContact()方法来查找联系人。 另外,可以在AddressBook类中添加一些其他的功能,比如导入联系人信息、导出联系人信息、按姓名排序联系人等。这些功能可以通过使用面向对象的继承性和多态性来实现。比如,可以创建一个ImportContacts类来继承AddressBook类,实现导入联系人信息的功能;创建一个ExportContacts类来继承AddressBook类,实现导出联系人信息的功能;创建一个SortContacts类来继承AddressBook类,实现按姓名排序联系人的功能。 使用面向对象的思想,可以更好地组织和管理通讯录管理系统的代码,使其更加模块化、灵活和可扩展。同时,面向对象的编程方法还可以提高代码的复用性和可维护性,使开发和维护这个系统变得更加方便和高效。 ### 回答3: 通讯录管理系统是一个面向对象的C语言程序,可以用于管理个人或组织的联系人信息。该系统主要包括联系人的添加、删除、修改、查询等功能。 首先,我们需要定义一个Contact结构体来表示联系人的信息,包括姓名、电话号码、邮箱等。通过结构体的定义,可以方便地管理联系人信息。 接下来,可以定义一个ContactArray结构体来表示联系人列表,其中包括一个Contact数组和一个表示联系人数目的变量。通过ContactArray结构体,可以方便地对联系人进行增删改查操作。 系统的主要功能包括:添加联系人、删除联系人、修改联系人、查询联系人等。 在添加联系人功能中,可以通过用户输入联系人的姓名、电话号码、邮箱等信息,并将新联系人添加到ContactArray中。 在删除联系人功能中,可以通过用户输入联系人的姓名或电话号码等关键字,将匹配到的联系人从ContactArray中删除。 在修改联系人功能中,可以通过用户输入联系人的姓名或电话号码等关键字,将匹配到的联系人的信息进行修改,并更新到ContactArray中。 在查询联系人功能中,可以通过用户输入联系人的姓名或电话号码等关键字,将匹配到的联系人信息进行展示。 除了基本的增删改查功能以外,可以考虑添加其他功能,如将联系人信息保存到文件、从文件读取联系人信息等。 通过以上的功能设计,通讯录管理系统能够方便地管理联系人信息,提高了信息查询和修改的效率。同时,可以根据实际需求进行功能的扩展和优化。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值