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

上传人:芳黎 文档编号:1139307 上传时间:2024-10-09 格式:DOC 页数:28 大小:290.11KB
下载 相关 举报
通讯录管理系统数据结构课程设计.doc_第1页
第1页 / 共28页
通讯录管理系统数据结构课程设计.doc_第2页
第2页 / 共28页
通讯录管理系统数据结构课程设计.doc_第3页
第3页 / 共28页
通讯录管理系统数据结构课程设计.doc_第4页
第4页 / 共28页
通讯录管理系统数据结构课程设计.doc_第5页
第5页 / 共28页
点击查看更多>>
资源描述

1、 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); /窗口初始化 printf

3、(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-显示信息 *n);

4、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;printf(

6、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);if(Sa

7、ve(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人名t 工作单

9、位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);scanf(%s,

10、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) /找到了,删除信息!做出判断.p

12、rintf(您要删除的信息为: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;char n

14、ame8; 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-Depart,

15、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(tt*n)

16、;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,pMan

17、-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-TEL,p

18、Man-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 email

19、 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) /从文本中读取数据pri

23、ntf(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 * pMan,i

24、nt 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);for

25、(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);elseprin

26、tf(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*恭喜!信息修改成功!*n); printf(tt*n);elseprintf(tt*操作失败,请稍后再试!*n); printf(tt*n);elseprintf(tt*抱歉,没有找到相关信息!*n); printf(tt*

展开阅读全文
相关资源
相关搜索
资源标签

当前位置:首页 > 建筑施工

版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如有侵权请立即联系:2622162128@qq.com ,我们立即下架或删除。

Copyright© 2022-2024 www.wodocx.com ,All Rights Reserved |陕ICP备19002583号-1 

陕公网安备 61072602000132号     违法和不良信息举报:0916-4228922