通讯录管理系统.docx

上传人:b****8 文档编号:28616534 上传时间:2023-07-19 格式:DOCX 页数:19 大小:131.18KB
下载 相关 举报
通讯录管理系统.docx_第1页
第1页 / 共19页
通讯录管理系统.docx_第2页
第2页 / 共19页
通讯录管理系统.docx_第3页
第3页 / 共19页
通讯录管理系统.docx_第4页
第4页 / 共19页
通讯录管理系统.docx_第5页
第5页 / 共19页
点击查看更多>>
下载资源
资源描述

通讯录管理系统.docx

《通讯录管理系统.docx》由会员分享,可在线阅读,更多相关《通讯录管理系统.docx(19页珍藏版)》请在冰豆网上搜索。

通讯录管理系统.docx

通讯录管理系统

设计题目通讯录管理系统

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

沈阳大学

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1