湖南文理学院

上传人:m**** 文档编号:221731391 上传时间:2023-07-07 格式:DOCX 页数:22 大小:152.61KB
收藏 版权申诉 举报 下载
湖南文理学院_第1页
第1页 / 共22页
湖南文理学院_第2页
第2页 / 共22页
湖南文理学院_第3页
第3页 / 共22页
资源描述:

《湖南文理学院》由会员分享,可在线阅读,更多相关《湖南文理学院(22页珍藏版)》请在装配图网上搜索。

1、湖南文理院学二00学年第 二学期电气与信息工程学院课程设计报告书课程名称:c语言课程设计班 级:通信09102班学 号:200916020216姓 名:颜文武指导老师:张晓虎二OO年十月通讯录管理系统一 需求分析设计题目及要求:建立通讯录信息,信息至少包含编号、姓名、年龄、电话、通讯地址、电子 邮箱等; 能够提供添加、删除和修改通讯录信息的功能; 能够提供安不同方式查询的功能;如按姓名或年龄、电话等查询; 将通讯录保存在文件中; 能够按表格方式输出通讯录信息。系统功能需求分析:主要包含一下多种功能:添加:添加通讯录记录显示:显示通讯录记录删除:删除通讯录记录查询:查询通讯录记录修改:修改通讯录

2、记录保存:将信息保存到文件二 概要设计系统功能模块图:添加:可以添加通讯录记录,依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱 后,会提示是否继续添加。显示:可以以表格形式输出所有通讯录里的记录 删除:输入欲删除的那个人的名字后,会自动删除他(她)的记录内容 查询:可以选择用姓名、电话、地址三种方式查询 修改:输入欲修改的那个人的名字后,再依次输入编号、姓名、年龄、电话号码、通讯地址、电子邮箱即可完成修改保存:,输入文件名(带后缀名)后,即可将通讯录信息保存到文件三 详细设计(1).通讯录:typedef structchar score;/*编号*/char name10;/*姓名*

3、/char num15;/*号码*/char email20;/*邮箱*/char age8;/*年龄*/char adds20;/*住址*/Person;void main()int n=0;for(;) switch(menu_select()case 1:printf(nt添加记录到通讯录5); n=Input(pe,n);break;case 2:printf(nttt通讯录记录表5);Display(pe,n);break;/*主函数*/*添加记录*/*显示记录*/case 3:printf(nt从通讯录中删除记录5);n=Delete_a_record(pe,n);/*删除记录*/

4、printf(t);system(pause);break;case 4:printf(nt在通讯录中查找记录5);Query_a_record(pe,n);/*查找记录*/printf(t);system(pause);break;case 5:printf(nt修改通讯录中的记录5);Change(pe,n);/*修改数据*/printf(t);system(pause);break;case 6:printf(nt 保存功能5);WritetoText(pe,n);/*保存数据*/printf(t);system(pause);break;case 0:printf(ntt谢谢使用,再见

5、!n);/*结束程序*/printf(ntt);system(pause);exit(0);(2).工作流程图:添加:添加通讯录记录&sign!结束输入信息开始:已 turn(n+i)i=0显示:显示通讯录记录开始in+l1+mt i; i=l结束输出一个记录先选择查询方式,以姓名查询方式为例:输出“通讯录中没有此火“!输出“通讯录中没有此火IV判断通讯录中是否有此人 二删除该项记录呈示该丸所有记录修改:修改通讯录记录V判断通讯录中是否有此人:二依次输入修改的内容四 源程序代码#include#include#includetypedef struct/*编号*/*姓名*/ /*号码*/ /*

6、邮箱*/ /*年龄*/ /*住址*/char score;char name10;char num15;char email20;char age8;char adds20;Person;Person pe80;int menu_select()char c;do system(cls); printf(tt *通讯录* n);printf(tt |1 n);printf(tt | 1.添加记录I n);printf(tt | 2.显示记录| n);printf(tt|3.删除记录|n);printf(tt|4.查询记录|n);printf(tt|5.修改记录|n);printf(tt|6.保

7、存记录|n);printf(tt|0.退出程序|n);printf(tt 11 n);printf(tt 请您选择(0-6):); c=getchar();while(c6); return(c-0);int Input(Person per,int n)int i=0;char sign,x10; while(sign!=n&sign!=N) printf(t 编号:); scanf(t%d,&pern+i.score); printf(t 姓名:”); scanf(t%s,pern+i.name); printf(t 年龄:”); scanf(t%s,pern+i.age); printf

8、(t 电话号码:”); scanf(t%s,pern+i.num); printf(t 通讯住址:”); scanf(t%s,pern+i.adds); printf(t 电子邮箱:”); scanf(t%s,pern+i.email);gets(x);printf(nt 是否继续添加?(Y/N); scanf(t%c,&sign); return(n+i);void Display(Person per,int n)int i;printf(n);/*格式*/printf(编号姓名年龄 电话号码通讯地址电子邮箱n);printf(n);for(i=1;i1&i%10=0)printf(tn)

9、;printf(t);system(pause);printf(tn);printf(n);system(pause);int Delete_a_record(Person per,int n)char s20;int i=0,j;printf(t请输入想删除记录中的名字:”); scanf(%s,s);while(strcmp(peri.name,s)!=0&in) i+;if(i=n)printf(t通讯录中没有此人!n); return(n);for(j=i;jn-1;j+)strcpy(perj.num,perj+1.num); strcpy(perj.name,perj+1.name

10、); strcpy(perj.age,perj+1.age); strcpy(perj.adds,perj+1.adds); strcpy(perj.email,perj+1.email); perj.score=perj+1.score;printf(ttt 已经成功删除!n);return(n-1);void Query_a_record(Person per,int n)int m;printf(tn请选择查询方式:n);printf(t |1 n);printf(t | 1姓名 | n);printf(t | 2电话 | n);printf(t| 3地址 | n);printf(t|

11、4返回 | n);printf(t 11 n);printf(请选择:”);scanf(%d,&m);while(m!=1&m!=2&m!=3&m!=4)printf(输入错误,请重新选择:”);scanf(%d,&m);if(m=1)char s20;int i=0; printf(t请输入想查询的姓名:”); scanf(t%s,s);while(strcmp(peri.name,s)!=0&in) i+;if(i=n)printf(t通讯录中没有此人!n); return;printf(t 此人编号:dn,peri.score);printf(t 此人年龄:sn,peri.age); p

12、rintf(t 电话号码:sn,peri.num); printf(t 通讯地址:%sn,peri.adds);printf(t 电子邮箱:sn,peri.email); ;if(m=2)char s20;int i=0;printf(t请输入想查询的电话:”); scanf(t%s,s);while(strcmp(peri.num,s)!=0&in) i+; if(i=n)printf(t通讯录中没有此人!n); return;printf(t 此人编号:dn,peri.score); printf(t 此人姓名:%sn,peri.name); printf(t 此人年龄:%sn,peri.

13、age); printf(t 通讯地址:%sn,peri.adds); printf(t 电子邮箱:sn,peri.email); ;if(m=3)char s20;int i=0;printf(t请输入想查询的地址:”); scanf(t%s,s);while(strcmp(peri.adds,s)!=0&in) i+; if(i=n)printf(t通讯录中没有此人!n); return;printf(t 此人编号:dn,peri.score); printf(t 此人姓名:%sn,peri.name); printf(t 此人年龄:%sn,peri.age); printf(t 电话号码

14、:sn,peri.num); printf(t 电子邮箱:sn,peri.email);void Change(Person per,int n)char s20;int i=0;printf(t 请输入想修改的记录中的名字:); scanf(%s,s);while(strcmp(peri.name,s)!=0&in) i+; if(i=n)printf(t通讯录中没有此人!n); return;printf(t 编号:);scanf(t%d,&peri.score);printf(t 姓名:”); scanf(t%s,peri.name);printf(t 年龄:”);scanf(t%s,p

15、eri.age);printf(t 电话号码:”); scanf(t%s,peri.num); printf(t 通讯住址:”);scanf(t%s,peri.adds);printf(t 电子邮箱:”);scanf(t%s,peri.email);printf(t 修改成功! ”);void WritetoText(Person per,int n)/*定义文件指针*/*定义文件名*/*输入文件名*/int i=0;FILE *fp;char filename20;printf(t保存到文件5);printf(t请输入所保存的文件名:”); scanf(t%s,filename); if(f

16、p=fopen(filename,w)=NULL)printf(t无法打开文件n);system(pause);return;fprintf(fp,11 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1 1 Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx

17、Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* f f *n);fprintf(fp,编号姓名 年龄电话号码讯录通讯地址电子邮箱n);fprintf(fp,n);while(in)fprintf(fp,%-3dt%-6st%-3st%-13st%-

18、20st%-20sn,peri.score,peri.name,peri.age,pe ri.num,peri.adds,peri.email);i+;fprintf(fp,n);fprintf(fp,11 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1* 1 1 Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx

19、Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx%d条记录,n);*1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* *1* t t Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx

20、 Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx Tx -*% 1 1/*关闭文件*/fclose(fp); printf(保存成功!n);void main()/*主函数*/int n=0;for(;)switch(menu_select()case 1:printf(nt添加记录到通讯录5);/*添加记录*/n=Input(pe,n);break;case 2:printf(nttt通讯录记录表5);/*显示记录*/Display(pe,n);break;case 3:printf(nt从通讯录中删除记录5);n=Delete_a_record(pe,n);/*删除记录*/pr

21、intf(t);system(pause);break;case 4:printf(nt在通讯录中查找记录5);Query_a_record(pe,n);/*查找记录*/printf(t);system(pause);break;case 5:printf(nt修改通讯录中的记录5);Change(pe,n);/*修改数据*/printf(t);system(pause);break;case 6:printf(nt 保存功能5);WritetoText(pe,n);/*保存数据*/printf(t);system(pause);break;case 0:printf(ntt谢谢使用,再见!n

22、);/*结束程序*/printf(ntt);system(pause);exit(0);五 测试数据及其结果分析测试:1)显示的主菜单界面12 3 4 5 6 0录录录录录t 记记记记记记程 加示醫改存出 添显删賛修保込请您选择 =2)添加界面:录录录录录 记记记记记记程 加示常改存出 添显删*1一修保退请您选择=1番理可录到通讯录31=W其乐电話号 0:1234567896 通訓住批;浙江宁波 电子由 |;箱:xue qile(?是否继续添加?3)显示界面:12 3 4 5 6 0录录录录录 记记记记记记程 加示常改存出 耦显删查修保退0 2 0 02 2 2 2 乐s#ffi 薛常张123

23、456789S12345698741112223334401236985473请您选择 = 2通训录记录表编号姓名年龄电话号码通诃地址电子耶箱xueqile zoushan(?s ina. cn xxxx(?123. com xnJiPyaJiao .cn晴按任意犍继续-NX NX X4)删除界面:* 通讯录 *录录录录录 记记记记记记程 加示需改存出 添显删查修保退12 3 4 5 6 0录录录录录 记记记记记记程 加示常改存出 添显删查修保退12 3 4 5 6 0请您选择=3请您选择=3耀翩映名字:从通讯录中删朦记录 请输入想删除乜录中的名字:邹善己经成功删除?请按任意键继续.删除后,通

24、讯录里的显示记录:录录录录录 记记记记记记程 加示常改存岀 漏显删賛修保退1 2 3 4-560请您选择-2通讯录记录表褊号姓名年龄电话号码通讯地址电子邮箱書省江汎北浙武湖xuieqile&126 . cont xxxxP xnhifahoo .cni蔭基乐201234S67890h橈奇20111222333444彳空牆200123698S47请按任意键继续-5)查询界面:* 通讯录 *录录录就就 记记记记记记程 加示席改存出 添显删查修尿退12 3 4 5 6请您选择4在通讯录中查找记录请选择查询方式:12 3 4名话址回 姓电地返请选择以姓名查询方式为例:在逋讯录中查找记录谟选择查询方式;

25、名话址回姓电地返12 3 4乐 佃 其.C 薛 =326 QJ 4 名78波ep- 姓 空丁11- 的34江eq续 旬 0 2亦也来_ 1- 12 1 X 卜斗土 查 犍 相旺1=凳攣 入编年号地邮任 更人话讯子按 注罷此电逋电注嗚请选择注6)修改界面:录录录录录 己己己己己己工亠 -L _l- -L _L . _L -L-TTJ 加示脣改存岀 流S;删查修尿退12 3 4 5 6 0请您选择=5修改哽縣跚專中的名字:薛其乐姓名:XXX年舉11 电话号阿 通诃住肛1111111111XXXXXXXXXXXXXXXXXXXX请按任惹键继续.修改后,通讯录里的显示记录:录录录录录 记记记记记记程

26、加示常改存岀 漏显删查修保退12 3 4 5 6 0请您选择 = 2通讯录记录表编号姓名年龄电话号码通讯地址电子邮箱XXX111111111111XXXXXXXXXXXXXXXXXXXX饶奇2S11122233344車叙科 了支大;学xxxxP匪權2 Si9123698547湖北省嘟州市xnhP请按任意犍继续.7) 保存界面:录录录录录 BBBBB HJrl主 、11111111111-PK 扣示脣改存出 添显删查修保退1 2 3 4 5 6 S请您选择请给入所;呆存的文件名:tongxublu.txt 呆存成功?请按任意犍继续-tongxunlu.txt 文件截图:B1 tongsublu

27、- 记事本文件備 编辑 格式 查看.(yi帮肋#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#*#编号 姓名年龄 电话号码扁地址电子邮箱1111111111111222333440123698547xxxxxxxxxxXXXXXXXXXX xxxx xnhyaho .cn*.臺-J疽*X*问题思考:1.当我在进行删除、查询、修改、保存等功能时,以查询为例,输入名字按回车后,虽然会 显示该人的所有记录,但是显示后,它马上自动消失了,还没来得及等我看内容。因此,向 别人请教后,在一些地方加入了 system(pause);这个语言,用来对某项操作完成后进行暂 停。2.

28、 现在这个程序的界面个人感觉很清爽。但在最初,每次进行一项操作,运行窗口里的内 容会一直保留着,感觉很杂乱,如下图(添加后,进行显示操作):请您选择0-61L#ll 1 i i 记:1:1:1口万住邮 加号名龄话讯子 書姓年电通电是否继续添加?n*通讯录录录录录录 记记记记记记程 加示常改存出 恭显查修保退录录录录录己己_S己己口工j* -L- Tk -l.* Tk Tk-TTJ加示常改存出端显查修保退1 2 3 4 5 6 y请您选择2逋讯录记录表编号姓名年龄 电话号码逋讯地址电子耶箱11 11 1 1 wsiSSSSTT之后,我去网上寻求解决办法,知道可以使用system(cls);这一语

29、句可以解决这个问题,最 后,修改成功。六 课程设计总结这次的程序实设计实验是对我们进入大学以来学习程序设计语言结果的一次大检验。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中彻底暴露出来,经过不断思考,不断查阅资料和上机 运行,解决其中大部分问题,当然还存在一些问题没有解决。我相信在以后的学 习能够解决好它们。但是,收获还是不小的,我不仅对 C 的操作有了进一步的 掌握,还了解到了程序设计的书写风格及其注释的格式。当我选择通讯录这个题目时,一开始想运用大量链表及指针来完成,但是在 慢慢琢磨之后,觉得这个不一定要用链表,于是改变了编程思路。当然还有不少 文件的读写问题,不过还是通过不断测试之后顺利解决了。另外一点要说的就是 这个程序用了很多的循环,因此对于循环的控制要十分小心,有时 while 和 do-while 的区别也是十分重要的。还有一点体会就是,书上和老师教的内容是有限的,我们需要不断地靠自己 去学习,向他人请教,了解和掌握更多的知识,这样我们才能编出更好的 C 程 序。总体来说,这次 C 语言程序设计实验还是比较成功的,虽然最终程序还存在 一些不足,但能取得这样的成绩我还是比较高兴的。最后,要感谢学校为我们提供这次实验机会,也要感谢老师的教导和好心人 对我的帮助与支持。

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