通讯录管理系统数据结构课程设计.doc

上传人:小** 文档编号:23343427 上传时间:2021-06-07 格式:DOC 页数:28 大小:278.50KB
收藏 版权申诉 举报 下载
通讯录管理系统数据结构课程设计.doc_第1页
第1页 / 共28页
通讯录管理系统数据结构课程设计.doc_第2页
第2页 / 共28页
通讯录管理系统数据结构课程设计.doc_第3页
第3页 / 共28页
资源描述:

《通讯录管理系统数据结构课程设计.doc》由会员分享,可在线阅读,更多相关《通讯录管理系统数据结构课程设计.doc(28页珍藏版)》请在装配图网上搜索。

1、C语言课程设计C语言课程设计:通讯录管理系统目录 一、 需求分析2二、 概要设计2三、 详细设计3四、 上机操作14五、 实习心得19六、 源程序 20一、需求分析 具有数据的插入、修改、删除、显示和查询功能的电话簿管理程序。(1) 数据包括:人名、工作单位、电话号码和E-MAIL地址。(2) 可对记录中的姓名和电话号码进行修改。(3) 可增加和删除记录。(4) 可显示所有的保存记录。(5) 可按人名或电话号码进行查询。提示 建议采用结构体数组和文件系统实现。结构体成员包括人名、工作单位、电话号码和E-MAIL地址。根据题目的要求程序应该采用结构体数组和文件系统实现。应该有文件的操作功能;在程

2、序中应该包括输入、显示、删除、查询、添加、修改、保存、加载和退出的功能。二、概要设计根据上面的分析,可以将程序系统的设计分为如下几个模块:插入、显示、删除、查询、修改、保存和退出。 通讯录管理系统插入显示删除查询保存修改退出三、详细设计1、 主函数;主函数一般设计得比较简洁,只提供输入,处理和输出部分的函数调用。其中各功能模块用菜单方式选择。 流程图输入n,判断是否是06开始显示一系列功能选项N根据n的值调用各功能模块函数结束Y【程序】int main() /主函数Man man500,*pman=man;char control;int size;printf(tt*n); /窗口初始化 p

3、rintf(tt* 欢迎使用通讯录管理系统! *n); printf(tt*-*n); printf(tt* 请按回车键继续! *n); printf(tt*n); scanf(%c,&control);if(control)size=Scan(pman); /判断文件是否存在printf(ttt请输入相应操作数操作n);for(;) /菜单生成printf(tt*n); printf(tt* 1-插入信息 *n); printf(tt* 2-按姓名查找 *n); printf(tt* 3-按电话查找 *n); printf(tt* 4-删除信息 *n); printf(tt* 5-显示信息

4、*n); printf(tt* 6-修改信息 *n); printf(tt* 0-退出系统 *n); printf(tt*n);scanf(%s,&control);switch(control)case 1: size=Insert(pman,size);break; /插入新的通讯录 case 2: S_asname(pman,size);break; /按姓名查找 case 3: S_astel(pman,size);break; /按电话查找 case 4: Delete(pman,size);break; /删除信息 case 5: Display(pman,size);break;

5、 /显示所有信息 case 6: Modify(pman,size);break; /修改信息 case 0: printf(*谢谢使用!再见!*n); /退出系统return 0;default: printf(*输入数字有误,请重新输入*n);break;return 0;2、 插入模块 此模块为插入信息模块,插入后再调用保存函数来保存所插入的数据,支持多条信息的插入。 流程图 开始输入要插入的记录个数ni从0到n-1调用Insert函数i!=0吗?返回主菜单保存调用Save函数结束NYY【程序】int Insert(Man * pMan,int Size) /插入模块int i,n;pr

6、intf(tt*请输入要插入数据的个数.*n); printf(tt*n);scanf(%d,&n);for(i=0;in;i+) /从键盘输入数据再写入文件 printf(您将要录入第%d条记录(共有%d条)n,i+1,n);printf(请输入姓名:n);scanf(%s,&pManSize+i.Name);printf(请输入工作单位:n);scanf(%s,&pManSize+i.Depart);printf(请输入电话号码:n); scanf(%s,&pManSize+i.TEL); printf(请输入Email地址:n); scanf(%s,&pManSize+i.Email);

7、if(Save(pMan,Size+n)printf(tt* 恭喜!数据插入成功! *n);elseprintf(tt* 操作失败,请稍后再试 !*n);return Size+n;3、 显示模块此模块为显示所有记录,流程图如下:选择显示功能显示所有记录自动返回主菜单【程序】void Display(Man * pMan,int Size) /显示所有记录int i;printf(t人名t 工作单位t 电话号码t E-mail地址n);printf(t*n);for(i=0;iName,pMan-Depart,pMan-TEL,pMan-Email); printf(t-n);4、 查找模块本

8、模块分为按姓名查找和按电话查找两个子模块。4.1按姓名查找模块,流程图如下:是否找到此姓名输入姓名开始提示没有找到显示找到的记录结束,返回主菜单NY【程序】void S_asname(Man * pMan,int Size) /查找信息int i=0;char name8;printf(tt*请输入要查询信息的姓名:*n); printf(tt*n);scanf(%s,name);while(iName,name)/查找pMan+; i+;if(!strcmp(pMan-Name,name)/找到后输出printf(tt*查到的信息为: *n); printf(t*n); printf(t人名

9、t 工作单位t 电话号码t E-mail地址n); printf(t*n); printf(t%stt%st%st%sn,pMan-Name,pMan-Depart,pMan-TEL,pMan-Email); printf(t*n);elseprintf(tt*抱歉,没有找到相关数据 *n); printf(tt*n);4.2按电话查找模块,此模块与按姓名查找模块相似,流程图略。【程序】void S_astel(Man * pMan,int Size) /按电话查找模块int i=0;char tel12;printf(tt*请输入要查询信息的电话:*n); printf(tt*n);scan

10、f(%s,tel);while(iTEL,tel) /查找信息pMan+; i+;if(!strcmp(pMan-TEL,tel) /输出找到的信息printf(tt*查到的信息为: *n); printf(t*n); printf(t人名t 工作单位t 电话号码t E-mail地址n); printf(t*n); printf(t%stt%st%st%sn,pMan-Name,pMan-Depart,pMan-TEL,pMan-Email); printf(t*n);elseprintf(tt*抱歉,没有找到相关数据 *n); printf(tt*n);5、 删除模块此模块先利用查找模块找到

11、所要删除的信息,然后根据用户的选择来确定是否删除信息,此种调用到Save函数。其流程图如下:开始输入要修改信息的姓名是否找到信息提示没有找到信息NY显示找到的信息提示是否删除NY提示未删除提示删除成功结束【程序】void Delete(Man * pMan,int Size)/删除信息char name8,control;int i=0;printf(tt*请输入要删除信息的姓名: *n);printf(tt*n);scanf(%s,name);while(iName,name)/同查找,找到后跳出pMan+; i+;if(!strcmp(pMan-Name,name) /找到了,删除信息!做

12、出判断.printf(您要删除的信息为:n); printf(%stt%st%st%sn,pMan-Name,pMan-Depart,pMan-TEL,pMan-Email); printf(是否确认删除?(Y/N)n); scanf(%s,&control);switch(control) case y: pMan-Name0=0; pMan-Depart0=0; pMan-TEL0=0; pMan-Email0=0; if(Save(pMan,Size)/将新信息写入文件printf(tt*恭喜!信息删除成功!*n); printf(tt*n);break; elseprintf(tt*操

13、作失败,请稍后再试! *n);printf(tt*n);break;case n:printf(信息未删除!n);break;default:printf(选择有误!n);break;elseprintf(tt*抱歉,没有找到相关信息! *n);printf(tt*n);6、 修改模块此模块先调用查找函数查找到所要修改的信息,然后用户根据需要来修改信息。流程图如下:开始输入要修改记录的姓名是否找到信息提示未找到信息显示要修改的信息修改需要修改的条目,并保存结束NY【程序】void Modify(Man * pMan,int Size) /修改模块void Display();int i=0;c

14、har name8; char depart20; char tel12; char email30;printf(tt*输入要修改信息的姓名:*n);printf(tt*n);scanf(%s,name);while(iName,name)/遍历数组,查找数据,若查到跳出循环pMan+;i+;if(!strcmp(pMan-Name,name)/如果找到,则开始修改printf(请输入修改后的姓名:n);scanf(%s,name); strcpy(pMan-Name,name); printf(请输入修改后的工作单位:n); scanf(%s,depart); strcpy(pMan-De

15、part,depart); printf(请输入修改后的电话号码:n); scanf(%s,tel); strcpy(pMan-TEL,tel); printf(请输入修改后的E-mail地址:n); scanf(%s,email);strcpy(pMan-Email,email);if(Save(pMan,Size) /将修改信息写入文件,并判断是否写入成功printf(tt*恭喜!信息修改成功!*n); printf(tt*n);elseprintf(tt*操作失败,请稍后再试!*n); printf(tt*n);elseprintf(tt*抱歉,没有找到相关信息!*n); printf(

16、tt*n);7、 其他模块7.1结构体定义【程序】struct Man /定义结构体char Name8; /名字char Depart20; /工作单位char TEL12; /电话号码char Email30; /邮箱;7.2保存模块【程序】int Save(Man * pMan,int Size) /把数据写入文件int i;FILE * out;out=fopen(info.txt,w);if(out=NULL)/判断文件打开成功与否printf(tt*文件info.txt打开失败 !*n);printf(tt*n);return 0;for(i=0;iName,pMan-Depart

17、,pMan-TEL,pMan-Email);fclose(out);return 1;7.3浏览模块【程序】int Scan(Man * pMan) /从文本中读取数据printf(tt*正在读取文件信息,请稍后! *n);int i;FILE * in=fopen(info.txt,r);if(in=NULL) /判断文件是否打开成功printf(tt* 文件info.txt打开失败 ! *n);return 0;for(i=0;!feof(in);i+,pMan+)/打开成功后一一读取,直到读完为止fscanf(in,%s%s%s%s,pMan-Name,pMan-Depart,pMan-

18、TEL,pMan-Email);fclose(in);printf(tt* 文件数据读入成功 !*n); return (i-1);7.4 getch()函数【程序】void getch()char stop;printf(n确认?(按任意键并回车返回!)n);getchar();scanf(%c,&stop);return;四、上机操作1、已有文件信息 (info.txt) name depart phone email kong cug71092 15271896975 kkk gong cug71092 15927211897 ggg2、要插入的信息 name depart phone

19、email liji cug71091 13888888888 lll chen cug71091 13999999999 ccc3、各模块功能的实现(1)窗口的初始化(2)主菜单(3)显示所有信息(4)插入信息第一条第二条(6) 按姓名查找模块(7) 按电话查找模块(8) 删除没有的信息删除已有信息取消删除确认删除(9)退出系统五、实习心得在老师的带领下进行了C语言程序实践学习。在短短一周的实习期间使我获取了不少新知识也巩固了许多老知识。在这之前,我们已经对C语言这门课程学习了一个学期,对其有了一定的了解,但是也仅仅是停留在学习了解的范围,对里面的好多东西还是很陌生,并不是很熟练,有着许多欠

20、缺,更多的在运用起来的时候还是感到很不好动手。C语言是需要有一定基础、而且动手能力强的学科。上机实验是学习程序设计语言必不可少的实践环节,特别是C语言灵活、简洁,更需要通过编程的实践来真正掌握它。对于程序设计语言的学习目的,可以概括为学习语法规定、巩固贯穿系统知识、掌握程序设计方法、提高程序设计能力,这些都必须通过充分的实际上机操作才能完成。课堂上许多关于C语言的语法规则,听起来十分枯燥无味,也不容易记住,死记硬背是不可取的。然而要使用C语言这个工具解决实际问题,又必须掌握它。通过多次上机练习,对于语法知识有了感性的认识,加深对它的理解,在理解的基础上就会自然而然地掌握C语言的语法规定。对于一

21、些内容自己认为在课堂上听懂了,但上机实践中会发现原来理解的偏差,更加巩固了学过的知识,而且在设计的时候学要系统的知识,也是一个较大的挑战,某一方面知识的欠缺都将影响到整个程序的设计。这次上机实习让我学到了很多有用的东西,巩固了之前的学习,让我学到了在教室和做题中学不到的一些知识,通过这个程序的学习,使我进一步理解和运用结构化程序设计的思想和方法。相信对以后初步掌握开发一个小型实用系统的基本方法,学会调试一个比较长程序的基本方法,学会利用流程图表示算法,进一步掌握和提高利用C语言进行程序设计的能力。我认为,这次实习对于我是非常有意义的,对我个人的影响比较大,对我的动手能力有了很大的提高。在体会到

22、程序成功后的快乐后,发现自己也逐步喜欢上了这门语言,对以后的专业知识的学习也会很有帮助。最后感谢在实习过程中帮助过我的老师和同学,正是你们的帮助才有了这次实习的成功!六、源程序#include#includestruct Man /定义结构体char Name8; /名字char Depart20; /工作单位char TEL12; /电话号码char Email30; /邮箱;void getch()char stop;printf(n确认?(按任意键并回车返回!)n);getchar();scanf(%c,&stop);return;int Scan(Man * pMan) /从文本中读取

23、数据printf(tt*正在读取文件信息,请稍后! *n);int i;FILE * in=fopen(info.txt,r);if(in=NULL) /判断文件是否打开成功printf(tt* 文件info.txt打开失败 ! *n);return 0;for(i=0;!feof(in);i+,pMan+)/打开成功后一一读取,直到读完为止fscanf(in,%s%s%s%s,pMan-Name,pMan-Depart,pMan-TEL,pMan-Email);fclose(in);printf(tt* 文件数据读入成功 !*n); return (i-1);int Save(Man * p

24、Man,int Size) /把数据写入文件int i;FILE * out;out=fopen(info.txt,w);if(out=NULL)/判断文件打开成功与否printf(tt*文件info.txt打开失败 !*n);printf(tt*n);return 0;for(i=0;iName,pMan-Depart,pMan-TEL,pMan-Email);fclose(out);return 1;int Insert(Man * pMan,int Size) /插入模块int i,n;printf(tt*请输入要插入数据的个数.*n); printf(tt*n);scanf(%d,&n

25、);for(i=0;in;i+) /从键盘输入数据再写入文件 printf(您将要录入第%d条记录(共有%d条)n,i+1,n);printf(请输入姓名:n);scanf(%s,&pManSize+i.Name);printf(请输入工作单位:n);scanf(%s,&pManSize+i.Depart);printf(请输入电话号码:n); scanf(%s,&pManSize+i.TEL); printf(请输入Email地址:n); scanf(%s,&pManSize+i.Email);if(Save(pMan,Size+n)printf(tt* 恭喜!数据插入成功! *n);els

26、eprintf(tt* 操作失败,请稍后再试 !*n);return Size+n;void Modify(Man * pMan,int Size) /修改模块void Display();int i=0;char name8; char depart20; char tel12; char email30;printf(tt*输入要修改信息的姓名:*n);printf(tt*n);scanf(%s,name);while(iName,name)/遍历数组,查找数据,若查到跳出循环pMan+;i+;if(!strcmp(pMan-Name,name)/如果找到,则开始修改printf(请输入修

27、改后的姓名:n);scanf(%s,name); strcpy(pMan-Name,name); printf(请输入修改后的工作单位:n); scanf(%s,depart); strcpy(pMan-Depart,depart); printf(请输入修改后的电话号码:n); scanf(%s,tel); strcpy(pMan-TEL,tel); printf(请输入修改后的E-mail地址:n); scanf(%s,email);strcpy(pMan-Email,email);if(Save(pMan,Size) /将修改信息写入文件,并判断是否写入成功printf(tt*恭喜!信息

28、修改成功!*n); printf(tt*n);elseprintf(tt*操作失败,请稍后再试!*n); printf(tt*n);elseprintf(tt*抱歉,没有找到相关信息!*n); printf(tt*n);void Delete(Man * pMan,int Size)/删除信息char name8,control;int i=0;printf(tt*请输入要删除信息的姓名: *n);printf(tt*n);scanf(%s,name);while(iName,name)/同查找,找到后跳出pMan+; i+;if(!strcmp(pMan-Name,name) /找到了,删除

29、信息!做出判断.printf(您要删除的信息为:n); printf(%stt%st%st%sn,pMan-Name,pMan-Depart,pMan-TEL,pMan-Email); printf(是否确认删除?(Y/N)n); scanf(%s,&control);switch(control) case y: pMan-Name0=0; pMan-Depart0=0; pMan-TEL0=0; pMan-Email0=0; if(Save(pMan,Size)/将新信息写入文件printf(tt*恭喜!信息删除成功!*n); printf(tt*n);break; elseprintf(

30、tt*操作失败,请稍后再试! *n);printf(tt*n);break;case n:printf(信息未删除!n);break;default:printf(选择有误!n);break;elseprintf(tt*抱歉,没有找到相关信息! *n);printf(tt*n);void Display(Man * pMan,int Size) /显示所有记录int i;printf(t人名t 工作单位t 电话号码t E-mail地址n);printf(t*n);for(i=0;iName,pMan-Depart,pMan-TEL,pMan-Email); printf(t-n);void S

31、_asname(Man * pMan,int Size) /查找信息int i=0;char name8;printf(tt*请输入要查询信息的姓名:*n); printf(tt*n);scanf(%s,name);while(iName,name)/查找pMan+; i+;if(!strcmp(pMan-Name,name)/找到后输出printf(tt*查到的信息为: *n); printf(t*n); printf(t人名t 工作单位t 电话号码t E-mail地址n); printf(t*n); printf(t%stt%st%st%sn,pMan-Name,pMan-Depart,p

32、Man-TEL,pMan-Email); printf(t*n);elseprintf(tt*抱歉,没有找到相关数据 *n); printf(tt*n);void S_astel(Man * pMan,int Size) /按电话查找模块int i=0;char tel12;printf(tt*请输入要查询信息的电话:*n); printf(tt*n);scanf(%s,tel);while(iTEL,tel) /查找信息pMan+; i+;if(!strcmp(pMan-TEL,tel) /输出找到的信息printf(tt*查到的信息为: *n); printf(t*n); printf(t

33、人名t 工作单位t 电话号码t E-mail地址n); printf(t*n); printf(t%stt%st%st%sn,pMan-Name,pMan-Depart,pMan-TEL,pMan-Email); printf(t*n);elseprintf(tt*抱歉,没有找到相关数据 *n); printf(tt*n);int main() /主函数Man man500,*pman=man;char control;int size;printf(tt*n); /窗口初始化 printf(tt* 欢迎使用通讯录管理系统! *n); printf(tt*-*n); printf(tt* 请按

34、回车键继续! *n); printf(tt*n); scanf(%c,&control);if(control)size=Scan(pman); /判断文件是否存在printf(ttt请输入相应操作数操作n);for(;) /菜单生成printf(tt*n); printf(tt* 1-插入信息 *n); printf(tt* 2-按姓名查找 *n); printf(tt* 3-按电话查找 *n); printf(tt* 4-删除信息 *n); printf(tt* 5-显示信息 *n); printf(tt* 6-修改信息 *n); printf(tt* 0-退出系统 *n); printf(tt*n);scanf(%s,&control);switch(control)case 1: size=Ins

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!