c语言实现通讯录管理系统(c课程设计),用c语言写一个通讯录系统
项目目录1、系统需求2、创建项目2.1创建项目2.2添加文件3、菜单功能4、退出功能5、添加联系人5.1设计联系人结构5.2设计通讯录结构5.3在主功能中创建通讯录5.4包添加联系人功能5.5测试添加联系人功能6.1包显示联系人功能6.2测试显示联系人功能7、 删除联系人7.1封装并检测联系人是否存在7.2封装并删除联系人功能7.3测试并删除联系人功能8、查找联系人8.1封装并查找联系人功能8.2测试并查找指定联系人9、修改联系人9.1封装修改联系人功能9.2测试修改联系人功能10、清除联系人10.1封装清除联系人功能10.2测试清除联系人11、源代码获取1、系统需求通讯录是一个可以记录亲友联系方式的工具。
本教程主要是用C实现一个通讯录管理系统。
系统中要实现的功能如下:
添加联系人:在通讯录中添加新的联系人,信息包括(姓名、性别、年龄、联系电话、家庭住址)。多达1000人将被记录。显示联系人:显示地址簿中的所有联系人信息。删除联系人:按姓名删除指定的联系人。查找联系人:按姓名查看指定的联系人信息。修改联系人:按姓名重新修改指定的联系人。清空联系人:清除地址簿中的所有信息。退出通讯录。2.创建一个项目。创建项目的步骤如下:
新建项目添加文件2.1新建项目打开vs 2019后,点击新建项目,新建一个C项目。
选择一个空项目,下一步。
填写项目名称,选择项目路径,然后创建
2.2添加文件
填写文件名,然后添加
添加成功后,效果如下图所示:
至此,项目已经创建完毕!
3.菜单功能描述:用户选择功能的界面。
菜单效果如下:
步骤:
封装函数显示接口,如void showMenu()调用封装函数#include iostream中的main函数。
使用命名空间std
//菜单界面
void showMenu()
{
cout * * * * * * * * * * * * * * * * * * * * * * * * * endl;
Cou * * * * 1。添加联系人* * * * * endl
Cou * * * * 2。显示联系人* * * * " endl;
Cou * * * * 3。删除联系人* * * * * endl
cou * * * * * * 4,找到联系人* * * * endl
Cou * * * * 5。修改联系人* * * * * endl
Cou * * * * 6。清空联系人* * * * " endl;
Cou * * * * 0,退出通讯录* * * * endl
cout * * * * * * * * * * * * * * * * * * * * * * * * * endl;
}
int main() {
showMenu();
系统(“暂停”);
返回0;
}4.退出功能描述:退出通讯录系统。
思路:根据用户的不同选择和不同功能,可以选择交换机分支结构来构建整体架构。
当用户选择0时,执行退出;如果用户选择其他,先不要操作,程序不会退出。
int main() {
int select=0;
while(真)
{
showMenu();
cin精选;
开关(选择)
{
1://添加联系人
打破;
2://显示联系人
打破;
3://删除联系人
打破;
4://查找联系人
打破;
5://修改联系人
打破;
6://空联系人
打破;
0://退出通讯簿
Cout 欢迎下次使用 endl
系统(“暂停”);
返回0;
打破;
默认值:
打破;
}
}
系统(“暂停”);
返回0;
}效果图:
5.添加联系人的职能描述:
添加联系人功能,最多1000个联系人,联系人信息包括(姓名、性别、年龄、联系电话、家庭住址)。
添加联系人实施步骤:
设计联系人结构设计通讯录结构在主功能中创建通讯录包添加联系人功能测试添加联系人功能5.1设计联系人结构联系人信息包括:姓名、性别、年龄、联系电话、家庭住址。
设计如下:
# include string//字符串头文件
//联系人结构
结构人员{
字符串m _ Name//名称
int m _ Sex//性别:1男2女
int m _ Age//年龄
字符串m _ Phone//电话
字符串m _ Addr//地址
};5.2设计通讯录结构时,可以在通讯录结构中维护一个容量为1000的联系人数组,记录当前通讯录中的联系人数量。
设计如下:
#定义最大1000 //最大人数
//通讯簿结构
结构通讯簿{
//保存在通讯簿中的联系人数组
结构人员personal array[MAX];
//通讯簿中当前记录的联系人数量
int m _ Size
};5.3在主函数中创建通讯录添加联系人函数打包完成后,在主函数中创建一个通讯录变量。这是我们需要一直维护的通讯录。主功能起始位置添加:
//创建通讯簿
通讯录abs
//初始化联系人的数量。
ABS . m _ Size=0;5.4添加联系人功能的打包思路:在添加联系人之前,先判断通讯录是否已满,如果已满,就不要再添加,如果未满,就将新的联系人信息逐个添加到通讯录中。
添加联系人代码:
//1.添加联系信息。
void addPerson(address books * ABS){
if (abs- m_Size==MAX) {
Cout 通讯录已满,而 endl无法添加。
返回;
}否则{
Cout 请输入您的姓名: endl
字符串名称;
cin名字;
abs- personArray[abs- m_Size]。m _ Name=name
Cout 请输入性别: endl
int性别;
Cout 1—— male endl
Cout 2—— female endl
while (true) {
cin性爱;
if (sex==1 sex==2) {
abs- personArray[abs- m_Size]。m_Sex=性;
打破;
}
否则{
Cout 输入不正确,请重新输入 endl
}
}
Cout 请输入年龄: endl
int age
cin时代;
abs- personArray[abs- m_Size]。m_Age=年龄;
Cout 请输入电话号码: endl
字符串电话;
cin电话;
abs- personArray[abs- m_Size]。m _ Phone=phone
Cout 请输入地址: endl
字符串地址;
cin地址;
abs- personArray[abs- m_Size]。m _ Addr=addr
ABS-m _ Size;//联系人的数量
Cout 添加成功!endl
系统(“暂停”);//输入任意键继续
系统(“cls”);//清除屏幕
}
}5.5测试添加联系人的功能。在选择界面中,如果玩家选择了1,则意味着添加联系人。我们可以测试这个函数。
在switch case1语句中,添加:
1://添加联系人
addPerson(ABS);
打破;测试结果如图所示:
6.显示联系人功能描述:显示通讯录中已有的联系人信息。
显示联系人实施步骤:
封装联系人功能测试显示联系人功能6.1封装联系人功能思路:如果当前通讯录中没有人,提示记录为空,人数大于0,显示通讯录中的信息。
显示联系人代码:
//2.显示所有联系信息。
void show person(address books * ABS){
if (abs- m_Size==0) {
Cout“当前记录为空”endl
}否则{
for(int I=0;I ABS-m _ Size;i ) {
Cout name: abs- personArray[i].m _ Name \ t
cout Gender:(ABS-personArray[I].m_Sex==1?男:女) \ t ;
Cout age: abs- personArray[i].m _ Age \ t
Cout Tel: abs- personArray[i]。m _ Phone \ t
Cout的地址: abs- personArray[i]。m _ Addr endl
}
}
系统(“暂停”);
系统(“cls”);
}6.2开关case语句和case 2中增加了测试和显示触点功能。
2://显示联系人
show person(ABS);
打破;测试结果如图所示:
7.删除联系人功能描述:按姓名删除指定的联系人。
删除联系人的实现步骤:
检测封装触点的存在,封装和删除触点功能,测试和删除触点功能,7.1封装和检测触点的存在,设计思路:
在删除联系人之前,我们需要判断用户输入的联系人是否存在。如果有删除,则没有要删除的联系人。
所以我们可以在一个函数中封装联系人是否存在,如果存在就返回联系人在通讯录中的位置,如果不存在就返回-1。
用于检测接触存在的代码:
//确定是否有查询人。数组中返回了一个索引位置,但没有返回-1。
int isExist(Addressbooks abs,string name) {
for(int I=0;i abs.m _ Sizei ) {
if(ABS . persona array[I].m_Name==name)
返回I;//找到返回下标
}
return-1;//找不到
}7.2包删除联系人功能根据用户输入的联系人判断通讯录中是否存在此人。
找到要删除的,提示删除成功。
我找不到暗示。没有这样的人。
//3.删除指定的联系信息。
void delete person(address books * ABS){
Cout 请输入要删除的联系人姓名: endl
字符串名称;
cin名字;
int ret=isExist(*abs,name);
如果(ret!=-1) {
//i MAX-1是处理边界条件。
for(int I=ret;I ABS-m _ Size I MAX-1;i ) {
ABS-personar array[I]=ABS-personar array[I 1];
}
ABS-m _ Size-;//下标减一
Cout 已成功删除!endl
}
否则{
Cout“没有这样的人!”endl
}
系统(“暂停”);
系统(“cls”);
}7.3测试删除联系人功能。在switch case3语句中,添加:
3://删除联系人
删除人(ABS);
打破;测试结果如图所示:
联系人存在:
不存在的情况:
8.查找联系人功能描述:按姓名查看指定的联系人信息。
查找联系人的实施步骤
封装联系人功能测试查找指定联系人8.1封装联系人功能实现思路:判断用户指定的联系人是否存在,如果有则显示信息,如果没有则提示查找。
查找联系代码:
//4.查找指定的联系信息。
void find person(address books * ABS){
Cout 请输入您要查找的联系人的姓名: endl
字符串名称;
cin名字;
int ret=isExist(*abs,name);
如果(ret!=-1) {
cout name: ABS-personArray[ret].m _ Name \ t
cout Gender:(ABS-personArray[ret].m_Sex==1?男:女) \ t ;
Cout age: abs- personArray[ret]。m _ Age \ t
Cout Tel: abs-personarray [ret].m _ phone \ t
Cout的地址: ABS-personarray [ret].m _ addrendl
}否则{
Cout没有这样的人’endl;
}
系统(“暂停”);
系统(“cls”);
}8.2测试并找到指定的联系人。在switch case4语句中,添加:
4://查找联系人
find person(ABS);
打破;测试结果如图所示。
存在:
不存在的情况:
9.修改联系人的功能描述:根据姓名再次修改指定的联系人。
修改联系人实施步骤
包联系人功能测试修改联系人功能9.1包修改联系人功能实现思路:找到用户输入的联系人。如果搜索成功,修改操作,搜索失败提示没有此人。
修改联系人代码:
//5.修改指定的联系信息。
void update person(address books * ABS){
Cout 请输入要修改的联系人姓名: endl
字符串名称;
cin名字;
int ret=isExist(*abs,name);
如果(ret!=-1) {
cout name: ABS-personArray[ret].m _ Name \ t
cout Gender:(ABS-personArray[ret].m_Sex==1?男:女) \ t ;
Cout age: abs- personArray[ret]。m _ Age \ t
Cout Tel: abs-personarray [ret].m _ phone \ t
Cout的地址: ABS-personarray [ret].m _ addrendl
Cout 请输入修改后的名称: endl
字符串pName
CINpName;
abs- personArray[ret]。m _ Name=pName
Cout 请输入修改后的性别: endl
Cout 1—— male endl
Cout 2—— female endl
int pSex
CIN pSex;
while (pSex 1 pSex 2) {
Cout 输入不正确,请重新输入: endl
CIN pSex;
}
abs- personArray[ret]。m _ Sex=pSex
Cout 请输入修改后的年龄: endl
int页面;
CIN佩奇;
abs- personArray[ret]。m _ Age=pAge
Cout 请输入修改后的电话号码: endl
字符串pPhone
CIN p phone;
abs- personArray[ret]。m _ Phone=pPhone
Cout 请输入修改后的地址: endl
string pAddr
CIN帕德尔;
abs- personArray[ret]。m _ Addr=pAddr
Cout 修改成功!endl
系统(“暂停”);
系统(“cls”);
}否则{
Cout没有这样的人’endl;
}
系统(“暂停”);
系统(“cls”);
}9.2测试和修改触点功能。在switch case语句中,添加:
5://修改联系人
update person(ABS);
打破;测试结果如图所示:
找不到指定的联系人:
找到联系人并成功修改:
再次检查地址簿以确认修改:
10.清除联系人功能描述:清除通讯录中的所有信息。
空联系人实施步骤
封装联系人功能测试,清空联系人10.1封装和清空联系人功能实现思路:清空通讯录中的所有联系人信息,只需将通讯录中记录的联系人数量设置为0,做逻辑清空即可。
清除联系人代码:
//6.清空所有联系人。
void clean person(address books * ABS){
Cout 您确定要清空通讯录吗?endl
Cou 1,yes \t 2,no endl
int select
cin精选;
if (select==1) {
ABS-m _ Size=0;
Cout 通讯簿已被清空!endl
}否则{
Cout 操作已取消!endl
}
系统(“暂停”);
系统(“cls”);
}10.2测试清除联系人。在switch case语句中,添加:
6://空联系人
clean person(ABS);
打破;测试结果如图所示:
空通讯簿
再次查看信息,显示记录为空。
至此,通讯录管理系统完成!
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。