通讯录管理系统.docx
- 文档编号:28616534
- 上传时间:2023-07-19
- 格式:DOCX
- 页数:19
- 大小:131.18KB
通讯录管理系统.docx
《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(19页珍藏版)》请在冰豆网上搜索。
通讯录管理系统
设计题目通讯录管理系统
1.课程设计的目的
通讯录是人们日常生活中经常要用到的通讯管理工具,在现实生活中应用非常广泛,从个人到企业,而尤其是在移动通讯领域通讯录的使用使我们感觉是最大受益者。
通讯录给人们带来很大的方便,通讯录以文件方式保存用户录入的数据,它可以高效的管理用户数据信息并提供用户一些功能,包括数据的录入、修改、删除、查找以及文件的读写等。
通过实现一个小型通讯录系统已达到以下四个目的:
(1)通过实现小型通讯录系统,了解一般通讯录的结构设计以及各个功能的实现过程
(2)进一步熟悉模块化设计过程,了解小型软件的开发过程
(3)进一步掌握C语言,初步熟悉C语言高级编程
(4)培养思考问题和解决问题的能力。
2.设计方案论证
2.1总体方案
本程序设计的知识点:
变量的定义,if语句的使用,输入和输出函数,数组的使用,函数的定义和调用等等。
(1)输入记录模块:
输入记录模块主要完成将数据存入数组中的工作。
在此通讯录管理系统中记录可以从键盘逐个输入记录。
记录由与联系人有关的基本信息字段构成。
(2)查询记录模块:
查询记录模块主要完成用户查找某一特定联系人的任务。
在该通讯录系统中,用户可以根据联系人姓名进行查找。
(3)更新记录模块:
更新记录模块主要完成对记录的维护。
在此通讯录管理系统中,它实现删除和排序操作。
(4)输出记录模块:
输出记录模块主要完成两个任务。
第一,它实现对记录的存储操作;第二,它可以将记录输出至屏幕。
2.2主要函数说明
2.2.1数据结构设计
本程序定义了结构体members,用于存放联系人的基本信息。
structmember
{intnumber;
charname[20];
chartelephone[13];
charaddress[50];
charpost[6];
}members[50];
name[20]:
保存联系人姓名。
telephone[13]:
保存联系人电话号码。
address[50]:
保存联系人地址。
post[6]:
保存联系人邮编。
2.2.2部分函数功能描述
(1)data_add()
函数原型:
voidData_Add(intj)
该函数用于在数组中增加记录
(2)data_show()
函数原型:
voidData_Show(intj)
该函数用于在数组中找到符合条件的记录,并将其显示出来。
(3)data_showall()
函数原型:
voidData_Showall(intj)
该函数用于在数组中找到所有符合条件的记录,并将其全部显示出来。
(4)data_save()
函数原型:
voidData_Save()
该函数用于保存数组中的记录。
2.3功能模块结构图
2.4main()函数执行流程:
通讯录管理系统执行流程如图所示,它允许用户从键盘输入记录,添加到新的数组中,然后执行显示主菜单和进入循环操作,用户通过键入数字来选择与数字相对应的功能。
在判断键值时,有效的输入为1~6之间的数值,其他的输入都被视为无效按键,系统会重新显示主菜单界面供用户进行操作。
若选择1,则调用data_add()函数,执行增加记录操作;
若选择2,则执行删除记录操作;若选择3,则调用data_show()函数,执行查询记录操作;若选择4,则调用data_save()函数,执行保存记录操作;
若选择5,则调用data_showall函数,执行按升序排序操作;
若选择6,则执行退出通讯录系统的操作。
流程图:
是
否
2.5源代码
#include
#include
#include
#defineN10
structlibrary
{
intnum;
charbook_name[30];
charwriter[30];
charsort_num[3];
charpub_company[30];
charpub_time[30];
charprise[30];
};
typedefstructlibraryLIB;
LIBlib[N];
FILE*fp;
intall=0;
intmenu(void);
voidinput(void);
voidoutput(void);
voidsave(void);
voiddel(void);
voidsearch(void);
voidxiugai(void);
voidsort(void);
intmain()
{
for(;;)
{
switch(menu())
{
case1:
input();break;
case2:
output();break;
case3:
save();break;
case4:
search();break;
case5:
xiugai();break;
case6:
del();break;
case7:
sort();break;
case0:
exit
(1);break;
}
}
}
intmenu(void)/*显示主菜单*/
{
charm[3];
intn;
printf("\t\t1:
input\n");
printf("\t\t2:
output\n");
printf("\t\t3:
save\n");
printf("\t\t4:
search\n");
printf("\t\t5:
xiugai\n");
printf("\t\t6:
del\n");
printf("\t\t7:
sort\n");
printf("\t\t0:
exit\n");
printf("\t\tpleasechooseaoperation(0-6):
\n");
scanf("%s",m);
n=atoi(m);
return(n);
}
voidinput(void)/*显示输入函数*/
{
inti;
charm[3];
for(i=all;i { all++; printf("pleaseinputinformations: \n"); printf("\t\tnum: \n"); scanf("%d",&lib[i].num); printf("\t\tbook_name: \n"); scanf("%s",lib[i].book_name); printf("\t\twriter: \n"); scanf("%s",lib[i].writer); printf("\t\tsort_num: \n"); scanf("%s",lib[i].sort_num); printf("\t\tpub_company: \n"); scanf("%s",lib[i].pub_company); printf("\t\tpub_time: \n"); scanf("%s",lib[i].pub_time); printf("\t\tprise: \n"); scanf("%s",lib[i].prise); a: printf("\t\tyes/nocontinueinput? \n"); printf("\t\t1: yes\n"); printf("\t\t2: no\n"); scanf("%s",m); if(atoi(m)==1) continue; elseif(atoi(m)==2) return; else { printf("\t\tinputerror! \n"); gotoa; } } } voidoutput(void)/*显示输出函数*/ { inti; for(i=0;i { printf("\t\t%d\n",lib[i].num); printf("%s\t\t%s\t\t%s\n",lib[i].book_name,lib[i].writer,lib[i].sort_num); printf("%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i].pub_time,lib[i].prise); } } voidsort(void)/*从登陆号从大到小排序的函数*/ { intb,i; structlibraryflash; if((fp=fopen("file.c","wb"))==NULL) {printf("cannotopenfile\n"); return; } for(b=0;b { for(i=b+1;i { if(strcmp(lib[b].sort_num,lib[i].sort_num)<0) {flash=lib[b];lib[b]=lib[i];lib[i]=flash;} } } printf("thedownobjectis: \n"); printf("numbook'namewritersort_numpub_companypub_timeprise\n"); for(b=0;b { if(lib[b].sort_num[0]! ='\0') printf("%d%s%s%s%s%s%s\n",lib[b].num,lib[b].book_name,lib[b].writer, lib[b].sort_num,lib[b].pub_company,lib[b].pub_time,lib[b].prise); elsebreak; } } voidsave(void)/*文件保存*/ { inti; if((fp=fopen("file.c","wb"))==NULL) { printf("cannotopenthefile"); exit (1); } for(i=0;i { if(fwrite(&lib[i],sizeof(LIB),1,fp)! =1) { printf("cannotwrite! "); exit (1); } } fclose(fp); } voidsearch(void)/*书名和作者名查找*/ { inti,flag; charm[3]; charname[30]; printf("\t\t请选择按书名或作者名查询: \n"); printf("\t\t1: 书名\n"); printf("\t\t2: 作者名\n"); scanf("%s",m); i=atoi(m); switch(i) { case1: { printf("\t\tpleaseinputthebook_name: \n"); scanf("%s",name); flag=0; for(i=0;i { if(strcmp(name,lib[i].book_name)==0) { printf("\t\t%d\n",lib[i].num); printf("%s\t\t%s\t\t%s\n",lib[i].book_name,lib[i].writer,lib[i].sort_num); printf("%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i].pub_time,lib[i].prise); flag=1;break; } } if(flag==0) printf("\t\tnotfindthebook! \n"); break;}case2: { printf("\t\tpleaseinputthewriter: \n"); scanf("%s",name); flag=0; for(i=0;i { if(strcmp(name,lib[i].writer)==0) { printf("\t\t%d\n",lib[i].num); printf("%s\t\t%s\t\t%s\n",lib[i].book_name,lib[i].writer,lib[i].sort_num); printf("%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i].pub_time,lib[i].prise); flag=1;break; } } if(flag==0) printf("\t\tnotfindthewtiter! \n"); break;} } } voidxiugai(void)/*显示修改函数*/ { inti,flag; charname[30],n[3]; printf("\t\tpleaseinputthebook_nameofqc: \n"); scanf("%s",name); flag=0; for(i=0;i { if(strcmp(name,lib[i].book_name)==0) { printf("\t\t%d\n",lib[i].num); printf("%s\t\t%s\t\t%s\n",lib[i].book_name,lib[i].writer,lib[i].sort_num); printf("%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i].pub_time,lib[i].prise); printf("\t\tpleaseinputxiugai'stheinformations: \n"); printf("\t\tnum: \n"); scanf("%d",&lib[i].num); printf("\t\tbook_name: \n"); scanf("%s",lib[i].book_name); printf("\t\twriter: \n"); scanf("%s",lib[i].writer); printf("\t\tsort_num: \n"); scanf("%s",lib[i].sort_num); printf("\t\tpub_company: \n"); scanf("%s",lib[i].pub_company); printf("\t\tpub_time: \n"); scanf("%s",lib[i].pub_time); printf("\t\tprise: \n"); scanf("%s",lib[i].prise); flag=1;break; } } if(flag==0) printf("\t\tnotfindxiugai'sthebook! \n"); } voiddel(void)/*显示删除函数*/ { inti,flag,n; charname[30]; printf("\t\tpleaseinputthebook_nameofdel: \n"); scanf("%s",name); flag=0; for(i=0;i { if(strcmp(name,lib[i].book_name)==0) { printf("\t\t%d\n",lib[i].num); printf("%s\t\t%s\t\t%s\n",lib[i].book_name,lib[i].writer,lib[i].sort_num); printf("%s\t\t%s\t\t%s\n",lib[i].pub_company,lib[i].pub_time,lib[i].prise); lib[i].num=lib[n-1].num;//n未初始化, strcpy(lib[i].book_name,lib[n-1].book_name); strcpy(lib[i].writer,lib[n-1].writer); strcpy(lib[i].sort_num,lib[n-1].sort_num); strcpy(lib[i].pub_company,lib[n-1].pub_company); strcpy(lib[i].pub_time,lib[n-1].pub_time); strcpy(lib[i].prise,lib[n-1].prise); n=n-1; flag=1; printf("\t\tdelok! \n"); break; } } if(flag==0) printf("\t\tnoinformationofthebook! \n"); } 3.设计结果与分析 3.1运行程序 将源程序编译、链接后生成可执行文件,运行该文件会看到如图3所示界面 图3启动画面 3.2增加信息 输入1将输入货物信息,显示图4所示界面 图4启动画面 输入2将输入货物信息,显示图5所示界面 图5启动画面 输入3将输入货物信息,显示图6所示界面 图6启动画面 输入4将输入货物信息,显示图7所示界面 图7启动画面 输入5将输入货物信息,显示图8所示界面 图8启动画面 输入6将输入货物信息,显示图9所示界面 图9启动画面 4.设计体会 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在生活中可以说得是无处不在。 因此作为二十一世纪的大学来说掌握计算机开发技术是十分重要的。 回顾起此次课程设计,至今我仍感慨颇多,的确,自从拿到题目到完成整个编程,从理论到实践,在整整一个星期的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。 通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。 在设计的过程中遇到问题,这毕竟独立做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。 这次课程设计终于顺利完成了,在设计中遇到了很多编程问题,最后在谢老师的辛勤指导下,终于游逆而解。 同时,在李老师的身上我学得到很多实用的知识,在次我表示感谢! 同时,对给过我帮助的所有同学和各位指导老师再次表示忠心的感谢! 5.参考文献 [1]潘新民,王燕芳.微型计算机控制技术[M],第2版.北京: 电子工业出版社,2003.4: 305-350 [2]谭浩强著.C程序设计(第三版)。 北京: 清华大学出版社,2005 [3]谭浩强著.C程序设计题解与上机指导(第三版)。 北京: 清华大学出版社,2005 [4]C编写组编。 常用C]语言用法速查手册。 北京: 龙门书局,1995 [5]范立南,谢子殿.单片机原理及应用教程[M].北京: 北京大学出版社,2006.1: 123-130 [6]范立南,韩晓微,王忠石等.基于多结构元的噪声污染灰度图像边缘检测研究[J].武汉大学学报(工学版),2003,49(3): 45-49 沈阳大学
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 通讯录 管理 系统