第一篇:戰(zhàn)友通訊錄設(shè)計(jì)制作
戰(zhàn)友通訊錄制作
準(zhǔn)備工作
1.2.3.4.收集戰(zhàn)友的照片 戰(zhàn)友聯(lián)系方式 戰(zhàn)友近況 曾經(jīng)的合影
開始設(shè)計(jì)
基本的設(shè)計(jì)風(fēng)格展示(這里以945diy個性印品制作的戰(zhàn)友通訊路為例子)
設(shè)計(jì)完成后教給專門的公司印刷制作即可,一般需要3天的時間制作
第二篇:戰(zhàn)友通訊錄前言前言
序言
2014年1月1日,守備一師戰(zhàn)友100余人,時隔6年后重聚在靜海太亨酒樓,隆重舉行第三屆戰(zhàn)友聯(lián)誼會。昔日的戰(zhàn)友們歡聚一堂,敞開心扉,憶崢嶸歲月,談別后情思,享純真情誼。會上,戰(zhàn)友們激情發(fā)言,敘說部隊(duì)情結(jié)與離別情懷,踴躍獻(xiàn)藝,盡展精彩,表達(dá)心跡,正所謂“品味社會人生,感慨歲月留痕”!
本次聚會,得到了戰(zhàn)友們的高度重視。大家傳真情,有的積極相應(yīng),百里赴約;有的踴躍資助,慷慨解囊。借此機(jī)會,籌備組對全體與會戰(zhàn)友的大力支持和無私贊助表示衷心感謝!
人生苦短,歲月情長。倏忽之間,當(dāng)年十七、八歲的帥小伙已是滿頭華發(fā)。在這里,我們希望各位戰(zhàn)友:發(fā)揚(yáng)35年前的革命精神,保持35年前的健康體魄,保持聯(lián)誼會上的精神面貌,珍愛歲月洗刷后的濃濃真情,讓我們一個都不能少地在第四屆戰(zhàn)友聯(lián)誼會上再次相聚!
今天,我們分別在不同的家鄉(xiāng),在不同的工作崗位,但是無論人間滄桑如何變幻莫測,彼此會珍惜這份友誼,我們更祝愿戰(zhàn)友們在人生的道路上一帆風(fēng)順,捷報頻傳。
為互通信息,保持交流,互勉互勵,攜手共進(jìn),故集此名冊。排名不分先后,疏漏之處,待后補(bǔ)正。
第三篇:《制作通訊錄》說課稿
《制作通訊錄》說課稿
一、說教材分析
首先我談?wù)勎覍@篇教材的分析:
本節(jié)課《制作通訊錄》是福建教育出版社四年級下冊第二課的內(nèi)容,是基于第一節(jié)學(xué)習(xí)了制作簡單表格的知識上的進(jìn)一步完善。本節(jié)課利用網(wǎng)絡(luò)環(huán)境,借助專題學(xué)習(xí)網(wǎng)站,創(chuàng)設(shè)信息化的教與學(xué)環(huán)境,利用優(yōu)美、生動的畫面,豐富有趣的情境,讓學(xué)生在親身的感受中說、做、學(xué)的過程,讓學(xué)生通過問題情境的感受,學(xué)習(xí)解決問題的方法,形成一定的知識解決模型,并最終解決實(shí)際生活問題。本節(jié)課的學(xué)習(xí)既是學(xué)生鞏固舊知識,也是掌握新知識的過程。
二、說教學(xué)目標(biāo)
根據(jù)以上對教材的分析,我確定了三維目標(biāo):
1.知識目標(biāo):要求學(xué)生了解通訊錄的一般格式,學(xué)會在表格中插入行; 2.能力目標(biāo):要求學(xué)生掌握通訊錄的制作方法
3.情感目標(biāo):能激發(fā)學(xué)生的學(xué)習(xí)興趣,培養(yǎng)學(xué)生自主探究和合作的精神
三、說教學(xué)重難點(diǎn)
通過對三維目標(biāo)的綜合總結(jié),我得出本節(jié)課的 重點(diǎn):插入規(guī)則的二維表格,并在單元格中添加數(shù)據(jù); 難點(diǎn):如何在表格中增加一列
四、說教法學(xué)法
要達(dá)成以上三項(xiàng)教學(xué)目標(biāo),特別是要突破教學(xué)重難點(diǎn),我在教法的選擇上以“激——導(dǎo)——探——放”為主要教學(xué)手段,目的是在課堂中通過創(chuàng)設(shè)情境激發(fā)學(xué)習(xí)興趣,借助老帥引導(dǎo),師生共同探究,大膽放手讓學(xué)生在具體的實(shí)踐操作中運(yùn)用。對于課堂教學(xué)中,學(xué)生學(xué)法的選擇是以“探究——合作——交流——運(yùn)用”。學(xué)生通過自主探究,小組協(xié)同合作,組內(nèi)交流、師生反饋評價,最后把所學(xué)的知識運(yùn)用于具體的實(shí)踐操作中。
五、說教學(xué)流程
這節(jié)課為了體現(xiàn)學(xué)生是學(xué)習(xí)的主體,以學(xué)生的學(xué)為立足點(diǎn),教師的教為輔助點(diǎn),我設(shè)計(jì)了以下的教學(xué)環(huán)節(jié):
第一個環(huán)節(jié)
(一)情境創(chuàng)設(shè) 引入新課
1、課伊始,課件出示一段視頻
內(nèi)容為:一位同學(xué)回家準(zhǔn)備做作業(yè),卻忘記作業(yè)內(nèi)容,天又下起大雨,他想給同學(xué)打電話詢問作業(yè)的內(nèi)容
2、觀看結(jié)束后,向?qū)W生提出一個問題:這位同學(xué)要打電話,需要什么呢? 通過這個問題的提出,映出如果有通訊錄,就能給通訊錄上的同學(xué)打電話了 順勢引出這節(jié)課的內(nèi)容—制作通訊錄(板書出)
(這個環(huán)節(jié)的設(shè)計(jì)意圖是通過讓學(xué)生解決日常生活中遇到的問題來激發(fā)學(xué)生的學(xué)習(xí)興趣,興趣是最好的老師,它是學(xué)生主動學(xué)習(xí)、積極思考、大膽質(zhì)疑、勇于探索的強(qiáng)大動力,所以通過這個環(huán)節(jié),讓學(xué)生自始至終主動參與學(xué)習(xí),全身心地投入到學(xué)習(xí)活動中)
第二個環(huán)節(jié)
(二)小組合作 探究學(xué)習(xí)
在這個環(huán)節(jié)中有三個教學(xué)內(nèi)容,第一個教學(xué)內(nèi)容是 了解通訊錄的一般格式并根據(jù)格式制作一張簡單的通訊錄
1、師:同學(xué)們,你們平常都從哪些地方可以看到通訊錄呢 手機(jī)上的通訊錄,以及各種紙質(zhì)通訊錄
2、課件展示一張簡單的通訊錄
設(shè)疑:同學(xué)們,這張通訊錄有哪些部分呢? 讓學(xué)生嘗試著說一說通訊錄的組成部分
在學(xué)生初步了解后,布置讓大家制作一張自己組內(nèi)成員的通訊錄的任務(wù)
3、在任務(wù)中巡視指導(dǎo)學(xué)習(xí)較困難的小組
4、學(xué)生在初步嘗試后,指名一組完成較好的小組長,上臺操作
(這部分教學(xué)內(nèi)容的設(shè)計(jì)思路:通過讓學(xué)生自己動腦思考,動手嘗試,調(diào)動學(xué)生參與教學(xué)的積極性,發(fā)揮學(xué)生自主探究的能動性,使課堂教學(xué)煥發(fā)出生機(jī))
第二個教學(xué)內(nèi)容是: 在表格中增加一列
1、給學(xué)生設(shè)疑:如何在通訊錄中增加一列QQ號
然后向?qū)W生提供一份學(xué)習(xí)幫助材料,材料中是通過“表格和邊框”工具插入一列的方法,讓學(xué)生仔細(xì)閱讀這份材料,與小組成員合作,在電腦完成增加一列,并填上QQ號碼
學(xué)習(xí)幫助材料
增加一列的方法:
1、單擊工具欄上的“表格和邊框”按鈕,會彈出一個表格和方框的工具欄。
2、將鼠標(biāo)移動到要增加一列的位置,當(dāng)鼠標(biāo)變成一個鉛筆形狀時,按住鼠標(biāo)左鍵,自上而下畫一條線,這樣就增加一列了
2、在任務(wù)中巡視指導(dǎo)學(xué)習(xí)較困難的小組
3、交流反饋 總結(jié)方法
學(xué)生在初步嘗試后,指名一組完成較好的小組長,上臺操作,要求邊講解邊演示,根據(jù)學(xué)生的講解,板書出: 插入一列的方法:
“表格與邊框” 工具—彈出工具欄—移動至增加列位置—按住鼠標(biāo)畫線(這部分內(nèi)容設(shè)計(jì)想法是:讓學(xué)生學(xué)習(xí)外在的理論知識,并通過嘗試操作轉(zhuǎn)化成內(nèi)在的技能,培養(yǎng)學(xué)生從獲取信息到處理信息的能力。給學(xué)生提供自主學(xué)習(xí)的空間。發(fā)揮學(xué)生學(xué)習(xí)的主動性,培養(yǎng)學(xué)生的自主學(xué)習(xí)能力,讓學(xué)生成為學(xué)習(xí)的主人)②總結(jié)這一種插入列的方法后,讓學(xué)生嘗試“增加一列”的其他方法: 如:選中一列,單擊鼠標(biāo)右鍵,在彈出的功能中選擇增加一列項(xiàng)
(這部分內(nèi)容設(shè)計(jì)意圖:鼓勵創(chuàng)新,開發(fā)學(xué)生發(fā)散思維,充分開發(fā)學(xué)生個體的潛能,使學(xué)生的各種潛能得到優(yōu)化和發(fā)展,從而不斷提高學(xué)生個體各種素質(zhì)水平,促進(jìn)學(xué)生身心全面和諧發(fā)展)
第三個教學(xué)內(nèi)容是: 手動調(diào)整列寬的教學(xué)
1、設(shè)疑:
師:同學(xué)們,通訊錄我們做完了,但是是不是看上去不大整齊美觀呢? 那我們要怎么調(diào)整呢?請同學(xué)們自己去嘗試下
2、老師提醒學(xué)生注意要點(diǎn),移動鼠標(biāo)到邊框線時當(dāng)光標(biāo)變成什么形狀時才可以調(diào)整寬度,巡視指導(dǎo)學(xué)習(xí)較困難的小組
3、學(xué)生在初步嘗試后,老師指名一組完成較好的小組長,上臺操作,要求邊講解邊演示
第三個環(huán)節(jié)
(三)深化運(yùn)用 拓展延伸
1、布置任務(wù):制作一張好友通訊錄
2、每個學(xué)生在自己的電腦上進(jìn)行練習(xí),完成后匯報小組長,小組長負(fù)責(zé)檢查小組成員全部完成情況,對優(yōu)秀作品給予獎勵
3、轉(zhuǎn)播學(xué)生的作品,指名個別同學(xué)上臺邊講解,邊操作
(這部分內(nèi)容設(shè)計(jì)思路:學(xué)生通過小組的任務(wù)驅(qū)使法,讓學(xué)生能較好地完成教師預(yù)設(shè)的教學(xué)目標(biāo),又突破了教學(xué)重難點(diǎn)。)
4、師生共同評價
第四個環(huán)節(jié)
(四)總結(jié):
整節(jié)課通過循序漸進(jìn)的方式一步步地練習(xí),既完成信息技術(shù)課的主要任務(wù)、目標(biāo),又實(shí)現(xiàn)了信息技術(shù)學(xué)科與其他學(xué)科的有機(jī)整合,不但培養(yǎng)了學(xué)生合作意識,而且鼓勵創(chuàng)新,開發(fā)了學(xué)生的發(fā)散性思維
第四篇:第9課 制作通訊錄 教學(xué)設(shè)計(jì)
第9課 制作通訊錄 教學(xué)設(shè)計(jì)
1教學(xué)目標(biāo)
知識目標(biāo):了解表格的基本構(gòu)成和表格在生活中的作用;
技能目標(biāo):掌握通過菜單方式制作基本的表格,通過班級通訊錄的制作、編輯表格的方法,培養(yǎng)學(xué)生的動手操作能力;
情感目標(biāo):通過對名片信息的分析培養(yǎng)學(xué)生的信息搜集和整理能力。2學(xué)情分析
制作通訊錄是小學(xué)四年級的授課內(nèi)容;學(xué)生的鼠標(biāo)使用、漢字輸入、操作系統(tǒng)作用等計(jì)算機(jī)基本操作技能有了一定的基礎(chǔ),具備了初步的信息技術(shù)素養(yǎng);從學(xué)生的年齡特征來看,四年級的學(xué)生求知欲強(qiáng),對探索新知具有濃厚的興趣。3重點(diǎn)難點(diǎn)
重點(diǎn):認(rèn)識表格的行、列和單元格。
難點(diǎn):規(guī)則的表格的插入,表格中文本式的設(shè)置。4教學(xué)過程
活動1【導(dǎo)入】
一、游戲?qū)?/p>
師:今天上課前老師給同學(xué)們帶來了一個小游戲,請同學(xué)們看屏幕。
師:這么多文字同學(xué)們看了有點(diǎn)混淆,現(xiàn)在我再給同學(xué)們一個材料,以表格的形式呈現(xiàn)?,F(xiàn)在同學(xué)們知道了小趙的右邊是誰嗎?小王的右邊是誰?
師:兩份材料,哪一份更容易看懂,當(dāng)然是第二份表格材料。表格可以將很復(fù)雜的文字內(nèi)容變得井井有條。今天我們就一起來探索表格的奧秘。(揭題)活動2【活動】
二、認(rèn)識表格
師:在生活中經(jīng)??吹胶芏啾砀?。比如:
師:在生活中你還看到過哪些信息用表格來呈現(xiàn)的?
師:之所以表格有這么多優(yōu)點(diǎn),劉老師將學(xué)校的老師信息也做成了一個表格。師:這個表格和前面同學(xué)們看到的表格有什么樣共同的特點(diǎn)?想一想?
師:每個表格的行與列的信息都是有關(guān)聯(lián)的。這個列由同一類組成,列叫表格的列。而行是由一個人的信息組成,行叫表格的行。那么這個表格有幾列、幾行。活動3【活動】
三、自主探究
師:如果你要將你要將班里的同學(xué)信息用表格的形式做成一個通訊錄,先要考慮什么? 師:請同學(xué)們打開任務(wù)一,將括號里填寫完整。
師:打開書本25頁,根據(jù)書本上的方法,試著插入一個表格。師:請同學(xué)說一說你是怎么樣填的,師板書。注意:插入先要將光標(biāo)定位。
師:同學(xué)們真棒,在WORD中能建立表格了。
師:同學(xué)們桌面上“407班通訊錄集”。上面有我們班同學(xué)的姓名、電話、地址、QQ號碼。那你能不能將我們班的名片上的信息用表格形式呈現(xiàn)呢? 師:制作通訊錄前,我們先看任務(wù)二里的要求。
師:現(xiàn)在我們請同學(xué)來匯報一下自己的通訊錄是怎么樣的。
師:那么今天這節(jié)課我們就通過WORD中的表格功能制作一份“好友通訊錄”。活動4【活動】
四、精益求精,美化表格
師:我看有的同學(xué)的通訊錄中已經(jīng)有很多朋友的名單了,但是你覺得你的通訊錄還缺少了些什么嗎? 師:同學(xué)們想得非常周到仔細(xì),要是我們能給通訊錄添上背景那這個通訊錄就更加漂亮了(展示范例),怎么添加呢,大家到幫助文件中去尋找吧,等一下我們來比一下誰的通訊錄的最漂亮了。
師:示范表格插入行、列,刪除行、列 師:給予學(xué)生適當(dāng)?shù)奶崾荆ń處熀唵窝菔荆┗顒?【活動】
五、展示作品,評價交流
師:我看很多同學(xué)都做好自己的通訊錄,而且有的同學(xué)已經(jīng)等不及想把自己的作品給其它同學(xué)欣賞了,好,接下來我們來欣賞幾位同學(xué)的作品。師:你覺得這位同學(xué)的作品怎么樣“ 活動6【活動】
六、小結(jié)
師:馬上要下課了,我們再來回憶一下這節(jié)課你學(xué)會了什么?
師:對,這節(jié)課我們通過制作小小通訊錄學(xué)會了在WORD中怎樣插入一個表格,其實(shí)在我們?nèi)粘I钪谐送ㄓ嶄?,還有很多表格,像我們一開始提到過的課程表等等,因?yàn)楸砀衲茏屛覀兊男畔⒆兊酶佑袟l理。
第五篇:制作通訊錄
浙江大學(xué)城市學(xué)院實(shí)驗(yàn)報告
課程名稱
數(shù)據(jù)結(jié)構(gòu)
實(shí)驗(yàn)項(xiàng)目名稱
實(shí)驗(yàn)三
線性表的應(yīng)用---通訊錄管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
實(shí)驗(yàn)成績
指導(dǎo)老師(簽名)
日期
一.實(shí)驗(yàn)?zāi)康暮鸵?/p>
1、掌握線性表的順序存儲結(jié)構(gòu);
2、掌握線性表的動態(tài)分配順序存儲結(jié)構(gòu)及基本操作的實(shí)現(xiàn);
3、掌握線性表的鏈?zhǔn)酱鎯Y(jié)構(gòu);
4、掌握單鏈表的基本操作的實(shí)現(xiàn)。
5、掌握線性表的應(yīng)用。
二.實(shí)驗(yàn)內(nèi)容
1、設(shè)計(jì)并實(shí)現(xiàn)日常生活中通訊錄的管理系統(tǒng)。該系統(tǒng)需3位同學(xué)一組,按模塊分工協(xié)作完成,系統(tǒng)具體功能需求描述如下:
① 輸入數(shù)據(jù)建立通訊錄表:在系統(tǒng)使用前先需要創(chuàng)建通訊錄,可以一次輸入(或文件導(dǎo)入)多個成員的通訊錄信息,建立通訊錄。要求此表為順序存儲結(jié)構(gòu)。② 查看所有通訊錄信息:顯示通訊錄表中所有成員的通訊錄信息。
③ 查詢通訊錄中滿足要求的信息:可以根據(jù)不同方式查詢,如按姓名查詢、按姓氏查詢、按編號查詢等。
④ 新增通訊錄信息:每次可添加一個新成員的通訊錄信息。⑤ 修改通訊錄信息:修改通訊錄中已有成員的信息。
⑥ 刪除通訊錄成員:刪除通訊錄表中已有的成員,但需要把刪除的成員信息放到另一張被刪成員表中,以便錯誤操作后允許恢復(fù)。該被刪成員表要求采用鏈?zhǔn)酱鎯Α?/p>
⑦恢復(fù)被刪成員信息:一旦發(fā)現(xiàn)誤刪,則可以在被刪成員表中找到該成員,重新加入到通訊錄表中。
系統(tǒng)實(shí)現(xiàn)要求:
① 通訊錄表必須使用動態(tài)分配順序存儲結(jié)構(gòu),被刪成員表必須使用鏈?zhǔn)酱鎯Y(jié)構(gòu)。
②通訊錄信息至少包括:編號、姓名、電話
1、電話
2、郵箱、......等,其他可自行設(shè)置。
③用菜單方式選擇相應(yīng)功能,且各功能的有關(guān)操作需通過調(diào)用各函數(shù)來實(shí)現(xiàn),如:初始化通訊錄表用函數(shù)void InitAddressBook(SqList &TXL)、瀏覽所有通訊錄成員函數(shù) BrowseAddressBook(SqList TSL)等等,這些操作因針對通訊錄原始表,屬于順序結(jié)構(gòu),故可將這些子函數(shù)放在頭文件test3_Seq.h中。針對被刪成員表的操作,由于是鏈?zhǔn)酱鎯Y(jié)構(gòu),故針對此表的相關(guān)操作課定義在test3_link.h中。
③ 建立主函數(shù)文件test3.cpp,通過調(diào)用上述頭文件中的函數(shù)來實(shí)現(xiàn)該系統(tǒng)。④ 給出系統(tǒng)數(shù)據(jù)類型的定義、存儲結(jié)構(gòu)定義以及各個函數(shù)之間的調(diào)用關(guān)系。⑤ 實(shí)驗(yàn)內(nèi)容中設(shè)置的功能要求必須實(shí)現(xiàn),此外可自行增加合適的功能,可作為額外的實(shí)驗(yàn)成績進(jìn)行加分: 例如:
? 通訊錄和被刪成員數(shù)據(jù)可用文件保存,程序運(yùn)行時可從文件讀入相應(yīng)數(shù)據(jù),程序結(jié)束時可寫入文件保存。
? 通訊錄分組,可自行考慮把通訊錄成員進(jìn)行分組,如同學(xué)組、親戚組、同事組等。
2、以小組為單位認(rèn)真填寫實(shí)驗(yàn)報告,實(shí)驗(yàn)報告必須包括各類數(shù)據(jù)類型的結(jié)構(gòu)定義說明,各類數(shù)據(jù)的組織方式,系統(tǒng)的功能結(jié)構(gòu),各個操作的定義以及實(shí)現(xiàn)方法,運(yùn)行結(jié)果與分析,難點(diǎn)如何解決,存在問題以及可改進(jìn)之處等。同時,在實(shí)驗(yàn)報告中需寫明小組每位同學(xué)的分工,得分(小組總分不超過12分)等。實(shí)驗(yàn)報告文件取名為report3.doc。每組還必須制作一個答辯PPT,該P(yáng)PT的命名為PPT_通訊錄管理系統(tǒng)_(各小組成員名字).PPT。
3、每位組長上傳實(shí)驗(yàn)報告文件report3.doc、源程序文件test3.cpp及test3_Seq.h、test3_Link.h,以及答辯PPT壓縮打包后到BB平臺上。
難點(diǎn)與解決:
1.實(shí)參形參的傳遞,鏈表中指針的指向,通過看書多調(diào)試幾次就能解決
2.在程序執(zhí)行switch語句時,輸入一個數(shù)后,執(zhí)行后,程序直接退出。switch語句的輸入項(xiàng),非法,導(dǎo)致的程序直接退出。解決的方法,可用while語句先限制流入switch語句的非法輸入項(xiàng),從而解決輸入項(xiàng)非法的問題。其他輸入數(shù)字選擇時,亦可用此方法解決
問題:
1.無法在機(jī)房的電腦運(yùn)行
2.每次編譯前都需將.cpp、.h、.dev以外的文件全部刪除才行,否則即使故意打錯幾行代碼也能成功編譯,刪除后編譯出現(xiàn)
[Warning] non-static data member initializers only available with-std=c++11 or-std=gnu++11 [enabled by default] 3.txt文件的讀取寫入,參考了網(wǎng)上的和上課講的,一次是進(jìn)行動態(tài)內(nèi)存分配的語句無法編譯,一次是找不到文件,最后決定不做這個功能了。改進(jìn)
1.增加讀取保存功能,增加查詢方式如按電話查找 2.編號是根據(jù)當(dāng)前長度自動編號,雖然可以直接反應(yīng)記錄的數(shù)量使得編寫程序時比較方便,但也使得無法每個人對應(yīng)一個編號,也使得按編號查找如同擺設(shè)
功能模塊結(jié)構(gòu)圖:
函數(shù)調(diào)用結(jié)構(gòu)圖:
運(yùn)行結(jié)果與分析:
程序運(yùn)行后得到開始菜單,結(jié)果如下圖所示
開始菜單中包括創(chuàng)建通訊錄、顯示所有記錄、查詢記錄、添加記錄,返回本菜單以及推出程序,人們可以輸入想要選擇的模塊進(jìn)行程序的進(jìn)一步運(yùn)行。輸入1,創(chuàng)建通訊錄,結(jié)果下圖所示:
輸入2,顯示所有記錄,結(jié)果下圖所示:
輸入3,查詢記錄,結(jié)果下圖所示:
兩種查找方式;
輸入4,增添記錄,結(jié)果如下圖所示:
輸入5,修改記錄,結(jié)果如下圖所示:
兩種方式,先查找再修改
輸入6,刪除記錄,結(jié)果如下圖所示:
兩種方式,先查找再刪除 輸入7進(jìn)入恢復(fù)菜單,結(jié)果如下圖所示:
選擇恢復(fù)方式
程序清單
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;//當(dāng)前長度
int listsize=100;//當(dāng)前分配的存儲,初始為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為結(jié)構(gòu)體Sqlist
struct txl n1,*n2;struct LNode *head;//頭指針
head=(struct LNode*)malloc(sizeof(struct LNode));head->next=NULL;menu();
while(scanf(“%d”,&n),n)//限制輸入,當(dāng)輸入為int型,且不為0時循環(huán)
} {
switch(n){ case 1: Create(L,fp);k=1;break;//k=1表示已創(chuàng)建通訊錄
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(“請先創(chuàng)建通訊錄!n請重新輸入!n”);} return 0;menu.h void menu(){
//菜單函數(shù)
printf(“n”);printf(“ttt**************************n”);printf(“ttt*
歡迎使用
*n”);printf(“ttt*
通訊錄管理系統(tǒng)
*n”);printf(“ttt**************************n”);printf(“n”);printf(“tt *************************************n”);printf(“tt *
1.創(chuàng)建通訊錄
*n”);printf(“tt *
2.顯示所有記錄
*n”);printf(“tt *
3.查詢記錄
*n”);printf(“tt *
4.添加記錄
*n”);printf(“tt *
5.修改記錄
*n”);printf(“tt *
6.刪除記錄
*n”);printf(“tt *
7.恢復(fù)記錄
*n”);printf(“tt *
8.顯示菜單
*n”);printf(“tt *
0.退出程序
*n”);printf(“tt *************************************nnn”);
} void menu_1(){
//菜單函數(shù)
printf(“n”);printf(“ttt**************************n”);printf(“ttt*
歡迎使用
*n”);printf(“ttt*
通訊錄恢復(fù)系統(tǒng)
*n”);printf(“ttt**************************n”);printf(“n”);printf(“tt *************************************n”);printf(“tt *
1.按編號恢復(fù)
*n”);printf(“tt *
2.按姓名恢復(fù)
*n”);printf(“tt *
0.退出恢復(fù)系統(tǒng)
*n”);printf(“tt *************************************nnn”);
}
test3_Seq.h int Create(struct Sqlist &L,FILE * &fp)//創(chuàng)建通訊錄
{ system(“cls”);//清屏
int i,n,s=0;char k;
printf(“你所想創(chuàng)建通訊錄個數(shù)(<=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){//被其他函數(shù)調(diào)用以查找信息 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)////當(dāng)前存儲空間已滿,增加分配 { 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)){//限制輸入,當(dāng)k成功賦值時循環(huán) if(k!=1&&k!=2) printf(“請輸入1或2!”); else break; } if(k==2) { break;//輸入1修改,輸入2不修改并結(jié)束循環(huán)返回 } 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(“是否繼續(xù)修改?(1=Y/2=N)”); while(scanf(“%d”,&k)){ if(k!=1&&k!=2) printf(“請輸入1或2!”); else break; } if(k1==1)//繼續(xù)循環(huán) { ; } if(k1==2)//跳出循環(huán) { break; } } } printf(“輸入 0:退出, 輸入8:返回菜單 請輸入您的選擇: ”);test3_link.h int Delete(struct Sqlist &L,struct LNode* &head)//刪除通訊錄并保存到鏈表 { system(“cls”);static int j=1;//當(dāng)前編號 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不刪除并結(jié)束循環(huán)返回 while(scanf(“%d”,&k)){ if(k!=1&&k!=2) printf(“請輸入1或2!”); else break; } if(k==1) { p->data=n;//將 Search_1函數(shù)所找到的數(shù)據(jù)賦值給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;//指向第一個節(jié)點(diǎn) p=head;//指向頭指針 menu_1();//顯示恢復(fù)菜單 while(scanf(“%d”,&n),n)//限制輸入,當(dāng)輸入為int型,且不為0時循環(huán) { printf(“請問要恢復(fù)哪個成員?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(“請輸入所要恢復(fù)的編號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(“恢復(fù)成功!n”); a=1;//標(biāo)記有此記錄,并已恢復(fù) break; } p=p->next;} if(a==0)printf(“沒有該編號n”); break; } if(n==2){ printf(“請輸入所要恢復(fù)的姓名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(“恢復(fù)成功!n”); a=1;//標(biāo)記有此記錄,并已恢復(fù) break; } p=p->next;} } if(a==0) printf(“沒有該姓名n”); break;} if(n!=1&&n!=2&&n!=0){ printf(“請輸入0-2!n”); } } printf(“輸入 0:退出, 輸入8:返回菜單 請輸入您的選擇: ”);