c++通讯录管理系统实验报告.docx
《c++通讯录管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《c++通讯录管理系统实验报告.docx(32页珍藏版)》请在冰豆网上搜索。
![c++通讯录管理系统实验报告.docx](https://file1.bdocx.com/fileroot1/2023-2/6/54249df5-ea58-4e74-b0a1-64fb2d273173/54249df5-ea58-4e74-b0a1-64fb2d2731731.gif)
c++通讯录管理系统实验报告
安徽农业大学经济技术学院
《C++程序设计》课程设计报告书
课题名称
通讯录管理系统
姓名
XXX
学号
XXX
院系
XXX
专业
软件工程
指导教师
XXX
起止日期
2019年12月25日
2019年12月25日
《C++程序设计》课程设计任务书
下达时间:
2019年12月23日设计时间:
一周
指导教师:
XXX完成班级:
2018级软件工程专业
【设计目的】
本课程设计是在学生学完《C++》课程后进行的一次全面的综合练习,是计算机学科重要的实践性环节之一,目的旨在利用编程知识与技巧,达到理论与实践的统一。
做到:
(1)巩固和加深对C++程序设计课程的基本知识的理解和掌握;
(2)掌握和提高C++编程和程序调试基本技能;
(3)进一步理解和运用结构化程序设计的思想和方法;
(4)基本掌握面向对象程序设计的基本思路和方法;
(5)提高运用C++解决简单的面向对象的程序设计问题的能力;
(6)掌握科学地撰写程序设计说明文档和总结报告的能力。
【设计内容和任务】
可以在指定的题目中任意选择一题,也可以自选题目,若选题相同,程序基本相同或撰写报告基本相同的情况下,经查证属于相互抄袭的,均以零分计入成绩。
参考题目如下:
1、GPA计算器
2、学生信息管理系统
3、学生成绩管理系统
4、商品库存管理系统
5、图书馆管理系统
6、职工工资信息管理系统
7、聊天程序
8、通讯录
【设计要求】
采用教师指导、学生自学和独立编程的操作方式,先由学生查阅与本课程设计有关的书籍和资料,利用visualC++6.0设计环境与开发工具,要求如下:
1、分析课程设计题目
2、写出详细设计说明;
3、编写程序代码、调试程序使其能正确运行,能正确地接受输入,产生正确的结果,界面友好,便于操作和使用;
4、课题完成后必须按要求提交课程设计报告,且设计报告必须符合规范。
【设计报告】
装订顺序依次为封面、任务书、目录、正文、参考文献、附录。
正文内容包括:
系统需求分析,总体设计,详细设计,系统调试,结果分析和总结等。
正文格式如下:
一级标题(左对齐,宋体粗四号),二级标题(左对齐,宋体小四号,加粗);正文:
小四,宋体,两边分散对齐;行间距1.15倍;左边距:
3cm,右边距2cm;
【提交要求】
每位同学提交纸质设计报告书一份(用A4纸双面打印),要求编排格式统一、规范,内容充实,并附带电子版(以自己的学号和姓名命名文件名)。
【设计时间与地点】
时间:
共一周,包括实习动员与任务布置;查阅资料、分析与设计;编写程序,进行调试;成果验收,完成设计报告。
地点:
实验室、图书馆等
【设计成绩评定】
设计成绩是依据在设计中的表现综合评定,包括:
设计纪律(10%):
设计中遵守纪律,服从管理,以及设计态度等因素,如有严重违纪,可按学校有关规定直接评为不及格。
设计正确性(40%):
根据设计运行正常和异常评定相应等级
设计界面(10%):
根据图形界面评定
设计报告(30%):
设计报告的完成情况
考核形式(10%):
通过提问及验收时间等评定
备注:
在实验结果的基础上,发表了学术论文的同学可以直接评为优秀成绩。
通讯录管理系统
一、系统简介
通讯录管理系统
项目名称
通讯录管理系统
作者
XXX
时间
2019年12月25日
班级
18软件工程1班
代码量
300行
编程环境
VisualStudio2013
项目简介
本通讯录信息管理系统用计算机管理电子通讯录的一种计算机应用技术的创新,在计算机还未普及之前通讯管理都是由联系人采用名片,笔录手工记账的方式来操作的.现在一般的通讯录管理都是采用计算机作为工具的实用的计算机通讯录管理程序来帮助人们进行更有效的通讯录信息管理。
通讯录管理系统是典型的信息管理系统,其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。
要求应用程序功能完备,易使用等特点。
项目目的
实现通讯录管理系统的基本功能,可以实现电话用户的查询、电话号码的查询、电话号码所在地的查询、电话号码的添加及删除、修改等功能,以方便人们的记录和通讯。
二、系统演示
2.1、通讯录管理系统功能图
2.2、各功能说明
该程序可以实现通讯录管理系统的一些基本功能,比如手机用户的查询、电话号码的查询、电话号码所在地的查询、电话号码的添加及删除、修改等功能,以方便人们的记录和通讯。
三、软件设计
3.1、总体设计(主函数设计)
主函数中调用的大量的自定义函数,首先设置通讯录结构体变量,调用主菜单界面,显示主菜单。
然后通过一个选择语句,实现功能的选择。
在外面嵌套循环语句,实现程序反复使用。
主函数代码如下:
intmain()
{
Addressbooksabs;//通讯录中结构体变量
abs.m_Size=0;//初始化人数
intseclect;//用户选择的功能
while(true)
{
showMenu();//菜单显示功能
cout<<"请选择功能:
"<cin>>seclect;//用户输入选择的功能
switch(seclect)
{
case1:
addPerson(&abs);//添加联系人函数
break;
case2:
showPerson(&abs);
break;
case3:
deletePerson(&abs);
break;
case4:
findPerson(&abs);
break;
case5:
modifyPerson(&abs);
break;
case6:
cleanPerson(&abs);
break;
case0:
//退出系统
cout<<"已退出系统"<system("pause");
return0;
break;
}
}
system("pause");
return0;
}
3.2、主页面设计
该功能主要是显示用户使用界面,以便提升用户的交互体验。
菜单显示功能代码如下:
voidshowMenu()//菜单显示功能
{
cout<<"*****************************"<cout<<"*****1、添加联系人*****"<cout<<"*****2、显示联系人*****"<cout<<"*****3、删除联系人*****"<cout<<"*****4、查找联系人*****"<cout<<"*****5、修改联系人*****"<cout<<"*****6、清空联系人*****"<cout<<"*****0、退出系统*****"<cout<<"*****************************"<}
调试结果如下:
3.3、各功能实现
3.3.1、添加联系人
若要向通讯录中添加新号码,主要流程如下:
选择菜单1,输入姓名,然后选择性别1为男性,2为女性。
接下来输入年龄、联系电话、家庭住址等信息。
回车添加成功,并且会有提示:
添加成功
按任意键继续!
添加联系人代码如下:
//1、添加联系人
voidaddPerson(Addressbooks*abs)
{
if(abs->m_Size==MAX)//判断通讯录中人数是否已满
{
cout<<"通讯录已满,无法添加"<return;
}
else
{
//添加姓名
stringname;
cout<<"请输入姓名:
"<cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
//添加性别
intsex=0;
cout<<"请输入性别:
1.男2.女"<while(true)//如果如1和2,退出循环
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[abs->m_Size].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入:
"<}
//添加年龄
intage;
cout<<"请输入年龄:
"<cin>>age;
abs->personArray[abs->m_Size].m_Age=age;
//添加联系电话
stringphone;
cout<<"请输入联系电话:
"<cin>>phone;
abs->personArray[abs->m_Size].m_Phone=phone;
//添加家庭住址
stringaddress;
cout<<"请输入家庭住址:
"<cin>>address;
abs->personArray[abs->m_Size].m_Addr=address;
abs->m_Size++;//更新通讯录人数
cout<<"添加成功"<system("pause");
system("cls");//清理屏幕
}
}
3.3.2、显示联系人
输入数字2,既可以显示已经添加的所有联系人的姓名、性别、年龄、联系电话、家庭住址这些信息。
显示联系人函数代码如下:
//2、显示联系人
voidshowPerson(Addressbooks*abs)
{
if(abs->m_Size==0)
{
cout<<"当前记录为空"<}
else
{
for(inti=0;im_Size;i++)
{
cout<<"姓名:
"<personArray[i].m_Name<<"\t";
cout<<"性别:
"<<(abs->personArray[i].m_Sex==1?
"男":
"女")<<"\t";
cout<<"年龄:
"<personArray[i].m_Age<<"\t";
cout<<"电话:
"<personArray[i].m_Phone<<"\t";
cout<<"住址:
"<personArray[i].m_Addr<}
}
system("pause");
system("cls");
}
//查询联系人
intisExist(Addressbooks*abs,stringname)
{
for(inti=0;im_Size;i++)
{
if(abs->personArray[i].m_Name==name)
{
returni;//如果有此人,返回下标
}
}
return-1;//如果没有此人,返回-1
}
3.3.3、删除联系人
删除联系人功能是输入联系人的联系方式(号码)或者姓名,即可删除联系人的信息。
在这里用了判断的语句,如果删除联系人在所在的库里(即1、添加联系人),则会提示删除成功!
否则会提示查无此人。
删除联系人函数代码如下:
//3、删除联系人
voiddeletePerson(Addressbooks*abs)
{
cout<<"请输入需要删除的联系人:
"<stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!
=-1)
{
for(inti=ret;im_Size;i++)
{
abs->personArray[i]=abs->personArray[i+1];
abs->m_Size--;
}
cout<<"删除成功!
"<}
else
{
cout<<"查无此人"<}
system("pause");
system("cls");
}
3.3.4、查找联系人
该函数的主要功能是输入联系人姓名或者某一类属性,便可以显示该属性下存在的所有联系人的信息。
如果没有发现此类属性,则提示查无此人!
查找联系人函数代码如下:
//4、查找联系人
voidfindPerson(Addressbooks*abs)
{
cout<<"请输入需要查找的联系人:
"<stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!
=-1)
{
cout<<"姓名:
"<personArray[ret].m_Name<<"\t";
cout<<"性别:
"<<(abs->personArray[ret].m_Sex==1?
"男":
"女")<<"\t";
cout<<"年龄:
"<personArray[ret].m_Age<<"\t";
cout<<"电话:
"<personArray[ret].m_Phone<<"\t";
cout<<"住址:
"<personArray[ret].m_Addr<}
else
{
cout<<"查无此人"<}
system("pause");
system("cls");
}
3.3.5、修改联系人
选择修改联系人,可以输入联系人姓名信息接入更改选项,重新输入联系人信息,便会在原有的数据基础上修改数据。
修改完成后,提示修改成功!
修改指定联系人代码如下:
//5、修改指定联系人信息
voidmodifyPerson(Addressbooks*abs)
{
cout<<"请输入需要修改的联系人:
"<stringname;
cin>>name;
intret=isExist(abs,name);
if(ret!
=-1)
{
//添加姓名
stringname;
cout<<"请输入姓名:
"<cin>>name;
abs->personArray[ret].m_Name=name;
//添加性别
intsex=0;
cout<<"请输入性别:
1.男2.女"<while(true)//如果如1和2,退出循环
{
cin>>sex;
if(sex==1||sex==2)
{
abs->personArray[ret].m_Sex=sex;
break;
}
cout<<"输入有误,请重新输入:
"<}
//添加年龄
intage;
cout<<"请输入年龄:
"<cin>>age;
abs->personArray[ret].m_Age=age;
//添加联系电话
stringphone;
cout<<"请输入联系电话:
"<cin>>phone;
abs->personArray[ret].m_Phone=phone;
//添加家庭住址
stringaddress;
cout<<"请输入家庭住址:
"<cin>>address;
abs->personArray[ret].m_Addr=address;
cout<<"修改成功"<}
else
{
cout<<"查无此人"<}
system("pause");
system("cls");
}
3.3.6、清空联系人
选择清空联系人,便可以清空已经保存的联系人所有的数据。
清空联系人代码如下:
//6、清空联系人
voidcleanPerson(Addressbooks*abs)
{
charclew;
cout<<"是否确认清空?
(y/n)"<cin>>clew;
if(clew=='y')
{
abs->m_Size=0;
cout<<"通讯录已清空!
"<}
else
{
}
system("pause");
system("cls");
}
3.3.7、退出系统
在主函数中实现,实现直接退出系统。
代码如下:
switch(seclect)
{
case1:
addPerson(&abs);//添加联系人函数
break;
case2:
showPerson(&abs);
break;
case3:
deletePerson(&abs);
break;
case4:
findPerson(&abs);
break;
case5:
modifyPerson(&abs);
break;
case6:
cleanPerson(&abs);
break;
case0:
//退出系统
cout<<"已退出系统"<system("pause");
return0;
break;
}
3.4、系统调试
四、总结
4.1、设计心得
经过这次C语言课程设计,让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个课程设计的学习,使我初步理解和运用结构化程序设计的思想和方法。
其次,在做课程设计的过程中,发现了平时很多没有注意到的问题,例如:
返回值函数两者在主函数中的调用是不同的。
C语言的一些标准库函数不太了解,容易忘记添加头文件就调用函数,往往形成错误找了很久没找到,还有对函数调用的正确使用不够熟悉。
更重要的是,这次课程设计虽然花了我不少时间,但正是这些时间,让我见识到了C语言的重要性。
这个通讯录管理系统都是在自己知识范围内完成的,界面清晰简单,绝对实用。
通过C语言课程设计的学习,我认识到学好计算机知识需要我们不断的实践操作,只有重视实践操作,才能学到最有用的知识。
不仅仅是学习C语言,学习其他知识,都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己学到有用的知识。
4.2、设计不足之处
首先是:
本来C语言文件操作。
上课是不太熟的,但这个课程设计里面需要用到了文件的调用、打开和保存方式,所以我并没有使用文件操作来保存数据。
因为要达到多种功能,所以我很了很多的时间看课本和参考课外书,使C++语言的知识强化了不少。
五、附录
5.1参考文献
[1] 谭浩强. 《C++程序设计(第三版)》. 清华大学出版社. 2015
[2]吴国栋、孙立.《C语言程序设计教程》中国农业出版社
[3]哔哩哔哩.黑马程序员匠心之作|C++教程从0到1入门编程。
5.2源程序代码
程序源代码如下:
#include"iostream"
#include"string"
#defineMAX1000//最大人数
usingnamespacestd;
voidshowMenu()//菜单显示功能
{
cout<<"*****************************"<cout<<"*****1、添加联系人*****"<cout<<"*****2、显示联系人*****"<cout<<"*****3、删除联系人*****"<cout<<"*****4、查找联系人*****"<cout<<"*****5、修改联系人*****"<cout<<"*****6、清空联系人*****"<cout<<"*****0、退出系统*****"<cout<<"*****************************"<}
structPerson//创建联系人结构体
{
stringm_Name;//姓名
intm_Sex;//性别男:
1女:
2
intm_Age;//年龄
stringm_Phone;//电话
stringm_Addr;//家庭住址
};
structAddressbooks//通讯录结构体
{
structPersonpersonArray[MAX];//通讯录中保存联系人的数组
intm_Size;//记录当前人数
};
//1、添加联系人
voidaddPerson(Addressbooks*abs)
{
if(abs->m_Size==MAX)//判断通讯录中人数是否已满
{
cout<<"通讯录已满,无法添加"<return;
}
else
{
//添加姓名
stringname;
cout<<"请输入姓名:
"<cin>>name;
abs->personArray[abs->m_Size].m_Name=name;
//添加性别
intsex=0;
cout<<"请输入性别:
1.男2.女"<while(true)//如果如1和2,退出循环
{
cin>>sex;
if(sex==1||sex==2)