实用如何制作通讯稿 通讯录的制作课程设计报告精编4篇
【阅读指引】阿拉题库网友为您分享整理的“实用如何制作通讯稿 通讯录的制作课程设计报告精编4篇”范文资料,以供您参考学习之用,希望这篇文档对您有所帮助,喜欢就下载分享给大家吧!
如何制作通讯稿 通讯录的制作课程设计报告1
教学目标:
1、知识目标:了解表格的基本构成和表格制作的几种方法;
2、技能目标:掌握通过菜单方式制作基本的二维表格,培养学生的动手操作能力;
3、情感目标:通过对名片信息的分析培养学生的信息搜集和整理能力。教学重点:
1、认识表格的行、列和单元格;
2、规则的二维表格的插入; 教学难点:
表格中文本格式的设置。教学过程:
一、创设情景
师:今天上课老师想请问一下大家有没有看到过通讯录啊?
生:没有(如果有就请学生介绍一下通讯录)
师:对,通讯录一般就是你所要联系的人的一些通讯方式,同学们见过名片没有,请大家分析一下,这样一张通讯录跟名片相比有什么好处吗?
生:可以更方便的找到信息。
师:说得很好,因为通讯录中使用了表格,而在我们日常生活中使用表格可以更加简洁、清楚的表述相关内容。
师:那么今天这节课我们就通过word中的表格功能和上节课制作的名片为自己来制作一份小小通讯录。(板书:制作好友通讯录)
二、自主探究
师:老师再问一下,在日常生活中你看到过什么表格?
生:课程表、值日表、成绩表…….师:那么你知道一张表格有哪些元素组成吗?或者表格中各相关部分的名称。
生:不知道
师:出示一张表格,并为大家介绍表格中各相关部分的名称。
/ 4
生:观看图片中表格组成部分。
师:同学们请想一想,既然是通讯录,那么必须要有哪几项内容?
生:都有姓名、地址、电话等
师:那么我们这些共同的信息应如何对应到表格中相应的单元格呢
生:回答(如果回答不出教师可以提示一下)
师:一般情况下我们把这些共同的信息都是填写在第一行作为列标题,从第二行开始应该是具体信息,有多少共同信息就应该有几列,而你的通讯录中要有多少朋友就可以添加几行(一边讲解一边在黑板上演示)
师:现在我们已经在黑板上画好了一张通讯录了,我看有的同学等不及要自己动手操作了,不要急,老师已经在大家的桌面上放了一个帮助文件,里面详细 介绍了表格制作的步骤,请大家打开word,根据帮助文件,赶快动手做自己的通讯录吧。
生:打开帮助文件,动手制作表格
师:巡回指导
三、充实内容
师:刚才我看到有许多同学已经根据帮助文件制作出了通讯录所需的表格了,下面我们请一位同学上来演示一下他是怎么操作的生:上台演示(一边操作一边讲解)
师:这位同学做得非常棒,我们应该鼓励一下。不过老师还要告诉你,其实制作表格的方法除了刚才那位同学使用的方法外还有另外的方法,想不想知道啊?你可以在帮助文件中去找找看,找到后也可以试一试。
生:没完成的同学继续完成,做好的同学试着用另外的方法建立一个表格。
师:继续辅导学生。
师:经过检查我发现基本上同学的通讯录的基本框架(表格)已经搭好了,那么接下去应该干什么事呢?
生:输入文字
师:对了,现在应该为通讯录填充内容了。(怎么输入文字可以看帮助文件)
师:赶快动手吧,看谁在最短的时间内做的又快又漂亮。
生:在表格中输入文字
/ 4
师:巡回指导
师:大家请停一下,刚才老师在看大家操作的同时又发现一个问题:就是大家在表格的单元格中输入内容时,有的单元格太大,(文字较少时)而有的单元格又太小(如在输入地址时),所以导致很多的同学的通讯录看上去不太整齐,能不能想办法呢?老师教你一招:只要你在表格中单击鼠标右键-----自动调整-----调整表格,这样单元格就能根据内容自动调整了。快试试吧!
生:继续操作
师:大家可以再停一下,老师刚才发现一个同学输入文字的方法很快,我们来看看他是怎样输入的
生:演示把名片中的信息通过复制、粘贴的方法移到表格中
师:这位同学真是有办法,说明他是一个爱动脑筋的人,大家在平常的学习中也应该学会这种方法。
生:继续操作
四、精益求精,美化表格
师:我看有的同学的通讯录中已经有很多朋友的名单了,但是你觉得你的通讯录还缺少了些什么吗?
生:名字
生:最好可以给表格添加颜色
师:同学们想得非常周到仔细,要是我们能给通讯录添上背景那这个通讯录就更加漂亮了(展示范例),怎么添加呢,大家到帮助文件中去寻找吧,等一下我们来比一下谁的通讯录的最漂亮了。
生:自主尝试表格中文本格式的设置
师:给予学生适当的提示(教师简单演示)
五、展示作品,评价交流
师:我看很多同学都做好自己的通讯录,而且有的同学已经等不及想把自己的作品给其它同学欣赏了,好,接下来我们来欣赏几位同学的作品
生:欣赏同学的作品
师:你觉得这位同学的作品怎么样
生:评价同学的作品
/ 4
六、小结
师:马上要下课了,我们再来回忆一下这节课你学会了什么
生:怎样在word中插入一个表格
师:对,这节课我们通过制作小小通讯录学会了在word中怎样插入一个表格,其实在我们日常生活中除了通讯录,还有很多表格,象我们一开始提到过的课程表等等,希望同学们回去后再去制作一张表格,比如说常用电话表,做好后你可以用电子邮件发给我。师:下课。
/ 4
如何制作通讯稿 通讯录的制作课程设计报告2
《制作通讯录》说课稿
一、说教材分析
首先我谈谈我对这篇教材的分析:
本节课《制作通讯录》是福建教育出版社四年级下册第二课的内容,是基于第一节学习了制作简单表格的知识上的进一步完善。本节课利用网络环境,借助专题学习网站,创设信息化的教与学环境,利用优美、生动的画面,丰富有趣的情境,让学生在亲身的感受中说、做、学的过程,让学生通过问题情境的感受,学习解决问题的方法,形成一定的知识解决模型,并最终解决实际生活问题。本节课的学习既是学生巩固旧知识,也是掌握新知识的过程。
二、说教学目标
根据以上对教材的分析,我确定了三维目标:
1.知识目标:要求学生了解通讯录的一般格式,学会在表格中插入行; 2.能力目标:要求学生掌握通讯录的制作方法
3.情感目标:能激发学生的学习兴趣,培养学生自主探究和合作的精神
三、说教学重难点
通过对三维目标的综合总结,我得出本节课的 重点:插入规则的二维表格,并在单元格中添加数据; 难点:如何在表格中增加一列
四、说教法学法
要达成以上三项教学目标,特别是要突破教学重难点,我在教法的选择上以“激——导——探——放”为主要教学手段,目的是在课堂中通过创设情境激发学习兴趣,借助老帅引导,师生共同探究,大胆放手让学生在具体的实践操作中运用。对于课堂教学中,学生学法的选择是以“探究——合作——交流——运用”。学生通过自主探究,小组协同合作,组内交流、师生反馈评价,最后把所学的知识运用于具体的实践操作中。
五、说教学流程
这节课为了体现学生是学习的主体,以学生的学为立足点,教师的教为辅助点,我设计了以下的教学环节:
第一个环节
(一)情境创设 引入新课
1、课伊始,课件出示一段视频
内容为:一位同学回家准备做作业,却忘记作业内容,天又下起大雨,他想给同学打电话询问作业的内容
2、观看结束后,向学生提出一个问题:这位同学要打电话,需要什么呢? 通过这个问题的提出,映出如果有通讯录,就能给通讯录上的同学打电话了 顺势引出这节课的内容—制作通讯录(板书出)
(这个环节的设计意图是通过让学生解决日常生活中遇到的问题来激发学生的学习兴趣,兴趣是最好的老师,它是学生主动学习、积极思考、大胆质疑、勇于探索的强大动力,所以通过这个环节,让学生自始至终主动参与学习,全身心地投入到学习活动中)
第二个环节
(二)小组合作 探究学习
在这个环节中有三个教学内容,第一个教学内容是 了解通讯录的一般格式并根据格式制作一张简单的通讯录
1、师:同学们,你们平常都从哪些地方可以看到通讯录呢 手机上的通讯录,以及各种纸质通讯录
2、课件展示一张简单的通讯录
设疑:同学们,这张通讯录有哪些部分呢? 让学生尝试着说一说通讯录的组成部分
在学生初步了解后,布置让大家制作一张自己组内成员的通讯录的任务
3、在任务中巡视指导学习较困难的小组
4、学生在初步尝试后,指名一组完成较好的小组长,上台操作
(这部分教学内容的设计思路:通过让学生自己动脑思考,动手尝试,调动学生参与教学的积极性,发挥学生自主探究的能动性,使课堂教学焕发出生机)
第二个教学内容是: 在表格中增加一列
1、给学生设疑:如何在通讯录中增加一列qq号
然后向学生提供一份学习帮助材料,材料中是通过“表格和边框”工具插入一列的方法,让学生仔细阅读这份材料,与小组成员合作,在电脑完成增加一列,并填上qq号码
学习帮助材料
增加一列的方法:
1、单击工具栏上的“表格和边框”按钮,会弹出一个表格和方框的工具栏。
2、将鼠标移动到要增加一列的位置,当鼠标变成一个铅笔形状时,按住鼠标左键,自上而下画一条线,这样就增加一列了
2、在任务中巡视指导学习较困难的小组
3、交流反馈 总结方法
学生在初步尝试后,指名一组完成较好的小组长,上台操作,要求边讲解边演示,根据学生的讲解,板书出: 插入一列的方法:
“表格与边框” 工具—弹出工具栏—移动至增加列位置—按住鼠标画线(这部分内容设计想法是:让学生学习外在的理论知识,并通过尝试操作转化成内在的技能,培养学生从获取信息到处理信息的能力。给学生提供自主学习的空间。发挥学生学习的主动性,培养学生的自主学习能力,让学生成为学习的主人)②总结这一种插入列的方法后,让学生尝试“增加一列”的其他方法: 如:选中一列,单击鼠标右键,在弹出的功能中选择增加一列项
(这部分内容设计意图:鼓励创新,开发学生发散思维,充分开发学生个体的潜能,使学生的各种潜能得到优化和发展,从而不断提高学生个体各种素质水平,促进学生身心全面和谐发展)
第三个教学内容是: 手动调整列宽的教学
1、设疑:
师:同学们,通讯录我们做完了,但是是不是看上去不大整齐美观呢? 那我们要怎么调整呢?请同学们自己去尝试下
2、老师提醒学生注意要点,移动鼠标到边框线时当光标变成什么形状时才可以调整宽度,巡视指导学习较困难的小组
3、学生在初步尝试后,老师指名一组完成较好的小组长,上台操作,要求边讲解边演示
第三个环节
(三)深化运用 拓展延伸
1、布置任务:制作一张好友通讯录
2、每个学生在自己的电脑上进行练习,完成后汇报小组长,小组长负责检查小组成员全部完成情况,对优秀作品给予奖励
3、转播学生的作品,指名个别同学上台边讲解,边操作
(这部分内容设计思路:学生通过小组的任务驱使法,让学生能较好地完成教师预设的教学目标,又突破了教学重难点。)
4、师生共同评价
第四个环节
(四)总结:
整节课通过循序渐进的方式一步步地练习,既完成信息技术课的主要任务、目标,又实现了信息技术学科与其他学科的有机整合,不但培养了学生合作意识,而且鼓励创新,开发了学生的发散性思维
如何制作通讯稿 通讯录的制作课程设计报告3
四上第9课《制作通讯录》说课稿
王店镇中心小学 钱嘉佳
一、教材分析
本课是四上第二单元的最后一课,是利用网络学习的平台的一个应用实例。通过网络获取信息,制作通讯录来解决生活中的实际问题。表格是生活中一种常见的高效的信息表达方式,通过制作通讯录,让学生认识表格,了解表格,学会表格的制作及编辑方法,为word学习进一步打下基础,也能帮助解决今后在学习生活中的一些实际问题。
二、学情分析
四年级的学生总体来说比较活泼好动,对事物的认知还比较形象,对新鲜事物兴趣浓厚。通过上一单元的学习,学生已经掌握了一定的word操作技能,本课的表格制作是word中的一个新知识,学生对新知识的学习还缺乏一定的自主探究能力,对教师的依赖性较强。
三、教学目标
1、知识目标
(1)了解表格的基本构成,知道表格的作用。(2)了解利用网络获取信息的多样性。(3)了解制作表格的一般过程。
2、技能目标
(1)掌握在word中插入表格的方法。(2)掌握表格的编辑及美化方法。
3、情感目标
(1)培养学生的信息搜集与整理的能力。(2)能利用表格制作方便我们的生活。
四、教学重难点
1、教学重点:表格的插入与编辑
2、教学难点:表格的行列增减,布局美化。
五、教法设计
1、情境导入法:通过生活中应用到通讯录的实际例子,引入到教学内容中,更能激发学生的学习热情,为下一步学习做好准备。
2、任务驱动法:让学生根据不同的任务去完成不同的操作步骤,制作表格中采用:插入表格——填写表格——修改表格——美化表格。这样步步递进式的任务,有助于学生对自己的学习有明确的目地,同时也能顾及到所有学生,体现分层教学。
3、自主探究法:在学习插入表格的方法以及修改表格增减行列中,让学生对照书本以及微视频,能有效解决操作中的一些难点问题,比教师讲授效果好,另一方面,也能培养学生的自主学习能力,改变有什么问题总是依赖老师解决的现状。
4、问题导学法:在美化表格制作环节,由于学生对自己表格的缺陷缺乏认识,通过对比标准的表格,让学生去发现问题,通过分析,思考改进的方法,从而达到完善表格的目地。
六、课前准备
本课的学习任务,是建立在上一课制作名片的基础上。课前要把上节课学生制作的名片,进行整理打印出来,同时还要准备一张已经制作完成的班级通讯录,课堂导入环节需展示出来。制作好调整表格的微视频,为学生学习提供参照。为每位学生准备一张学习卡,上面有学习任务及作品评价,待制作表格和评价环节中使用。
七、教学设计
一、情境导入
上个星期我们班上有一名同学生病了没来上学,老师想打个电话了解一下情况。现在老师手里有一叠班级同学名片和一张通讯录,你会选择哪种方法去快速找到这名同学的家里电话呢,为什么?我们想不想也来做一张通讯录?
设计意图:把制作通讯录的内容,结合到生活实际的情境中,有助于激发学生的学习兴趣,同时,也能让学生了解到通讯录所起到的作用。
二、了解信息获取方法
你知道老师是怎么知道你们的信息的呢?(网络学习的平台),还有哪些方法也可以从网上收集信息。
设计意图:由于本节课的重点是学习制作表格,所以,获取信息的过程就不让学生去体会了,让学生说一说,了解一些网络获取信息的方法,把更多的时间放到制作表格中。
三、制作通讯录
把收集到的信息分类整理,就能制作成一张通讯录了。
1、认识表格(1)出示一张通讯录,观察通讯录有哪些内容组成。(2)观察表格的特点,认识表格的行、列、单元格。(3)假如你要设计一张五人的通讯录,需要几行几列。
设计意图:认识表格的特征能为下一步制作表格做好铺垫,以图片实例,认识表格能更加直观形象的起到加深印象的作用。
2、制作表格
任务一:选择几名同学的信息,根据需要插入表格(参考书本内容,自学插入方法)
请先完成的同学上台演示,教师总结步骤。任务二:填写表格内容
任务三:修改表格(做完表格后,我还想再一名同学的信息,或者我发现还少了电子邮箱这项该怎么办)
提示:打开微视频或参考书本教你一招,完成表格的修改 任务四:美化表格
演示几张表格制作不美观的作品,与一张标准通讯录对比,发现什么问题,请同学说说(表格的列宽与文字不匹配,表格内容没有对齐等)
设计意图:插入表格的学习,难度不大,采用任务驱动放手让学生尝试自学,培养学生和自主探究能力,同时,由于学生的个体差异性较大,在操作过程中没有限定要插入的表格的行数和列数,有助于对后进生学习起到激励作用。表格的行列增减是本课的难点,因此利用微视频学习,能使学生的学习效率提高。通过对比表格,让学生明确表格制作需要一定的美化,特别是列宽要与文字内容匹配。
3、展示表格
展示班级中的优秀作品,学生互评,教师评价,并且完成学生手里的自评表(从完整度,内容数量、美观度三方面评价)
设计意图:通过学生自评、互评、教师评价,让学生能更好的了解表格制作的要求,也进一步培养学生的审美意识,欣赏能力。多元化的评价让学生能全面认识作品的优点及待改进的方面。同时也能更好得激励学生,增强学生的学习兴趣
四、总结回顾,知识拓展
1、通过这节课的学习,你学会些什么? 教师总结小诗: 表格制作查方便 插入表格按步走 分清行列是关键 布局调整需合理 美化文字更绚丽
2、在我们的生活中,表格应用非常广泛,如班级值日生表、列车时刻表、作息时间表等,希望同学们学以致用。
设计意图:通过总结回顾,梳理整节课的知识要点,把习得的知识进一步内化。以小诗总结的方法,读起来朗朗上口,也便于加强记忆。知识拓展有助于学生将书本知识与生活实际相结合,培养学以致用的情感,激发学生进一步探究学习的激情。
八、板书设计
制作通讯录
认识表格:分清行、列、单元格
制作表格: 插入表格——填写表格——修改表格——美化表格
如何制作通讯稿 通讯录的制作课程设计报告4
浙江大学城市学院实验报告
课程名称
数据结构
实验项目名称
实验三
线性表的应用---通讯录管理系统的设计与实现
实验成绩
指导老师(签名)
日期
一。实验目的和要求
1、掌握线性表的顺序存储结构;
2、掌握线性表的动态分配顺序存储结构及基本操作的实现;
3、掌握线性表的链式存储结构;
4、掌握单链表的基本操作的实现。
5、掌握线性表的应用。
二。实验内容
1、设计并实现日常生活中通讯录的管理系统。该系统需3位同学一组,按模块分工协作完成,系统具体功能需求描述如下:
① 输入数据建立通讯录表:在系统使用前先需要创建通讯录,可以一次输入(或文件导入)多个成员的通讯录信息,建立通讯录。要求此表为顺序存储结构。② 查看所有通讯录信息:显示通讯录表中所有成员的通讯录信息。
③ 查询通讯录中满足要求的信息:可以根据不同方式查询,如按姓名查询、按姓氏查询、按编号查询等。
④ 新增通讯录信息:每次可添加一个新成员的通讯录信息。⑤ 修改通讯录信息:修改通讯录中已有成员的信息。
⑥ 删除通讯录成员:删除通讯录表中已有的成员,但需要把删除的成员信息放到另一张被删成员表中,以便错误操作后允许恢复。该被删成员表要求采用链式存储。
⑦恢复被删成员信息:一旦发现误删,则可以在被删成员表中找到该成员,重新加入到通讯录表中。
系统实现要求:
① 通讯录表必须使用动态分配顺序存储结构,被删成员表必须使用链式存储结构。
②通讯录信息至少包括:编号、姓名、电话
1、电话
2、邮箱、......等,其他可自行设置。
③用菜单方式选择相应功能,且各功能的有关操作需通过调用各函数来实现,如:初始化通讯录表用函数void initaddressbook(sqlist &txl)、浏览所有通讯录成员函数 browseaddressbook(sqlist tsl)等等,这些操作因针对通讯录原始表,属于顺序结构,故可将这些子函数放在头文件test3_中。针对被删成员表的操作,由于是链式存储结构,故针对此表的相关操作课定义在test3_中。
③ 建立主函数文件,通过调用上述头文件中的函数来实现该系统。④ 给出系统数据类型的定义、存储结构定义以及各个函数之间的调用关系。⑤ 实验内容中设置的功能要求必须实现,此外可自行增加合适的功能,可作为额外的实验成绩进行加分: 例如:
通讯录和被删成员数据可用文件保存,程序运行时可从文件读入相应数据,程序结束时可写入文件保存。
通讯录分组,可自行考虑把通讯录成员进行分组,如同学组、亲戚组、同事组等。
2、以小组为单位认真填写实验报告,实验报告必须包括各类数据类型的结构定义说明,各类数据的组织方式,系统的功能结构,各个操作的定义以及实现方法,运行结果与分析,难点如何解决,存在问题以及可改进之处等。同时,在实验报告中需写明小组每位同学的分工,得分(小组总分不超过12分)等。。每组还必须制作一个答辩ppt,该ppt的命名为ppt_通讯录管理系统_(各小组成员名字).ppt。
3、、源程序文件及test3_、test3_,以及答辩ppt压缩打包后到bb平台上。
难点与解决:
1.实参形参的传递,链表中指针的指向,通过看书多调试几次就能解决
2.在程序执行switch语句时,输入一个数后,执行后,程序直接退出。switch语句的输入项,非法,导致的程序直接退出。解决的方法,可用while语句先限制流入switch语句的非法输入项,从而解决输入项非法的问题。其他输入数字选择时,亦可用此方法解决
问题:
1.无法在机房的电脑运行
、.h、.dev以外的文件全部删除才行,否则即使故意打错几行代码也能成功编译,删除后编译出现
[warning] non-static data member initializers only available with-std=c++11 or-std=gnu++11 [enabled by default] 文件的读取写入,参考了网上的和上课讲的,一次是进行动态内存分配的语句无法编译,一次是找不到文件,最后决定不做这个功能了。改进
1.增加读取保存功能,增加查询方式如按电话查找 2.编号是根据当前长度自动编号,虽然可以直接反应记录的数量使得编写程序时比较方便,但也使得无法每个人对应一个编号,也使得按编号查找如同摆设
功能模块结构图:
函数调用结构图:
运行结果与分析:
程序运行后得到开始菜单,结果如下图所示
开始菜单中包括创建通讯录、显示所有记录、查询记录、添加记录,返回本菜单以及推出程序,人们可以输入想要选择的模块进行程序的进一步运行。输入1,创建通讯录,结果下图所示:
输入2,显示所有记录,结果下图所示:
输入3,查询记录,结果下图所示:
两种查找方式;
输入4,增添记录,结果如下图所示:
输入5,修改记录,结果如下图所示:
两种方式,先查找再修改
输入6,删除记录,结果如下图所示:
两种方式,先查找再删除 输入7进入恢复菜单,结果如下图所示:
选择恢复方式
程序清单
#include
#include
#include
#define true 1 #define false 0 #define ok 1 #define error 0
#define infeasible-1 #define overflow-2 struct txl { int num;//编号char name[10];//姓名
char tel1[100];//电话1
char tel2[100];//电话2
char mail[100];//电子邮箱
char add[100];//家庭地址
};struct lnode { struct txl data;struct lnode *next;};
struct sqlist {
int length;//当前长度
int listsize=100;//当前分配的存储,初始为100单位:sizeof(struct txl)
struct txl *elem;//存储空间基址
};typedef int status;#include“” #include“test3_” #include“test3_” int main(){ int n,k=0,j;file *fp;//定义文件指针
struct sqlist l;//定义全局变量l为结构体sqlist
struct txl n1,*n2;struct lnode *head;//头指针
head=(struct lnode*)malloc(sizeof(struct lnode));head->next=null;menu();
while(scanf(“%d”,&n),n)//限制输入,当输入为int型,且不为0时循环
} {
switch(n){ case 1: create(l,fp);k=1;break;//k=1表示已创建通讯录
case 2: if(k==1)listtraverse(l);break;case 3: if(k==1)search(l,n1);break;case 4: if(k==1)insert(l);break;case 5: if(k==1)modify(l);break;case 6: if(k==1)delete(l,head);break;case 7: recover(l,head);break;case 8: menu();break;
default:printf(“请输入0-8!n”);} if(k==0&&n>=2&&n<=6)printf(“请先创建通讯录!n请重新输入!n”);} return 0; void menu(){
//菜单函数
printf(“n”);printf(“ttt**************************n”);printf(“ttt*
欢迎使用
*n”);printf(“ttt*
通讯录管理系统
*n”);printf(“ttt**************************n”);printf(“n”);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 *
7.恢复记录
*n”);printf(“tt *
8.显示菜单
*n”);printf(“tt *
0.退出程序
*n”);printf(“tt *************************************nnn”);
} void menu_1(){
//菜单函数
printf(“n”);printf(“ttt**************************n”);printf(“ttt*
欢迎使用
*n”);printf(“ttt*
通讯录恢复系统
*n”);printf(“ttt**************************n”);printf(“n”);printf(“tt *************************************n”);printf(“tt *
1.按编号恢复
*n”);printf(“tt *
2.按姓名恢复
*n”);printf(“tt *
0.退出恢复系统
*n”);printf(“tt *************************************nnn”);
}
test3_ int create(struct sqlist &l,file * &fp)//创建通讯录
{ system(“cls”);//清屏
int i,n,s=0;char k;
printf(“你所想创建通讯录个数(<=100):”);scanf(“%d”,&);
=(struct txl*)malloc(ze*sizeof(struct txl));//存储分配
if(!)//分配失败
{
exit(overflow);
}
for(i=0;i
[i].num=i+1;
printf(“编号为%d”,[i].num);//第i条记录的编号为i
printf(“请输入姓名:”);
scanf(“%s”,[i].name);
printf(“请输入电话1:”);
scanf(“%s”,[i].tel1);
printf(“请输入电话2:”);
scanf(“%s”,[i].tel2);
printf(“请输入电子邮箱:”);
scanf(“%s”,[i].mail);
printf(“请输入家庭地址:”);
scanf(“%s”,[i].add);
}
printf(“输入 0:退出, 输入8:返回菜单
请输入您的选择: ”);
} int listtraverse(struct sqlist &l){//显示所有信息
system(“cls”);//清屏
int i;for(i=0;i
printf(“编号:%d ”,[i].num);
printf(“姓名:%s ”,[i].name);
printf(“电话1:%s ”,[i].tel1);
printf(“电话2: %s ”,[i].tel2);
printf(“电子邮箱: %s ”,[i].mail);
printf(“家庭地址: %sn”,[i].add);
} printf(“输入 0:退出, 输入8:返回菜单
请输入您的选择: ”);} int search(struct sqlist &l,struct txl &n){//查找信息
system(“cls”);//清屏
int i,n1,j=0,k=0;char name1[10];//查找的姓名
int num1;//查找的编号
printf(“输入1按姓名查找
”);printf(“输入2按编号查找 ”);while(scanf(“%d”,&n1)){
if(n1==1)
{
printf(“请输入您要查找的姓名:”);
scanf(“%s”,name1);
for(i=0;i
{
if(strcmp(name1,[i].name)==0)//姓名相同时
{
n=[i];
printf(“编号:%d ”,[i].num);
printf(“名字:%s ”,[i].name);
printf(“电话1:%s ”,[i].tel1);
printf(“电话2: %s ”,[i].tel2);
printf(“电子邮箱: %s ”,[i].mail);
printf(“家庭地址: %sn”,[i].add);
k=1;
break;
}
}
if(k==0)//没有该姓名时
{
printf(“没有这个记录n”);
}
break;
}
if(n1==2)
{
printf(“请输入你要查找的编号: ”);
while(scanf(“%d”,&num1),num1){//限制输入
break;
}
if(num1<1||num1>=)//没有该编号时
{
printf(“没有这个记录n”);
}
for(i=0;i
{
if(num1==[i].num)//编号相同时
{
n=[i];
printf(“编号:%d ”,[i].num);
printf(“名字:%s ”,[i].name);
printf(“电话1:%s ”,[i].tel1);
printf(“电话2: %s ”,[i].tel2);
printf(“电子邮箱: %s ”,[i].mail);
printf(“家庭地址: %sn”,[i].add);
break;
}
}
break;
}
if(n1!=1&&n1!=2)
printf(“请输入1或2!”);
} printf(“输入 0:退出, 输入8:返回菜单
请输入您的选择: ”);} int search_1(struct sqlist &l,struct txl &n){//被其他函数调用以查找信息
int i,n1,j=0,k=0;char name1[10];//查找的姓名
int num1;//查找的编号
printf(“输入1按姓名查找
”);printf(“输入2按编号查找 ”);while(scanf(“%d”,&n1)){ if(n1==1){
printf(“请输入您要查找的姓名:”);
scanf(“%s”,name1);
for(i=0;i
{
if(strcmp(name1,[i].name)==0)//姓名相同时
{
n=[i];
printf(“编号:%d ”,[i].num);
printf(“名字:%s ”,[i].name);
printf(“电话1:%s ”,[i].tel1);
printf(“电话2: %s ”,[i].tel2);
printf(“电子邮箱: %s ”,[i].mail);
printf(“家庭地址: %sn”,[i].add);
k=1;
break;
}
}
if(k==0)//没有该姓名时
{
printf(“没有这个记录n”);
}
break;
} if(n1==2){
printf(“请输入你要查找的编号: ”);
while(scanf(“%d”,&num1),num1){//限制输入
break;
}
if(num1<1||num1>=)//没有该编号时
{
printf(“没有这个记录n”);
}
for(i=0;i
{
if(num1==[i].num)//编号相同时
{
n=[i];
printf(“编号:%d ”,[i].num);
printf(“名字:%s ”,[i].name);
printf(“电话1:%s ”,[i].tel1);
printf(“电话2: %s ”,[i].tel2);
printf(“电子邮箱: %s ”,[i].mail);
printf(“家庭地址: %sn”,[i].add);
break;
}
}
break;
}
if(n1!=1&&n1!=2)
printf(“请输入1或2!”);
} } int insert(struct sqlist &l){//添加信息
system(“cls”);int i;char k;struct txl *newbase;if(>=ze)////当前存储空间已满,增加分配
{
newbase=(struct txl*)realloc(,(ze+10)*sizeof(struct txl));
if(!newbase)//存储分配失败
{
exit(overflow);
}
=newbase;} printf(“请输入新成员的信息:”);printf(“这是第%d位”,+1);//添加到最后
[].num=+1;
printf(“请输入姓名:”);
scanf(“%s”,[].name);
printf(“请输入电话1:”);
scanf(“%s”,[].tel1);
printf(“请输入电话2:”);
scanf(“%s”,[].tel2);
printf(“请输入电子邮箱:”);
{
scanf(“%s”,[].mail);
}
printf(“请输入家庭地址:”);
{
scanf(“%s”,[].add);
}
++;//长度增加
printf(“输入 0:退出, 输入8:返回菜单
请输入您的选择: ”);
} int modify(struct sqlist &l){//修改信息
system(“cls”);struct txl n,gai;int k,k1;while(1<2){
search_1(l,n);//查找记录
printf(“是否修改此记录:(1=y/2=n)n”);
while(scanf(“%d”,&k)){//限制输入,当k成功赋值时循环
if(k!=1&&k!=2)
printf(“请输入1或2!”);
else
break;
}
if(k==2)
{
break;//输入1修改,输入2不修改并结束循环返回
}
if(k==1)
{
=;
printf(“请修改姓名:”);
scanf(“%s”,);
printf(“请修改电话1:”);
scanf(“%s”,1);
printf(“请修改电话2:”);
scanf(“%s”,2);
printf(“请修改电子邮箱:”);
scanf(“%s”,);
printf(“请修改家庭地址:”);
scanf(“%s”,);
[-1]=gai;
}
printf(“是否继续修改?(1=y/2=n)”);
while(scanf(“%d”,&k)){
if(k!=1&&k!=2)
printf(“请输入1或2!”);
else
break;
}
if(k1==1)//继续循环
{
;
}
if(k1==2)//跳出循环
{
break;
} }
} printf(“输入 0:退出, 输入8:返回菜单
请输入您的选择: ”);test3_ int delete(struct sqlist &l,struct lnode* &head)//删除通讯录并保存到链表
{ system(“cls”);static int j=1;//当前编号
int i,k;struct txl n;struct lnode *p,*q;
p=(struct lnode *)malloc(sizeof(struct lnode));if(!p)exit(overflow);//分配存储
q=(struct lnode *)malloc(sizeof(struct lnode));if(!q)exit(overflow);
printf(“请输入你想删的成员:n”);
search_1(l,n);//查找记录
printf(“是否删除此记录?(1=y/2=n)n”);//输入1删除,输入2不删除并结束循环返回
while(scanf(“%d”,&k)){
if(k!=1&&k!=2)
printf(“请输入1或2!”);
else
break;
}
if(k==1)
{
p->data=n;//将 search_1函数所找到的数据赋值给p->data
p->=j;//为删除的记录编号
p->next=head->next;
head->next=p;
q=head->next;
for(i=;i
{
[i-1]=[i];
[i-1].num=i;//编号
}
--;
j++;
}
if(k==2)
{
;
}
printf(“输入 0:退出, 输入8:返回菜单
请输入您的选择: ”);
} int recover(struct sqlist &l,struct lnode* &head){ system(“cls”);int n,number,k,a=0;char name1[10];struct txl n1;struct lnode* q,*p;q=(struct lnode*)malloc(sizeof(struct lnode));//存储分配
p=(struct lnode*)malloc(sizeof(struct lnode));q=head->next;//指向第一个节点
p=head;//指向头指针
menu_1();//显示恢复菜单
while(scanf(“%d”,&n),n)//限制输入,当输入为int型,且不为0时循环
{
printf(“请问要恢复哪个成员?n”);
while(q!=null)//依次输出所有被删记录
{
printf(“编号:%d ”,q->);
printf(“名字:%s ”,q->);
printf(“电话1:%s ”,q->1);
printf(“电话2: %s ”,q->2);
printf(“电子邮箱: %s ”,q->);
printf(“家庭地址: %sn”,q->);
q=q->next;} if(n==1){ printf(“请输入所要恢复的编号n”);scanf(“%d”,&number);while(p!=null){
if(p->next->==number)
{
[]=p->next->data;//添加到末尾
[].num=+1;//编号
p->next=p->next->next;//将该记录从链表中删除
++;
printf(“恢复成功!n”);
a=1;//标记有此记录,并已恢复
break;
}
p=p->next;} if(a==0)printf(“没有该编号n”);
break;
} if(n==2){ printf(“请输入所要恢复的姓名n”);
scanf(“%s”,name1);
while(p!=null){
if(strcmp(p->next->,name1)==0)
{
[]=p->next->data;//添加到末尾
[].num=+1;//编号
p->next=p->next->next;//将该记录从链表中删除
++;
printf(“恢复成功!n”);
a=1;//标记有此记录,并已恢复
break;
}
p=p->next;}
}
if(a==0)
printf(“没有该姓名n”);
break;} if(n!=1&&n!=2&&n!=0){
printf(“请输入0-2!n”);
} } printf(“输入 0:退出, 输入8:返回菜单
请输入您的选择: ”);