版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、電子設(shè)計(jì)應(yīng)用軟件訓(xùn)練總結(jié)報(bào)告 沈陽(yáng)航空航天大學(xué)電子信息工程學(xué)院電子設(shè)計(jì)應(yīng)用軟件訓(xùn)練總結(jié)報(bào)告學(xué)生姓名: 苗 騰 飛 專 業(yè): 電子信息工程 班 級(jí): 14020103 學(xué) 號(hào): 2011040201116 指導(dǎo)教師: 賈 亮 訓(xùn)練時(shí)間:2013年 7月1日至 2013年7月12日電子信息工程學(xué)院電子設(shè)計(jì)應(yīng)用軟件訓(xùn)練任務(wù)【訓(xùn)練任務(wù)】 (一)protel部分1、熟練掌握protel軟件的使用; 2、按要求繪制電路原理圖; 3、能夠按要求建立元件庫(kù)和封裝庫(kù); 4、按要求根據(jù)電路原理圖繪制pcb版圖(能夠用自動(dòng)布線和手動(dòng)布線相結(jié)合)。 (二)軟件設(shè)計(jì)部分 按照給定的軟件設(shè)計(jì)任務(wù)完成相應(yīng)的軟件設(shè)計(jì)【基本要
2、求及說(shuō)明】 (一)protel部分1、電路原理圖圖紙尺寸設(shè)置為a4; 2、電路原理圖見(jiàn)附圖; 3、按指定電路圖在protel 99中繪制原理圖; 4、根據(jù)原理圖繪制印制板圖; 5、根據(jù)要求創(chuàng)建原理圖器件和該器件的相應(yīng)的封裝。(二)軟件設(shè)計(jì)部分 按軟件設(shè)計(jì)要求實(shí)現(xiàn)相應(yīng)的功能【按照要求撰寫總結(jié)報(bào)告】 指導(dǎo)教師 年 月 日負(fù)責(zé)教師 年 月 日學(xué)生簽字 年 月 日成績(jī)?cè)u(píng)定表評(píng)語(yǔ)、建議或需要說(shuō)明的問(wèn)題:指導(dǎo)教師簽字: 日期:成 績(jī)protel 訓(xùn) 練 任 務(wù)軟 件 設(shè) 計(jì) 任 務(wù)問(wèn)題描述 制作一個(gè)簡(jiǎn)單的通訊錄,將個(gè)人的親朋好友基本信息和通信方法(包括通信地址、郵政編碼、住宿地、電話號(hào)碼等)存入通訊錄?;?/p>
3、本要求 1提供按姓名、按電話號(hào)碼等查詢其他信息的功能; 2實(shí)現(xiàn)按姓名排序打印通信錄的功能;3應(yīng)具有友好的界面。 34電子設(shè)計(jì)應(yīng)用軟件訓(xùn)練總結(jié)報(bào)告protel部分一、 任務(wù)說(shuō)明本次電子設(shè)計(jì)應(yīng)用軟件訓(xùn)練的主要訓(xùn)練任務(wù)就是要我們熟練掌握protel軟件的使用,并能靈活的運(yùn)用該軟件完成電路原理圖和pcb版圖的設(shè)計(jì)。在完成上述兩個(gè)任務(wù)的過(guò)程中,按照要求建立相應(yīng)的元件庫(kù)和封裝庫(kù),創(chuàng)建原理圖器件和該器件相應(yīng)的封裝,并能夠?qū)λL制的原理圖進(jìn)行分析或仿真,最后根據(jù)訓(xùn)練過(guò)程完成此次應(yīng)用軟件訓(xùn)練的總結(jié)報(bào)告。我們應(yīng)該認(rèn)識(shí)到protel的巨大作用,以及對(duì)電子信息工程的重要性。二、原理圖繪制說(shuō)明并新建一個(gè)元件庫(kù)1.繪制原
4、理圖的說(shuō)明電路原理圖主要由元器件符號(hào)、電氣連接線及功能注解等基本元素組成,設(shè)計(jì)者通過(guò)這些基本元素的組合和連接來(lái)表達(dá)設(shè)計(jì)意圖。為了能快速繪制電路原理圖和清晰表達(dá)設(shè)計(jì)意圖,我們有必要掌握設(shè)計(jì)電路原理圖的通用原則。設(shè)計(jì)者通常要遵循以下原則:(1) 信號(hào)流向盡量保證左進(jìn)右出;(2) 信號(hào)的流入、流出端口最好在圖紙邊框附近;(3) 功能相關(guān)的項(xiàng)目集中放置;(4) 繪制導(dǎo)線時(shí)盡量避免導(dǎo)線的交叉和折彎;(5) 電路原理圖疏密恰當(dāng),確保清晰美觀以及方便后續(xù)項(xiàng)目的補(bǔ)充和插入。接下來(lái)將詳細(xì)講述原理圖的繪制過(guò)程:首先啟動(dòng)protel 99軟件并新建原理圖文件,在此時(shí)可以順便更改原理圖的名字以便以后查找。建立過(guò)程如圖
5、1所示:圖1 原理圖文件的創(chuàng)建接下來(lái)要設(shè)置電路圖圖紙信息,在此應(yīng)按要求將電路原理圖圖紙?jiān)O(shè)置為a4尺寸。點(diǎn)擊菜單“設(shè)計(jì)”選項(xiàng),然后在“sheet選項(xiàng)”下找到標(biāo)準(zhǔn)風(fēng)格進(jìn)行頁(yè)面大小設(shè)置,如圖2所示:圖2 頁(yè)面大小設(shè)置按照題目所給的指定的電路原理圖在圖紙上放置元器件。根據(jù)電路的需要在設(shè)計(jì)管理器中選擇元件庫(kù),單擊“瀏覽”按鈕,在“miscellaneous devices.lib”中找到74als138,如圖3所示:圖3 元件的放置 接下來(lái)依次將74als138放置到電路原理圖中,放置過(guò)程中光標(biāo)會(huì)變?yōu)槭譅?,此時(shí)按下鍵盤上的“tab”鍵可以改變電阻的屬性,此時(shí)就可以按照電路圖進(jìn)行設(shè)置。在封裝類型框中填入
6、電阻的封裝類型sop16,按空格鍵調(diào)整位置。用同樣的方法放置八個(gè)pnp的晶體管q1-q8,填入封裝類型to92c,調(diào)整好位置。然后繼續(xù)在設(shè)計(jì)管理器中找到res1,按下“tab”鍵修改參數(shù),然后將其放置在合適位置,并將其封裝設(shè)為“axial0.4”。繼續(xù)在元件庫(kù)中找到j(luò)1、j2、j3,放置到合適位置,填好封裝sip5和sip8,調(diào)整好位置。在放置元件以及排版過(guò)程中需要注意的是protel在使用中經(jīng)常要用到的快捷鍵,如“page up”鍵可以對(duì)電路圖進(jìn)行放大,“page down”鍵可以對(duì)電路圖進(jìn)行縮小,這對(duì)我們?cè)O(shè)計(jì)原理圖以及封裝都很有幫助,在對(duì)元件的位置進(jìn)行調(diào)整、修改,并對(duì)元件的編號(hào)、封裝進(jìn)行定
7、義和設(shè)定后,即可對(duì)所放置的元件進(jìn)行布局布線。該過(guò)程實(shí)際就是一個(gè)畫圖過(guò)程,利用protel提供的各種工具、指令進(jìn)行布線,將工作平面上的器件用具有電器意義的導(dǎo)線、符號(hào)連接起來(lái),構(gòu)成一個(gè)完整的電路圖,此過(guò)程中還要注意電源與地線的連接。之后要對(duì)布局布線后的元件進(jìn)行調(diào)整,對(duì)元件位置進(jìn)行重新調(diào)整,導(dǎo)線位置的刪除、移動(dòng)更改圖形尺寸、屬性及排列。這樣,電路原理圖就可以生成了。電路圖原理圖見(jiàn)附錄圖。2.元件庫(kù)的建立由于現(xiàn)代電子技術(shù)的發(fā)展,我們使用的編輯環(huán)境不可能將所有器件收錄到元件庫(kù)中,這就要求我們會(huì)根據(jù)使用要求自己創(chuàng)建一個(gè)元件庫(kù),由于dpy在數(shù)據(jù)庫(kù)中找不到,因此需要自行建立,現(xiàn)在具體說(shuō)明制作元件和創(chuàng)建元件庫(kù)的
8、過(guò)程。首先從“文件”目錄下選擇“新建文件”,此時(shí)軟件會(huì)彈出一個(gè)對(duì)話框供用戶選擇,我們選擇“schematic library document”文檔,這樣就打開(kāi)了一個(gè)元件庫(kù)編輯器窗口,將要?jiǎng)?chuàng)建的元件命名為dpy,在繪圖工具欄中選出指定的矩形放置在工作區(qū)域內(nèi),矩形的位置以及寬窄可以自己確定,由于所要設(shè)計(jì)的器件是9引腳的,所以要事先確定好器件的形狀,在此我們選擇用正方形框,選擇好器件外框后就要開(kāi)始繪制引腳了。在常用工具里找到放置引腳選項(xiàng),單擊鼠標(biāo)左鍵,引腳就會(huì)變成小十字跟隨光標(biāo)移動(dòng),此時(shí)按下鍵盤上的空格鍵引腳的方向就會(huì)逆時(shí)針?lè)较蛐D(zhuǎn),每次旋轉(zhuǎn)角度均為90度,調(diào)整好方向后就要對(duì)各個(gè)引腳進(jìn)行編輯,此時(shí)
9、按下鍵盤上的“tab”鍵就會(huì)跳出引腳編輯對(duì)話框,此時(shí)我們就可以根據(jù)需要對(duì)引腳進(jìn)行定義,這樣以后我們就可以將引腳放置到合適的位置了。雙擊此元件,將其封裝設(shè)定為idc10,這樣一個(gè)dpy元件就設(shè)計(jì)好了,把它保存起來(lái),放置到自己的原理圖庫(kù)文件中,以后就可以隨時(shí)調(diào)用了,新的元件庫(kù)的建立就完成了。制作的dpy元件如圖4所示。圖4 制作元件dpy 由此可以得到如下原理圖元件信息,如表1所示:表1 原理圖元件表庫(kù)名字元件標(biāo)號(hào)元件庫(kù)名res1r8r16 miscellaneous devices.libcq1q8 miscellaneous devices.libdpyf1-f4自建元件庫(kù)con5j1 mis
10、cellaneous devices.lib74als138u1 miscellaneous devices.libcon8j2、j3miscellaneous devices.lib三.印制板圖繪制說(shuō)明1由生成的網(wǎng)絡(luò)表文件,繪制印制板圖原理圖繪制完成后首先要進(jìn)行電氣規(guī)則檢查,步驟為“設(shè)計(jì)”“電氣規(guī)則檢查”,如圖6所示:圖6電氣規(guī)則檢查如果此時(shí)檢查沒(méi)有錯(cuò)誤便可以產(chǎn)生網(wǎng)絡(luò)表文件,具體方法如下:點(diǎn)擊“設(shè)計(jì)”中的“創(chuàng)建網(wǎng)絡(luò)表”菜單命令,即可生成網(wǎng)絡(luò)表文件,如圖7所示:圖7網(wǎng)絡(luò)表的創(chuàng)建 接下來(lái)繪制印制板圖。在pcb文檔界面下點(diǎn)擊“設(shè)計(jì)”菜單下的“網(wǎng)絡(luò)表”,然后通過(guò)瀏覽找到自己新建的擴(kuò)展名為.ddb的文
11、件,這樣就把網(wǎng)絡(luò)表導(dǎo)入到pcb文件中了,然后軟件會(huì)自動(dòng)尋找設(shè)計(jì)中錯(cuò)誤,比如:軟件提示“node not found”,則說(shuō)明封裝號(hào)與電路原理圖不匹配,這就需要把原理圖中對(duì)應(yīng)元件的封裝找到,然后將引腳更新即可。根據(jù)所要求的電路板的大小設(shè)置pcb版的尺寸,具體做法是在禁止布線狀態(tài)下畫出禁止布線層。當(dāng)檢查沒(méi)有錯(cuò)誤后便可以開(kāi)始布線,由于電路結(jié)構(gòu)有一定規(guī)律,比如電源的位置和電源指示燈應(yīng)該放在一起,這樣也便于分析其功能,于是選擇部分手動(dòng)布線,原則是必須符合信號(hào)流向規(guī)則,完成手動(dòng)布線后便開(kāi)始自動(dòng)布線,點(diǎn)擊“自動(dòng)布線”并選擇“全部”,對(duì)整個(gè)電路板進(jìn)行布線。執(zhí)行該命令后,系統(tǒng)將彈出自動(dòng)布線設(shè)置對(duì)話框,采用對(duì)話框
12、中的默認(rèn)設(shè)置,就可以實(shí)現(xiàn)pcb板的自動(dòng)布線。完成布線結(jié)果如附錄圖所示。2元件封裝的創(chuàng)建在實(shí)際應(yīng)用中元器件的種類很多,而且很多元器件并非標(biāo)準(zhǔn)封裝,protel 99 se不可能提供所有元器件的封裝,但是我們可以自己編輯元器件封裝。下面我們可以按照以下步驟創(chuàng)建元器件封裝:首先確定要使用的元器件封裝,然后搜索protel 99 se元器件封裝庫(kù)查看是否已經(jīng)提供該封裝,如果有那么檢查原理圖符號(hào)引腳的“number”屬性是否與封裝焊盤的“designer”對(duì)應(yīng),如果對(duì)應(yīng)則可以直接使用,如果不對(duì)應(yīng)則應(yīng)查詢?cè)骷敿?xì)資料或用量具測(cè)量獲得封裝的詳細(xì)幾何尺寸,接著用畫圖工具繪制封裝輪廓、添加焊盤、檢查核對(duì)后保存
13、。由于dpy的封裝形式在軟件封裝庫(kù)中沒(méi)有,需要自己建立,現(xiàn)在可以采用idc10的封裝,在自己的封裝庫(kù)中建立如下:首先測(cè)量實(shí)際器件兩引腳間距為2.54mm,然后開(kāi)始在封裝庫(kù)中放置焊點(diǎn),中間帶有一個(gè)焊盤,移動(dòng)光標(biāo)使焊盤到達(dá)合適的位置后,單擊鼠標(biāo)將其定位,在放置焊盤時(shí),先按“tab”鍵進(jìn)入焊盤屬性對(duì)話框,設(shè)置焊盤屬性。將工作層面切換到頂層布線層,執(zhí)行菜單命令畫線,然后畫出繪制元件的外形輪廓方形。將原件重新命名,這樣該元件的封裝就成功創(chuàng)建了,dpy的元件封裝如圖8所示。圖8 dpy封裝經(jīng)過(guò)自己新建封裝庫(kù),這樣就可以找到所有需要的元件封裝,列封裝表如表2所示:表2所用元件封裝信息元件名稱封裝pcb封裝庫(kù)
14、名dpyidc10自建封裝庫(kù)r8-r16axial0.4pcb footprints.libu1sop16pcb footprints.libq1-q8to92cpcb footprints.libj1con5pcb footprints.libj2、j3con8pcb footprints.lib四、總結(jié)通過(guò)這次的protel99軟件的訓(xùn)練,我已經(jīng)初步的掌握了protel99軟件的基本操作方法,并能夠獨(dú)立的運(yùn)用該軟件繪制電路原理圖,靈活地根據(jù)電路原理圖繪制pcb版圖,并能夠按要求建立元件庫(kù)和封裝庫(kù)。除此之外,我還了解了一些元件的封裝類型,如何設(shè)置網(wǎng)絡(luò)標(biāo)號(hào)等,我想這對(duì)我今后學(xué)習(xí)或者是工作都是大
15、有裨益的。今后,我要多加練習(xí)該軟件,達(dá)到熟練掌握的程度,也希望院里能多為同學(xué)們提供這樣的機(jī)會(huì),讓我們?cè)阱憻拕?dòng)手能力的同時(shí),學(xué)到更多的有關(guān)我們專業(yè)的知識(shí)。本次電子設(shè)計(jì)應(yīng)用軟件訓(xùn)練的主要訓(xùn)練任務(wù)就是要我們熟練掌握protel軟件的使用,并能靈活的運(yùn)用該軟件完成電路原理圖和pcb版圖的設(shè)計(jì)。在完成上述兩個(gè)任務(wù)的過(guò)程中,按照要求建立相應(yīng)的元件庫(kù)和封裝庫(kù),創(chuàng)建原理圖器件和該器件相應(yīng)的封裝,并能夠?qū)λL制的原理圖進(jìn)行分析或仿真,最后根據(jù)訓(xùn)練過(guò)程完成此次應(yīng)用軟件訓(xùn)練的總結(jié)報(bào)告。我們應(yīng)該認(rèn)識(shí)到protel的巨大作用,以及對(duì)電子信息工程的重要性。五、參考文獻(xiàn) 1.趙景波,薛萍. protel 2004電路設(shè)計(jì)應(yīng)
16、用范例. m.北京:清華大學(xué)出版社,20062.黎文模、段曉峰.protel dxp電路設(shè)計(jì)與實(shí)例精解m.北京:人民郵電出版社,20063.尹琦、陳曉燕.protel印制板設(shè)計(jì)布線技巧(第二版)j. 連云港化工高等??茖W(xué)校院報(bào),20004.清源計(jì)算機(jī)工作室.protel99se原理圖與pcb及仿真m.北京:機(jī)械工業(yè)出版社,20055.張偉、王力.protel99se基礎(chǔ)教程m.北京:人民郵電出版社,20066.劉天旺. protel99se電路設(shè)計(jì)應(yīng)用教程m.北京:電子工業(yè)出版社,20087.趙廣林.電路設(shè)計(jì)與制版,m北京:電子工業(yè)出版社,2005.附錄電路原理圖圖9電路原理圖附錄 pcb 印
17、制板圖圖10 pcb版圖軟件設(shè)計(jì)部分一、 任務(wù)說(shuō)明本次課設(shè)的題目是制作一個(gè)簡(jiǎn)單的通訊錄,將個(gè)人的親朋好友基本信息和通信方法(包括通信地址、郵政編碼、住宿地、電話號(hào)碼等)存入通訊錄。通過(guò)軟件課程的學(xué)習(xí)及一些相關(guān)資料的閱讀,對(duì)于本課題,其難點(diǎn)在于課題的第二項(xiàng)要求,即實(shí)現(xiàn)按姓名排序打印通信錄的功能。第一項(xiàng)要求是提供按姓名、按電話號(hào)碼等查詢其他信息的功能。第三項(xiàng)要求是應(yīng)具有友好的界面。二、軟件設(shè)計(jì) 了解系統(tǒng)開(kāi)發(fā)的需求分析、類層次設(shè)計(jì)、模塊分解、編碼測(cè)試、模塊組裝與整體調(diào)試的全過(guò)程,逐步熟悉程序設(shè)計(jì)的方法,并養(yǎng)成良好的編程習(xí)慣。制作一個(gè)簡(jiǎn)單的通訊錄,將個(gè)人的親朋好友基本信息和通信方法(包括通信地址、郵政
18、編碼、住宿地、電話號(hào)碼等)存入通訊錄。1)輸入信息enter();2)顯示信息display( );3)查找以姓名作為關(guān)鍵字 search( );4)查找以電話作為關(guān)鍵字rearsh( );5)刪除信息delete( );6)存盤save ( );7)裝入load( ) ;設(shè)計(jì)要求:1提供按姓名、按電話號(hào)碼等查詢其他信息的功能; 2實(shí)現(xiàn)按姓名排序打印通信錄的功能;3應(yīng)具有友好的界面。圖11 系統(tǒng)總圖數(shù)據(jù)結(jié)構(gòu)及各模塊分析:設(shè)計(jì)類,對(duì)象及基本數(shù)據(jù)類型:創(chuàng)建一個(gè)record類,它有五個(gè)數(shù)據(jù)成員:char name20; 姓名 char street20; 街道 char phone20; 電話 ch
19、ar eip20; 郵編 char stay20; 住址包含函數(shù): 功能如下:void mainmenu(); 主菜單void searchmenu(); 查找菜單void enter(); 新添紀(jì)錄 void search(); 按姓名查找void rearsh(); 按電話查詢 void display(); 顯示所有 void load(); 讀取文件 void save(); 寫入文件 void delete(); 按姓名刪除 結(jié)構(gòu)體:struct record char street20; char name20; char phone20; char stay20; char ei
20、p20;frien500;struct slnode record date; struct slnode *next; struct slnode *prior; 設(shè)計(jì)流程圖(1) 主函數(shù)main():利用for( ; ; )和switch()實(shí)現(xiàn)主界面的顯示與各選項(xiàng)的連接;流程圖如下:開(kāi)始輸入要運(yùn)行的功能的序號(hào)判斷用戶的輸入寫入數(shù)據(jù)讀取數(shù)據(jù)追加數(shù)據(jù)查找數(shù)據(jù)備份數(shù)據(jù)刪除數(shù)據(jù)還原數(shù)據(jù)結(jié)束圖12主函數(shù)流程圖(2)寫入函數(shù)void input():利用文件的fwrite()語(yǔ)句來(lái)實(shí)現(xiàn)數(shù)據(jù)的保存;流程圖如下:開(kāi)始輸入y或n用if判斷輸入了y還是nyn輸入要輸入的資料將數(shù)據(jù)保存到指定的文件里結(jié)束圖13
21、寫入函數(shù)流程圖(3)讀取數(shù)據(jù)void read1():利用文件的fread()語(yǔ)句來(lái)實(shí)現(xiàn)數(shù)據(jù)的讀??;流程圖如下開(kāi)始打開(kāi)文件定義變量int ifor(i=0;i數(shù)據(jù)的行數(shù);i+)fread()讀出i行數(shù)據(jù)結(jié)束圖14讀取函數(shù)流程圖(4)查找數(shù)據(jù)void search()通過(guò)strcmp()=null來(lái)實(shí)現(xiàn)數(shù)據(jù)的查找;流程圖如下:開(kāi)始定義變量int i;輸入要查找的名字for(i=0;i數(shù)據(jù)的行數(shù);i+)判斷strcmp(i行數(shù)據(jù),輸入名字)=null嗎?yn輸出該行數(shù)據(jù)結(jié)束圖15查找函數(shù)流程圖(5)刪除數(shù)據(jù)void delete1():通過(guò)將后一行數(shù)據(jù)覆蓋前一行數(shù)據(jù)的方法來(lái)實(shí)現(xiàn)刪除功能;流程圖如下
22、:判斷strcmp(i行數(shù)據(jù),輸入名字)=0嗎?yfor(j=i+1;j數(shù)據(jù)的行數(shù);j+)開(kāi)始定義變量int i,j,n=0;for(i=0;i數(shù)據(jù)的行數(shù);i+)輸入要?jiǎng)h除的名字將第j行數(shù)據(jù)覆蓋第j-1行數(shù)據(jù)n=n+1nfor(i=0;in-1;i+)寫入第i行數(shù)據(jù)結(jié)束圖16刪除函數(shù)流程圖(6)追加數(shù)據(jù)void append1():利用fread()來(lái)讀出文件里的數(shù)據(jù),從而確定數(shù)據(jù)的數(shù)量,再在最后一條數(shù)據(jù)后通過(guò)fopen(“文件名”,”ab”)來(lái)實(shí)現(xiàn)追加;流程圖如下:開(kāi)始定義變量int i,sum=0;for(i=0;i數(shù)據(jù)行數(shù);i+)讀去i行的數(shù)據(jù)sum=sum+1for(i=sum;i通訊
23、錄數(shù)據(jù)上限;i+)將數(shù)據(jù)加入到文件里用戶輸入要增加的數(shù)據(jù)結(jié)束圖17追加數(shù)據(jù)流程圖三、程序調(diào)試及結(jié)果檢驗(yàn)無(wú)誤后運(yùn)行程序: 進(jìn)入主界面: 如下圖所示圖18主界面選擇1新添記錄輸入張三 37233714.沈陽(yáng)王二 38011632 北京李四 21266951 合肥然后n回車選擇2查找記錄 選擇1顯示所有如下圖所示圖19所有記錄顯示按任意鍵返回主菜單:然后進(jìn)行查找,選擇按姓名查找:輸入 張三如下圖所示圖20按姓名查找輸入y回車,繼續(xù)查找,此次按電話號(hào)碼查找 鍵詢結(jié)果如下圖21按電話號(hào)碼查找輸入n回車
24、然后調(diào)試刪除功能回到主菜單,選擇3刪除聯(lián)系人請(qǐng)輸入要?jiǎng)h除的姓名如:李四如下圖所示圖22刪除了信息四、結(jié)論通過(guò)設(shè)計(jì)一個(gè)通訊錄,進(jìn)一步熟悉c中類的概念、基本知識(shí)和技利用所學(xué)的基本知識(shí)和技能解決簡(jiǎn)單的面向?qū)ο蟮某绦蛟O(shè)計(jì)問(wèn)題。了解系統(tǒng)開(kāi)發(fā)的需求分析、類層次設(shè)計(jì)、模塊分解、編碼測(cè)試、模塊組裝與整體調(diào)試的全過(guò)程,加深對(duì)c的理解與visual c+環(huán)境的使用:逐步熟悉程序設(shè)計(jì)的方法,并養(yǎng)成良好的編程習(xí)慣。加深了對(duì)c語(yǔ)言的理解,更深層次的認(rèn)識(shí)了c語(yǔ)言。五、參考文獻(xiàn)(1)譚浩強(qiáng).c程序設(shè)計(jì)(第三版),m北京.清華大學(xué)出版社.2005 (2)劉彥明.計(jì)算機(jī)軟件技術(shù)基礎(chǔ)教程,m西安.西安電子科技大學(xué)出版社.2008
25、 (3)楊秀金.數(shù)據(jù)結(jié)構(gòu),m西安.電子科技大學(xué)出版社.2001(4)黃梯云.管理信息系統(tǒng)(修訂版),m北京.高等教育出版社.2000(5)徐孝凱、賀桂英.c語(yǔ)言教程,m北京.清華大學(xué)出版社.2004六、源程序#include #include #include #include struct record char name20; char street20; char phone20; char eip20; char stay20; frien500;struct slnoderecord date;struct slnode *next;struct slnode *prior;type
26、def slnode * linklist;linklist l;int num=0;file *fp; void mainmenu();void searchmenu();void enter();void search();void rearsh();void display();void load();void save();void delet();void listinsert();void initlist();void main() initlist();load();listinsert(); while (1)mainmenu(); typedef struct tagcol
27、attint ncolindex;cstring strcoltext;int nprintx;int nsubitemindex;colatt;void load() if(fp=fopen(frien.bin,rb)=null) printf(ntt通訊錄文件不存在); if (fp=fopen(frien,wb)=null) printf(ntt建立失敗); exit(0); else printf(ntt通訊錄文件已建立); printf(ntt按任意鍵進(jìn)入主菜單); getch(); return; exit(0); fseek(fp,0,2); if (ftell(fp)0) re
28、wind(fp); for (num=0;!feof(fp) & fread(&friennum,sizeof(struct record),1,fp);num+); printf(ntt文件導(dǎo)入成功); printf(ntt按任意鍵返回主菜單); getch(); return; printf(ntt文件導(dǎo)入成功); printf(ntt通訊錄文件中無(wú)任何紀(jì)錄); printf(ntt按任意鍵返回主菜單); getch(); return; void mainmenu()/主菜單 char choic; system(cls); printf(ntt*歡迎進(jìn)入通訊錄系統(tǒng)*); printf(
29、ntt*1-新添紀(jì)錄 *); printf(ntt*2-查找聯(lián)系人 *); printf(ntt*3-刪除聯(lián)系人 *); printf(ntt*4-保存退出 *); printf(ntt*5-不保存退出 *); printf(ntt*); printf(ntt請(qǐng)選擇:); choic=getch(); switch (choic) case 1:enter();break; case 2:searchmenu();break; case 3:delet();break; case 4:save();break;case 5:exit(0); default:mainmenu(); void s
30、earchmenu()/查詢菜單 char choic; system(cls); printf(ntt* 查詢菜單 *); printf(ntt* 1-顯示所有 *); printf(ntt* 2-按姓名查詢 *);printf(ntt* 3-按電話查詢 *);printf(ntt* 4-返回主菜單 *); printf(ntt*); printf(ntt請(qǐng)選擇:); choic=getch(); switch (choic) case 1:display();break; case 2:search();break;case 3:rearsh();break;case 4:mainmenu
31、();break; void enter()/添加紀(jì)錄 printf(ntt* 請(qǐng)輸入信息 *n); printf(ntt姓名:); scanf(%s,&); printf(ntt街道:); scanf(%s,&friennum.street); printf(ntt電話:); scanf(%s,&friennum.phone); printf(ntt郵編:); scanf(%s,&friennum.eip); printf(ntt住址:); scanf(%s,&friennum.stay); num+; printf(ntt是否繼續(xù)添加?(y/n):); if (g
32、etch()=y) enter(); return; void display()/顯示所有 int i; system(cls); if(num!=0) printf(ntt* 以下為通訊錄所有信息*); for (i=0;inum;i+) printf(ntt姓名: %s,); printf(ntt街道: %s,frieni.street); printf(ntt電話: %s,frieni.phone); printf(ntt郵編: %s,frieni.eip); printf(ntt住址: %s,frieni.stay); printf(tt); if (i+1nu
33、m) printf(ntt_); system(pause); printf(ntt*); else printf(ntt通訊錄中無(wú)任何紀(jì)錄); printf(ntt按任意鍵返回主菜單:); getch(); return; void save()/寫入文件 int i; if (fp=fopen(frien,wb)=null) printf(ntt文件打開(kāi)失敗); for (i=0;inum;i+) if (fwrite(&frieni,sizeof(struct record),1,fp)!=1) printf(ntt寫入文件錯(cuò)誤!n); fclose(fp); printf(ntt通訊錄
34、文件已保存); printf(ntt按任意鍵退出程序ntt); exit(0); void listinsert()/增加一個(gè)結(jié)點(diǎn) linklist s,p=l;for(int i=0;,); strcpy(s-date.phone,frieni.phone); strcpy(s-date.street,frieni.street); strcpy(s-date.eip,frieni.eip); strcpy(s-date.stay,frieni.stay); s-prior=p-prior; s-next=p; p-prior-next=s; p-p
35、rior=s;p=p-next;void initlist()l=new slnode;l-next=l;l-prior=l;void search() int a=0; int findmark; int j; int i; char name20; printf(ntt請(qǐng)輸入要查找的姓名:); scanf(%s,name); for (i=a;inum;i+) if (strcmp(,name)=null) printf(ntt以下是您要查找的紀(jì)錄:); findmark+; printf(ntt_); printf(ntt姓名: %s,); p
36、rintf(ntt街道: %s,frieni.street); printf(ntt電話: %s,frieni.phone); printf(ntt郵編: %s,frieni.eip); printf(ntt住址: %s,frieni.stay); printf(ntt_); if(i=0)printf(tt信息如上!); if (i+1)num) printf(ntt是否繼續(xù)查找相同信息:(y/n); if (getch()=y) a=i;continue; else return; else printf(ntt按任意鍵返回主菜單); getch(); return; void rears
37、h() int a=0; int findmark; int j; int i; char phone20; printf(ntt請(qǐng)輸入要查找的電話:); scanf(%s,phone); for (i=a;inum;i+) if (strcmp(frieni.phone,phone)=null) printf(ntt以下是您要查找的紀(jì)錄:); findmark+; printf(ntt_); printf(ntt姓名: %s,); printf(ntt街道: %s,frieni.street); printf(ntt電話: %s,frieni.phone); print
38、f(ntt郵編: %s,frieni.eip); printf(ntt住址: %s,frieni.stay); printf(ntt_); if(i=0)printf(tt信息如上!); if (i+1)num) printf(ntt是否繼續(xù)查找相同信息:(y/n); if (getch()=y) a=i;continue; else return; else printf(ntt按任意鍵返回主菜單); getch(); return; void delet() int a=0; int findmark=0; int j; int deletemark=0; int i; char name
39、20; printf(ntt請(qǐng)輸入要?jiǎng)h除姓名:); scanf(%s,name); for (i=a;inum;i+) if (strcmp(,name)=null) printf(ntt以下是您要?jiǎng)h除的紀(jì)錄:); findmark+; printf(ntt_); printf(ntt姓名: %s,); printf(ntt街道: %s,frieni.street); printf(ntt電話: %s,frieni.phone); printf(ntt郵編: %s,frieni.eip); printf(ntt住址: %s,frieni.stay); printf(ntt_); printf(ntt是否刪除?(y/n); if (getch()=y) for (j=i;jnum-1;j+) frienj=frienj+1; num-; del
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 消防工程課程設(shè)計(jì)
- 紙漿制作物品課程設(shè)計(jì)
- 激光課程設(shè)計(jì)封面模板
- 二零二五年度親子娛樂(lè)中心經(jīng)營(yíng)權(quán)轉(zhuǎn)讓合同2篇
- 游戲訓(xùn)練法培訓(xùn)課程設(shè)計(jì)
- 2025版離婚協(xié)議起草與婚姻關(guān)系終止全程服務(wù)合同2篇
- 2025版建筑垃圾資源化利用施工合同3篇
- 碳酸鈉課程設(shè)計(jì)
- 2025版XX醫(yī)療設(shè)備采購(gòu)協(xié)議補(bǔ)充3篇
- 2025年度商砼攪拌車運(yùn)輸及服務(wù)合同
- 腦血管病的介入診療課件
- 苗木供貨服務(wù)計(jì)劃方案
- 全員安全生產(chǎn)責(zé)任考核表
- 董事長(zhǎng)調(diào)研方案
- 某物業(yè)公司薪酬管理制度
- 急性心肌梗死罪犯血管心電圖判斷
- 完善程序填空數(shù)組指針 供練習(xí)
- (高清版)組合鋁合金模板工程技術(shù)規(guī)程JGJ 386-2016
- 室內(nèi)質(zhì)控品統(tǒng)一征訂單
- 《論語(yǔ)》誦讀計(jì)劃
- 2006年工資標(biāo)準(zhǔn)及套改對(duì)應(yīng)表
評(píng)論
0/150
提交評(píng)論