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