通讯录管理系统课程设计报告Word文档下载推荐.docx
《通讯录管理系统课程设计报告Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统课程设计报告Word文档下载推荐.docx(14页珍藏版)》请在冰豆网上搜索。
![通讯录管理系统课程设计报告Word文档下载推荐.docx](https://file1.bdocx.com/fileroot1/2023-1/26/87ff55cb-d6fa-4abc-8a27-5e6219cdeb42/87ff55cb-d6fa-4abc-8a27-5e6219cdeb421.gif)
}per[10];
intmenu()//主菜单选择函数
2.函数说明
(1)主函数
main()允许用户通过菜单进行功能选择,使用相应的功能代码来调用对应的函数功能。
(2)其他各功能函数包括
函数名
功能
intInput(structdateper[10],intn)
输入记录
voidQuery_a_record(structdateper[10],intn)
信息查询
voidDisplay(structdateper[10],intn)
信息展示
voidwriteToFile(structdateper[10],intn)
记录保存为文件
intDelete_a_record(structdateper[10],intn)
信息删除
intmenu_select();
voidChange(structdateper[10],intn)
voidWritetoText(structdateper[10],intn)
主菜单函数
修改信息
信息增加
四、程序清单
1、头文件
2、主函数
voidmain()//主函数
{
intn=0,i;
while
(1)
{switch(menu())
{case1:
{printf("
\n\t通讯信息录入\n"
);
//信息录入
n=Input(per,n);
}
break;
case2:
printf("
\n\t\t\t通讯录记录表\n"
//显示记录
Display(per,n);
case3:
\n\t保存功能\n"
WritetoText(per,n);
//保存数据
\t"
system("
pause"
//操作完成后进行暂停
case4:
\n\t从通讯录中删除记录\n"
n=Delete_a_record(per,n);
//删除记录
case5:
\n\t修改通讯录中的记录\n"
Change(per,n);
//修改数据
case6:
\n\t添加记录到通讯录\n"
//添加记录
n=Input(per,n);
case7:
\n\t在通讯录中查找记录\n"
Query_a_record(per,n);
//查找记录
//从程序里调用”pause”命令
case0:
\n\t\t谢谢使用,再见!
\n"
//结束程序
\n\t\t"
exit(0);
}
五、总程序和分工执行结果
charphone[12];
charemail[20];
charQQ[20];
}per[10];
intmenu()//主菜单选择函数
{intc;
//定义一个整型变量
do{
cls"
//清屏
printf("
\t*******通讯录*******\n"
\t--------------------\n"
\t1、通讯信息录入\n"
\t2、通讯信息显示\n"
\t3、通讯信息保存\n"
\t4、通讯信息删除\n"
\t5、通讯信息修改\n"
\t6、通讯信息增加\n"
\t7、通讯信息查询\n"
\t0.退出\n"
\t请您选择(0-7):
"
scanf("
%d"
&
c);
}while(c>
7&
&
c<
0);
return(c);
}
{inti=0;
charsign,x[10];
while(sign!
='
n'
sign!
N'
)
{printf("
\t姓名:
scanf("
%s"
per[n+i].name);
\t电话号码:
per[n+i].phone);
\t电子邮箱:
per[n+i].email);
\tQQ:
per[n+i].QQ);
gets(x);
\n\t是否继续添加?
(Y/N)"
fflush(stdin);
//清空缓存
%c"
sign);
i++;
return(n+i);
}
{FILE*fp=NULL;
inti=0;
fp=fopen("
"
wb"
if(fp==NULL)
{printf("
打开文件出错!
}
for(i=0;
i<
10;
i++)
fwrite(&
per[i],sizeof(per),1,fp);
//把字节为1的信息写入文件
fclose(fp);
}
voidDisplay(structdateper[10],intn)
{inti;
----------------------------------------------------------------------\n"
//格式/
姓名电话号码QQ电子邮箱\n"
for(i=1;
n+1;
i++)
{
%-15s%-14s%-14s%-14s\n"
per[i-1].name,per[i-1].phone,per[i-1].QQ,per[i-1].email);
if(i>
1&
i%10==0)
\t-----------------------------------\n"
printf("
system("
system("
{chars[20];
inti=0,j;
\t请输入想删除记录中的名字:
s);
while(strcmp(per[i].name,s)!
=0&
n)i++;
if(i==n)
{printf("
\t通讯录中没有此人!
return(n);
for(j=i;
j<
n-1;
j++)
{strcpy(per[j].phone,per[j+1].phone);
strcpy(per[j].name,per[j+1].name);
strcpy(per[j].QQ,per[j+1].QQ);
strcpy(per[j].email,per[j+1].email);
\t\t\t已经成功删除!
return(n-1);
voidQuery_a_record(structdateper[10],intn)
{intm;
\t\n请选择查询方式:
\t┌──────┐\n"
\t│1------姓名│\n"
\t│2------电话│\n"
\t│3------返回│\n"
\t└──────┘\n"
请选择:
m);
while(m!
=1&
m!
=2&
=3&
=4)
输入错误,请重新选择:
if(m==1)
{chars[20];
inti=0;
\t请输入想查询的姓名:
\t%s"
while(strcmp(per[i].name,s)!
if(i==n)
{
return;
\t此人QQ:
%s\n"
per[i].QQ);
per[i].phone);
per[i].email);
};
if(m==2)
\t请输入想查询的电话:
while(strcmp(per[i].phone,s)!
\t此人姓名:
per[i].name);
{chars[20];
\t请输入想修改的记录中的名字:
return;
姓名:
电话号码:
QQ:
电子邮箱:
\n修改成功!
{inti=0;
FILE*fp;
//定义文件指针
charfilename[20];
//定义文件名
\t保存到文件\n"
//输入文件名
if((fp=fopen("
w"
))==NULL)
\t无法打开文件\n"
fprintf(fp,"
***************************************通讯录********************************\n"
-----------------------------------------------------------------------------\n"
while(i<
n)
{fprintf(fp,"
%-10s\t%-3s\t%-20s\t%-20s\n"
per[i].name,per[i].phone,per[i].QQ,per[i].email);
-------------------------------------------------------------------------\n"
********************************共有%d条记录***************************\n"
n);
//关闭文件
保存成功!
voidmain()//主函数
{intn=0,i;
//信息录入
//保存数据
//操作完成后进行暂停
//删除记录
//修改数据
//添加记录
//查找记录
//结束程序
图1通讯录主菜单结果
图2信息录入
图3通讯信息显示
图4通讯信息保存
五、调试与测试
所谓程序调试是对程序的查错和排错。
对此程序我们进行了以步骤:
人工检查,即静态检查。
此过程我们对于写好的程序进行了排查,并且进行了注释。
上机调试。
通过上机调试发现的错误为动态检查,这时发现了许多错误和警告,我们根据提示逐一改正。
运行程序。
这一步骤我们逐一检查每个菜单是否运行正常与正确,在这个过程中我们出现了许多格式不正确,我们细心的进行修改。
总之,在我们对程序进行了细心的调试和测试之后,我们的程序正常运行了,但是其中还是有很多不足的地方。
比如我们的修改成绩这一向就是不完善的,要是程序里出现了不同班但学号相同时这个问题就没有解决,在以后我们会进行改善。
六、结语
心得体会:
通过这一周的课程设计,我对一些专业知识和程序设计有了更深的了解,同时也尝试着,去应用自己的所掌握的知识。
本次高级程序课程设计主要是对本学年学习的C程序知识,同时加上基础知识,设计一些课题。
经过几天的奋战,我感受很深。
在设计的过程中不可避免的遇到了很多的问题.尤其是在调试过程中,会因为某些原因出不来结果,也会因为个别错误而导致运行不出来,在这个过程中,遇到问题是不可避免的,但是在遇到困难是我们不退缩。
在老师和同学的帮助与指导下,我们顺利的完成了本次课程设计,并调试出结果。
在调试结果出来时,我更是无比的兴奋,无比的自豪。
总之,通过这次高级程序课程设计,我对自己的知识有了更好的掌握和应用,在以后的学习和生活中受用终身。
在以后的学习中我们更多的要投身于实践中,多动手,多动脑,才能更好的把学习学好。
七、参考文献
[1]袁志祥主编数据结构(C语言版)例题详解与课程设计指导第二版中国科技大学出版社
[2]刘甫迎刘光会王蓉主编程序设计教程(第二版)北京电子工业出版社2008
[3]郭胜主编程序设计清华大学出版社2002
[4]施燕妹陈培陈发吉主编C#语言程序设计教程中国水利水电出版社2001