通信录管理系统1.docx
- 文档编号:3418082
- 上传时间:2022-11-22
- 格式:DOCX
- 页数:25
- 大小:188.93KB
通信录管理系统1.docx
《通信录管理系统1.docx》由会员分享,可在线阅读,更多相关《通信录管理系统1.docx(25页珍藏版)》请在冰豆网上搜索。
通信录管理系统1
程序设计报告
(2010/2011学年第二学期)
题目:
通信录管理系统
专业
学生姓名_
班级学号__
指导教师
指导单位______________
日期
一、课题内容和要求
设一个通信录由以下几项数据信息构成:
数据项类型
姓名字符串
地址字符串
邮政编码字符串
电话号码字符串
1、试为通信录数据定义类型和定义通信录变量,实现:
存取、显示、
删除记录、查询记录等功能。
2、通讯录文件中,当录入了重复的姓名和电话号码时,则提示数据录
入重复并取消录入;当通信录中超过15条信息时,存储空间已满,
提示不能再录入新数据,录入的新数据能按递增的顺序自动进行条
目编号。
3、修改功能:
选中某个人的姓名时,可对此人在通讯录中的相应数据
进行修改。
4、删除功能:
选中某个人的姓名时,可对此人在通讯录中的相应数据
进行删除,并自动调整后续条目的编号。
5、主界面提供菜单选择的方法选择实现某一功能,一次运行程序能进
行多次选择执行。
二、需求分析
主要包括以下几种功能:
存取:
存取通信录信息
显示:
显示通信录信息
删除:
删除通信录信息
查询:
查询通信录信息
修改:
修改通信录信息
三、概要分析
(1)工作流程图:
1、存储
2、显示
3、删除
4、查询
5、修改
(2)程序模块图(框架):
(3)存储结构:
typedefstruct
{
charscore;
charname[10];
charphone[15];
charzc[20];
charadds[20];
}person;
四、源程序代码
#include
#include
#include
typedefstruct
{
charscore;
charname[10];
charphone[15];
charzc[20];
charadds[20];
}person;
personpe[80];
intmenu()
{
intc;
do{
system("cls");
printf("***********通信录***********\n\n");
printf("1.存储记录\n\n");
printf("2.显示记录\n\n");
printf("3.删除记录\n\n");
printf("4.查询记录\n\n");
printf("5.修改记录\n\n");
printf("0.退出程序\n\n");
printf("请选择(0-5):
");
scanf("%d",&c);
}while(c<0||c>6);
returnc;
}
intinput(personper[],intn)
{
inti=0,j;
charsign,x[10];
while(sign!
='n'&&sign!
='N')
{
printf("\t姓名:
");
scanf("%s",per[i].name);
for(j=0;j
{
if(strcmp(per[i].name,per[j].name)==0)
{
printf("\t姓名重复,取消录入!
\n");
system("pause");
gotorepeat;
}
}
printf("\t电话号码:
");
scanf("%s",per[i].phone);
for(j=0;j
{
if(strcmp(per[i].phone,per[j].phone)==0)
{
printf("\t电话号码重复,取消录入!
\n");
system("pause");
gotorepeat;
}
}
printf("\t邮政编码:
");
scanf("%s",per[i].zc);
printf("\t地址:
");
scanf("%s",per[i].adds);
gets(x);
printf("\n\t是否继续添加?
(Y/N)");
scanf("%c",&sign);
i++;
per[i-1].score=i;
if(i>=15)
{printf("\t存储空间已满,不能再录入新数据!
\n");
system("pause");
repeat:
break;
}
}
returni;
}
voiddisplay(personper[],intn)
{
inti;
printf("----------------------------------------------------------------------\n");
printf("编号姓名电话号码邮政编码地址\n");
printf("----------------------------------------------------------------------\n");
for(i=1;i { printf("%-10d%-10s%-15s%-14s%-30s\n",per[i-1].score,per[i-1].name,per[i-1].phone,per[i-1].zc,per[i-1].adds); } printf("----------------------------------------------------------------------\n"); system("pause"); } intdelete_a_record(personper[],intn) { chars[30]; inti=0,j; printf("\t请输入想删除记录的姓名: "); scanf("%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中无此人! \n"); return(n); } for(j=i;j { strcpy(per[j].name,per[j+1].name); strcpy(per[j].adds,per[j+1].adds); strcpy(per[j].zc,per[j+1].zc); strcpy(per[j].phone,per[j+1].phone); } printf("\t\t已经成功删除! \n"); return(n-1); } voidquery_a_record(personper[],intn) { intm; printf("\n请选择查询方式: \n"); printf("\t----------------------\n"); printf("\t|1--------姓名|\n"); printf("\t|2--------电话号码|\n"); printf("\t|3--------邮政编码|\n"); printf("\t|4--------地址|\n"); printf("\t|0--------返回|\n"); printf("\t----------------------\n"); printf("请选择(0-4): "); scanf("%d",&m); while(m! =1&&m! =2&&m! =3&&m! =4&&m! =0) { printf("输入错误! 请重新选择: "); scanf("%d",&m); } if(m==1) { chars[10]; inti=0; printf("请输入想查询的姓名: "); scanf("\t%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通信录中没有此人! \n"); return; } printf("\t电话号码: %s\n",per[i].phone); printf("\t邮政编码: %s\n",per[i].zc); printf("\t此人地址: %s\n",per[i].adds); }; if(m==2) { chars[20]; inti=0; printf("请输入想查询的电话号码: "); scanf("\t%s",s); while(strcmp(per[i].phone,s)! =0&&i if(i==n) { printf("\t通信录中没有此人! \n"); return; } printf("\t此人姓名: %s\n",per[i].name); printf("\t邮政编码: %s\n",per[i].zc); printf("\t此人地址: %s\n",per[i].adds); }; if(m==3) { chars[10]; inti=0; printf("请输入想查询的邮政编码: "); scanf("\t%s",s); while(strcmp(per[i].zc,s)! =0&&i if(i==n) { printf("\t通信录中没有此人! \n"); return; } printf("\t此人姓名: %s\n",per[i].name); printf("\t电话号码: %s\n",per[i].phone); printf("\t此人地址: %s\n",per[i].adds); }; if(m==4) { chars[30]; inti=0; printf("请输入想查询的地址: "); scanf("\t%s",s); while(strcmp(per[i].adds,s)! =0&&i if(i==n) { printf("\t通信录中没有此人! \n"); return; } printf("\t此人姓名: %s\n",per[i].name); printf("\t邮政编码: %s\n",per[i].zc); printf("\t电话号码: %s\n",per[i].phone); }; } voidchange(personper[],intn) { chars[20]; inti=0; printf("\t请输入想修改的姓名: "); scanf("%s",s); while(strcmp(per[i].name,s)! =0&&i if(i==n) { printf("\t通讯录中没有此人! \n"); return; } printf("\t姓名: "); scanf("\t%s",per[i].name); printf("\t电话号码: "); scanf("\t%s",per[i].phone); printf("\t邮政编码: "); scanf("\t%s",per[i].zc); printf("\t地址: "); scanf("\t%s",per[i].adds); printf("\t修改成功! "); } voidmain() { intn=0; for(;;) { switch(menu()) { case1: printf("\n\t存取记录到通讯录\n"); n=input(pe,n); break; case2: printf("\n\t\t通讯录记录表\n"); display(pe,n); break; case3: printf("\n\t从通讯录中删除记录\n"); n=delete_a_record(pe,n); printf("\t"); system("pause"); break; case4: printf("\n\t从通讯录中查询记录\n"); query_a_record(pe,n); printf("\t"); system("pause"); break; case5: printf("\n\t修改通讯录记录\n"); change(pe,n); printf("\t"); system("pause"); break; case0: printf("\n\t\t谢谢使用,再见! \n"); printf("\n\t\t"); system("pause"); exit(0); } } } 五、测试数据及其结果分析 (1)主菜单 (2)存储 (3)显示 (4)删除 删除后记录: (5)查询 (6)修改 修改后的记录 六、调试过程中的问题 (1)关于exit exit好象在stdio.h里面,所以要有包含头文件 return是返回函数调用,如果返回的是main函数,则为退出程序 exit是在调用处强行退出程序,运行一次程序就结束 ------------------------------------------------------------------- return 是返回 函数返回 而exit是退出 ------------------------------------------------------------------- exit (1)表示异常退出.这个1是返回给操作系统的不过在DOS好像不需要这个返回值 exit(0)表示正常退出 (2)跳出多个循环 在储存环节时,输入重复要取消跳出循环。 一开始我用的是break,但只能跳出一个循环,跳多个时就没有用了。 后来,我查了资料,发现可以通过goto完成这个功能。 (3)界面显示问题 一开始,我不懂得清屏,界面总是很乱。 每次操作完后,界面总是多了一个主菜单,很难看。 后来,我请教了同学,他建议我用system(“cls”),才解决了这个问题。 接着,我又上网查了system的用法,发现还有system(“pause”)有暂停功能,这个功能也使我设计的程序的界面显示更加清爽漂亮。 七、课程设计总结 本次的C程序设计实验是我进入大学以来第一次独立设计并成功的大实验。 在实验中,我发现了自己的许多缺陷与不足。 平时没有掌握好的知识在这次实验中都暴露了出来。 在不断地思考和总结,以及不断查阅资料和上级运行,和一次又一次地尝试的过程中,我终于解决了其中的大部分问题,但还是有一些问题无法解决。 但我相信,在今后的学习过程中能解决它们。 总的来说,这次程序设计实验,我还是有很大的收获的。 我不但进一步地熟悉和掌握了C语言,还懂得了程序设计的设计思想、结构构想和书写风格。 这次最深刻的体会就是,书上和老师教的内容是很有限的,如果真的想学会C语言和其他科目,我们需要的不但是老师的教导,更需要自己的不断努力,去请教他人,积极地去了解和掌握更多的知识,而不能被动学习,这样我们才能学得更好。 最后,我要感谢在实验中帮助我的老师和同学,以及为我们安排这次实验的学校领导,是他们让我更好地了解了C语言,懂得了应该如何去学习! 评分细则 评分项 优秀 良好 中等 差 遵守机房规章制度 上机时的表现 学习态度 程序准备情况 程序设计能力 团队合作精神 课题功能实现情况 算法设计合理性 用户界面设计 报告书写认真程度 内容详实程度 文字表达熟练程度 回答问题准确度 简短评语 教师签名: 2011年4月9日 评分等级 备注 评分等级有五种: 优秀、良好、中等、及格、不及格
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通信 管理 系统