有界面的個(gè)人通訊錄課程設(shè)計(jì)報(bào)告_第1頁
有界面的個(gè)人通訊錄課程設(shè)計(jì)報(bào)告_第2頁
有界面的個(gè)人通訊錄課程設(shè)計(jì)報(bào)告_第3頁
有界面的個(gè)人通訊錄課程設(shè)計(jì)報(bào)告_第4頁
有界面的個(gè)人通訊錄課程設(shè)計(jì)報(bào)告_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

xxxxxxx大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院綜合設(shè)計(jì)報(bào)告設(shè)計(jì)名稱:應(yīng)用軟件綜合設(shè)計(jì)設(shè)計(jì)題目:簡單個(gè)人號碼查詢系統(tǒng)學(xué)生學(xué)號:專業(yè)班級:學(xué)生姓名:學(xué)生成績:指導(dǎo)教師〔職稱〕:課題工作時(shí)間:至說明:1、報(bào)告中的第一、二、三項(xiàng)由指導(dǎo)教師在綜合設(shè)計(jì)開始前填寫并發(fā)給每個(gè)學(xué)生;四、五兩項(xiàng)〔中英文摘要〕由學(xué)生在完成綜合設(shè)計(jì)后填寫。2、學(xué)生成績由指導(dǎo)教師根據(jù)學(xué)生的設(shè)計(jì)情況給出各項(xiàng)分值及總評成績。3、指導(dǎo)教師評語一欄由指導(dǎo)教師就學(xué)生在整個(gè)設(shè)計(jì)期間的平時(shí)表現(xiàn)、設(shè)計(jì)完成情況、報(bào)告的質(zhì)量及辯論情況,給出客觀、全面的評價(jià)。4、所有學(xué)生必須參加綜合設(shè)計(jì)的辯論環(huán)節(jié),凡不參加辯論者,其成績一律按不及格處理。辯論小組成員應(yīng)由2人及以上教師組成。5、報(bào)告正文字?jǐn)?shù)一般應(yīng)不少于5000字,也可由指導(dǎo)教師根據(jù)本門綜合設(shè)計(jì)的情況另行規(guī)定。6、平時(shí)表現(xiàn)成績低于6分的學(xué)生,取消辯論資格,其本項(xiàng)綜合設(shè)計(jì)成績按不及格處理。7、此表格式為武漢工程大學(xué)計(jì)算機(jī)科學(xué)與工程學(xué)院提供的根本格式〔適用于學(xué)院各類綜合設(shè)計(jì)〕,各教研室可根據(jù)本門綜合設(shè)計(jì)的特點(diǎn)及內(nèi)容做適當(dāng)?shù)恼{(diào)整,并上報(bào)學(xué)院批準(zhǔn)。成績評定表學(xué)生姓名:學(xué)號:班級:類別合計(jì)分值各項(xiàng)分值評分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分備注平時(shí)表現(xiàn)1010按時(shí)參加綜合設(shè)計(jì),無曠課、遲到、早退、違反實(shí)驗(yàn)室紀(jì)律等情況。由設(shè)計(jì)負(fù)責(zé)人給出完成情況3020按設(shè)計(jì)任務(wù)書的要求完成了全部任務(wù),能完整演示其設(shè)計(jì)內(nèi)容,符合要求。10能對其設(shè)計(jì)內(nèi)容進(jìn)行詳細(xì)、完整的介紹,并能就指導(dǎo)教師提出的問題進(jìn)行正確的答復(fù)。報(bào)告質(zhì)量3510報(bào)告文字通順,內(nèi)容翔實(shí),論述充分、完整,立論正確,結(jié)構(gòu)嚴(yán)謹(jǐn)合理;報(bào)告字?jǐn)?shù)符合相關(guān)要求,工整標(biāo)準(zhǔn),整齊劃一。5課題背景介紹清楚,綜述分析充分。5設(shè)計(jì)方案合理、可行,論證嚴(yán)謹(jǐn),邏輯性強(qiáng),具有說服力。5符號統(tǒng)一;圖表完備、符合標(biāo)準(zhǔn)要求。5能對整個(gè)設(shè)計(jì)過程進(jìn)行全面的總結(jié),得出有價(jià)值的結(jié)論或結(jié)果。5參考文獻(xiàn)數(shù)量在3篇以上,格式符合要求,在正文中正確引用。辯論情況2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡意明,重點(diǎn)突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地答復(fù)教師所提出的問題。總評成績:分補(bǔ)充說明:指導(dǎo)教師:〔簽字〕日期:年月日辯論記錄表學(xué)生姓名:學(xué)號:班級:辯論地點(diǎn):辯論內(nèi)容記錄:辯論成績合計(jì)分值各項(xiàng)分值評分標(biāo)準(zhǔn)實(shí)際得分合計(jì)得分備注2510在規(guī)定時(shí)間內(nèi)能就所設(shè)計(jì)的內(nèi)容進(jìn)行闡述,言簡意明,重點(diǎn)突出,論點(diǎn)正確,條理清晰。15在規(guī)定時(shí)間內(nèi)能準(zhǔn)確、完整、流利地答復(fù)教師所提出的問題。辯論小組成員〔簽字〕:年月日指導(dǎo)教師評語指導(dǎo)教師:〔簽字〕日期:年月日一、綜合設(shè)計(jì)目的、條件、任務(wù)和內(nèi)容要求:1、設(shè)計(jì)目的綜合設(shè)計(jì)是專業(yè)教學(xué)過程中重要的實(shí)踐性教學(xué)環(huán)節(jié),必須加以重視。綜合設(shè)計(jì)旨在使學(xué)生對所學(xué)過的理論知識和專業(yè)知識進(jìn)行一次全面、系統(tǒng)的回憶和總結(jié),通過設(shè)計(jì)分析,使理論實(shí)踐相結(jié)合,穩(wěn)固和開展所學(xué)理論知識,掌握正確的思想方法和根本技能,并培養(yǎng)學(xué)生全面考慮問題,抓住主要矛盾解決問題的思維方法,提高獨(dú)立思考能力和團(tuán)隊(duì)精神,培養(yǎng)學(xué)生調(diào)查研究、查閱技術(shù)文獻(xiàn)、資料、手冊以及編寫技術(shù)文獻(xiàn)的能力,樹立嚴(yán)肅認(rèn)真的工作作風(fēng)。對同學(xué)今后的工作、開展起重要作用。數(shù)據(jù)結(jié)構(gòu)是計(jì)算科學(xué)專業(yè)中一門重要的專業(yè)根底課程。當(dāng)用計(jì)算機(jī)來解決實(shí)際問題時(shí),就要涉及到數(shù)據(jù)的表示及數(shù)據(jù)的處理,而數(shù)據(jù)表示及數(shù)據(jù)處理正是數(shù)據(jù)結(jié)構(gòu)課程的主要研究對象,通過這兩方面內(nèi)容的學(xué)習(xí),為后續(xù)課程,特別是軟件方面的課程打下了厚實(shí)的知識根底,同時(shí)也提供了必要的技能訓(xùn)練。因此,數(shù)據(jù)結(jié)構(gòu)課程在計(jì)算機(jī)應(yīng)用專業(yè)中具有舉足輕重的作用。2、設(shè)計(jì)任務(wù)人們在日常生活中經(jīng)常需要查找某個(gè)人或某個(gè)單位的號碼,本實(shí)驗(yàn)將實(shí)現(xiàn)一個(gè)簡單的個(gè)人號碼查詢系統(tǒng),根據(jù)用戶輸入的信息〔例如姓名等〕進(jìn)行快速查詢。(1)在外存上,用文件保存號碼信息;(2)在內(nèi)存中,設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)存儲(chǔ)號碼信息;(3)提供查詢功能:根據(jù)姓名實(shí)現(xiàn)快速查詢;(4)提供其他維護(hù)功能:例如插入、刪除、修改等;(5)按號碼進(jìn)行排序;(6)針對以上功能要提供相應(yīng)的提示信息和輸出信息,實(shí)現(xiàn)友好的用戶交互界面。3、內(nèi)容要求本實(shí)驗(yàn)的要求是:通過實(shí)驗(yàn),使學(xué)生對常用數(shù)據(jù)結(jié)構(gòu)的根本概念及其不同的實(shí)現(xiàn)方法的理論得到進(jìn)一步的掌握,并對在不同存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)不同的運(yùn)算方式和技巧有所體會(huì)。綜合實(shí)驗(yàn)課是對學(xué)生的一種全面綜合訓(xùn)練,是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。實(shí)驗(yàn)課著眼于原理與應(yīng)用的結(jié)合點(diǎn),使學(xué)生學(xué)會(huì)如何把書上學(xué)到的知識用于解決實(shí)際問題,培養(yǎng)軟件工作所需要的動(dòng)手能力;另一方面,能使書上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的。本實(shí)驗(yàn)中包括了數(shù)據(jù)結(jié)構(gòu)中線性表的順序式存儲(chǔ)結(jié)構(gòu)、哈希表的查找、排序,以及C++的編程、MFC等多個(gè)知識點(diǎn)。通過設(shè)計(jì)、調(diào)試此實(shí)驗(yàn),到達(dá)檢測學(xué)生對上述知識點(diǎn)的綜合應(yīng)用能力。指導(dǎo)教師簽字:年月日二、進(jìn)度安排:集中設(shè)計(jì)時(shí)間:辯論時(shí)間:三、應(yīng)收集資料及主要參考文獻(xiàn):[1]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)[M].北京:清華大學(xué)出版社,2010.07[2]呂國英.算法設(shè)計(jì)與分析[M].北京:清華大學(xué)出版社,2009.01[3]嚴(yán)蔚敏,吳偉民.?dāng)?shù)據(jù)結(jié)構(gòu)〔C語言版〕[M].北京:清華大學(xué)出版社,1999.04[4]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)題集〔C語言版〕[M].北京:清華大學(xué)出版社,1999.05[5]許卓群.數(shù)據(jù)結(jié)構(gòu).北京:高等教育出版社[M].1989.07[6]譚浩強(qiáng).C語言程序設(shè)計(jì)(第三版)[M].北京:清華大學(xué)出版社,2005.08[7]姜靈芝,余?。瓹語言程序設(shè)計(jì)教程[M].北京:中國電力出版社,2006.02[8]李偉波,劉永祥,王慶春.軟件工程[M].武漢:武漢大學(xué)出版社,2006.01[9]侯俊杰.深入淺出MFC第二版[M].武漢:華中科技大學(xué)出版社,2001.10四、綜合設(shè)計(jì)摘要〔中文〕:當(dāng)前社會(huì)已經(jīng)步入了一個(gè)信息化的時(shí)代,隨著社會(huì)勞動(dòng)生產(chǎn)率的不斷提高,與之相對應(yīng)的信息查詢效勞系統(tǒng)也在不斷的完善。本程序運(yùn)用類和結(jié)構(gòu)體的建立,構(gòu)建了順序表并采用鏈表的方法進(jìn)行查詢,實(shí)現(xiàn)號碼及有相關(guān)信息的準(zhǔn)確查詢,同時(shí)編譯了對信息的保存、更新和清空函數(shù),使該號碼的查詢系統(tǒng)操作起來更加自如。本文從分析課題的題目背景、題目意義、題目要求等出發(fā),分別從需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、測試等各個(gè)方面詳細(xì)介紹了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過程,最后對系統(tǒng)的完成情況進(jìn)行了總結(jié)。關(guān)鍵詞:查找函數(shù);鏈表;號碼查詢五、綜合設(shè)計(jì)〔課程設(shè)計(jì)〕Abstract〔英文〕:Currentsocietyhasenteredaninformationera,withthecontinuousimprovementofthesociallaborproductivity,theinformationcorrespondingtotheinquiryservicesystemhasalsobeenimproved.

Theprogramusesclassesandtheestablishmentofstructuresconstructedusingtheorderformandlistmethodsofinquiry,telephonenumbersandrelevanttoachievetheaccuracyoftheinformationquery,whilethepreservationofinformationcompiled,updatedandclearfunctions,sothatthephonenumberofqueriesthesystemtooperatemorefreely.

Thisarticleanalyzesthesubjectfromthebackgroundquestions,questionsthemeaning,thesubjectrequirementsforstarting,respectively,fromneedsanalysis,overalldesign,detaileddesign,testingandotheraspectsofthesystemdetaileddesignandimplementationprocess,thefinalcompletionofthesystemaresummarized.

Keywords:Querytofindfunction;list;telephonenumbers目錄摘要………………………IIAbstract…………………...II課題背景….…………………….....11.1課題研究的背景………………………11.2課題研究的目的………………………11.3課題研究的內(nèi)容…………..…………..1第二章 設(shè)計(jì)簡介及設(shè)計(jì)方案論述………..22.1設(shè)計(jì)簡介………………..………….….22.1.1設(shè)計(jì)總體思路…………..……………2.1.2設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu)…………..……………2.2設(shè)計(jì)所需函數(shù)以及各變量…………….32.3界面設(shè)計(jì)……………….3第三章 詳細(xì)設(shè)計(jì)…………..………………..53.1通訊錄中數(shù)據(jù)的存儲(chǔ)……..……………53.1.1聯(lián)系人的數(shù)據(jù)結(jié)構(gòu)………………..……………聯(lián)系人信息的存儲(chǔ)………………….63.2通訊錄界面設(shè)計(jì)……………………….6設(shè)計(jì)通訊錄界面所添加的控件…………………….6控件函數(shù)設(shè)計(jì)……………………….8第四章 設(shè)計(jì)結(jié)果及分析…………………..……………….164.1程序運(yùn)行的環(huán)境…….………………..164.2程序運(yùn)行的界面………..…………….16通訊錄的添加功能………..………....17通訊錄的刪除功能………………….18通訊錄的查找功能………………….19通訊錄的修改功能………………….20通訊錄的去除功能………………….20總結(jié)…….……………………..…………..23致謝…….……………………..…………..24參考文獻(xiàn)…….………………..………………..…………..25摘要日益繁多的人際交往使得我們很難搞清楚與每個(gè)人之間的聯(lián)系方式,特別是對于經(jīng)常出差的人來說更是難,所以通訊錄能夠便捷的給我們帶來所需要的相關(guān)信息。而隨著計(jì)算機(jī)的普及,人們的生活擺脫了傳統(tǒng)式的記事本、簿,越來越多的靠計(jì)算機(jī)來幫助人們記住一些事情。這就需要有一個(gè)使用的通訊錄管理系統(tǒng),用戶可以方便的通過自己電腦的通訊錄管理系統(tǒng),來隨時(shí)查閱自己所需要的信息,而不必再大費(fèi)周折去翻開那繁瑣的筆記本。通訊錄管理系統(tǒng)是一個(gè)專門針對儲(chǔ)存用戶聯(lián)系方式以及一些簡單個(gè)人信息的實(shí)用管理系統(tǒng),它方便了用戶對眾多客戶、朋友、同事等個(gè)人信息的儲(chǔ)存和快速查閱的功能,大大減少了查找過程的時(shí)間。本程序運(yùn)用類和結(jié)構(gòu)體的建立,構(gòu)建了順序表并采用鏈表的方法進(jìn)行查詢,實(shí)現(xiàn)號碼及有相關(guān)信息的準(zhǔn)確查詢,同時(shí)編譯了對信息的保存、更新和清空函數(shù),使該號碼的查詢系統(tǒng)操作起來更加自如。本文從分析課題的題目背景、題目意義、題目要求等出發(fā),分別從需求分析、總體設(shè)計(jì)、詳細(xì)設(shè)計(jì)、測試等各個(gè)方面詳細(xì)介紹了系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)過程,最后對系統(tǒng)的完成情況進(jìn)行了總結(jié)。關(guān)鍵詞:通訊錄;鏈表;查詢;具體設(shè)計(jì)分析AbstractGrowingrangeofinterpersonalcommunicationmakesitdifficulttofigureoutandthelinkbetweenthewayeachperson,especiallyforpeoplewhotraveloftenisdifficult,sothebookcanbeconvenienttobringustherequiredinformation.Withtheproliferationofcomputers,people'slivesoutofthetraditionalnotebook,phonebook,moreandmorerelyoncomputerstohelppeopleremembersomethings.Thisrequiresamanagementsystemwithaddressbook,userscaneasilymanagecontactsthroughtheirowncomputersystemtogainaccesstotheinformationtheyneedwithouthavingtobestrugglingtoturnitcumbersomelaptop.Contactmanagementsystemisacontactspecificallyforstoringtheuserpersonalinformationandsomesimpleandpracticalmanagementsystem,whichfacilitatestheusertomanycustomers,friends,colleaguesandotherpersonalinformationstorageandquickaccesstofunctions,greatlyreducingthesearchprocesstime.Theprogramusesclassesandtheestablishmentofstructuresconstructedusingtheorderformandlistmethodsofinquiry,telephonenumbersandrelevanttoachievetheaccuracyoftheinformationquery,whilethepreservationofinformationcompiled,updatedandclearfunctions,sothatthephonenumberofqueriesthesystemtooperatemorefreely.Thisarticleanalyzesthesubjectfromthebackgroundquestions,questionsthemeaning,thesubjectrequirementsforstarting,respectively,fromneedsanalysis,overalldesign,detaileddesign,testingandotheraspectsofthesystemdetaileddesignandimplementationprocess,thefinalcompletionofthesystemaresummarized.Keywords:Contacts;list;telephoneinquiries;specificdesignanalysis課題概述1.1課題研究背景當(dāng)前社會(huì)已經(jīng)步入了一個(gè)信息化的時(shí)代,隨著社會(huì)勞動(dòng)生產(chǎn)率的不斷提高,與之相對應(yīng)的信息查詢效勞系統(tǒng)也在不斷的完善。高度信息化的年代里,號碼信息系統(tǒng)的出現(xiàn)正是當(dāng)前時(shí)代開展的需要,它的出現(xiàn)給我們的工作生活無疑帶來了很多方便。編程人員通過對號碼及其相關(guān)信息查詢功能的不斷編寫和完善,來盡量滿足人們的需要。1.2課題研究目的通過實(shí)驗(yàn),使學(xué)生對常用數(shù)據(jù)結(jié)構(gòu)的根本概念及其不同的實(shí)現(xiàn)方法的理論得到進(jìn)一步的掌握,并對在不同存儲(chǔ)結(jié)構(gòu)上實(shí)現(xiàn)不同的運(yùn)算方式和技巧有所體會(huì)。綜合實(shí)驗(yàn)課是對學(xué)生的一種全面綜合訓(xùn)練,是與課堂聽講、自學(xué)和練習(xí)相輔相成的必不可少的一個(gè)教學(xué)環(huán)節(jié)。實(shí)驗(yàn)課著眼于原理與應(yīng)用的結(jié)合點(diǎn),使學(xué)生學(xué)會(huì)如何把書上學(xué)到的知識用于解決實(shí)際問題,培養(yǎng)軟件工作所需要的動(dòng)手能力;另一方面,能使書上的知識變“活”,起到深化理解和靈活掌握教學(xué)內(nèi)容的目的。學(xué)生通過課程設(shè)計(jì)加深理解課堂教學(xué)內(nèi)容,要求學(xué)生在設(shè)計(jì)中逐步提高程序設(shè)計(jì)和調(diào)試能力,培養(yǎng)學(xué)生解決實(shí)際問題的能力,算法分析能力和學(xué)生的科技論文寫作能力。本實(shí)驗(yàn)中包括了數(shù)據(jù)結(jié)構(gòu)中線性表的鏈?zhǔn)巾樞蚴酱鎯?chǔ)結(jié)構(gòu)、查找、排序,以及C++的編程、MFC界面設(shè)計(jì)等多個(gè)知識點(diǎn)。通過設(shè)計(jì)、調(diào)試此實(shí)驗(yàn),到達(dá)檢測學(xué)生對上述知識點(diǎn)的綜合應(yīng)用能力1.3課題研究的內(nèi)容本課題——通訊錄的制作,為了實(shí)現(xiàn)數(shù)據(jù)的輸入、輸出、追加、刪除、排序查詢、輸出、存、取功能。程序的根本功能為:建立通訊者信息,包括姓名、、、地址;添加新的通訊者信息;按姓名或查詢某個(gè)通訊者的信息;按姓名刪除某個(gè)通訊者的信息;輸出顯示通訊錄的所有信息;將數(shù)據(jù)以文件的形式存儲(chǔ)在磁盤上;在下次操作時(shí)課從磁盤中讀取原保存數(shù)據(jù)。其具體功能如圖1-1所示:第二章設(shè)計(jì)簡介及設(shè)計(jì)方案論述2.1設(shè)計(jì)簡介2.1.1設(shè)計(jì)總體為實(shí)現(xiàn)通訊錄的添加、刪除、查找、更新等功能,我在界面設(shè)計(jì)時(shí),添加了七個(gè)按鈕,他們分別是:添加、刪除、更新信息、全部去除、按姓名查找、按號碼查找、關(guān)于。其功能分別為:添加:點(diǎn)擊“添加”按鈕,可以添加通訊錄記錄,利用C語言文件,向文件中按順序輸入姓名、、地址、,再用函數(shù)關(guān)閉并保存文件。刪除:光標(biāo)移動(dòng)至你要?jiǎng)h除的人的姓名后,點(diǎn)擊“刪除”按鈕系統(tǒng)會(huì)自動(dòng)刪除他〔她〕的記錄,在刪除通過消息盒子提示你確認(rèn)刪除的功能,只有等你確認(rèn)刪除后才會(huì)刪除。查找:為了滿足用戶的實(shí)際需求,設(shè)計(jì)了三種查詢方式,可以用姓名、號碼兩種方式查找通訊錄記錄。點(diǎn)擊“查找”按鈕,通過比較字符串是否相同來判別是否找到相關(guān)信息,找到后,就把文件中的數(shù)據(jù)賦給對應(yīng)的變量,再把變量所帶的值輸出到屏幕上。更新信息:光標(biāo)移動(dòng)至你要修改的那個(gè)人的姓名后,點(diǎn)擊“更新信息”按鈕,系統(tǒng)會(huì)查找該通訊錄文件,然后用戶再依次輸入他〔她〕的相關(guān)信息來替代以前的記錄。全部去除:點(diǎn)擊“全部去除”按鈕后,會(huì)去除顯示用戶信息的那塊編輯框上的信息。關(guān)于:點(diǎn)擊“關(guān)于“按鈕后,會(huì)彈出一個(gè)對話框來顯示此通訊錄應(yīng)用程序建立的時(shí)間和名稱等信息。用戶界面設(shè)計(jì)如圖2-1所示:2.1.為存儲(chǔ)數(shù)據(jù)的信息,我們將用戶的每條信息用圖2-2所示的結(jié)構(gòu)來存儲(chǔ):圖2-2數(shù)據(jù)結(jié)構(gòu)圖2.2設(shè)計(jì)所用到的函數(shù)以及個(gè)變量如圖2-3所示,為設(shè)計(jì)所用到變量:圖2-3設(shè)計(jì)所用變量及函數(shù)2.3界面的制作翻開VC++6.0建立一個(gè)MFCAppwizard.exe,創(chuàng)立時(shí)選擇根本對話框。根據(jù)“設(shè)計(jì)總體思路”設(shè)計(jì)完根本對話框后,給需要的控件添加成員函數(shù)和變量。為函數(shù)添加功能代碼。如圖2-4所示:圖2-4添加變量圖2-5添加函數(shù)第三章詳細(xì)設(shè)計(jì)3.1通訊錄中數(shù)據(jù)的存儲(chǔ)3.1.1為了存儲(chǔ)聯(lián)系人的姓名、、地址和我們定義了PhoneCard結(jié)構(gòu)體,并采用鏈表的形式存儲(chǔ)。structPhoneCard{ charname[20];//姓名 charnum[20];// charaddress[20];//地址 charcode[10];// structPhoneCard*prev;//前一結(jié)點(diǎn) structPhoneCard*next;//下一結(jié)點(diǎn)};//定義結(jié)構(gòu)體同時(shí)還定義了全局變量staticstructPhoneCard*head,*last,*curr;//定義全局變量:頭指針、尾指針、當(dāng)前指針3.1.對于聯(lián)系人的存儲(chǔ),我們采用文件的形式存在外存上。于是,定義了類CPhoneBookDlgclassCPhoneBookDlg:publicCDialog{//Constructionpublic: voidLoadInfo(structPhoneCard*); voidDataInit();//函數(shù)聲明 FILE*fp;//聲明文件指針 intiCount;//總的結(jié)點(diǎn)數(shù) boolbNewFile;//文件屬性:是否為新文件?第一次運(yùn)行程序 boolbFileEmpty;//文件屬性:文件是否為空 boolbFileModified;//文件屬性:文件是否被修改 CPhoneBookDlg(CWnd*pParent=NULL); //standardconstructor//DialogData //{{AFX_DATA(CPhoneBookDlg) enum{IDD=IDD_PHONEBOOK_DIALOG}; CButton m_Button_Add; CEdit m_IDC_Name; CListBox m_NameList; CString m_szAddress; CString m_szCode; CString m_szName; CString m_szPhone; CString m_szSearchContent;//對各控件的對象進(jìn)行聲明 //}}AFX_DATA //ClassWizardgeneratedvirtualfunctionoverrides //{{AFX_VIRTUAL(CPhoneBookDlg) protected: virtualvoidDoDataExchange(CDataExchange*pDX); //DDX/DDVsupport //}}AFX_VIRTUAL//Implementationprotected: voidOnOK(); HICONm_hIcon; //Generatedmessagemapfunctions //{{AFX_MSG(CPhoneBookDlg) virtualBOOLOnInitDialog(); afx_msgvoidOnSysCommand(UINTnID,LPARAMlParam); afx_msgvoidOnPaint(); afx_msgHCURSOROnQueryDragIcon(); afx_msgvoidOnUpdate(); afx_msgvoidOnAdd(); afx_msgvoidOnSelchangeNamelist(); afx_msgvoidOnDelete(); afx_msgvoidOnClear(); afx_msgvoidOnClose(); afx_msgvoidOnAbout(); afx_msgvoidOnSearchbyname(); afx_msgvoidOnSearchbyphone(); //}}AFX_MSG DECLARE_MESSAGE_MAP()};3.2通訊錄界面的設(shè)計(jì)設(shè)計(jì)通訊錄界面所添加的控件為完成通訊錄的添加、修改、刪除、查找等功能,我們需在主界面上添加如圖3-1所示的控件:圖3-1控件添加四個(gè)編輯框,分別用于輸入或輸出聯(lián)系人姓名、、地址、。姓名編輯框代碼系統(tǒng)自動(dòng)生成,如下:voidCPhoneBookDlg::OnChangeName(){ //sendthisnotificationunlessyouoverridetheCDialog::OnInitDialog() //functionandcallCRichEditCtrl().SetEventMask() //withtheENM_CHANGEflagORedintothemask. //TODO:Addyourcontrolnotificationhandlercodehere}、地址、同上。其中,四個(gè)編輯框的ID分別設(shè)定為:IDC_NAMEIDC_PHONEIDC_ADDRESSIDC_CODE添加“姓名”顯示列表框,如圖3-2所示圖3-2姓名顯示框設(shè)置其ID為:IDC_NAMELIST添加“添加”、“刪除”、“更新信息”、“全部去除”、“關(guān)于”五個(gè)按鈕。設(shè)置其ID,并為他們添加成員變量和函數(shù)。其數(shù)據(jù)如表3-1所示:表3-1各控件的ID及所含變量名函數(shù)名名稱ID類型變量名添加IDC_ADDC_Buttonm_Button_Add刪除IDC_DELETE更新信息IDC_UPDATE全部去除IDC_CLEAR關(guān)于IDC_ABOUTIDC_CODECStringm_szCode地址IDC_ADDRESSCStringm_szAddress姓名IDC_NAMECStringm_szName姓名IDC_NAMECEditm_IDC_Name姓名列表IDC_NAMELISTCListBoxm_NameListIDC_PHONECStringm_szPhone查找編輯框IDC_SEARCHCONTENTCStringm_szSearchContent按姓名查找IDC_SEARCHBYNAME按號碼查找IDC_SEARCHBYPHONE3.2.2函數(shù)原型:voidDataInit()voidCPhoneBookDlg::DataInit(){ structPhoneCard*p,*q; bFileEmpty=FALSE; bNewFile=FALSE; bFileModified=FALSE; p=head=(structPhoneCard*)malloc(sizeof(structPhoneCard)); head->prev=head->next=NULL;// if(!(fp=fopen("data.dat","r"))) { bNewFile=TRUE; bFileEmpty=TRUE; iCount=0; last=head; } if(!bFileEmpty),{ fread(&iCount,sizeof(int),1,fp); for(inti=0;i<iCount;i++) { q=(structPhoneCard*)malloc(sizeof(structPhoneCard)); fread(q,sizeof(structPhoneCard),1,fp); q->next=NULL; q->prev=p; p->next=q; p=p->next; m_NameList.InsertString(i,p->name); } last=p; } if(iCount==0)// { GetDlgItem(IDC_UPDATE)->EnableWindow(FALSE); GetDlgItem(IDC_DELETE)->EnableWindow(FALSE); GetDlgItem(IDC_SEARCHBYNAME)->EnableWindow(FALSE); GetDlgItem(IDC_SEARCHBYPHONE)->EnableWindow(FALSE); GetDlgItem(IDC_NAME)->EnableWindow(FALSE); GetDlgItem(IDC_PHONE)->EnableWindow(FALSE); GetDlgItem(IDC_ADDRESS)->EnableWindow(FALSE); GetDlgItem(IDC_CODE)->EnableWindow(FALSE); } else { m_NameList.SetCurSel(0); OnSelchangeNamelist(); }}具體實(shí)現(xiàn)與功能:先定義兩個(gè)臨時(shí)指針,并初始化文件屬性。然后,建立頭結(jié)點(diǎn)〔不存放數(shù)據(jù)〕,用if進(jìn)行判斷,假設(shè)試圖用只讀方式翻開數(shù)據(jù)文件,如文件不存在那么fp返回NULL值完成從文件讀取數(shù)據(jù)的操作;如果文件已存在,那么從文件中讀取數(shù)據(jù)建立鏈表;如果名單為空,禁用更新、刪除和查找等按鈕,以免發(fā)生誤操作導(dǎo)致錯(cuò)誤。函數(shù)原型:voidOnAdd()voidCPhoneBookDlg::OnAdd(){ GetDlgItem(IDC_NAME)->EnableWindow(TRUE); GetDlgItem(IDC_PHONE)->EnableWindow(TRUE); GetDlgItem(IDC_ADDRESS)->EnableWindow(TRUE); GetDlgItem(IDC_CODE)->EnableWindow(TRUE); curr=(structPhoneCard*)malloc(sizeof(structPhoneCard));// strcpy(curr->name,"新名字"); strcpy(curr->num,""); strcpy(curr->address,""); strcpy(curr->code,""); m_NameList.InsertString(m_NameList.GetCount(),"新名字"); m_NameList.SetCurSel(m_NameList.GetCount()-1); iCount++; curr->next=NULL; curr->prev=last; last->next=curr; last=curr; bFileEmpty=FALSE; bFileModified=TRUE; GetDlgItem(IDC_UPDATE)->EnableWindow(TRUE); GetDlgItem(IDC_DELETE)->EnableWindow(TRUE); GetDlgItem(IDC_SEARCHBYNAME)->EnableWindow(TRUE); GetDlgItem(IDC_SEARCHBYPHONE)->EnableWindow(TRUE); LoadInfo(curr);}具體實(shí)現(xiàn)與功能:啟用文本框控件,將當(dāng)前指針指向新增加的結(jié)點(diǎn)上,將默認(rèn)的數(shù)據(jù)復(fù)制到當(dāng)前結(jié)點(diǎn),在列表框中插入新名字并選中??偨Y(jié)點(diǎn)數(shù)加1,在尾結(jié)點(diǎn)后插入新結(jié)點(diǎn),修改文件屬性,文件被修改且不為空。啟用更新、刪除、查找按鈕控件,在文本框顯示個(gè)人信息。如圖3-3所示:圖3-3添加按鈕函數(shù)原型:voidDataUpdate()voidCPhoneBookDlg::OnUpdate(){ //TODO:Addyourcontrolnotificationhandlercodehere UpdateData(); intsel=m_NameList.GetCurSel(); if(m_szName=="") { MessageBox("必須鍵入姓名!","錯(cuò)誤!",MB_ICONERROR); m_IDC_Name.SetFocus(); return; }if(m_szPhone==""||m_szPhone<48||m_szPhone>57) { MessageBox("號碼必須鍵入數(shù)字!","錯(cuò)誤!",MB_ICONERROR);} strcpy(curr->name,m_szName); strcpy(curr->num,m_szPhone); strcpy(curr->address,m_szAddress); strcpy(curr->code,m_szCode); m_NameList.DeleteString(sel); m_NameList.InsertString(sel,m_szName); m_NameList.SetCurSel(sel); m_Button_Add.SetFocus();}具體實(shí)現(xiàn)與功能:得到所選擇記錄在列表框中的序號,判斷如果姓名輸入框?yàn)榭漳敲窗l(fā)生錯(cuò)誤,彈出顯示出錯(cuò)的MessageBox,并且判斷如果號碼輸入為空或者不為數(shù)字,那么彈出顯示出錯(cuò)的MessageBox報(bào)錯(cuò)。輸入符合要求后,將更新的數(shù)據(jù)從文本輸入框復(fù)制到結(jié)點(diǎn),更新列表框中的姓名,將焦點(diǎn)設(shè)置到“添加”按鈕上。于是,完成修改當(dāng)前記錄的操作。如圖3-4與3-5所示:圖3-4姓名添加圖3-5號碼添加函數(shù)原型:voidOnSelchangeNamelist()voidCPhoneBookDlg::OnSelchangeNamelist(){ //TODO:Addyourcontrolnotificationhandlercodehere intsel=m_NameList.GetCurSel(); curr=head->next; for(inti=0;i<sel;i++) curr=curr->next; LoadInfo(curr);}具體操作與功能:當(dāng)列表框的選擇項(xiàng)改變時(shí),獲得當(dāng)前的選擇,移動(dòng)指針到指定結(jié)點(diǎn)的位置,更新界面。函數(shù)原型:voidLoadInfo(PhoneCard*p)voidCPhoneBookDlg::LoadInfo(PhoneCard*p){ m_szName=p->name; m_szPhone=p->num; m_szAddress=p->address; m_szCode=p->code; UpdateData(FALSE); m_IDC_Name.SetFocus(); m_IDC_Name.SetSel(0,20,TRUE);}具體操作與功能:將結(jié)點(diǎn)中存放的數(shù)據(jù)信息顯示在文本框中,輸入為當(dāng)前結(jié)點(diǎn)的地址值,輸出為空。函數(shù)原型:voidOnDelete()voidCPhoneBookDlg::OnDelete(){ intsel=m_NameList.GetCurSel(); structPhoneCard*p=curr; if(MessageBox("確定要?jiǎng)h除嗎?","警告",MB_ICONQUESTION|MB_OKCANCEL)==IDCANCEL) return; iCount--; p->prev->next=p->next; if((p->next)!=NULL) p->next->prev=p->prev; else last=p->prev; free(p); m_NameList.DeleteString(sel); if(m_NameList.GetCount()==0){ GetDlgItem(IDC_UPDATE)->EnableWindow(FALSE); GetDlgItem(IDC_DELETE)->EnableWindow(FALSE); GetDlgItem(IDC_SEARCHBYNAME)->EnableWindow(FALSE); GetDlgItem(IDC_SEARCHBYPHONE)->EnableWindow(FALSE); GetDlgItem(IDC_NAME)->EnableWindow(FALSE); GetDlgItem(IDC_PHONE)->EnableWindow(FALSE); GetDlgItem(IDC_ADDRESS)->EnableWindow(FALSE); GetDlgItem(IDC_CODE)->EnableWindow(FALSE); OnClear(); bFileEmpty=TRUE; bFileModified=TRUE; return; } if(sel<m_NameList.GetCount()) m_NameList.SetCurSel(sel); else m_NameList.SetCurSel(sel-1); OnSelchangeNamelist();}具體操作與功能:得到所選記錄在列表框中的序號,新建一個(gè)臨時(shí)指針變量,將當(dāng)前結(jié)點(diǎn)刪除時(shí),彈出確認(rèn)對話框,確認(rèn)后刪除,總結(jié)點(diǎn)數(shù)減1。當(dāng)當(dāng)前結(jié)點(diǎn)為尾結(jié)點(diǎn)時(shí),應(yīng)注意釋放內(nèi)存空間。刪除在列表框中記錄,如果剩除到一條記錄都不剩,那么需要禁用一些控件以免發(fā)生誤操作,同時(shí)修改文件屬性,將焦點(diǎn)定義在列表中上一條記錄。如圖3-6所示:圖3-6記錄刪除函數(shù)原型:voidOnClear()voidCPhoneBookDlg::OnClear(){ //TODO:Addyourcontrolnotificationhandlercodehere m_szName=""; m_szPhone=""; m_szAddress=""; m_szCode=""; UpdateData(FALSE);}具體操作與功能:去除當(dāng)前文本框里的內(nèi)容。如圖3-7所示:圖3-7全部去除函數(shù)原型:voidOnClose()voidCPhoneBookDlg::OnClose(){ structPhoneCard*p;if((!bNewFile)&&bFileModified) { fclose(fp); DeleteFile("data.dat"); } if(!bFileEmpty) { if(!(fp=fopen("data.dat","w+"))) { MessageBox("I'msorrybuttheprogramencounterafilediskproblem!","ERROR",MB_ICONERROR); return; } fwrite(&iCount,sizeof(int),1,fp); fseek(fp,sizeof(int),0); p=head->next; while(p) { fwrite(p,sizeof(structPhoneCard),1,fp); p=p->next; } } CDialog::OnClose();}具體操作與功能:聲明一個(gè)臨時(shí)指針變量,根據(jù)文件屬性來決定是否要?jiǎng)h除原文件,根據(jù)文件是否為空來決定是否要新建文件并寫入數(shù)據(jù)。假設(shè)不為空,創(chuàng)立新文件失敗,彈出消息提醒;創(chuàng)立新文件成功,將總結(jié)點(diǎn)數(shù)寫入文件,移動(dòng)文件指針,將臨時(shí)指針變量移動(dòng)來頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),也就是第一個(gè)存放數(shù)據(jù)的結(jié)點(diǎn),假設(shè)當(dāng)結(jié)點(diǎn)不為空,將數(shù)據(jù)寫入文件并將指針后移,程序結(jié)束時(shí)將鏈表中的數(shù)據(jù)保存到文件。函數(shù)原型:OnAbout()voidCPhoneBookDlg::OnAbout(){ CAboutDlgdlg; dlg.DoModal();}具體操作與功能:連接CAboutDlg對話框。如圖3-8所示:圖3-8關(guān)于函數(shù)原型:OnOK()voidCPhoneBookDlg::OnOK(){ OnUpdate();}具體操作與功能:這個(gè)函數(shù)是為了處理回車鍵的事件,默認(rèn)為關(guān)閉對話框,現(xiàn)在改為調(diào)用OnUpdate()函數(shù)。函數(shù)原型:voidOnSearchbyname()voidCPhoneBookDlg::OnSearchbyname(){ UpdateData(); intsel=m_NameList.FindString(m_NameList.GetCurSel(),m_szSearchContent); if(sel==LB_ERR) { MessageBox("找不到記錄!","提示",MB_ICONWARNING); return; } m_NameList.SetCurSel(sel); OnSelchangeNamelist();}具體操作與功能:以姓名方式查找相應(yīng)的記錄,直接調(diào)用FindString函數(shù)查找并得到序號,如不存在那么提示找不到,彈出查找失敗的消息提示。函數(shù)原型:voidOnSearchbyphonw()voidCPhoneBookDlg::OnSearchbyphone(){ UpdateData(); PhoneCard*temp=curr; intsel=m_NameList.GetCurSel(); do { curr=curr->next; sel++; if(curr==NULL) { curr=head->next; sel=0; } if(!(strcmp(curr->num,m_szSearchContent))) { m_NameList.SetCurSel(sel); OnSelchangeNamelist(); return; }}while(curr!=temp); MessageBox("找不到記錄!","提示",MB_ICONWARNING); return;}具體操作與功能:以方式查找相應(yīng)記錄。將當(dāng)前結(jié)點(diǎn)的地址存入一個(gè)臨時(shí)指針中,m_NameList.GetCurSel()得到當(dāng)前記錄的序號,循環(huán),從當(dāng)前記錄的下一記錄開始查找,序號加1,如果已經(jīng)查找到表尾,將當(dāng)前指針移動(dòng)到頭結(jié)點(diǎn)的下一個(gè)結(jié)點(diǎn),因?yàn)轭^結(jié)點(diǎn)并不存放數(shù)據(jù),其中第一條記錄的序號為0,已經(jīng)遍歷整個(gè)鏈表但沒有找到記錄,輸出查找失敗信息。第四章設(shè)計(jì)結(jié)果及分析4.1程序運(yùn)行環(huán)境在VC++6.0環(huán)境下,用MFC和C++做的整個(gè)應(yīng)用程序。如圖4-1所示:圖4-1運(yùn)行環(huán)境調(diào)試后,顯示無錯(cuò)誤,如圖4-2所示:圖4-2調(diào)試4.2應(yīng)用程序的運(yùn)行界面翻開應(yīng)用程序,可以看到本通訊錄包含添加、刪除、更新信息、查找等功能。如圖4-3所示:圖4-3界面我們按下“關(guān)于”按鈕會(huì)彈出以下對話框,注明了作者的創(chuàng)作

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論