第一篇:戰友通訊錄設計制作
戰友通訊錄制作
準備工作
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【導入】
一、游戲導入
師:今天上課前老師給同學們帶來了一個小游戲,請同學們看屏幕。
師:這么多文字同學們看了有點混淆,現在我再給同學們一個材料,以表格的形式呈現?,F在同學們知道了小趙的右邊是誰嗎?小王的右邊是誰?
師:兩份材料,哪一份更容易看懂,當然是第二份表格材料。表格可以將很復雜的文字內容變得井井有條。今天我們就一起來探索表格的奧秘。(揭題)活動2【活動】
二、認識表格
師:在生活中經??吹胶芏啾砀瘛1热纾?/p>
師:在生活中你還看到過哪些信息用表格來呈現的?
師:之所以表格有這么多優點,劉老師將學校的老師信息也做成了一個表格。師:這個表格和前面同學們看到的表格有什么樣共同的特點?想一想?
師:每個表格的行與列的信息都是有關聯的。這個列由同一類組成,列叫表格的列。而行是由一個人的信息組成,行叫表格的行。那么這個表格有幾列、幾行。活動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:返回菜單 請輸入您的選擇: ”);