第一篇:战友通讯录设计制作
战友通讯录制作
准备工作
1.2.3.4.收集战友的照片 战友联系方式 战友近况 曾经的合影
开始设计
基本的设计风格展示(这里以945diy个性印品制作的战友通讯路为例子)
设计完成后教给专门的公司印刷制作即可,一般需要3天的时间制作
第二篇:战友通讯录前言前言
序言
2014年1月1日,守备一师战友100余人,时隔6年后重聚在静海太亨酒楼,隆重举行第三届战友联谊会。昔日的战友们欢聚一堂,敞开心扉,忆峥嵘岁月,谈别后情思,享纯真情谊。会上,战友们激情发言,叙说部队情结与离别情怀,踊跃献艺,尽展精彩,表达心迹,正所谓“品味社会人生,感慨岁月留痕”!
本次聚会,得到了战友们的高度重视。大家传真情,有的积极相应,百里赴约;有的踊跃资助,慷慨解囊。借此机会,筹备组对全体与会战友的大力支持和无私赞助表示衷心感谢!
人生苦短,岁月情长。倏忽之间,当年十七、八岁的帅小伙已是满头华发。在这里,我们希望各位战友:发扬35年前的革命精神,保持35年前的健康体魄,保持联谊会上的精神面貌,珍爱岁月洗刷后的浓浓真情,让我们一个都不能少地在第四届战友联谊会上再次相聚!
今天,我们分别在不同的家乡,在不同的工作岗位,但是无论人间沧桑如何变幻莫测,彼此会珍惜这份友谊,我们更祝愿战友们在人生的道路上一帆风顺,捷报频传。
为互通信息,保持交流,互勉互励,携手共进,故集此名册。排名不分先后,疏漏之处,待后补正。
第三篇:《制作通讯录》说课稿
《制作通讯录》说课稿
一、说教材分析
首先我谈谈我对这篇教材的分析:
本节课《制作通讯录》是福建教育出版社四年级下册第二课的内容,是基于第一节学习了制作简单表格的知识上的进一步完善。本节课利用网络环境,借助专题学习网站,创设信息化的教与学环境,利用优美、生动的画面,丰富有趣的情境,让学生在亲身的感受中说、做、学的过程,让学生通过问题情境的感受,学习解决问题的方法,形成一定的知识解决模型,并最终解决实际生活问题。本节课的学习既是学生巩固旧知识,也是掌握新知识的过程。
二、说教学目标
根据以上对教材的分析,我确定了三维目标:
1.知识目标:要求学生了解通讯录的一般格式,学会在表格中插入行; 2.能力目标:要求学生掌握通讯录的制作方法
3.情感目标:能激发学生的学习兴趣,培养学生自主探究和合作的精神
三、说教学重难点
通过对三维目标的综合总结,我得出本节课的 重点:插入规则的二维表格,并在单元格中添加数据; 难点:如何在表格中增加一列
四、说教法学法
要达成以上三项教学目标,特别是要突破教学重难点,我在教法的选择上以“激——导——探——放”为主要教学手段,目的是在课堂中通过创设情境激发学习兴趣,借助老帅引导,师生共同探究,大胆放手让学生在具体的实践操作中运用。对于课堂教学中,学生学法的选择是以“探究——合作——交流——运用”。学生通过自主探究,小组协同合作,组内交流、师生反馈评价,最后把所学的知识运用于具体的实践操作中。
五、说教学流程
这节课为了体现学生是学习的主体,以学生的学为立足点,教师的教为辅助点,我设计了以下的教学环节:
第一个环节
(一)情境创设 引入新课
1、课伊始,课件出示一段视频
内容为:一位同学回家准备做作业,却忘记作业内容,天又下起大雨,他想给同学打电话询问作业的内容
2、观看结束后,向学生提出一个问题:这位同学要打电话,需要什么呢? 通过这个问题的提出,映出如果有通讯录,就能给通讯录上的同学打电话了 顺势引出这节课的内容—制作通讯录(板书出)
(这个环节的设计意图是通过让学生解决日常生活中遇到的问题来激发学生的学习兴趣,兴趣是最好的老师,它是学生主动学习、积极思考、大胆质疑、勇于探索的强大动力,所以通过这个环节,让学生自始至终主动参与学习,全身心地投入到学习活动中)
第二个环节
(二)小组合作 探究学习
在这个环节中有三个教学内容,第一个教学内容是 了解通讯录的一般格式并根据格式制作一张简单的通讯录
1、师:同学们,你们平常都从哪些地方可以看到通讯录呢 手机上的通讯录,以及各种纸质通讯录
2、课件展示一张简单的通讯录
设疑:同学们,这张通讯录有哪些部分呢? 让学生尝试着说一说通讯录的组成部分
在学生初步了解后,布置让大家制作一张自己组内成员的通讯录的任务
3、在任务中巡视指导学习较困难的小组
4、学生在初步尝试后,指名一组完成较好的小组长,上台操作
(这部分教学内容的设计思路:通过让学生自己动脑思考,动手尝试,调动学生参与教学的积极性,发挥学生自主探究的能动性,使课堂教学焕发出生机)
第二个教学内容是: 在表格中增加一列
1、给学生设疑:如何在通讯录中增加一列QQ号
然后向学生提供一份学习帮助材料,材料中是通过“表格和边框”工具插入一列的方法,让学生仔细阅读这份材料,与小组成员合作,在电脑完成增加一列,并填上QQ号码
学习帮助材料
增加一列的方法:
1、单击工具栏上的“表格和边框”按钮,会弹出一个表格和方框的工具栏。
2、将鼠标移动到要增加一列的位置,当鼠标变成一个铅笔形状时,按住鼠标左键,自上而下画一条线,这样就增加一列了
2、在任务中巡视指导学习较困难的小组
3、交流反馈 总结方法
学生在初步尝试后,指名一组完成较好的小组长,上台操作,要求边讲解边演示,根据学生的讲解,板书出: 插入一列的方法:
“表格与边框” 工具—弹出工具栏—移动至增加列位置—按住鼠标画线(这部分内容设计想法是:让学生学习外在的理论知识,并通过尝试操作转化成内在的技能,培养学生从获取信息到处理信息的能力。给学生提供自主学习的空间。发挥学生学习的主动性,培养学生的自主学习能力,让学生成为学习的主人)②总结这一种插入列的方法后,让学生尝试“增加一列”的其他方法: 如:选中一列,单击鼠标右键,在弹出的功能中选择增加一列项
(这部分内容设计意图:鼓励创新,开发学生发散思维,充分开发学生个体的潜能,使学生的各种潜能得到优化和发展,从而不断提高学生个体各种素质水平,促进学生身心全面和谐发展)
第三个教学内容是: 手动调整列宽的教学
1、设疑:
师:同学们,通讯录我们做完了,但是是不是看上去不大整齐美观呢? 那我们要怎么调整呢?请同学们自己去尝试下
2、老师提醒学生注意要点,移动鼠标到边框线时当光标变成什么形状时才可以调整宽度,巡视指导学习较困难的小组
3、学生在初步尝试后,老师指名一组完成较好的小组长,上台操作,要求边讲解边演示
第三个环节
(三)深化运用 拓展延伸
1、布置任务:制作一张好友通讯录
2、每个学生在自己的电脑上进行练习,完成后汇报小组长,小组长负责检查小组成员全部完成情况,对优秀作品给予奖励
3、转播学生的作品,指名个别同学上台边讲解,边操作
(这部分内容设计思路:学生通过小组的任务驱使法,让学生能较好地完成教师预设的教学目标,又突破了教学重难点。)
4、师生共同评价
第四个环节
(四)总结:
整节课通过循序渐进的方式一步步地练习,既完成信息技术课的主要任务、目标,又实现了信息技术学科与其他学科的有机整合,不但培养了学生合作意识,而且鼓励创新,开发了学生的发散性思维
第四篇:第9课 制作通讯录 教学设计
第9课 制作通讯录 教学设计
1教学目标
知识目标:了解表格的基本构成和表格在生活中的作用;
技能目标:掌握通过菜单方式制作基本的表格,通过班级通讯录的制作、编辑表格的方法,培养学生的动手操作能力;
情感目标:通过对名片信息的分析培养学生的信息搜集和整理能力。2学情分析
制作通讯录是小学四年级的授课内容;学生的鼠标使用、汉字输入、操作系统作用等计算机基本操作技能有了一定的基础,具备了初步的信息技术素养;从学生的年龄特征来看,四年级的学生求知欲强,对探索新知具有浓厚的兴趣。3重点难点
重点:认识表格的行、列和单元格。
难点:规则的表格的插入,表格中文本式的设置。4教学过程
活动1【导入】
一、游戏导入
师:今天上课前老师给同学们带来了一个小游戏,请同学们看屏幕。
师:这么多文字同学们看了有点混淆,现在我再给同学们一个材料,以表格的形式呈现。现在同学们知道了小赵的右边是谁吗?小王的右边是谁?
师:两份材料,哪一份更容易看懂,当然是第二份表格材料。表格可以将很复杂的文字内容变得井井有条。今天我们就一起来探索表格的奥秘。(揭题)活动2【活动】
二、认识表格
师:在生活中经常看到很多表格。比如:
师:在生活中你还看到过哪些信息用表格来呈现的?
师:之所以表格有这么多优点,刘老师将学校的老师信息也做成了一个表格。师:这个表格和前面同学们看到的表格有什么样共同的特点?想一想?
师:每个表格的行与列的信息都是有关联的。这个列由同一类组成,列叫表格的列。而行是由一个人的信息组成,行叫表格的行。那么这个表格有几列、几行。活动3【活动】
三、自主探究
师:如果你要将你要将班里的同学信息用表格的形式做成一个通讯录,先要考虑什么? 师:请同学们打开任务一,将括号里填写完整。
师:打开书本25页,根据书本上的方法,试着插入一个表格。师:请同学说一说你是怎么样填的,师板书。注意:插入先要将光标定位。
师:同学们真棒,在WORD中能建立表格了。
师:同学们桌面上“407班通讯录集”。上面有我们班同学的姓名、电话、地址、QQ号码。那你能不能将我们班的名片上的信息用表格形式呈现呢? 师:制作通讯录前,我们先看任务二里的要求。
师:现在我们请同学来汇报一下自己的通讯录是怎么样的。
师:那么今天这节课我们就通过WORD中的表格功能制作一份“好友通讯录”。活动4【活动】
四、精益求精,美化表格
师:我看有的同学的通讯录中已经有很多朋友的名单了,但是你觉得你的通讯录还缺少了些什么吗? 师:同学们想得非常周到仔细,要是我们能给通讯录添上背景那这个通讯录就更加漂亮了(展示范例),怎么添加呢,大家到帮助文件中去寻找吧,等一下我们来比一下谁的通讯录的最漂亮了。
师:示范表格插入行、列,删除行、列 师:给予学生适当的提示(教师简单演示)活动5【活动】
五、展示作品,评价交流
师:我看很多同学都做好自己的通讯录,而且有的同学已经等不及想把自己的作品给其它同学欣赏了,好,接下来我们来欣赏几位同学的作品。师:你觉得这位同学的作品怎么样“ 活动6【活动】
六、小结
师:马上要下课了,我们再来回忆一下这节课你学会了什么?
师:对,这节课我们通过制作小小通讯录学会了在WORD中怎样插入一个表格,其实在我们日常生活中除了通讯录,还有很多表格,像我们一开始提到过的课程表等等,因为表格能让我们的信息变得更加有条理。
第五篇:制作通讯录
浙江大学城市学院实验报告
课程名称
数据结构
实验项目名称
实验三
线性表的应用---通讯录管理系统的设计与实现
实验成绩
指导老师(签名)
日期
一.实验目的和要求
1、掌握线性表的顺序存储结构;
2、掌握线性表的动态分配顺序存储结构及基本操作的实现;
3、掌握线性表的链式存储结构;
4、掌握单链表的基本操作的实现。
5、掌握线性表的应用。
二.实验内容
1、设计并实现日常生活中通讯录的管理系统。该系统需3位同学一组,按模块分工协作完成,系统具体功能需求描述如下:
① 输入数据建立通讯录表:在系统使用前先需要创建通讯录,可以一次输入(或文件导入)多个成员的通讯录信息,建立通讯录。要求此表为顺序存储结构。② 查看所有通讯录信息:显示通讯录表中所有成员的通讯录信息。
③ 查询通讯录中满足要求的信息:可以根据不同方式查询,如按姓名查询、按姓氏查询、按编号查询等。
④ 新增通讯录信息:每次可添加一个新成员的通讯录信息。⑤ 修改通讯录信息:修改通讯录中已有成员的信息。
⑥ 删除通讯录成员:删除通讯录表中已有的成员,但需要把删除的成员信息放到另一张被删成员表中,以便错误操作后允许恢复。该被删成员表要求采用链式存储。
⑦恢复被删成员信息:一旦发现误删,则可以在被删成员表中找到该成员,重新加入到通讯录表中。
系统实现要求:
① 通讯录表必须使用动态分配顺序存储结构,被删成员表必须使用链式存储结构。
②通讯录信息至少包括:编号、姓名、电话
1、电话
2、邮箱、......等,其他可自行设置。
③用菜单方式选择相应功能,且各功能的有关操作需通过调用各函数来实现,如:初始化通讯录表用函数void InitAddressBook(SqList &TXL)、浏览所有通讯录成员函数 BrowseAddressBook(SqList TSL)等等,这些操作因针对通讯录原始表,属于顺序结构,故可将这些子函数放在头文件test3_Seq.h中。针对被删成员表的操作,由于是链式存储结构,故针对此表的相关操作课定义在test3_link.h中。
③ 建立主函数文件test3.cpp,通过调用上述头文件中的函数来实现该系统。④ 给出系统数据类型的定义、存储结构定义以及各个函数之间的调用关系。⑤ 实验内容中设置的功能要求必须实现,此外可自行增加合适的功能,可作为额外的实验成绩进行加分: 例如:
通讯录和被删成员数据可用文件保存,程序运行时可从文件读入相应数据,程序结束时可写入文件保存。
通讯录分组,可自行考虑把通讯录成员进行分组,如同学组、亲戚组、同事组等。
2、以小组为单位认真填写实验报告,实验报告必须包括各类数据类型的结构定义说明,各类数据的组织方式,系统的功能结构,各个操作的定义以及实现方法,运行结果与分析,难点如何解决,存在问题以及可改进之处等。同时,在实验报告中需写明小组每位同学的分工,得分(小组总分不超过12分)等。实验报告文件取名为report3.doc。每组还必须制作一个答辩PPT,该PPT的命名为PPT_通讯录管理系统_(各小组成员名字).PPT。
3、每位组长上传实验报告文件report3.doc、源程序文件test3.cpp及test3_Seq.h、test3_Link.h,以及答辩PPT压缩打包后到BB平台上。
难点与解决:
1.实参形参的传递,链表中指针的指向,通过看书多调试几次就能解决
2.在程序执行switch语句时,输入一个数后,执行后,程序直接退出。switch语句的输入项,非法,导致的程序直接退出。解决的方法,可用while语句先限制流入switch语句的非法输入项,从而解决输入项非法的问题。其他输入数字选择时,亦可用此方法解决
问题:
1.无法在机房的电脑运行
2.每次编译前都需将.cpp、.h、.dev以外的文件全部删除才行,否则即使故意打错几行代码也能成功编译,删除后编译出现
[Warning] non-static data member initializers only available with-std=c++11 or-std=gnu++11 [enabled by default] 3.txt文件的读取写入,参考了网上的和上课讲的,一次是进行动态内存分配的语句无法编译,一次是找不到文件,最后决定不做这个功能了。改进
1.增加读取保存功能,增加查询方式如按电话查找 2.编号是根据当前长度自动编号,虽然可以直接反应记录的数量使得编写程序时比较方便,但也使得无法每个人对应一个编号,也使得按编号查找如同摆设
功能模块结构图:
函数调用结构图:
运行结果与分析:
程序运行后得到开始菜单,结果如下图所示
开始菜单中包括创建通讯录、显示所有记录、查询记录、添加记录,返回本菜单以及推出程序,人们可以输入想要选择的模块进行程序的进一步运行。输入1,创建通讯录,结果下图所示:
输入2,显示所有记录,结果下图所示:
输入3,查询记录,结果下图所示:
两种查找方式;
输入4,增添记录,结果如下图所示:
输入5,修改记录,结果如下图所示:
两种方式,先查找再修改
输入6,删除记录,结果如下图所示:
两种方式,先查找再删除 输入7进入恢复菜单,结果如下图所示:
选择恢复方式
程序清单
test3.cpp #include
#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“menu.h” #include“test3_seq.h” #include“test3_link.h” 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;menu.h 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_Seq.h int Create(struct Sqlist &L,FILE * &fp)//创建通讯录
{ system(“cls”);//清屏
int i,n,s=0;char k;
printf(“你所想创建通讯录个数(<=100):”);scanf(“%d”,&L.length);
L.elem=(struct txl*)malloc(L.listsize*sizeof(struct txl));//存储分配
if(!L.elem)//分配失败
{
exit(OVERFLOW);
}
for(i=0;i L.elem[i].num=i+1; printf(“编号为%d”,L.elem[i].num);//第i条记录的编号为i printf(“请输入姓名:”); scanf(“%s”,L.elem[i].name); printf(“请输入电话1:”); scanf(“%s”,L.elem[i].tel1); printf(“请输入电话2:”); scanf(“%s”,L.elem[i].tel2); printf(“请输入电子邮箱:”); scanf(“%s”,L.elem[i].mail); printf(“请输入家庭地址:”); scanf(“%s”,L.elem[i].add); } printf(“输入 0:退出, 输入8:返回菜单 请输入您的选择: ”); } int ListTraverse(struct Sqlist &L){//显示所有信息 system(“cls”);//清屏 int i;for(i=0;i printf(“编号:%d ”,L.elem[i].num); printf(“姓名:%s ”,L.elem[i].name); printf(“电话1:%s ”,L.elem[i].tel1); printf(“电话2: %s ”,L.elem[i].tel2); printf(“电子邮箱: %s ”,L.elem[i].mail); printf(“家庭地址: %sn”,L.elem[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,L.elem[i].name)==0)//姓名相同时 { n=L.elem[i]; printf(“编号:%d ”,L.elem[i].num); printf(“名字:%s ”,L.elem[i].name); printf(“电话1:%s ”,L.elem[i].tel1); printf(“电话2: %s ”,L.elem[i].tel2); printf(“电子邮箱: %s ”,L.elem[i].mail); printf(“家庭地址: %sn”,L.elem[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>=L.length)//没有该编号时 { printf(“没有这个记录n”); } for(i=0;i { if(num1==L.elem[i].num)//编号相同时 { n=L.elem[i]; printf(“编号:%d ”,L.elem[i].num); printf(“名字:%s ”,L.elem[i].name); printf(“电话1:%s ”,L.elem[i].tel1); printf(“电话2: %s ”,L.elem[i].tel2); printf(“电子邮箱: %s ”,L.elem[i].mail); printf(“家庭地址: %sn”,L.elem[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,L.elem[i].name)==0)//姓名相同时 { n=L.elem[i]; printf(“编号:%d ”,L.elem[i].num); printf(“名字:%s ”,L.elem[i].name); printf(“电话1:%s ”,L.elem[i].tel1); printf(“电话2: %s ”,L.elem[i].tel2); printf(“电子邮箱: %s ”,L.elem[i].mail); printf(“家庭地址: %sn”,L.elem[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>=L.length)//没有该编号时 { printf(“没有这个记录n”); } for(i=0;i { if(num1==L.elem[i].num)//编号相同时 { n=L.elem[i]; printf(“编号:%d ”,L.elem[i].num); printf(“名字:%s ”,L.elem[i].name); printf(“电话1:%s ”,L.elem[i].tel1); printf(“电话2: %s ”,L.elem[i].tel2); printf(“电子邮箱: %s ”,L.elem[i].mail); printf(“家庭地址: %sn”,L.elem[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(L.length>=L.listsize)////当前存储空间已满,增加分配 { newbase=(struct txl*)realloc(L.elem,(L.listsize+10)*sizeof(struct txl)); if(!newbase)//存储分配失败 { exit(OVERFLOW); } L.elem=newbase;} printf(“请输入新成员的信息:”);printf(“这是第%d位”,L.length+1);//添加到最后 L.elem[L.length].num=L.length+1; printf(“请输入姓名:”); scanf(“%s”,L.elem[L.length].name); printf(“请输入电话1:”); scanf(“%s”,L.elem[L.length].tel1); printf(“请输入电话2:”); scanf(“%s”,L.elem[L.length].tel2); printf(“请输入电子邮箱:”); { scanf(“%s”,L.elem[L.length].mail); } printf(“请输入家庭地址:”); { scanf(“%s”,L.elem[L.length].add); } L.length++;//长度增加 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) { gai.num=n.num; printf(“请修改姓名:”); scanf(“%s”,gai.name); printf(“请修改电话1:”); scanf(“%s”,gai.tel1); printf(“请修改电话2:”); scanf(“%s”,gai.tel2); printf(“请修改电子邮箱:”); scanf(“%s”,gai.mail); printf(“请修改家庭地址:”); scanf(“%s”,gai.add); L.elem[n.num-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_link.h 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->data.num=j;//为删除的记录编号 p->next=head->next; head->next=p; q=head->next; for(i=n.num;i { L.elem[i-1]=L.elem[i]; L.elem[i-1].num=i;//编号 } L.length--; 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->data.num); printf(“名字:%s ”,q->data.name); printf(“电话1:%s ”,q->data.tel1); printf(“电话2: %s ”,q->data.tel2); printf(“电子邮箱: %s ”,q->data.mail); printf(“家庭地址: %sn”,q->data.add); q=q->next;} if(n==1){ printf(“请输入所要恢复的编号n”);scanf(“%d”,&number);while(p!=NULL){ if(p->next->data.num==number) { L.elem[L.length]=p->next->data;//添加到末尾 L.elem[L.length].num=L.length+1;//编号 p->next=p->next->next;//将该记录从链表中删除 L.length++; 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->data.name,name1)==0) { L.elem[L.length]=p->next->data;//添加到末尾 L.elem[L.length].num=L.length+1;//编号 p->next=p->next->next;//将该记录从链表中删除 L.length++; 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:返回菜单 请输入您的选择: ”);