[毕业设计精品]手机通信录管理系统的设计

上传人:仙*** 文档编号:253590657 上传时间:2025-03-16 格式:DOC 页数:32 大小:295.12KB
收藏 版权申诉 举报 下载
[毕业设计精品]手机通信录管理系统的设计_第1页
第1页 / 共32页
[毕业设计精品]手机通信录管理系统的设计_第2页
第2页 / 共32页
[毕业设计精品]手机通信录管理系统的设计_第3页
第3页 / 共32页
资源描述:

《[毕业设计精品]手机通信录管理系统的设计》由会员分享,可在线阅读,更多相关《[毕业设计精品]手机通信录管理系统的设计(32页珍藏版)》请在装配图网上搜索。

1、 学生课程设计(论文) 题 目: 通信录管理系统的设计 学生姓名: 学 号: 所在院(系): 计算机学院 专 业: 网络工程 班 级: 09级网络工程(1)班 指导教师: 职称: 讲 师 2010年6月 25日 学生处监制 本科学生课程设计任务书 题 目 手机通信录管理系统的设计 1、课程设计的目的

2、 本课程设计的目的和任务:(1)巩固和加深学生对C语言课程的基本知识的理解和掌握;(2)掌握C语言编程和程序调试的基本技能;(3)利用C语言进行简单软件设计的基本思路和方法;(4)提高运用C语言解决实际问题的能力。 2、课程设计的内容和要求(包括原始数据、技术要求、工作要求等) 用C语言设计出模拟手机通信录管理系统,实现对手机中的通信录进行管理。 (一)功能要求: (1)查看功能:选择此功能时,列出下列三类选择。 A 办公类 B 个人类 C 商务类 ,当选中某类时,显示出此类所有数据中的姓名和电话号码) (2)增加功能:能录入新数据(一个结点包括:姓名、电话号码、分类

3、(可选项有:A 办公类 B 个人类 C 商务类)、电子邮件)。例如 杨春 13589664454 商务类 chuny@ 当录入了重复的姓名和电话号码时,则提示数据录入重复并取消录入;当通信录中超过15条信息时,存储空间已满,不能再录入新数据;录入的新数据能按递增的顺序自动进行条目编号。 (3)拔号功能:能显示出通信录中所有人的姓名,当选中某个姓名时,屏幕上模拟打字机的效果依次显示出此人的电话号码中的各个数字,并伴随相应的拔号声音。 (4)修改功能:选中某个人的姓名时,可对此人的相应数据进行修改 (5)删除功能:选中某个人的姓名时,可对此人的相应数据进行删除,并自动

4、调整后续条目的编号。 (二)其它要求: (1) 只能使用C/C++语言,源程序要有适当的注释,使程序容易阅读 (2) 至少采用文本菜单界面(如果能采用图形菜单界面更好) (3) 建议使用结构和链表等数据结构 (4) 学生可自动增加新功能模块(视情况可另外加分) (5)写出课程设计报告,具体要求见相关说明文档 3、主要参考文献 [1]谭浩强,《C程序设计》,清华大学出版社 [2]刘振安,孙忱,刘燕君,《C程序设计课程设计》,机械工业出版社 [3]汪诗林,《数据结构算法与应用》,机械工业出版社 4、课程设计工作进度计划 课程设计时间为一周,分四个阶段完成: 1. 分析设计

5、阶段。引导学生自主学习和钻研问题,明确设计要求,找出实现方法,按照需求分析、总体设计、详细设计这几个步骤进行。这一阶段前第1天完成。 2. 编码调试阶段:根据设计分析方案编写C语言代码,然后调试该代码,实现课题要求的功能。这一阶段在第2-3天完成。 3. 总结报告阶段:总结设计工作,写出课程设计说明书,要求学生写出需求分析、总体设计、详细设计、编码、测试的步骤和内容。这一阶段在第4天完成。 4. 考核阶段。这一阶段在第5天完成。 指导教师(签字) 日期 年 月 日 教研室意见: 年 月 日 学生(签字): 明安坤 接受任务时间: 年

6、 月 日 课程设计(论文)指导教师成绩评定表 题目名称 手机通信录管理系统的设计 评分项目 分值 得分 评价内涵 工作 表现 20% 01 学习态度 6 遵守各项纪律,工作刻苦努力,具有良好的科学工作态度。 02 科学实践、调研 7 通过实验、试验、查阅文献、深入生产实践等渠道获取与课程设计有关的材料。 03 课题工作量 7 按期圆满完成规定的任务,工作量饱满。 能力 水平 35% 04

7、 综合运用知识的能力 10 能运用所学知识和技能去发现与解决实际问题,能正确处理实验数据,能对课题进行理论分析,得出有价值的结论。 05 应用文献的能力 5 能独立查阅相关文献和从事其他调研;能提出并较好地论述课题的实施方案;有收集、加工各种信息及获取新知识的能力。 06 设计(实验)能力,方案的设计能力 5 能正确设计实验方案,独立进行装置安装、调试、操作等实验工作,数据正确、可靠;研究思路清晰、完整。 07 计算及计算机应用能力 5 具有较强的数据运算与处理能力;能运用计算机进行资料搜集、加工、处理和辅助设计等。 08 对计算或实验结果的分析

8、能力(综合分析能力、技术经济分析能力) 10 具有较强的数据收集、分析、处理、综合的能力。 成果 质量 45% 09 插图(或图纸)质量、篇幅、设计(论文)规范化程度 5 符合本专业相关规范或规定要求;规范化符合本文件第五条要求。 10 设计说明书(论文)质量 30 综述简练完整,有见解;立论正确,论述充分,结论严谨合理;实验正确,分析处理科学。 11 创新 10 对前人工作有改进或突破,或有独特见解。 成绩 指导教师评语 指导教师签名: 年 月 日

9、本科课程设计(论文) 摘要 摘 要 手机作为现代生活通讯工具,已经与我们的生活、学习、工作密不可分,我们不可能随时带上电话本和笔,记录我们所打电话和所接电话,只要我们手指动几下,一个新的号码就可以储存在电话里面,不需要笔和纸,随时可以用。究竟是什么赋予手机这种功能呢,原来是设计人员在手机里面装好了“手机通讯录管理系统”。 作为计算机专业的我们,这样的系统在学习过C语言后完全能够编写出来的,利用C语言相关知识,实现程序设计,控制。 关键词: 管

10、理系统,switch,递归调用,程序 - 25 - 本科课程设计(论文) 目录 目 录 摘 要 I 目 录 II 1 绪论 - 1 - 1.1课程设计背景 - 1 - 1.2课程设计思路 - 1 - 2 概要设计 - 2 - 2.1 模块设计 - 2 - 2.2 详细设计 - 3 - 2.2.1 信息结构体说明 - 3 - 2.2.2 函数说明 - 4 - 2.2.4 详细设计 - 5 - 3 调试报告 - 7

11、- 3.1 运行中问题及解决 - 7 - 4.1 显示信息 - 11 - 4.2 删除信息 - 11 - 4.3 添加信息 - 11 - 4.4修改信息 - 11 - 4.5拨号功能 - 11 - 4.6保存操作并退出系统 - 11 - 5 设计体会 - 12 - 参考文献 - 13 - 附录:源代码 - 14 - 本科课程设计(论文) 绪论 1 绪论 1.1课程设计背景 生活中我们经常遇见这种问题,就是在外面做事的时候人家

12、有时候会给我们说联系号码,通常情况下我们是拿出手机直接输入手机,这就为我们节约了时间,纸张,我们也不必为写在纸条上的号码的丢失而感到懊恼。虽然说我们的激励力不错,但是随着联系人的增加,我们机会是不可能的记住所有联系人的号码,所以,这就得靠手机通讯录了。 1.2课程设计思路 做通讯录最主要的就是实用性,要简单,便于操作。程序的界面要方便与用户之间的交互。并结合实际中遇到的问题,如加入一个信息,修改一个信息,或是删除一个信息,这些基本的方面一定要考虑到。这就大致的确定了程序的几个模块。然后对每个模块进行设计,在整合起来,那么一个完善的通讯录就可以建立起来了。 本科课程设计(论文)

13、 概要设计 2 概要设计 2.1 模块设计 所谓通讯录,就是对联系人的信息进行输入,修改,删除,查找等功能,我们按照其功能划分为几个模块,在程序开始后,可以自行选择,到进入到所需要进入的功能中,所以我们就得设计几个模块,以实现不同功能。 具体的模块关系如表2-1: 表2-1 基本模块表 模块 输入 删除 保存 查找 插入 排序 实现功能 填入信息 去掉信息 保存信息 具体定位 添加信息 方便查找 程序总体设计

14、 图1 程序的总体流程图 图2:程序所有功能 每一个功能都编写一个函数,多个功能函数都要用到的子模块单独编写函数,供各个实现功能的函数调用。在主函数中设置欢迎界面和菜单处理函数,通过菜单处理函数调用各子函数处理模块,从而实现整个通讯录管理系统的功能。因为各个函数之间是并列关系,所以可以通过switch函数实现各个功能函数的调用。 2.2 详细设计 2.2.1 信息结构体说明 图

15、3:信息结构体说明 2.2.2 函数说明 2.2.3 主要函数、结构体和链表 void creat();/*将文件的信息读入结构体数组在转存入链表中*/ void ShowA(); void ShowB(); void ShowC(); void ShowD(); void Show(); void Delete(); void Input(); void Alter(); void Dial(); void Save(); struct persons /*定义结构体数组用于缓存数据*/ { int num; /*编号*/ char

16、 name[20]; /*姓名*/ char e_addr[20]; /*电子邮箱*/ char tel_no[15]; /*电话号码*/ char sim_no; /*缩位号码*/ char arch; /*分类*/ }persons[maxlen]; typedef struct lnode /*通讯录结构中结点的定义*/ { int num; char name[20]; char e_addr[20]; char tel_no[15]; char sim_no; char arch; s

17、truct lnode *next; }listnode,*linklist; 2.2.4 详细设计 (1)、新建通讯录文件 1.打开通讯录文件文本; 2.如果文件存在,则用尾插法将文件中的数据依次存入链表中,然后关闭文件; 3.如果文件为不存在,则新建一个空的通讯录文件文本,然后关闭文件。 (2)、显示信息 1.在提示中界面选择 显示通讯录 ; 2.输入需要显示的类别; 3.根据选择的类别调用显示函数; 4.从第一个节点开始,判断链表中的节点是否属于选择的类别; 5.如果节点属于所选类别,则显示该节点中所有信

18、息; 6.如果不属于所选类别,则将所指节点下移,直至将链表中所有属于该类别的信息 全部输出为止; 7.回到提示界面。 (3)、删除信息 1.在提示界面中选择 删除通讯录 ; 2.输入要删除的姓名; 3.如果通讯录文件空,则输出 你选择的用户不存在! ; 4.如果通讯录文件不为空,则从第一个节点开始比较,若有某一节点中的姓名与输入姓 名相同时,就释放该节点; 5.若节点中所有姓名都与输入姓名不相同,则输出 你选择的用户不存在! ; 6.保存刚才的操作,并回到提示界面。 (4)、添加信息 1.在提示界面中选择 添

19、加通讯录 ; 2.依次输入添加的信息 姓名 电话号码 缩位号码 电子邮箱 类别 ; 3.保存刚才操作,并回到提示界面。 (5)、修改信息 1.在提示界面中选择 编辑通讯录 ; 2.输入所要修改信息中的姓名,再依次输入信息 姓名 电话号码 缩位号码 电子邮 箱 类别 ; 3.保存刚才的操作,并回到提示界面。 (6)、拨号功能 1.在提示界面中选择 拨号功能 ,进入拨号功能区; 2.若选择1,则将按姓名拨号,输入 姓名 ,则输出与姓名相对应的电话号码,并回到提示界面;若选

20、择2,则将按单键拨号,输入 缩位号码,则输出与该缩位号码相对应的姓名和电话号码,并回到提示界面。 (7)、保存操作并退出系统 1.在提示界面中选择 保存刚才操作并退出 ; 2.调用保存函数,该函数将刚才所有的操作存入通讯录文件,并关闭文件; 3.退出程序。 本科课程设计(论文) 调试报告 3 调试报告 3.1 运行中问题及解决 3.1.1 问题1:程序运行时只能运行一个函数,就必须保存并退出,

21、否则会造成运行错误。如Delete函数的代码为: void Delete() { system("cls"); /*清屏*/ printf("\n\n\t请输入要删除用户的姓名:"); cin>>name1; /*输入要删除的姓名*/ p4=head; if(p4==NULL) cout<<"你选择的用户不存在!"<name,name1)==0) /*根据各种情况判断可能性*/ { p4=p4->next; head=p4; } else

22、 { while(strcmp(p4->next->name,name1)!=0)p4=p4->next;/*找到要删除的节点*/ if(p4!=NULL) /*若输入的用户存在则删除*/ { p5=p4->next; p4->next=p5->next; free(p5); } else cout<<"你选择的用户不存在!"<

23、t、Alter等函数结尾都添加Save函数。代码为: void Delete() { system("cls"); /*清屏*/ printf("\n\n\t请输入要删除用户的姓名:"); cin>>name1; /*输入要删除的姓名*/ p4=head; if(p4==NULL) cout<<"你选择的用户不存在!"<name,name1)==0) /*根据各种情况判断可能性*/ { p4=p4->next; head=p4; } el

24、se { while(strcmp(p4->next->name,name1)!=0)p4=p4->next;/*找到要删除的节点*/ if(p4!=NULL) /*若输入的用户存在则删除*/ { p5=p4->next; p4->next=p5->next; free(p5); } else cout<<"你选择的用户不存在!"<

25、:当通讯录文件为空时,在添加信息时,只能添加一个用户的信息,其代码为: void Input() { system("cls"); /*清屏*/ s=(linklist)malloc(sizeof(listnode)); /*开辟一个节点,用于存放新输入的信息*/ printf("\n\n\t请输入该用户的信息:\n"); cout<<"姓名:"; cin>>s->name; cout<<"电话:"; cin>>s->tel_no; cout<<"缩位号码:"; cin>>s->sim_no; cout<<

26、"电子邮箱:"; cin>>s->e_addr; cout<<"分类:"; cin>>s->arch; if(head==NULL) printf("\n\n"); /*判断原通讯录是否为空*/ else { p8=head; while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0) /*判断输入的用户是否已存在*/ p8=p8->next; if(p8!=NULL) { printf("您添加的用户已存在!");

27、 free(s); } } if(head==NULL) { head=s; head->next=NULL; } else { r->next=s; r=s; r->next=NULL; } Save(); } (4)、问题二解决方法:该问起之时由于丢了一个语句造成的,修改后的代码为: void Input() { system("cls"); /*清屏*/ s=(linklist)malloc(sizeof(listnode)); /*开辟一个节点,用于存放新输入的信息*/

28、 printf("\n\n\t请输入该用户的信息:\n"); cout<<"姓名:"; cin>>s->name; cout<<"电话:"; cin>>s->tel_no; cout<<"缩位号码:"; cin>>s->sim_no; cout<<"电子邮箱:"; cin>>s->e_addr; cout<<"分类:"; cin>>s->arch; if(head==NULL) printf("\n\n"); /*判断原通讯录是否为空*/ else { p8=head; while(p8!=NULL&

29、&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!= 0) /*判断输入的用户是否已存在*/ p8=p8->next; if(p8!=NULL) { printf("您添加的用户已存在!"); free(s); } } if(head==NULL) { head=s; r=head; head->next=NULL; } else { r->next=s; r=s; r->next=NU

30、LL; } Save(); } 本科课程设计(论文) 用户手册 4 用户手册 4.1 显示信息 (1).在提示中界面选择 显示通讯录 ; (2).输入需要显示的类别。 4.2 删除信息 (1).在提示界面中选择 删除通讯录 ; (2).输入要删除的姓名。 4.3 添加信息 (1).在提示界面中选择 添加通讯录 ; (2).依次输入添加的信息 姓名 电话号码 缩位号码 电子邮箱 类别

31、。 4.4修改信息 (1).在提示界面中选择 编辑通讯录 ; (2).输入所要修改信息中的姓名,再依次输入信息 姓名 电话号码 缩位号码 电子邮 箱 类别。. 4.5拨号功能 (1).在提示界面中选择 拨号功能 ,进入拨号功能区; (2).若选择1,则将按姓名拨号,输入姓名;若选择2,则将按单键拨号,输入缩位号码。 4.6保存操作并退出系统 (1).在提示界面中选择 保存刚才操作并退出 。 本科课程设计(论文) 设计体会

32、 5 总 结 由于本课题中的许多知识点都没有学过都要靠自己到课外的资料中去查找。在用的时候难免出现这样那样的错误。如开始设计出来的菜单不是预想的那样,而是总个窗中出现混乱。解决的这个问题的办法是调整。一个系统的菜单和提示信息非常重要。如果没有这些用户根本不知道怎么用你设计的这个系统。在设计的调试过程中也无法顺利的完成调试工作。有了一个清晰简单的菜单和一些提示信息这后,调试过程完成的非常顺利。 回顾起此次课程设计,至今我仍感慨颇多,的确,从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很

33、多在书本上所没有学到过的知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识本次课程设计结束了,对于我的影响很大。我通过这次实践学到了许多知识。学到了设计一个简单的系统。要注意哪些方面。也使我知道自己哪些方

34、面做得还不够。 但我出总结出了一点点的经验如下: 1、要对系统的功能和要求做出详细的分析,并合理分解任务。 2、把分解出来的子任务,做给一个相对独立的模块。 3、在设计一个模块之前,要简单构想一下总界面的显视情况。 4、针对构想出来的界面进行程序的编写。 通过这次课程设计,增加了我对软件技术的了解,虽然还不明确软件技术包含的具体内容,但从学习C语言这门课程开始,已发现程序设计的好处,他对我们数学的学习也有很大的帮助。在学习C语言的过程中也学到和巩固了许多计算机应用基础知识,对计算机的机体也有了一个较为详细的了解。在具体操作中对这学期所学的C语言的理论知识得到巩固加强,达

35、到实训的目的,也发现自己的不足之处,为我问以后的c语言学习奠定了基础,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现上机操作的重要作用,特别是对数组和循环有了深刻的理解。通过实际操作,学会 C语言程序编程的基本步骤、基本方法,开发了自己的逻辑思维能力,培养了分析问题、解决问题的能力。 这不仅是程序设计,更是锻炼我们处理问题的能力,同时也使我们了解到团队合作的可贵.编写程序是件细心活,稍不留神就会出错,这就必须要求我们对待事情要认真!在编写程序的过程中,错误不断出现,不同的类型(如少写了一个符号,写错了字母,用错了函数等等)层出不穷,这考验我们待事细心,耐心,能不能坚持到底,

36、不能半途而废。 三人行必有我师,遇到问题我们一起讨论,研究,错了再写,写了在改.经过多次的修改,调试,运行,添加,终于最后在大家的欢呼声中,完成了我的任务.虽说是累了点,但我也从中找到了自己的快乐,每当完成一个新的函数时,那心情是激动啊,这毕竟是自己弄出来的,同时也使我感受到了学习的快乐! 生活上我们也同样如此,以这种精神对待生活,对待生命,我想,我们的人生会更美好,路是自己走出来的,也只有经过无数次的磨练,无数次地坚定我们的信心,锻炼我们的意志渐渐地使自己才能够使自己成熟起来,走出一片属于自己的天空。 参考文献本科课程设计(论文)

37、 参考文献 参考文献 [1]谭浩强,《C程序设计》,清华大学出版社 [2]刘振安,孙忱,刘燕君,《C程序设计课程设计》,机械工业出版社 [3]汪诗林,《数据结构算法与应用》,机械工业出版社 [4] CSDN下载频道. [5]朱若愚.数据结构[M]. 电子工业出版社 [6]晋良颍.数据结构[M].人民邮电出版社 [7]刘大有.数据结构[M]. 高等教育出版社 本科课程设计(论文) 源代码 附录:源代码 1.源程序清单 #include

38、io.h> #include /*与malloc.h差不多*/ #ionclude #include #define maxlen 100 struct persons /*定义结构体数组用于缓存数据*/ { int num; /*编号*/ char name[20]; /*姓名*/ char e_addr[20]; /*电子邮箱*/ char tel_no[15]; /*电话号码*/ char sim_no; /*缩位号码*/ char ar

39、ch; /*分类*/ }persons[maxlen]; typedef struct lnode /*通讯录结构中结点的定义*/ { int num; char name[20]; char e_addr[20]; char tel_no[15]; char sim_no; char arch; struct lnode *next; }listnode,*linklist; void Save(); linklist head=NULL,r=NULL; /*定义头指针和尾指针*/ listnode *s,*p0,*p

40、1,*p2,*p3,*p4,*p5,*p6,*p7,*p8,*p9; int i; char name1[10],ch; char tel_no1[15]; char arch1; char sim_no1; char e_addr1[20]; char s1[20]; FILE *fp; /*定义文件指针*/ void creat() /*将文件的信息读入结构体数组在转存入链表中*/ { int j; long k; fp=fopen("通讯录文件.txt","r t"); /*打开文件*/ if(fp!=NULL)

41、 { for(i=0;i<=maxlen;i++ ) /*当信息数不大于100条时,文件中的信息可以依次存入链表中*/ { j=fgetc(fp); if(j==EOF) return; k=i; fseek(fp,k*sizeof(struct persons),0); /*读取一个人的信息*/ fread(&persons[i],sizeof(struct persons),1,fp); s=(linklist)malloc(sizeof(listnode)); /*装存入链表中*/ s->num

42、=persons[i].num; strcpy(s->name,persons[i].name); strcpy(s->e_addr,persons[i].e_addr); strcpy(s->tel_no,persons[i].tel_no); s->sim_no=persons[i].sim_no; s->arch=persons[i].arch; if(head==NULL) /*用尾插法将其插入链表中*/ { head=s; r=head; head->next=NULL; }

43、 else { r->next=s; r=s;r->next=NULL; } } fclose(fp); } else { fp=fopen("通讯录文件.txt","w"); /*不能打开另开辟一个文件*/ i=1; } } /***********************************/ /*函数名:ShowA */ /*函数说明:输出家庭类所有信息 */ /*入口参数:无 */

44、/*出口参数:无 */ /***********************************/ void ShowA() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='A') /*判断信息是否属于该类*/ { cout<name<e_addr<

45、 cout<<"电话号码:"<tel_no<sim_no<arch<next; continue; } } /***********************************/ /*函数名:ShowB */ /*函数说明:输出朋友类所有信息 */ /*入口参数:无

46、 */ /*出口参数:无 */ /***********************************/ void ShowB() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='B') /*判断信息是否属于该类*/ { cout<name<e_addr<

47、输出电子邮箱*/ cout<<"电话号码:"<tel_no<sim_no<arch<next; continue; } } /***********************************/ /*函数名:ShowC */ /*函数说明:输出重要人士类所有信息 */ /*入口参数:无

48、 */ /*出口参数:无 */ /***********************************/ void ShowC() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='C') /*判断信息是否属于该类*/ { cout<name<e_add

49、r<tel_no<sim_no<arch<next; continue; } } /***********************************/ /*函数名:ShowD */ /*函数说明:输出其他类所有信息 *

50、/ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void ShowD() { p1=head; system("cls"); /*清屏*/ while(p1!=NULL) { if(p1->arch=='D') /*判断信息是否属于该类*/ { cout<name<

51、"<e_addr<tel_no<sim_no<arch<next; continue; } } /***********************************/ /*函数名:Show */ /*函数说明:输出已有信息

52、 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Show() { char ch1; system("cls"); /*清屏*/ printf("你想输出哪一类信息?\n"); cout<<"A:家庭类"<<"B:朋友类"<<"C:重要人士类"<<"D:其他"<>ch1; /*输入选

53、择类别*/ switch(ch1) /*用单条件多选择语句实现调用与循环*/ { case'A':ShowA();break; case'B':ShowB();break; case'C':ShowC();break; case'D':ShowD();break; default:cout<<"error"<

54、参数:无 */ /*出口参数:无 */ /***********************************/ void Delete() { system("cls"); /*清屏*/ printf("\n\n\t请输入要删除用户的姓名:"); cin>>name1; /*输入要删除的姓名*/ p4=head; if(p4==NULL) cout<<"你选择的用户不存在!"<name,name

55、1)==0) /*根据各种情况判断可能性*/ { p4=p4->next; head=p4; } else { while(strcmp(p4->next->name,name1)!=0)p4=p4->next;/*找到要删除的节点*/ if(p4!=NULL) /*若输入的用户存在则删除*/ { p5=p4->next; p4->next=p5->next; free(p5); } else cout<<"你选择的用户不存在!"<

56、

57、s=(linklist)malloc(sizeof(listnode)); /*开辟一个节点,用于存放新输入的信息*/ printf("\n\n\t请输入该用户的信息:\n"); cout<<"姓名:"; cin>>s->name; cout<<"电话:"; cin>>s->tel_no; cout<<"缩位号码:"; cin>>s->sim_no; cout<<"电子邮箱:"; cin>>s->e_addr; cout<<"分类:"; cin>>s->arch; if(head==NULL) printf("\n\n");

58、 /*判断原通讯录是否为空*/ else { p8=head; while(p8!=NULL&&strcmp(s->name,p8->name)!=0&&strcmp(s->tel_no,p8->tel_no)!=0) /*判断输入的用户是否已存在*/ p8=p8->next; if(p8!=NULL) { printf("您添加的用户已存在!"); free(s); } } if(head==NULL) { head=s; r=head; head->next=NULL; }

59、 else { r->next=s; r=s; r->next=NULL; } Save(); } /***********************************/ /*函数名:Alter */ /*函数说明:改变一个人信息 */ /*入口参数:无 */ /*出口参数:无 */ /***********************************/ void Alter() {

60、 system("cls"); /*清屏*/ printf("\n\n\t请输入姓名:"); cin>>name1; p3=head; while(p3!=NULL&&strcmp(name1,p3->name)!=0) p3=p3->next; if(p3==NULL) /*判断输入的用户是否存在*/ printf("\n\n\t您选择的用户不存在!"); else { printf("\n\n\t请输入该用户的新信息:\n"); /*输入要改人的新信息*/ cout<<"姓名:"; cin>>name1;

61、 cout<<"电话号码:"; cin>>tel_no1; cout<<"电子邮箱:"; cin>>e_addr1; cout<<"缩位号码:"; cin>>sim_no1; cout<<"类别:"; cin>>arch1; while(p9!=NULL&&strcmp(name1,p9->name)!=0&&strcmp(tel_no1,p9->tel_no)!=0) /*找寻输入的用户*/ p9=p9->next; if(p9==NULL) /*输入用户存在,则修改用户信息*/ { str

62、cpy(p3->name,name1); strcpy(p3->tel_no,tel_no1); strcpy(p3->e_addr,e_addr1); p3->sim_no=sim_no1; p3->arch=arch1; } else printf("您添加的用户已存在!"); } Save(); } /***********************************/ /*函数名:Dial */ /*函数说明:模拟拨打一个人的号码 */ /*入口参数

63、:无 */ /*出口参数:无 */ /***********************************/ void Dial() { int a; char b; system("cls"); /*清屏*/ cout<<"1.拨叫用户:"<>a; p0=head; if(a==1) { cout<<"请输入拨叫用户的姓名:"; cin>>name1; whil

64、e(strcmp(name1,p0->name)!=0&&p0!=NULL) /*找寻输入的用户*/ p0=p0->next; if(p0==NULL) cout<<"您选择的用户不存在!"; else { cout<tel_no; cout<>b; while(p0!=NULL&&b!=p0->sim_no) /*找寻输入的用户*/ p0=p0->next

65、; if(p0==NULL) cout<<"您输入的单键号码不存在!"; else { cout<name<tel_no; cout<

66、:无 */ /***********************************/ void Save() { int j; fp=fopen("通讯录文件.txt","w"); for(p2=head,j=0;p2!=NULL;j++ ,p2=p2->next)/*将信息装出入结构体数组在出入链表中,避免地址的出入,造成乱码文件*/ { strcpy(persons[j].name,p2->name); strcpy(persons[j].e_addr,p2->e_addr); strcpy(persons[j].tel_no,p2->tel_no); persons[j].sim_no=p2->sim_no; persons[j].arch=p2->arch; fwrite(&persons[j],sizeof(struct persons),1,fp); } } vo

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