版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
課程設(shè)計(jì)報(bào)告題目: 中小企業(yè)資產(chǎn)信息管理系統(tǒng)畢業(yè)設(shè)計(jì)(論文)原創(chuàng)性聲明和使用授權(quán)說(shuō)明原創(chuàng)性聲明本人鄭重承諾:所呈交的畢業(yè)設(shè)計(jì)(論文),是我個(gè)人在指導(dǎo)教師的指導(dǎo)下進(jìn)行的研究工作及取得的成果。盡我所知,除文中特別加以標(biāo)注和致謝的地方外,不包含其他人或組織已經(jīng)發(fā)表或公布過的研究成果,也不包含我為獲得及其它教育機(jī)構(gòu)的學(xué)位或?qū)W歷而使用過的材料。對(duì)本研究提供過幫助和做出過貢獻(xiàn)的個(gè)人或集體,均已在文中作了明確的說(shuō)明并表示了謝意。作者簽名:日期:指導(dǎo)教師簽名:日期:使用授權(quán)說(shuō)明本人完全了解大學(xué)關(guān)于收集、保存、使用畢業(yè)設(shè)計(jì)(論文)的規(guī)定,即:按照學(xué)校要求提交畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版本;學(xué)校有權(quán)保存畢業(yè)設(shè)計(jì)(論文)的印刷本和電子版,并提供目錄檢索與閱覽服務(wù);學(xué)??梢圆捎糜坝 ⒖s印、數(shù)字化或其它復(fù)制手段保存論文;在不以贏利為目的前提下,學(xué)??梢怨颊撐牡牟糠只蛉?jī)?nèi)容。
學(xué)位論文原創(chuàng)性聲明本人鄭重聲明:所呈交的論文是本人在導(dǎo)師的指導(dǎo)下獨(dú)立進(jìn)行研究所取得的研究成果。除了文中特別加以標(biāo)注引用的內(nèi)容外,本論文不包含任何其他個(gè)人或集體已經(jīng)發(fā)表或撰寫的成果作品。對(duì)本文的研究做出重要貢獻(xiàn)的個(gè)人和集體,均已在文中以明確方式標(biāo)明。本人完全意識(shí)到本聲明的法律后果由本人承擔(dān)。作者簽名: 日期: 年月日學(xué)位論文版權(quán)使用授權(quán)書本學(xué)位論文作者完全了解學(xué)校有關(guān)保留、使用學(xué)位論文的規(guī)定,同意學(xué)校保留并向國(guó)家有關(guān)部門或機(jī)構(gòu)送交論文的復(fù)印件和電子版,允許論文被查閱和借閱。本人授權(quán)大學(xué)可以將本學(xué)位論文的全部或部分內(nèi)容編入有關(guān)數(shù)據(jù)庫(kù)進(jìn)行檢索,可以采用影印、縮印或掃描等復(fù)制手段保存和匯編本學(xué)位論文。涉密論文按學(xué)校規(guī)定處理。導(dǎo)師簽名:日期:年月日導(dǎo)師簽名:日期:年月日注意事項(xiàng)1.設(shè)計(jì)(論文)的內(nèi)容包括:1)封面(按教務(wù)處制定的標(biāo)準(zhǔn)封面格式制作)2)原創(chuàng)性聲明3)中文摘要(300字左右)、關(guān)鍵詞4)外文摘要、關(guān)鍵詞5)目次頁(yè)(附件不統(tǒng)ー編入)6)論文主體部分:引言(或緒論)、正文、結(jié)論7)參考文獻(xiàn)8)致謝9)附錄(對(duì)論文支持必要時(shí)).論文字?jǐn)?shù)要求:理工類設(shè)計(jì)(論文)正文字?jǐn)?shù)不少于1萬(wàn)字(不包括圖紙、程序清單等),文科類論文正文字?jǐn)?shù)不少于L2萬(wàn)字。.附件包括:任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)。.文字、圖表要求:1)文字通順,語(yǔ)言流暢,書寫字跡エ整,打印字體及大小符合要求,無(wú)錯(cuò)別字,不準(zhǔn)請(qǐng)他人代寫2)工程設(shè)計(jì)類題目的圖紙,要求部分用尺規(guī)繪制,部分用計(jì)算機(jī)繪制,所有圖紙應(yīng)符合國(guó)家技術(shù)標(biāo)準(zhǔn)規(guī)范。圖表整潔,布局合理,文字注釋必須使用工程字書寫,不準(zhǔn)用徒手畫3)畢業(yè)論文須用A4單面打印,論文50頁(yè)以上的雙面打印4)圖表應(yīng)繪制于無(wú)格子的頁(yè)面上5)軟件工程類課題應(yīng)有程序清單,并提供電子文檔.裝訂順序1)設(shè)計(jì)(論文)2)附件:按照任務(wù)書、開題報(bào)告、外文譯文、譯文原文(復(fù)印件)次序裝訂3)其它課程設(shè)計(jì)任務(wù)書題目 中小企業(yè)資產(chǎn)信息管理系統(tǒng)課題內(nèi)容:用C語(yǔ)言開發(fā)ー個(gè)基于十字交叉鏈表的信息系統(tǒng),對(duì)教師工作量進(jìn)行自動(dòng)管理,該系統(tǒng)具有以下功能:各種基本數(shù)據(jù)的錄入。要求每個(gè)系統(tǒng)的1級(jí)鏈表、2級(jí)鏈表、3級(jí)鏈表都能夠進(jìn)行基本數(shù)據(jù)的錄入。各種基本數(shù)據(jù)的修改。允許對(duì)已經(jīng)錄入的數(shù)據(jù)重新進(jìn)行編輯、修改。要求每個(gè)系統(tǒng)的1級(jí)鏈表、2級(jí)鏈表、3級(jí)鏈表都能夠進(jìn)行基本信息的修改。各種基本數(shù)據(jù)的插入。要求每個(gè)系統(tǒng)的1級(jí)鏈表、2級(jí)鏈表、3級(jí)鏈表都能夠進(jìn)行結(jié)點(diǎn)的插入。(4)各種基本數(shù)據(jù)的刪除。要求每個(gè)系統(tǒng)的1級(jí)鏈表、2級(jí)鏈表、3級(jí)鏈表都能夠進(jìn)行結(jié)點(diǎn)的刪除?;诟鞣N數(shù)據(jù)的査詢?;诟鞣N基本數(shù)據(jù)的統(tǒng)計(jì)計(jì)算。如:(6-3-1)統(tǒng)計(jì)各類資產(chǎn)的總價(jià)格,按總價(jià)格從高到低排序后輸出;(6-3-2)統(tǒng)計(jì)各資產(chǎn)的出借次數(shù),從高到低排序后輸出;(6-3-3)列出到期未還的出借信息(如:資戶編號(hào),責(zé)任人姓名);(6-3-4)其它方面的統(tǒng)計(jì)(自行確定)。課題任務(wù)要求:1、只能使用C語(yǔ)言,源程序編寫格式要按照縮進(jìn)方式,源程序要有詳細(xì)的注釋。2、要有用戶界面。要求至少采用教材p325類似的簡(jiǎn)易菜單;最好采用文本菜單界面;鼓勵(lì)采用圖形菜單界面。3、必須使用結(jié)構(gòu)和十字交叉鏈表等數(shù)據(jù)結(jié)構(gòu)。4、使用二進(jìn)制數(shù)據(jù)文件來(lái)分別保存1級(jí)鏈表、2級(jí)鏈表、3級(jí)鏈表的數(shù)據(jù)。5、鼓勵(lì)自行增加新功能。主要參考文獻(xiàn):ロ]曹計(jì)昌,盧萍,李開.C語(yǔ)言與程序設(shè)計(jì).北京:電子工業(yè)出版社,2013.1[2]李開,盧萍,曹計(jì)昌.C語(yǔ)言實(shí)驗(yàn)與課程設(shè)計(jì).北京:科學(xué)出版社,2011.3TOC\o"1-5"\h\z\o"CurrentDocument"1緒言 1\o"CurrentDocument"選題背景 1\o"CurrentDocument"課程設(shè)計(jì)課題的目的與意義 1\o"CurrentDocument"課題的主要研究?jī)?nèi)容 1\o"CurrentDocument"技術(shù)路線 1\o"CurrentDocument"2系統(tǒng)整體設(shè)計(jì) 2\o"CurrentDocument"課題設(shè)計(jì)方法及過程 2\o"CurrentDocument"系統(tǒng)模塊分析 3\o"CurrentDocument"3數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì) 7\o"CurrentDocument"3.1動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu) 7\o"CurrentDocument"3.2結(jié)構(gòu)設(shè)計(jì)及其用法 8\o"CurrentDocument"4系統(tǒng)各模塊設(shè)計(jì)與實(shí)現(xiàn) 11\o"CurrentDocument"4.1主模塊設(shè)計(jì)與實(shí)現(xiàn) 11\o"CurrentDocument"4.2文件模塊設(shè)計(jì)與實(shí)現(xiàn) 12\o"CurrentDocument"4.3錄入模塊設(shè)計(jì)與實(shí)現(xiàn) 12\o"CurrentDocument"4.4查詢模塊設(shè)計(jì)與實(shí)現(xiàn) 154.5統(tǒng)計(jì)模塊設(shè)計(jì)與實(shí)現(xiàn) 16\o"CurrentDocument"4.6幫助模塊設(shè)計(jì)與實(shí)現(xiàn) 16\o"CurrentDocument"4.7其他輔助函數(shù)的設(shè)計(jì)與實(shí)現(xiàn) 16\o"CurrentDocument"5系統(tǒng)測(cè)試 18\o"CurrentDocument"文件模塊測(cè)試 18\o"CurrentDocument"錄入模塊測(cè)試 20\o"CurrentDocument"查詢模塊測(cè)試 23\o"CurrentDocument"5.4統(tǒng)計(jì)模塊測(cè)試 29\o"CurrentDocument"5.5幫助模塊測(cè)試 31\o"CurrentDocument"6總結(jié)與體會(huì) 33\o"CurrentDocument"7參考文獻(xiàn) 34\o"CurrentDocument"附錄1程序清單 35\o"CurrentDocument"附錄1.1頭文件 35\o"CurrentDocument"附錄1.2C文件源碼 401緒言本章內(nèi)容闡述了這?款軟件——中小型企業(yè)資產(chǎn)管理系統(tǒng)的開發(fā)背景、適用人群、適用平臺(tái)及使用的基礎(chǔ)情況。選題背景當(dāng)今社會(huì)創(chuàng)業(yè)前景廣闊,近幾年來(lái)社會(huì)中涌現(xiàn)了大量的中小型企業(yè)。這些企業(yè)很多沒有專業(yè)技術(shù)背景,在資產(chǎn)管理和人員配置等方面依然使用傳統(tǒng)人工的方法,為本就規(guī)模不大的企業(yè)增添了很多負(fù)擔(dān)。這ー課題的選擇就是講用戶定義在中小型企業(yè)管理人員,這ー軟件的出現(xiàn)可以使企業(yè)大規(guī)模節(jié)省人力資源和其他不必要的損失和浪費(fèi)。課程設(shè)計(jì)課題的目的與意義(1)進(jìn)ー步熟悉Windows下基于C語(yǔ)言的程序開發(fā),形成完整的開發(fā)思路;(2)在程序開發(fā)過程中了解完整的程序結(jié)構(gòu),讓寫作格式、代碼可讀性等細(xì)節(jié)更加規(guī)范,為團(tuán)隊(duì)開發(fā)打下基礎(chǔ);(3)通過該程序的開發(fā),了解并解決中小型企業(yè)的困難和問題。課題的主要研究?jī)?nèi)容(1)使用結(jié)構(gòu)和十字交叉鏈表等數(shù)據(jù)結(jié)構(gòu)來(lái)存儲(chǔ)企業(yè)的資產(chǎn)信息。(2)使用二進(jìn)制數(shù)據(jù)文件來(lái)保存鏈表的信息,即企業(yè)的資產(chǎn)信息。(3)完成一定的功能,如輸入、更改、刪除、插入和查詢等,為中小企業(yè)對(duì)資產(chǎn)信息的存儲(chǔ)更加的方便、靈活。4技術(shù)路線完成該課題所運(yùn)用的技術(shù)路線:(1)在Windows下的CodeBlocks編程軟件下進(jìn)行基礎(chǔ)C語(yǔ)言的程序開發(fā);(2)基礎(chǔ)C下的結(jié)構(gòu)、十字交叉鏈表(三級(jí))、I/O文件、插入刪除節(jié)點(diǎn)以及遍歷鏈表等詳細(xì)技術(shù);(3)運(yùn)用GTK實(shí)現(xiàn)圖形化窗口;(4)運(yùn)用GTK樹功能儲(chǔ)存并展示多級(jí)鏈表;2系統(tǒng)整體設(shè)計(jì)課題設(shè)計(jì)方法及過程課題設(shè)計(jì)方法(1)從整體到個(gè)體:先整體分析,設(shè)計(jì)出大概的架構(gòu),再針對(duì)ー個(gè)個(gè)功能ー個(gè)個(gè)函數(shù)進(jìn)行具體的分析與實(shí)現(xiàn)。(2)從簡(jiǎn)單到復(fù)雜:先把簡(jiǎn)單的變量、結(jié)構(gòu)等創(chuàng)建好以及簡(jiǎn)單的函數(shù)功能,再對(duì)有難度的函數(shù)及鏈表的設(shè)計(jì)進(jìn)行分析、解決。(3)從抽象到具體:先抽象的把各個(gè)函數(shù)功能進(jìn)行分類,分成兒個(gè)大類,再具體的針對(duì)各個(gè)函數(shù)的特點(diǎn)進(jìn)行設(shè)計(jì)。(4)從單一到多樣:先把程序設(shè)計(jì)的簡(jiǎn)單,以及把鏈表先鏈接的單ー,再把程序美觀及友好化,逐漸的把鏈表復(fù)雜化。(5)先思考再查閱:先自己獨(dú)立思考,爭(zhēng)取自己解決問題、實(shí)現(xiàn)功能,再到翻閱書籍、査詢網(wǎng)站等。課題設(shè)計(jì)過程(1)從整體入手:分析整個(gè)信息系統(tǒng)的架構(gòu)、數(shù)據(jù)之間的關(guān)系、分析課題設(shè)計(jì)要求等方面,做到心中大概有設(shè)計(jì)的方向,不會(huì)太迷茫。(2)分析文本界面:先看懂其代碼,知道怎么實(shí)現(xiàn)的,然后再考慮如何把自己的功能和需求放入該界面中。(3)修改文本界面:在看懂的基礎(chǔ)上,對(duì)文本界面的代碼進(jìn)行修改,把自己的函數(shù)名及需要修改的地方寫好。(4)各個(gè)功能分析:完成界面后,就開始對(duì)每個(gè)功能進(jìn)行分析,了解大概每個(gè)功能需要運(yùn)用什么知識(shí),需要如何構(gòu)建、實(shí)現(xiàn)。(5)開始代碼編寫:在大概了解各個(gè)功能如何實(shí)現(xiàn)的基礎(chǔ)上,就開始代碼編寫,從基礎(chǔ)的錄入開始,ー步步的完成。(6)遇到問題:當(dāng)編寫遇到問題時(shí),如果是邏輯問題,就進(jìn)行單步調(diào)試;如果是語(yǔ)法問題,就根據(jù)出錯(cuò)的位置進(jìn)行檢査、分析;如果是思路、算法問題,就先自己思考、嘗試,再翻閱書籍、網(wǎng)上查詢,最后,再問同學(xué)、學(xué)長(zhǎng)幫助。(7)優(yōu)化界面:為了實(shí)現(xiàn)系統(tǒng)的友好化,在實(shí)現(xiàn)基本功能后,在界面上進(jìn)行了一定的修改,使用戶更好的操作。(8)檢查測(cè)試:輸入大量數(shù)據(jù),對(duì)每個(gè)功能進(jìn)行測(cè)試,確保無(wú)誤。系統(tǒng)模塊分析系統(tǒng)模塊總體分析系統(tǒng)模塊分為五大模塊(圖2.1),分別為:文件、錄入、查詢、統(tǒng)計(jì)、幫助。圖2.1系統(tǒng)總體模塊圖文件模塊包括:(1)數(shù)據(jù)加載(2)數(shù)據(jù)保存(3)數(shù)據(jù)備份(4)數(shù)據(jù)恢復(fù)(5)退出系統(tǒng)錄入模塊包括:(1)分類信息錄入(2)基本信息錄入(3)出借信息錄入查詢模塊包括:(1)分類信息查詢、修改和刪除(2)基本信息查詢、修改和刪除(3)出借信息查詢、修改和刪除統(tǒng)計(jì)模塊包括:(1)類別總價(jià)格統(tǒng)計(jì)(2)出借次數(shù)統(tǒng)計(jì)(3)未歸還資產(chǎn)統(tǒng)計(jì)幫助模塊包括:(1)幫助主題(2)系統(tǒng)版本和版權(quán)說(shuō)明各個(gè)模塊詳細(xì)解釋(1)文件模塊詳細(xì)解釋(圖2.2)文件模塊包括:數(shù)據(jù)加載、數(shù)據(jù)保存、數(shù)據(jù)備份、數(shù)據(jù)恢復(fù)、退出系統(tǒng)。①數(shù)據(jù)加載:將即時(shí)保存好的二進(jìn)制文件讀取并載入系統(tǒng)。②數(shù)據(jù)保存:將當(dāng)前鏈表分逐級(jí)保存為多個(gè)二進(jìn)制文件。③數(shù)據(jù)備份:將當(dāng)前鏈表完整備份到二進(jìn)制文件中,文件名為日期。④數(shù)據(jù)恢復(fù):選擇需要恢復(fù)的文件名并載入全部鏈表。⑤退出系統(tǒng):取消當(dāng)前進(jìn)行的全部進(jìn)程,退出程序圖2.2文件模塊圖(2)錄入模塊詳細(xì)解釋(圖2.3)錄入模塊包括:分類信息錄入、基本信息錄入、出借信息錄入。①分類信息錄入:分類信息錄入是對(duì)ー級(jí)鏈表的節(jié)點(diǎn)增加和數(shù)據(jù)的錄入。②基本信息錄入:分類信息錄入是對(duì)二級(jí)鏈表的節(jié)點(diǎn)增加和數(shù)據(jù)的錄入。③出借信息錄入:分類信息錄入是對(duì)三級(jí)鏈表的節(jié)點(diǎn)增加和數(shù)據(jù)的錄入。
圖2.3錄入模塊圖(3)查詢模塊詳細(xì)分析(圖2.4)①分類信息處理:分為對(duì)分類信息的查詢、修改和刪除,對(duì)應(yīng)為一級(jí)鏈表的遍歷、節(jié)點(diǎn)修改和節(jié)點(diǎn)的刪除。②基本信息處理:分為對(duì)基本信息的查詢、修改和刪除,對(duì)應(yīng)為ニ級(jí)鏈表的遍歷、節(jié)點(diǎn)修改和節(jié)點(diǎn)的刪除。③出借信息處理:分為對(duì)出借信息的查詢、修改和刪除,對(duì)應(yīng)為三級(jí)鏈表的遍歷、節(jié)點(diǎn)修改和節(jié)點(diǎn)的刪除。
(4)統(tǒng)計(jì)模塊詳細(xì)分析(圖2.5):數(shù)據(jù)統(tǒng)計(jì)模塊包括:類別總價(jià)格統(tǒng)計(jì)、出借次數(shù)統(tǒng)計(jì)、未歸還資產(chǎn)統(tǒng)計(jì)。①類別總價(jià)格:對(duì)每ー個(gè)ー級(jí)鏈表節(jié)點(diǎn)下的二級(jí)鏈表進(jìn)行遍歷,對(duì)價(jià)格進(jìn)行加和并輸出。②出借次數(shù)統(tǒng)計(jì):對(duì)二級(jí)鏈表進(jìn)行遍歷,統(tǒng)計(jì)每一節(jié)點(diǎn)下的三級(jí)鏈表數(shù)量。③未歸還資產(chǎn)統(tǒng)計(jì):對(duì)三級(jí)鏈表進(jìn)行遍歷,對(duì)歸還日期進(jìn)行比較,排除已歸還的信息,顯示未歸還。圖2.5資產(chǎn)信息模塊圖(5)幫助模塊詳細(xì)分析(圖2.6):幫組模塊包括:幫助主題、系統(tǒng)版本與版權(quán)說(shuō)明。①幫助主題:基本操作的說(shuō)明。②系統(tǒng)版本及版權(quán)說(shuō)明:系統(tǒng)版本號(hào)和版權(quán)歸屬說(shuō)明。圖2.6幫助模塊圖3數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)動(dòng)態(tài)數(shù)據(jù)結(jié)構(gòu)(1)十字交叉鏈表該課題的十字交叉鏈表分為三級(jí)鏈表(可見圖3.1)第一?級(jí)鏈表為主鏈表,儲(chǔ)存資產(chǎn)分類信息,包含一個(gè)head頭指針作為指向該鏈表的頭,每一個(gè)鏈表中的結(jié)構(gòu)包含了一個(gè)指向二級(jí)鏈表的指針和指向下一個(gè)節(jié)點(diǎn)的ー級(jí)指針,該指針作為下面二級(jí)指針的頭指針,ー級(jí)鏈表每個(gè)結(jié)構(gòu)包含了分類信息和一個(gè)指向二級(jí)鏈表的指針。第二級(jí)鏈表為資產(chǎn)基本信息的鏈表,它由第一級(jí)鏈表所創(chuàng)建,即頭指針在…級(jí)鏈表中,然而第二級(jí)每ー個(gè)結(jié)構(gòu)中不僅包含了資產(chǎn)信息,還包含了一個(gè)指向第三級(jí)鏈表的頭指針和指向下一個(gè)節(jié)點(diǎn)的二級(jí)指針(該結(jié)構(gòu)的具體信息將在下ー節(jié)提到)。第三級(jí)鏈表為包含出借信息的鏈表,它由第二級(jí)鏈表所創(chuàng)建,即頭指針在第二級(jí)鏈表中,然后在第三級(jí)鏈表的每ー個(gè)節(jié)點(diǎn)中包含了出借基本信息以及指向下ー個(gè)節(jié)點(diǎn)的第三極指針(該結(jié)構(gòu)將的具體信息在下ー節(jié)提到)。圖3.1十字交叉鏈表圖(2)動(dòng)態(tài)分配的臨時(shí)變量主要是在添加、刪除、修改數(shù)據(jù)時(shí)創(chuàng)建出來(lái)的ー個(gè)臨時(shí)變量,每次使用時(shí)會(huì)在程序中初始化,使用后會(huì)對(duì)內(nèi)存進(jìn)行釋放。結(jié)構(gòu)設(shè)計(jì)及其用法(1)分類信息結(jié)構(gòu)(表3-1):typedefstructassets_class(gcharclass_num[8]; /*分類編號(hào)?/gcharclass_name[20]; /?分類名稱*/structassets_class*next;structassets_basic*leaf;intclass_sum;}ASSETS_CLASS;用法:這個(gè)struct結(jié)構(gòu)是保存分類信息的結(jié)構(gòu),里面包含了分類編號(hào),分類名稱,指向下個(gè)鏈表的指針和指向資產(chǎn)基本信息鏈表,以及統(tǒng)計(jì)分類下二級(jí)鏈表節(jié)點(diǎn)數(shù)量的值。表3-1分類信息結(jié)構(gòu)表中文字段名類型舉例分類編號(hào)gchar[8]00001分類名稱gchar[20]車輛船舶指向下ー個(gè)鏈表指針structassets_class*next指向資產(chǎn)基本信息鏈structassetsbasic*leaf基本信息鏈節(jié)點(diǎn)數(shù)intsum(2)資產(chǎn)信息結(jié)構(gòu)(表3-2):typedefstructassets_basic(gcharclass_num[8]; /*分類編號(hào)?/gcharassets_num[81; /*資產(chǎn)編號(hào)?/gcharassets_name[201;/?資產(chǎn)名稱?/gcharmodel[15]; /?型號(hào)?/
/?制造商/?制造商?//?價(jià)格?//?登記日期?//?存放地點(diǎn)?//?是否在用?/gcharprice[8];gchardatefl1];gcharstorage[30];gcharin_use[8];structassets_basic*next;structassetsjending*leaf;gintpricecount;gbooleanreturnornot;}ASSETS_BASIC;用法:這個(gè)struct類型是保存資產(chǎn)基本信息的結(jié)構(gòu)鏈表,分別保存了分類編號(hào)、資產(chǎn)編號(hào)、資產(chǎn)編號(hào)、型號(hào)、制造商、價(jià)格、登記日期、存放地址、是否在用、指向下ー個(gè)鏈表的指針以及指向出借基本信息鏈表的指針。表3-2資產(chǎn)信息結(jié)構(gòu)表中文字段名類型舉例分類編號(hào)IDgchar[8]0001資產(chǎn)編號(hào)gchar[8]1001資產(chǎn)名稱gchar[20]電腦型號(hào)gchar[15]N1制造商gchar[30]Lenovo價(jià)格gchar[8]53登記日期gchar[11]20131111存放地點(diǎn)gchar[30]倉(cāng)庫(kù)(3)出借信息結(jié)構(gòu)(表3?3)typedefstructassets_lendinggcharassets_num[8];gcharres_num[8];gcharassets_num[8];gcharres_num[8];gcharres_name[20];/?資產(chǎn)編號(hào)?//?資戶編號(hào)?//?責(zé)任人姓名?/gcharlending_date[11]; /?出借日期?/gcharplanned_return[l1]; /*計(jì)劃歸還日期?/gcharactual_return[ll];/*實(shí)際歸還日期?/gcharrepair_details[50]; /?維修詳細(xì)說(shuō)明?/structassetsjending*next;}ASSETS_LENDING;用法:這個(gè)struct結(jié)構(gòu)是保存出借基本信息的鏈表,里面保存著資產(chǎn)編號(hào),責(zé)任人編號(hào),出借日期,計(jì)劃歸還日期,實(shí)際歸還日期,維修細(xì)節(jié)以及指向下ー個(gè)鏈表的指針。表3-3出借信息結(jié)構(gòu)中文字段名類型舉例資產(chǎn)編號(hào)gchar[8]1001責(zé)任人姓名gchar[20]Li_hui出借日期gchar[30]20140101計(jì)劃歸還日期gchar[30]20140404實(shí)際歸還日期gchar[30]20140505維修細(xì)節(jié)gchar[50]完好主模塊設(shè)計(jì)與實(shí)現(xiàn)主模塊設(shè)計(jì)方法主模塊通過調(diào)用GTK內(nèi)部啟動(dòng)函數(shù),并展示窗口。主模塊通過與用戶交互的部分確認(rèn)是否調(diào)用其他函數(shù)從而實(shí)現(xiàn)程序的運(yùn)行。主模塊的設(shè)計(jì)步驟在主模塊中,對(duì)GTK數(shù)據(jù)進(jìn)行初始化、用GTK建立構(gòu)件——主窗口并設(shè)置參數(shù)、設(shè)置主窗口詳細(xì)信息、加載數(shù)據(jù)、展示整個(gè)GTK程序。主模塊的函數(shù)原型:intmain(void)功能:初始化變量,返回:ー個(gè)整形。啟動(dòng)頁(yè)面窗口。。薪】主界面初始化intmain(void)功能:初始化變量,返回:ー個(gè)整形。啟動(dòng)頁(yè)面窗口。。薪】主界面初始化加載數(shù)據(jù)或添加數(shù)據(jù)所選功能關(guān)閉程序—1(結(jié)束)圖4.1主模塊流程圖文件模塊設(shè)計(jì)與實(shí)現(xiàn)gpointerSaveData(void)功能:將當(dāng)前數(shù)據(jù)保存至二進(jìn)制文件中,作為下次啟動(dòng)數(shù)據(jù)返回值:FALSEgpointerBackupData(void)功能:將當(dāng)前數(shù)據(jù)備份到二進(jìn)制文件中,文件名為backup+月份+日期+.dat返回值:FALSEgpointerFileSelect(void)功能:彈出文件選擇窗口返回值:FALSEvoidGetFileName(GtkWidget*w,GtkFileSelection*fs)功能:從文件選擇窗口獲得選擇的變量存入全局變量,按鈕的回調(diào)函數(shù)返回值:無(wú)(5)gpointerRestoreDataProblem(void)功能:恢復(fù)數(shù)據(jù)問題排除返回值:FALSEgpointerConfirmRestore(void)功能:確認(rèn)是否覆蓋當(dāng)前數(shù)據(jù)返回值:FALSEgpointerRestoreData(void)功能:讀入文件,覆蓋當(dāng)前數(shù)據(jù)返回值:FALSEBOOLLoadData(void)功能:將代碼表和三類基礎(chǔ)數(shù)據(jù)從文件載入到內(nèi)存緩沖區(qū)和十字鏈表中返回值:FALSE錄入模塊設(shè)計(jì)與實(shí)現(xiàn)voidClassifylnputWindow(void)功能:創(chuàng)建分類信息輸入窗口返回值:無(wú)voidGetClassifyNum(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetClassifyName(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidClassifylnfo(void)功能:確認(rèn)建立節(jié)點(diǎn)是否成功返回值:無(wú)ASSETS_CLASS*GetNewAssetsClass(void)功能:從動(dòng)態(tài)存儲(chǔ)區(qū)獲得新的信息,并建立新的孤獨(dú)節(jié)點(diǎn)。返回值:指向該孤立節(jié)點(diǎn)的指針BOOLInsertClassifyNode(ASSETS_CLASS**phead,ASSETS_CLASS*pClassifyNode)功能:將節(jié)點(diǎn)插入鏈表返回值:TRUEvoidBasicInputWindow(void)功能:創(chuàng)建基本信息輸入窗口返回值:無(wú)voidGetClassifyNum_b(GtkButton"button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetAssetsNum(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetAssetsName(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetModel(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetManufacturer(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetPrice(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetDate(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetStorage(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidGetlnUse(GtkButton*button,GtkEntry*ptr)功能:獲取特定文本輸入構(gòu)件的數(shù)據(jù)到全局臨時(shí)變量返回值:無(wú)voidBasiclnfo()功能:完成二級(jí)鏈表的節(jié)點(diǎn)創(chuàng)建和插入,并檢查分類編號(hào)是否存在。返回值:無(wú)ASSETS_BASIC*GetNewAssetsBasic(void)功能:從動(dòng)態(tài)存儲(chǔ)區(qū)獲得新的信息,并建立新的孤獨(dú)節(jié)點(diǎn)。返回值:指向該孤立節(jié)點(diǎn)的指針BOOLInsertBasicNode(ASSETS_CLASS*hd,ASSETS_BASIC*pAssetsBasic)功能:將孤獨(dú)的節(jié)點(diǎn)插入主鏈返回值:TRUEASSETS_CLASS*ClassifySearch(ASSETS_CLASS*hd,char*classify)功能:查找名字為Classify的分類節(jié)點(diǎn)返回值:査得分類節(jié)點(diǎn)指針,NULL代表未找到voidLendinglnputWindow(void)功能:創(chuàng)建出借信息輸入窗口返回值:無(wú)BOOLInsertLendingNode(ASSETS_CLASS*hd,ASSETS_LENDING*pAssetsLending)功能:將孤獨(dú)的節(jié)點(diǎn)插入主鏈返回值:FALSEASSETS.BASIC*BasicSearch(ASSETS_CLASS*hd,char*assets_num)功能:查找名字為Basic的分類節(jié)點(diǎn)返回值:無(wú)査詢模塊設(shè)計(jì)與實(shí)現(xiàn)voidClassOutput(void)功能:顯示所有分類信息,并在彈框下方有修改和刪除的按鈕返回值:無(wú)voidDeleteClassNode(GtkWidget*selection)功能:刪除選中的分類信息項(xiàng)目在鏈表中的數(shù)據(jù)返回值:無(wú)voidFreeClassifyNode(ASSETS_CLASS*pClassifyNode)功能:清空建立在某分類信息下的所有出借信息返回值:無(wú)voidFreeBasicNode(ASSETS_BASIC*pBasicNode)功能:清空建立在某基本信息下的所有出借信息返回值:無(wú)voidModifyClassify(GtkWidget*selection)功能:返回值:voidModifyClassify(GtkWidget*selection)功能:修改選中的出借項(xiàng)目在鏈表中的數(shù)據(jù)返回值:無(wú)voidBasicOutput(void)功能:顯示所有資產(chǎn)基本信息,并在彈框下方有修改和刪除的按鈕返回值:無(wú)voidDeleteBasicNode(GtkWidget*selection)功能:刪除選中的基本信息項(xiàng)目在鏈表中的數(shù)據(jù)返回值:無(wú)voidBasicChangeWindow(GtkWidget*selection)功能:創(chuàng)建出借信息修改窗口,文本框內(nèi)是未修改信息返回值:無(wú)voidModifyBasic(GtkWidget*selection)功能:修改選中的出借項(xiàng)目在鏈表中的數(shù)據(jù)返回值:無(wú)voidLendingOutput(void)功能:顯示所有出借信息,并在彈框下方有修改和刪除的按鈕返回值:無(wú)voidDeleteLendingNode(GtkWidget*selection)功能:刪除選中的出借項(xiàng)目在鏈表中的數(shù)據(jù)返回值:無(wú)voidLendingChangeWindow(GtkWidget*selection)功能:創(chuàng)建出借信息修改窗口,文本框內(nèi)是未修改信息返回值:無(wú)voidModifyLending(GtkWidget*selection)功能:修改選中的出借項(xiàng)目在鏈表中的數(shù)據(jù)返回值:無(wú)統(tǒng)計(jì)模塊設(shè)計(jì)與實(shí)現(xiàn)voidCountClassifyPrice()功能:統(tǒng)計(jì)某一分類信息下的總價(jià)格并彈出展示窗口返回值:無(wú)voidCountLendingNumO功能:統(tǒng)計(jì)出借次數(shù)的次數(shù)并彈出展示窗口返回值:無(wú)voidCountUnRetumed()功能:統(tǒng)計(jì)未歸還的資產(chǎn)信息并彈出展示窗口返回值:無(wú)幫助模塊設(shè)計(jì)與實(shí)現(xiàn)voidHelpTheme()功能:幫助主題彈出窗口返回值:無(wú)voidInfoVersion()功能:系統(tǒng)版本及版權(quán)說(shuō)明彈出窗口返回值:無(wú)其他輔助函數(shù)的設(shè)計(jì)與實(shí)現(xiàn)char*_(char*c)功能:獲取字符串并轉(zhuǎn)化成utf8編碼格式返回值:utf8編碼格式字符串gintDelete_event(GtkWidget*widget,GdkEvent*event,gpointerdata)功能:關(guān)閉部件返回值:FALSEvoid*Tips(gchar*topic,gintv)功能:新建一個(gè)位于中央的,有題目的,無(wú)法縮放大小的彈出窗體返回值:無(wú)intCreatList(ASSETS_CLASS**phead)功能:從數(shù)據(jù)文件讀取基礎(chǔ)數(shù)據(jù),并存放到所創(chuàng)建的十字鏈表中返回值:int型數(shù)值,表示鏈表創(chuàng)建的情況0空鏈,無(wú)數(shù)據(jù)!已加載分類信息數(shù)據(jù),無(wú)高校信息和資產(chǎn)出借信息數(shù)據(jù)3已加載分類信息高校信息數(shù)據(jù),無(wú)資產(chǎn)出借信息數(shù)據(jù)7三類基礎(chǔ)數(shù)據(jù)都已加載int*PriceAII(ASSETS_CLASS*pClassifyNode)功能:計(jì)算某一分類信息下的基本信息中的價(jià)格總和返回值:int型價(jià)格總和intCharxToInt(char*charx)功能:將指向char的格式的指針轉(zhuǎn)換成所指向的char,再轉(zhuǎn)換成int型。返回值:指針指向的char轉(zhuǎn)化為的int5系統(tǒng)測(cè)試文件模塊測(cè)試(1)對(duì)文件的功能選擇(見圖5.1.1)(2)文件加載(見圖5.1.2)(3)文件保存(見圖5.1.3)(4)文件備份(見圖5.1.4)(5)文件恢復(fù)(見圖5.1.5)載載存份復(fù)加保備恢a-圖5.1.2文件加載圖5.1.3文件保存圖5.1.4文件備份圖5.1.5文件恢復(fù)錄入模塊測(cè)試(1)進(jìn)入錄入功能(見圖5.2.1)(2)錄入分類信息(見圖5.2.2)(3)錄入基本信息(見圖5.2.3)(4)錄入出借信息(見圖5.2.4)(5)錄入成功提示(見圖5.2.5)圖5.2.1進(jìn)入錄入功能圖5.2.2錄入分類信息?l?l遨haha.exe圖5.2.3錄入基本信息圖5.2.4錄入出借信息コ提示分類信息錄入成功確認(rèn)圖5.2.5錄入成功提示查詢模塊測(cè)試(1)查詢功能選擇(見圖5.3.1)(2)分類信息查詢(見圖5.3.2)(3)分類信息修改(見圖5.3.3)(4)分類信息刪除(見圖5.3.4.1、圖534.2)(5)基本信息查詢(見圖5.3.5)(6)基本信息修改(見圖5.3.6)(7)基本信息刪除(見圖537.1、圖537.2)(8)出借信息查詢(見圖5.3.8)(9)出借信息修改(見圖5.3.9)(10)出借信息刪除(見圖5.3.10.1、圖5.3.10.2)
圖5.3.1查詢功能選擇圖5.3.2分類信息查詢圖5.3.3分類信息修改圖5.3.4.2分類信息刪除|L口haha.exe |X分類1資產(chǎn)編號(hào)1資產(chǎn)名稱1型號(hào)1制造商1價(jià)格1登記日期1存放地點(diǎn)|是否在用|H5501植物綠蘿花鳥市場(chǎng)1420080101陽(yáng)光房是13305中央空調(diào)U88Panasonic2500020100302倉(cāng)庫(kù)否3304正版條毒軟件企業(yè)版V4Q瑞星4000020140501倉(cāng)庫(kù)是3303投影儀881Sharp4000020090401會(huì)議室是3302電腦UJ200Lenovo390020101221倉(cāng)庫(kù)否3301電腦YU404Lenovo390020101211辦公室404是2201辦公區(qū)域1000陽(yáng)光物業(yè)147000020000401陽(yáng)光寫字摟是1101商務(wù)車HH553BUICK34444420130303地下停車場(chǎng)是修改刪除確認(rèn)圖5.3.5基本信息査詢
圖5.3.6基本信息修改[.圖5.3.6基本信息修改分類1資產(chǎn)編號(hào)1資產(chǎn)名稱1型號(hào)1制造商1價(jià)格1登記日期1存放地點(diǎn)|是否在用5501植物綠蘿花鳥市場(chǎng)1420080101陽(yáng)光房是3305中央空調(diào)U88Panasonic2500020100302倉(cāng)庫(kù)否3304正版殺毒軟件企業(yè)版V4.0瑞星4000020140501倉(cāng)瘁是3303投影儀881Sharp4000020090401會(huì)議室是3302電腦UJ200Lenovo390020101221倉(cāng)庫(kù)否3301電腦YU404Lenovo390020101211辦公室404是2201辦公區(qū)域1000陽(yáng)光物業(yè)147000020000401陽(yáng)光寫字樓是1101商務(wù)車HH553BUICK34444420130303地下停車場(chǎng)是修改nniiba.tiffJran確認(rèn)
haha.exe 區(qū)]分類1資產(chǎn)編號(hào)1資產(chǎn)名稱 1型號(hào) 1制造商1價(jià)格 1登記日期1存放地點(diǎn)1是否在用13305 中央空調(diào) U88 Panasonic25000 20100302倉(cāng)庫(kù)否3304 正版條毒軟件企業(yè)版V4.0瑞星 40000 20140501倉(cāng)庫(kù)是3303 投影儀 881 Sharp40000 20090401會(huì)議室是3302 電腦 UJ200 Lenovo3900 20101221倉(cāng)庫(kù)否■3301 電腦 YU404 Lenovo3900 2010121I辦公室404是2201 辦公區(qū)域 100。 陽(yáng)光物業(yè)147000020000401陽(yáng)光寫字樓是1101 商務(wù)車 HH553 BUICK34444420130303地下停車場(chǎng)是_修改_刪除_ー確認(rèn)_J圖5.3.7.2基木信息刪除圖5.3.8出借信息査詢501 101MsA2010010220110101 20100401無(wú)修改 刪除 確認(rèn)區(qū))■資產(chǎn)編號(hào)1資戶編號(hào)1資戶姓名1出借日期1計(jì)劃歸還日期1實(shí)際歸還日期1維修信息1501101 U 2013101020131012無(wú)501 101 MsA 2010010220110101 20100401 無(wú)修改 刪除__確認(rèn)_3haha.exe圖5.3.10.1出借信息刪除圖5.3.10.2出借信息刪除5.4統(tǒng)計(jì)模塊測(cè)試(1)統(tǒng)計(jì)功能選擇(見圖5.4.1)(2)類別總價(jià)格統(tǒng)計(jì)(見圖5.4.2)(3)出借次數(shù)統(tǒng)計(jì)(見圖5.4.3)(4)未歸還資產(chǎn)統(tǒng)計(jì)(見圖5.4.4)文件錄入查詢統(tǒng)計(jì)幫助類別總價(jià)格統(tǒng)計(jì)出借次數(shù)統(tǒng)計(jì)未ナヨ還資產(chǎn)統(tǒng)計(jì)畠叵図5.4.1統(tǒng)計(jì)功能選擇中小型企業(yè)資產(chǎn),文件錄入查詢圖5.4.1出借次數(shù)統(tǒng)計(jì)haha.exe分類」資產(chǎn)編號(hào)慢產(chǎn)名稱」型號(hào)領(lǐng)造商介格[登記日期I亨放地を[是否在用I堡否歸還I5501植物録蘿花鳥市場(chǎng)14 2008010I陽(yáng)光房是FALSE色認(rèn)|圖5.4.1未歸還資產(chǎn)統(tǒng)計(jì)5.5幫助模塊測(cè)試(1)幫助主題(見圖5.5.1)(2)系統(tǒng)版本與版權(quán)說(shuō)明(見圖5.5.2)
圖5.5.1幫助主題圖5.5.2系統(tǒng)版本及版權(quán)說(shuō)明6總結(jié)與體會(huì)通過ー個(gè)學(xué)期對(duì)于C語(yǔ)言的學(xué)習(xí),在這個(gè)假期我完成了我第一個(gè)完整的較大規(guī)模的程序。在程序編寫期間,從系統(tǒng)編程環(huán)境到具體代碼實(shí)現(xiàn)的問題,都曾困擾過我。但經(jīng)歷過這些我也收獲頗多。首先是課堂知識(shí)和真正使用時(shí)有很多不連貫。課堂學(xué)習(xí)過程和測(cè)試階段注重的更多事細(xì)節(jié),比如變量的形式和轉(zhuǎn)化等等。但在實(shí)際的程序編寫過程中,我使用最頻繁和問題出現(xiàn)最多的地方就是鏈表和數(shù)據(jù)的!/O操作。這是課堂上一筆帶過的部分,在程序編寫前我也重新閱讀了課本的這一部分,也去圖書館找了一些相關(guān)書籍進(jìn)行查詢。在剛開始編程的時(shí)候,我先閱讀了老師已經(jīng)提供的基礎(chǔ)界面文件,但因?yàn)樘崆按_定了想使用圖形化界面,這些文件參考價(jià)值就大大下降了。而老師也沒有提供GTK范例,網(wǎng)上關(guān)于GTK的教程也并不多,使得上手產(chǎn)生了很大的問題。雖然GTK在一定程度上精簡(jiǎn)了C語(yǔ)言使之更加易讀易寫,但我第一次接觸這類接口,上手時(shí)確實(shí)有很多不適應(yīng)。但通過這一次的嘗試,我大概了解了接口的使用方法。這之后若是在網(wǎng)絡(luò)或其他地方看到開發(fā)者文檔也不會(huì)如這次這般不知所措了。第三個(gè)大問題出現(xiàn)在編程環(huán)境上。我的電腦系統(tǒng)是OSX,在其上無(wú)法運(yùn)行后綴名為,exe的文件。我在OSX上安裝Windows的虛擬機(jī)后發(fā)現(xiàn)虛擬機(jī)內(nèi)并沒有編程環(huán)境。我在這次的經(jīng)歷上了解了編程環(huán)境的安裝和具體細(xì)節(jié)。第四個(gè)問題是在于數(shù)據(jù)儲(chǔ)存上。在編程過程中我多次修改了數(shù)據(jù)結(jié)構(gòu),導(dǎo)致存儲(chǔ)得到的二進(jìn)制文件數(shù)據(jù)錯(cuò)位,在讀取失敗后我曾一度找不到失敗的原因。這ー事件使我更加了解了文件レ〇操作的原理和實(shí)際意義。第五個(gè)問題是課堂知識(shí)和實(shí)際接軌時(shí)的適應(yīng)。在平時(shí)我們?cè)鲞^很多數(shù)據(jù)類型轉(zhuǎn)換的練習(xí)題,但在真正的代碼編寫過程中,不論是各類指針數(shù)據(jù)結(jié)構(gòu)的轉(zhuǎn)換都曾讓我的程序數(shù)次崩潰。這些課堂上看似枯燥的知識(shí)在真正應(yīng)用中活靈活現(xiàn)并讓我們收獲不少。本系統(tǒng)制作完成后,因?yàn)闀r(shí)間的不足,尚存很多問題需要進(jìn)?步完善。其中,需要最需要完善的部分是錯(cuò)誤提示。在很多錯(cuò)誤輸入情況下,系統(tǒng)并不會(huì)彈出適當(dāng)?shù)奶崾?導(dǎo)致程序?qū)ξ募罄m(xù)的處理出現(xiàn)問題。第二方面需要完善的是函數(shù)的結(jié)構(gòu),還有很多函數(shù)功能過于單、還有很多能提取出來(lái)的功能。這ー方面的改善可以使代碼更加精簡(jiǎn)更加高效,也能使代碼可讀性提高。在這個(gè)過程中,我首先鞏固了C語(yǔ)言知識(shí),重新復(fù)習(xí)了過去學(xué)到的C語(yǔ)言有關(guān)的知識(shí)。其次,我也學(xué)會(huì)了如何面對(duì)ー個(gè)完整的大型的任務(wù),逐一的細(xì)致化,做好一步步的計(jì)劃。然后,也學(xué)會(huì)了如何解決編程中出現(xiàn)的問題。更重要的是,在這次制作過程中,我學(xué)會(huì)了閱讀接口文檔,對(duì)于未來(lái)的程序開發(fā)之路非常的重要,并且GTK也確實(shí)是一個(gè)很好很快的工具,圖形化界面的建立又簡(jiǎn)單方便又美觀。最后,感謝這次經(jīng)歷,是我大學(xué)生活中難忘的經(jīng)歷。7參考文獻(xiàn)ロ]李開,盧萍,曹計(jì)昌.C語(yǔ)言實(shí)驗(yàn)與課程設(shè)計(jì).北京:科學(xué)出版社,2011.[2]曹計(jì)昌,盧萍,李開.C語(yǔ)言與程序設(shè)計(jì).北京:電子工業(yè)出版社,2013.1附錄1程序清單附錄1.1頭文件#ifndefASSETS_H_INCLUDED#defineASSETS_H_INCLUDEDttinclude<gdk/gdk.h>ttinclude<stdlib.h>ttinclude<gtk/gtk.h>ttinclude<stdlib.h>Sinclude<windows.h>ttinclude<string.h>Sinclude<io.h>ttinclude<fcntl.h>#include<sys\stat.h>ttinclude<ctype.h>Sinclude<time.h>enum(LENDING_ASSETS_NUM=0,LENDING_RES_NUM,LENDING_RES_NAME,LENDING_LENDING_DATE,LENDING_PLANNED_RETURN,LENDING_ACTUAL_RETURN,LENDING_REPAIRDETAILS,LENDING_NEXT};enum{CLASS_CLASS_NUM=0,CLASS_CLASS_NAME,CLASS_NEXT,CLASS_LEAF);enum
BASIC_CLASS_NUM=0,BASIC_ASSETS_NUM,BASIC_ASSETS-NAME,BASIC_MODEL,BASIC_MANUFACTURER,BASIC_PRICE,BASIC_DATE,BASIC_ST0RAGE,BASIC_IN_USE,BASIC_NEXT,BASIC_LEAF/?資產(chǎn)出借信息鏈節(jié)點(diǎn)?/typedefstructassets_lending{gcharassets_num[8];gcharres_numL8];gcharres_name[20];gchar1endingdate[11];gcharplanned_return[ll];gcharactual_return[l1];gcharrepair_details[50];structassetslending*next;}ASSETS_LENDING;/?資產(chǎn)基本信息鏈節(jié)點(diǎn)?/typedefstructassetsbasic(gcharclass_num[8];gcharassets_num[8];gcharassets_name[20];gcharmodel[15];gcharmanufacturer[30];gcharprice[8];gchardate[ll];gcharstorage[30];gcharin_use[8];/?資產(chǎn)編號(hào)?/?資產(chǎn)編號(hào)?//?資戶編號(hào)?//?責(zé)任人姓名?//?出借日期?//?計(jì)劃歸還日期?//?實(shí)際歸還日期?//?維修詳細(xì)說(shuō)明?//?分類編號(hào)?//?資產(chǎn)編號(hào)?//?資產(chǎn)名稱?//*型號(hào)?//?制造商?//?價(jià)格?//?登記日期?//?存放地點(diǎn)?//?是否在用?/structassets_lending*leaf;gintpricecount;gbooleanreturnornot;}ASSETS_BASIC;
/?資產(chǎn)分類信息結(jié)點(diǎn)定義?/typedefstructassets_class/?/?分類編號(hào)?//?分類名稱?/gcharclass_name[20];structassetsclass*next;structassets_basic*leaf;intclass_sum;}ASSETS_CLASS;typedefstructtimehaha(inttm_sec;inttmmin;inttm_hour;inttmmday;inttm_mon;inttm_year;inttm_wday;inttm_yday;inttm_isdst;}TM;ASSETS_CLASS*gp_head=NULL;gchar*info[10];GtkWidget*window;GtkWidget*main_box;/?主程序窗口*//GtkWidget*window;GtkWidget*main_box;/?主程序窗口*//?主程序盒子,構(gòu)件間隔0?/GtkWidget*menubar;GtkWidget^menubox;/?菜單條?//?菜單組合框?/GtkWidget*tree=NULL;GtkTreeView*treeview=NULL;GtkCelIRenderer*renderer=NULL;GtkTreeModel*treemodel=NULL;GtkTreeStore*treestore=NULL;GtkListStore*liststore=NULL;GtkWidget*class_window;GtkWidget*basic_window;GtkWidget*lending_window;char*gp_sys_name=〃中小型企業(yè)資產(chǎn)管理系統(tǒng)”;char*gp_assets_c1assify_fi1ename二char*gp_sys_name=〃中小型企業(yè)資產(chǎn)管理系統(tǒng)”;char*gp_assets_c1assify_fi1ename二classify.dat”;數(shù)據(jù)文件?/char*gp_assets_basic_fi1ename="basic,dat";數(shù)據(jù)文件?/char*gp_assets_lending_filename="lend,dat";據(jù)文件?/char*backup_filename_prefix="backup";char*backup_filename_suffix=".dat";/?系統(tǒng)名稱?/
/?學(xué)生基本信息/?住宿繳費(fèi)信息/?宿舍樓信息數(shù)gchar*se1ected_fi1e_name=*/chargc_sys_state=‘、〇’;/?用來(lái)保存選擇文件名的字符/?用來(lái)保存系統(tǒng)狀態(tài)的字符?//?中文編碼轉(zhuǎn)換?/char*_(char*c);intCharxToInt(char*charx);/?退出主程序?/gintDelete_event(GtkWidget*widget,GdkEvent*event,gpointerdata);/?彈出提示窗口?/void*Tips(gchar*topic,gintv);/?顯示主菜單及其子菜單?/GtkWidget*MenuBox();GtkWidget*CreateMenuItem(GtkWidget*menu,gchar*test);/?保存數(shù)據(jù)?/gpointerSaveData(void);/?數(shù)據(jù)加載?/intCreatList(ASSETS_CLASS**phead);gbooleanLoadData(void);/?備份數(shù)據(jù)?/gchar*dateStr(void);gpointerBackupData(void);/?備份數(shù)據(jù)還原?/gpointerFileSelect(void);voidGetFileName(GtkWidget*w,GtkFileSelection*fs);gpointerRestoreDataProblem(void);gpointerConfirmRestore(void);gpointerRestoreData(void);/?分類信息錄入?/voidClassifylnputWindow(void);voidGetClassifyNum(GtkButton"button,GtkEntry*ptr);voidGetClassifyName(GtkButton"button,GtkEntry"ptr);voidClassifylnfo(void);BOOLInsertClassifyNode(ASSETS_CLASS""phead,ASSETS_CLASS"pClassifyNode);ASSETS_CLASS"GetNewAssetsClass();/"基本信息錄入"/voidBasicInputWindow(void);voidGetClassifyNum_b(GtkButton"button,GtkEntry"ptr);voidGetAssetsNum(GtkButton"button,GtkEntry"ptr);voidGetAssetsName(GtkButton"button,GtkEntry"ptr);voidGetModel(GtkButton"button,GtkEntry"ptr);voidGetManufacturer(GtkButton"button,GtkEntry"ptr);voidGetPrice(GtkButton"button,GtkEntry"ptr);voidGetDate(GtkButton"button,GtkEntry"ptr);voidGetStorage(GtkButton"button,GtkEntry"ptr);voidGetlnUse(GtkButton"button,GtkEntry"ptr);voidBasiclnfo(void);BOOLInsertBasicNode(ASSETS_CLASS"hd,ASSETS_BASIC"pAssetsBasic);ASSETSBASIC"GetNewAssetsBasic(void);ASSETS_CLASS"ClassifySearch(ASSETS_CLASS"hd,char"classify);/"出借信息錄入"/voidLendinglnputWindow();voidGetAssetsNum_b(GtkButton"button,GtkEntry"ptr);voidGetResNum(GtkButton"button,GtkEntry"ptr);voidGetResName(GtkButton"button,GtkEntry"ptr);voidGetLendingDate(GtkButton"button,GtkEntry"ptr);voidGetPlannedReturn(GtkButton"button,GtkEntry"ptr);voidGetActualReturn(GtkButton"button,GtkEntry"ptr);voidGetRepairDetaiIs(GtkButton"button,GtkEntry"ptr);voidLendinginfo(void);BOOLInsertLendingNode(ASSETS_CLASS"hd,ASSETS_LENDING"pAssetsLending);ASSETS_LENDING"GetNewLendingNode(void);ASSETSBASIC"BasicSearch(ASSETS_CLASS"hd,char"assets_num);/"信息分類展示"/voidClassOutput(void);voidBasicOutput(void);
voidLendingOutput(void);/?鏈表節(jié)點(diǎn)處理*/voidtemp(void);voidDeleteBasicNode(GtkWidget*selection);voidDeleteLendingNode(GtkWidget*selection);voidDeleteClassNode(GtkWidget*selection);voidFreeClassifyNode(ASSETS_CLASS*pClassifyNode);voidFreeBasicNode(ASSETS_BASIC*pBasicNode);/?修改窗口?/voidC1assifyChangeWindow(GtkWidget*selection);voidModifyClassify(GtkWidget"selection);voidBasicChangeWindow(GtkWidget*selection);voidModifyBasic(GtkWidget"selection);voidLendingChangeWindow(GtkWidget"selection);voidModifyLending(GtkWidget"selection);/?統(tǒng)計(jì)部分"/voidCountClassifyPrice();int"PriceAll(ASSETS_CLASS"pClassifyNode);voidCountLendingNumO;voidTimeGet();voidCountUnReturned();/"幫助信息?/voidHelpThemeO;voidInfoVersion();ttendif附錄1.2C文件源碼ttinclude“Assets.h"intmain(intargc,char*argv[])(gtk_init(&argc,&argv);/"創(chuàng)建ー/"定義窗window/"創(chuàng)建ー/"定義窗個(gè)圖形化窗口"/gtk_widget_set_usize(GTK_WIDGET(window),600,450);口大小"/gtk_window_set_resizable(GTK_WINDOW(window),FALSE);gtk_window_set_title(GTK_WINDOW(window),_(gp_sys_name));/*定義窗口標(biāo)題?/gtk_window_set_position(GTK_WINDOW(window),GTK_WIN_POS_CENTER_ALWAYS); /?定義窗口位置?/g_signal_connect(G_OBJECT(window),,zdelete_eventz,,G_CALLBACK(Delete_event),NULL); /?關(guān)閉窗ロ按鈕ー退出主程序*/main_box=gtk_vbox_new(FALSE,0);GtkWidget*menu=MenuBox();main_box=gtk_vbox_new(FALSE,0); /*初始化窗口布局盒子?/gtk_box_pack_start(GTK_BOX(main_box),menu,FALSE,TRUE,0);gtk_container_add(GTK_CONTAINER(window),main_box);gtk_widget_show(main_box);gtk_widget_show(window);LoadDataO;gtk_main();returnFALSE;/**函數(shù)名稱:_函數(shù)功能:荻取字符串并轉(zhuǎn)化成utf8編碼格式輸入?yún)?shù):字符串輸出參數(shù):無(wú)返回值:utf8編碼格式字符串*調(diào)用說(shuō)明:/char*_(char*c)(return(g_locale_to_utf8(c,-1,0,0,0));/**函數(shù)名稱:MenuBox
函數(shù)功能:主菜單顯示輸入?yún)?shù):無(wú)輸出參數(shù):GtkWidget返回值:菜單盒子*調(diào)用說(shuō)明:/GtkWidget*MenuBox()(GtkWidget*menubox=gtk_vbox_new(FALSE,0);GtkWidget*menu=gtk_menu_bar_new();gtk_box_pack_start(GTK_B0X(menubox),menu,FALSE,TRUE,0);GtkWidget*menul;menul=CreateMenuItern(menu,/Z文件〃);GtkWidget*menu2=CreateMenuItem(menu,求人〃);GtkWidget*menu3=CreateMenuItern(menu,〃查詢〃);GtkWidget*menu4=CreateMenuItem(menu,〃統(tǒng)計(jì)〃);GtkWidget*menu5=CreateMenuItern(menu,〃幫助〃);GtkWidget*menuboxl=gtk_menu_new()GtkWidget*menubox2=gtk_menu_new()GtkWidget*menubox3=gtk_menu_new()GtkWidget*menubox4=gtk_menu_new()GtkWidget*menubox5=gtk_menu_new()(GTK_MENU_ITEM(menul),(GTK_MENU_ITEM(menu2),(GTK_MENU_ITEM(menu3),(GTK_MENU_ITEM(menu4),(GTK_MENU_ITEM(menu5),menubox1);menubox2);(GTK_MENU_ITEM(menul),(GTK_MENU_ITEM(menu2),(GTK_MENU_ITEM(menu3),(GTK_MENU_ITEM(menu4),(GTK_MENU_ITEM(menu5),menubox1);menubox2);menubox3);menubox4);menubox5);/********文件菜單項(xiàng)********/GtkWidget*menul2=CreateMenuItem(menubox1,〃數(shù)據(jù)管理〃);GtkWidget*menul3=CreateMenuItem(menubox1,〃退出系統(tǒng)〃);GtkWidget*menuboxl2=gtk_menu_new();gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu12),menubox12);GtkWidgetGtkWidgetGtkWidgetGtkWidget*menul21=CreateMenuItem*menul22=CreateMenuItemGtkWidgetGtkWidgetGtkWidgetGtkWidget*menul21=CreateMenuItem*menul22=CreateMenuItem*menul23=CreateMenuItem*menu124=CreateMenuItem(menubox12,(menuboxl2,(menubox12,(menubox12,〃加載");"保存");"備份");"恢復(fù)");g_signal_connect(GTK_0BJECT(menul21),activate,G_CALLBACK(LoadData),NULL);g_signal_connect(GTK_OBJECT(menu122),g_signal_connect(GTK_OBJECT(menu122),"activate77,activate,activate,activate,activate,activate,activate,"分類信息”);〃基本信息”);
"出借信息");“activate”,activate,activate,"資產(chǎn)類別信息");"資產(chǎn)基本信息");"資產(chǎn)出借信息");activate,activate,activate,"類別總價(jià)格統(tǒng)計(jì)つ;“出借次數(shù)統(tǒng)計(jì)つ;”未歸還資產(chǎn)統(tǒng)計(jì)づ;activate,activate,activate,G_CALLBACK(SaveData),NULL);g_signal_connect (GTK_OBJECT(menu123),G_CALLBACK(BackupData),NULL);g_signal_connect (GTK_OBJECT(menu124),G_CALLBACK(FileSelect),NULL);g_signal_connect (GTK_OBJECT(menu13),G_CALLBACK(gtk_main_quit),NULL);/********錄入菜單項(xiàng)********/GtkWidget*menu21=CreateMenuItem(menubox2,GtkWidget*menu22=CreateMenuItem(menubox2,GtkWidget*menu23=CreateMenuItem(menubox2,g_signal_connect (GTK_OBJECT(menu21),G_CALLBACK(ClassifylnputWindow),NULL);g_signal_connect (GTK_OBJECT(menu22),G_CALLBACK(BasicInputWindow),NULL);g_signal_connect (GTK_OBJECT(menu23),G_CALLBACK(LendinglnputWindow),NULL);/********查詢菜單項(xiàng)********/GtkWidget*menu31=CreateMenuItem(menubox3,GtkWidget*menu32=CreateMenuItem(menubox3,GtkWidget*menu33=CreateMenuItem(menubox3,g_signal_connect (GTK_OBJECT(menu31),G_CALLBACK(ClassOutput),NULL);g_signal_connect (GTK_OBJECT(menu32),G_CALLBACK(BasicOutput),NULL);g_signal_connect (GTK_OBJECT(menu33),G_CALLBACK(LendingOutput),NULL);/********統(tǒng)計(jì)菜單項(xiàng)********/GtkWidget*menu41=CreateMenuItem(menubox4,GtkWidget*menu42=CreateMenuItem(menubox4,GtkWidget*menu43=CreateMenuItem(menubox4,g_signal_connect (GTK_OBJECT(menu41),G_CALLBACK(CountClassifyPrice),NULL);g_signal_connect (GTK_OBJECT(menu42),G_CALLBACK(CountLendingNum),NULL);g_signal_connect (GTK_OBJECT(menu43),G_CALLBACK(CountUnReturned),NULL);/********幫助菜單項(xiàng)********/〃幫助主題〃);〃系統(tǒng)版本及版權(quán)說(shuō)明activate〃幫助主題〃);〃系統(tǒng)版本及版權(quán)說(shuō)明activate,activate,GtkWidget*menu52=CreateMenuItem(menubox5,");g_signal_connect (GTK_OBJECT(menu51),G_CALLBACK(HelpTheme),NULL);g_signal_connect (GTK_OBJECT(menu52),G_CALLBACK(InfoVersion),NULL);(menubox1);(menubox2);(menubox1);(menubox2);(menubox3);(menubox4);(menubox5);(menubox12);(menubox);(menu);returnmenubox;/**函數(shù)名稱:CreateMenuItem函數(shù)功能:生成子菜單部件并放入父級(jí)菜單輸入?yún)?shù):GtkWidget父級(jí)菜單,char菜單標(biāo)簽輸出參數(shù):無(wú)返回值:菜單選項(xiàng)*調(diào)用說(shuō)明:/GtkWidget"CreateMenuItem(GtkWidget"menu,gchar"test){GtkWidget"Menuitem;Menuitem=gtk_menu_item_new_with_label(_(test));gtk_menu_shell_append(GTK_MENU_SHELL(menu),Menuitem);gtk_widget_show(Menuitem);returnMenuitem;voidHelpTheme()Tips(〃請(qǐng)使用鼠標(biāo)點(diǎn)擊所需功能'n輸入信息需完整〃,300);voidInfoVersion()Tips("中小型企業(yè)資產(chǎn)管理系統(tǒng)\nVersion1.0\n系統(tǒng)不完善的部分歡迎指出“,300);/**函數(shù)名稱:Delete_event函數(shù)功能:關(guān)閉部件輸入?yún)?shù):部件、事件或函數(shù)指針輸出參數(shù):無(wú)返回值:FALSE*調(diào)用說(shuō)明:/gintDelete_event(GtkWidget*widget,GdkEvent*event,gpointerdata){gtk_mainquit();returnFALSE;/**函數(shù)名稱:Tips函數(shù)功能:新建一個(gè)位于中央的,有題目的,無(wú)法縮放大小的彈出窗體輸入?yún)?shù):char標(biāo)題,int寬,int高輸出參數(shù):無(wú)返回值:窗體*?調(diào)用說(shuō)明:*/void*Tips(gchar*topic,gintv)(GtkWidget*info_window=gtk_dialog_new();gtk_window_set_resizable(GTK_WINDOW(info_window),FALSE);gtk_window_set_title(GTK_WINDOW(info_window),_("提示〃));gtk_window_set_position (GTK_WINDOW(info_window),GTK_WIN_POS_CENTER);gtk_widget_set_usize(GTK_WIDGET(info_w
溫馨提示
- 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二四年度雜志封面平面模特聘用協(xié)議3篇
- 2025年度電梯安裝施工安全監(jiān)督與隱患排查合同3篇
- 專業(yè)攝影棚租賃服務(wù)協(xié)議范本:短期租賃條款明細(xì)一
- 2025至2030年中國(guó)全自動(dòng)摔軟轉(zhuǎn)鼓數(shù)據(jù)監(jiān)測(cè)研究報(bào)告
- 二零二五年度油氣儲(chǔ)罐升級(jí)改造工程合同4篇
- 二零二五年度時(shí)尚飾品全球采購(gòu)與國(guó)內(nèi)零售合同3篇
- 2025年中國(guó)電氣設(shè)備防潮絕緣保護(hù)劑市場(chǎng)調(diào)查研究報(bào)告
- 二零二四年物流配送與供應(yīng)鏈管理服務(wù)合同3篇
- 文物圖像處理與優(yōu)化策略-深度研究
- 2025至2031年中國(guó)防紫外線晴雨傘行業(yè)投資前景及策略咨詢研究報(bào)告
- 2024年新北師大版八年級(jí)上冊(cè)物理全冊(cè)教學(xué)課件(新版教材)
- 人教版數(shù)學(xué)四年級(jí)下冊(cè)核心素養(yǎng)目標(biāo)全冊(cè)教學(xué)設(shè)計(jì)
- JJG 692-2010無(wú)創(chuàng)自動(dòng)測(cè)量血壓計(jì)
- 三年級(jí)下冊(cè)口算天天100題(A4打印版)
- 徐州市2023-2024學(xué)年八年級(jí)上學(xué)期期末地理試卷(含答案解析)
- CSSD職業(yè)暴露與防護(hù)
- 飲料對(duì)人體的危害1
- 數(shù)字經(jīng)濟(jì)學(xué)導(dǎo)論-全套課件
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(yíng)(吳洪貴)項(xiàng)目三 移動(dòng)商務(wù)運(yùn)營(yíng)內(nèi)容的策劃和生產(chǎn)
- 中考記敘文閱讀
- 產(chǎn)科溝通模板
評(píng)論
0/150
提交評(píng)論