版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 軟件工程學(xué)年設(shè)計(jì)</b></p><p> 題 目: 個(gè)人記賬系統(tǒng) </p><p> 院 系: 計(jì)算機(jī)科學(xué)與技術(shù) </p><p> 班 級(jí): 計(jì)算機(jī)班 </p><p> 學(xué) 號(hào): </p>
2、<p> 姓 名: </p><p> 指導(dǎo)教師: </p><p> 2011 年 7 月 15 日</p><p><b> 摘 要</b></p><p> 本報(bào)告介紹了一個(gè)運(yùn)用C語言知識(shí)和DEV C++創(chuàng)建的用于個(gè)人財(cái)務(wù)情況管理的個(gè)
3、人記賬系統(tǒng)。在該系統(tǒng)中創(chuàng)建了包含增加、刪除、修改、查找、插入、瀏覽、統(tǒng)計(jì)的功能總列表,創(chuàng)建序號(hào)鏈接各功能列表,輸入收入支出信息情況,增加信息,刪除信息,,創(chuàng)建合計(jì)排序?yàn)g覽用戶可從總體上瀏覽個(gè)人財(cái)務(wù)信息情況。</p><p> 關(guān)鍵詞:C語言,DEV c++,個(gè)人記賬系統(tǒng)</p><p><b> 目 錄</b></p><p><
4、;b> 第一章緒論1</b></p><p> 1.1 開發(fā)背景及意義1</p><p> 1.2 相關(guān)技術(shù)背景2</p><p> 1.3 開發(fā)及運(yùn)行環(huán)境4</p><p> 第二章 需求分析5</p><p> 2.1 設(shè)計(jì)目標(biāo)5</p><
5、p> 2.2 功能需求5</p><p> 2.3 可行性分析5</p><p> 第三章 總體設(shè)計(jì)7</p><p> 3.1 設(shè)計(jì)目標(biāo)7</p><p> 3.2 系統(tǒng)結(jié)構(gòu)設(shè)計(jì)7</p><p> 3.3 系統(tǒng)功能結(jié)構(gòu)圖7</p><p> 第四章
6、 詳細(xì)設(shè)計(jì)12</p><p> 5.1 基本對(duì)象設(shè)計(jì)12</p><p> 5.2 系統(tǒng)主程序的設(shè)計(jì)與實(shí)現(xiàn)13</p><p> 5.3 用戶登錄功能的設(shè)計(jì)與實(shí)現(xiàn)17</p><p> 5.4 流水賬視圖的設(shè)計(jì)與實(shí)現(xiàn)20</p><p> 5.5 消費(fèi)結(jié)構(gòu)視圖的設(shè)計(jì)與實(shí)現(xiàn)23<
7、/p><p> 5.6 流水賬明細(xì)視圖的設(shè)計(jì)與實(shí)現(xiàn)24</p><p> 5.7 賬戶設(shè)置功能的設(shè)計(jì)與實(shí)現(xiàn)28</p><p> 5.8 消費(fèi)趨勢(shì)堆棧圖的設(shè)計(jì)與實(shí)現(xiàn)29</p><p> 5.9 系統(tǒng)輔助功能的設(shè)計(jì)與實(shí)現(xiàn)30</p><p> 第六章 軟件測(cè)試34</p><
8、;p> 6.1 系統(tǒng)測(cè)試34</p><p> 6.2 性能測(cè)試37</p><p> 6.3 驗(yàn)收測(cè)試37</p><p> 第七章 總結(jié)38</p><p><b> 參考文獻(xiàn)40</b></p><p><b> 緒論</b><
9、/p><p> 1.1 開發(fā)背景及意義</p><p> 個(gè)人理財(cái)在我國(guó)得到大眾的認(rèn)可和金融機(jī)構(gòu)的重視是近幾年的事情。人們對(duì)個(gè)人理財(cái)?shù)闹匾暢潭龋c我國(guó)市場(chǎng)經(jīng)濟(jì)制度不斷完善、資本市場(chǎng)長(zhǎng)足發(fā)展、金融產(chǎn)品的日趨豐富以及居民總體收入水平的逐年上升等等是分不開的。但是比起美、日等發(fā)達(dá)國(guó)家,我國(guó)人民對(duì)于個(gè)人理財(cái)?shù)睦斫膺€處于初級(jí)階段。</p><p> 但是其實(shí)理財(cái)并不困難,
10、并非非要依靠個(gè)人理財(cái)專業(yè)人士的建議才能身體力行。只要了解收支狀況、設(shè)定財(cái)務(wù)目標(biāo)、擬定策略、編列預(yù)算、執(zhí)行預(yù)算到分析成果這六大步驟,便可以輕松的達(dá)成個(gè)人的財(cái)務(wù)管理。至于要如何預(yù)估收入掌握支出進(jìn)而檢討改進(jìn)則有賴于平日的財(cái)務(wù)記錄,簡(jiǎn)單的說記賬是理財(cái)?shù)牡谝徊健?lt;/p><p> 最近越來越多的人具有了記賬的習(xí)慣,在上班族、學(xué)生族既定收入穩(wěn)定的情況下,采取“節(jié)流”的科學(xué)理財(cái)方式是非常實(shí)際的,也符合個(gè)人理財(cái)統(tǒng)籌的原則。家庭
11、、個(gè)人的收入支出結(jié)構(gòu)在日益發(fā)生變化,單純地靠在本子上記錄收入支出無法滿足對(duì)于收入支出結(jié)構(gòu)的統(tǒng)計(jì)分析,因此以個(gè)人用戶為目標(biāo)的記賬軟件應(yīng)運(yùn)而生。相應(yīng)的各種面向家庭及個(gè)人的理財(cái)軟件也越來越多。但是眾多個(gè)人理財(cái)軟件操作專業(yè),對(duì)于個(gè)人用戶來說功能過于強(qiáng)大,分析數(shù)據(jù)用語專業(yè)也不易理解。因此開發(fā)一個(gè)操作簡(jiǎn)便、統(tǒng)計(jì)結(jié)果直觀并對(duì)個(gè)人用戶理財(cái)有參考價(jià)值的記賬軟件無疑能為廣大個(gè)人用戶提供方便。</p><p> 在盛行個(gè)人理財(cái)?shù)拿绹?guó)
12、,70%以上的家庭都擁有一套自己的理財(cái)軟件,其中最具影響力的理財(cái)軟件要數(shù)Intuit公司開發(fā)的Quiken和微軟公司開發(fā)的Money這兩款軟件?,F(xiàn)在,Intuit公司已成為世界最大的理財(cái)軟件與理財(cái)咨詢公司,Quiken也成為全世界用戶最多的家庭理財(cái)軟件。歐美家庭平日的財(cái)務(wù)報(bào)表,預(yù)算,稅務(wù)處理,銀行賬目的查詢等等都借助軟件的各項(xiàng)功能,使用理財(cái)軟件幫助家庭打理日常的財(cái)務(wù)安排已經(jīng)成為一件很平常的事。但由于金融體制上的巨大差異,在歐美國(guó)家使用的
13、個(gè)人家庭理財(cái)軟件卻并沒有登陸中國(guó)市場(chǎng)。</p><p> 但是國(guó)內(nèi)的個(gè)人理財(cái)服務(wù)卻剛剛起步,各式各樣的個(gè)人理財(cái)軟件也如雨后春筍,數(shù)不勝數(shù)。至少有上百款的所謂個(gè)人理財(cái)軟件,但實(shí)際上99%是個(gè)人寫的業(yè)務(wù)小程序,功能比Excel方便一點(diǎn)而已,有的加一點(diǎn)報(bào)表功能,充其量叫記賬軟件。如果個(gè)人理財(cái)軟件僅有告訴你“柴米油鹽醬醋茶”這種流水賬的功能,Excel足夠了。但真正做到功能強(qiáng)大,技術(shù)專業(yè),市場(chǎng)有影響力的,而且形成規(guī)模的
14、,國(guó)內(nèi)只有區(qū)區(qū)兩款,成都的財(cái)智和深圳的家財(cái)通。</p><p> 總而言之,在不久的將來家庭使用理財(cái)軟件也將成為國(guó)內(nèi)家庭的必需品。能提供簡(jiǎn)單明了的功能及操作的記賬軟件更是被廣泛需要。這種軟件也會(huì)為提升人們的生活質(zhì)量發(fā)揮它最大的效用。</p><p> 1.2 相關(guān)技術(shù)背景</p><p> C語言是國(guó)內(nèi)外廣泛使用的一種計(jì)算機(jī)語言,學(xué)會(huì)使用C語言進(jìn)行程序設(shè)計(jì)是
15、計(jì)算機(jī)工作者的一項(xiàng)基本功。對(duì)于我們大學(xué)生來說,學(xué)習(xí)這樣一門“C程序設(shè)計(jì)教程”更是必要的。本課程設(shè)計(jì)“家庭財(cái)務(wù)管理系統(tǒng)”就是通過學(xué)習(xí)《C程序設(shè)計(jì)》采用Visual C++作為編譯環(huán)境,是程序編譯和運(yùn)行的。本系統(tǒng)的總體思想基于結(jié)構(gòu)化的程序設(shè)計(jì)。應(yīng)用高級(jí)語言程序設(shè)計(jì)中的基本控制結(jié)構(gòu),如循環(huán)和選擇,著重實(shí)現(xiàn)管理系統(tǒng)的增、刪、改、查等典型的管理功能由于主要實(shí)現(xiàn)的是管理系統(tǒng)的增、刪、改、查等典型功能。程序設(shè)計(jì)是一門實(shí)踐性很強(qiáng)的課程,既要掌握概念,又
16、要?jiǎng)邮志幾g,還要上機(jī)調(diào)試運(yùn)行,通過這一次的課程設(shè)計(jì)我們從實(shí)踐中更進(jìn)一步的學(xué)習(xí)和了解C語言,當(dāng)然由于我們的技術(shù)水平有限,在這途中遇到很多問題,程序也未能做到很完美,望見諒!</p><p> 1.3 開發(fā)及運(yùn)行環(huán)境</p><p> 開發(fā)工具:DEV c++ </p><p> 運(yùn)行環(huán)境:WindowsXP/WindowsVista/W
17、in7</p><p><b> 需求分析</b></p><p> 需求分析是指理解用戶需求,就軟件功能與客戶達(dá)成一致,估計(jì)軟件風(fēng)險(xiǎn)和評(píng)估項(xiàng)目代價(jià),最終形成開發(fā)計(jì)劃的一個(gè)復(fù)雜過程。需求分析就是分析軟件用戶的需求是什么。如果投入大量的人力、物力、財(cái)力和時(shí)間開發(fā)出的軟件卻不被人需要,那么所有的投入都是徒勞。本章將詳細(xì)闡述對(duì)于個(gè)人記賬系統(tǒng)的需求分析。以使得本系統(tǒng)可以盡
18、可能地滿足大多數(shù)個(gè)人用戶記錄日常收支的需要。</p><p><b> 2.1 設(shè)計(jì)目標(biāo)</b></p><p> 為了做出滿足個(gè)人用戶的需要的符合質(zhì)量要求的系統(tǒng),制定以下設(shè)計(jì)目標(biāo):</p><p> 對(duì)于日常收入設(shè)parents,school,labor,others分類記錄收入。</p><p> 對(duì)于日常
19、支出設(shè)clothes,food,house,travel,else分類記錄</p><p><b> 2.2 功能需求</b></p><p> 為滿足用戶需要,要求本系統(tǒng)有以下功能:</p><p> 記錄日常收支情況的功能。</p><p> 查找某天的收支情況的功能。</p><p&g
20、t; 插入忘記的收支的功能。</p><p><b> 顯示賬單的功能。</b></p><p><b> 統(tǒng)計(jì)的功能。</b></p><p> 2.3 可行性分析</p><p> 本課題是基于DEV?。悖h(huán)境,實(shí)現(xiàn)記賬系統(tǒng)的開發(fā)。為了使本設(shè)計(jì)更具可行性,本系統(tǒng)的設(shè)計(jì)嚴(yán)格按照軟件工
21、程的設(shè)計(jì)思想要求,首先對(duì)系統(tǒng)進(jìn)行了可行性分析。為了使分析更為清晰、完整,設(shè)計(jì)本系統(tǒng)的時(shí),將可行性分析分為經(jīng)濟(jì)可行性、操作可行性、技術(shù)可行性三個(gè)方面進(jìn)行分析。</p><p> 1.經(jīng)濟(jì)上可行性:DEV?。悖敲赓M(fèi)開源的軟件,使得開發(fā)成本大大下降。而且可重用性高,節(jié)省了二次開發(fā)的費(fèi)用。資源利用率高,成本低。從成本效益角度考慮十分可行。</p><p> 2.操作上的可行性:該設(shè)計(jì)的模塊
22、界面簡(jiǎn)潔,方便快捷,簡(jiǎn)單易學(xué)。即便電腦初學(xué)者也可以輕松的操作所有系統(tǒng)的功能。并不需要掌握繁雜的財(cái)務(wù)專業(yè)知識(shí)也可以對(duì)自己的日常收支有一個(gè)大體的把握。</p><p> 3.技術(shù)上的可行性:該設(shè)計(jì)結(jié)合了軟件工程和會(huì)計(jì)學(xué)兩個(gè)專業(yè)的知識(shí),通過相關(guān)技術(shù)的學(xué)習(xí)和鉆研是對(duì)大學(xué)幾年學(xué)習(xí)內(nèi)容的很好的串聯(lián)。在給定的時(shí)間一定能完成需求說明要求的功能,并且確保軟件運(yùn)行速度及性能均達(dá)到用戶期望。</p><p>
23、<b> 總體設(shè)計(jì)</b></p><p> 軟件總體設(shè)計(jì)是把需求分析階段得到的需求轉(zhuǎn)變成符合成本和質(zhì)量要求的、抽象的系統(tǒng)實(shí)現(xiàn)方案的過程。從需求分析到總體設(shè)計(jì),是一個(gè)逐漸擴(kuò)充模型的過程。系統(tǒng)總體設(shè)計(jì)確定實(shí)現(xiàn)系統(tǒng)的策略和目標(biāo)系統(tǒng)的高層結(jié)構(gòu)。確定設(shè)計(jì)中的類、關(guān)聯(lián)、接口形式及實(shí)現(xiàn)操作的算法。符合傳統(tǒng)面向?qū)ο笤O(shè)計(jì)的準(zhǔn)則:模塊化,抽象,信息隱藏,低耦合,高內(nèi)聚。</p><p&
24、gt;<b> 3.1 設(shè)計(jì)目標(biāo)</b></p><p> 本系統(tǒng)為個(gè)人用戶提供一個(gè)記錄日常收支情況,并得到相應(yīng)統(tǒng)計(jì)結(jié)果的平臺(tái),主要實(shí)現(xiàn)以下目標(biāo):</p><p> 提供日常收支情況記錄查看及修改的功能。</p><p><b> 備份賬目信息。</b></p><p> 3.2 系統(tǒng)
25、結(jié)構(gòu)設(shè)計(jì)</p><p> 個(gè)人記賬系統(tǒng)面向的用戶主要是個(gè)人用戶,用戶只要記錄流水賬信息便可經(jīng)過測(cè)算得到相應(yīng)的統(tǒng)計(jì)結(jié)果,結(jié)合實(shí)際調(diào)查的其他資料可以得出系統(tǒng)的主要功能和輔助功能,并進(jìn)行主控界面及基本對(duì)象的設(shè)計(jì)。根據(jù)上述分析,結(jié)合用戶的具體需求,確定系統(tǒng)主要包括四大功能,分別是流水賬、統(tǒng)計(jì)報(bào)表。</p><p> 3.3 系統(tǒng)功能結(jié)構(gòu)圖</p><p> 具體系
26、統(tǒng)結(jié)構(gòu)如下圖:</p><p><b> 詳細(xì)設(shè)計(jì)</b></p><p> 軟件詳細(xì)設(shè)計(jì)是軟件工程的重要階段, 軟件詳細(xì)設(shè)計(jì)細(xì)化了高層的體系結(jié)構(gòu)設(shè)計(jì),將軟件結(jié)構(gòu)中的主要部件劃分為能獨(dú)立編碼、編譯和測(cè)試的軟件單元,并進(jìn)行軟件單元的設(shè)計(jì),并最終將影響軟件實(shí)現(xiàn)的成敗。優(yōu)秀的詳細(xì)設(shè)計(jì)在提高編碼質(zhì)量、保證開發(fā)周期、節(jié)約開發(fā)成本等各方面都起著非常重要的作用,是一個(gè)軟件項(xiàng)目成
27、功的關(guān)鍵保證。本章將按照設(shè)計(jì)實(shí)現(xiàn)的順序介紹各個(gè)單元的設(shè)計(jì)與實(shí)現(xiàn)情況。</p><p> ?。?1 基本對(duì)象設(shè)計(jì)</p><p> 按照面向?qū)ο蟮姆治雠c設(shè)計(jì)方法的基本思想,“萬物皆對(duì)象”,把“對(duì)象”作為解決問題的重心。根據(jù)個(gè)人記賬系統(tǒng)的具體情況分析主要對(duì)象有流水賬、統(tǒng)計(jì)數(shù)據(jù)等。</p><p><b> 1.流水賬對(duì)象</b></p&g
28、t;<p> 流水賬對(duì)象代表用戶所記錄的每一筆賬目。每一筆賬目信息包括賬目發(fā)生的年月日信息,賬目所屬的消費(fèi)或收入的詳細(xì)類別,賬目名稱和金額。</p><p><b> ?。?統(tǒng)計(jì)數(shù)據(jù)對(duì)象</b></p><p> 本來其實(shí)統(tǒng)計(jì)數(shù)據(jù)對(duì)象可以不設(shè)立,因?yàn)槿康慕y(tǒng)計(jì)數(shù)據(jù)都可以通過計(jì)算得到。但是考慮到用戶查詢較為頻繁,為了避免每次查詢均要計(jì)算一次,特別設(shè)立了
29、統(tǒng)計(jì)數(shù)據(jù)對(duì)象。實(shí)際上,用于保存計(jì)算結(jié)果的數(shù)據(jù)量比較小,犧牲了這些許的空間卻能換來整個(gè)系統(tǒng)的高性能,這無疑是很值得的。統(tǒng)計(jì)數(shù)據(jù)對(duì)象包含了消費(fèi)結(jié)構(gòu)所需要的各項(xiàng)收支的統(tǒng)計(jì)計(jì)算結(jié)果。</p><p> ?。?2系統(tǒng)主程序的設(shè)計(jì)與實(shí)現(xiàn)</p><p> 在設(shè)計(jì)系統(tǒng)主程序時(shí),著重考慮項(xiàng)目的核心功能,并圍繞核心功能進(jìn)行設(shè)計(jì)。顯然本項(xiàng)目的核心功能就是記賬。用戶需要很方便的進(jìn)行記賬活動(dòng),并且可以快速看到記
30、賬結(jié)果。經(jīng)過反復(fù)考慮設(shè)計(jì)系統(tǒng)的主控界面如圖5-1所示。</p><p> ?。?3流水賬視圖的設(shè)計(jì)與實(shí)現(xiàn)</p><p> ?。保斎霐?shù)據(jù)創(chuàng)建鏈表</p><p><b> 實(shí)現(xiàn)代碼如下:</b></p><p> APtr creat()</p><p><b> {</b
31、></p><p> APtr cPtr;</p><p><b> int num;</b></p><p> printf("輸入的序號(hào)為0時(shí)代表輸入記錄結(jié)束\n");</p><p> printf("輸入序號(hào):");</p><p>
32、 scanf("%d",&num);</p><p> if (num==0)</p><p> return NULL;</p><p><b> else</b></p><p><b> {</b></p><p> cPtr=(A
33、Ptr)malloc(sizeof(Account));</p><p> cPtr->num=num; </p><p> printf("輸入日期,格式為****.**.** :");</p><p> scanf("%s",cPtr->date);</p><p>
34、printf("輸入in或out表示收入和支出:");</p><p> scanf("%s",cPtr->in_out); </p><p> printf("輸入金額:");</p><p> scanf("%f",&cPtr->amount);<
35、/p><p> printf("輸入門類,收入有parents、school、labor、others\n"</p><p> "支出有:clothes、food、house、travel、else:");</p><p> scanf("%s",cPtr->kind);</p>&l
36、t;p> printf("輸入余額:");</p><p> scanf("%f",&cPtr->remain);</p><p> cPtr->next=creat(); </p><p> return cPtr;</p><p><b> }&l
37、t;/b></p><p><b> 顯示賬單</b></p><p><b> 實(shí)現(xiàn)代碼如下:</b></p><p> void print(APtr headPtr) </p><p><b> {</b></p><p> if(
38、headPtr==NULL)</p><p> {printf("鏈表為空\(chéng)n"); </p><p><b> return;}</b></p><p><b> else</b></p><p><b> { </b></p&
39、gt;<p> if (headPtr->next==NULL)</p><p> printf("%d\t%-10s\t%-5s\t\t%5.2f\t\t%-10s\t%5.2f\n",headPtr->num,</p><p> headPtr->date,headPtr->in_out,headPtr->amoun
40、t,headPtr->kind,headPtr->remain);</p><p><b> else</b></p><p><b> { </b></p><p> printf("%d\t%-10s\t%-5s\t\t%5.2f\t\t%-10s\t%5.2f\n",he
41、adPtr->num,</p><p> headPtr->date,headPtr->in_out,headPtr->amount,headPtr->kind,headPtr->remain);</p><p> print(headPtr->next); </p><p><b> }</
42、b></p><p><b> }</b></p><p><b> }</b></p><p><b> 刪除記錄</b></p><p><b> 實(shí)現(xiàn)代碼如下:</b></p><p> APtr del(AP
43、tr headPtr)</p><p><b> {</b></p><p><b> APtr p1;</b></p><p><b> APtr p2;</b></p><p><b> int n,i;</b></p><
44、p> char date[12];</p><p> if(headPtr==NULL)</p><p><b> { </b></p><p> printf("no list!"); </p><p> return (headPtr); </p><p>
45、; } </p><p> printf("選擇刪除方式,輸入序號(hào):\n");</p><p> printf("1.按序號(hào)刪除一條記錄\n"</p><p> "2.按時(shí)間刪除一條記錄\n"</p><p> "3.
46、刪除全部記錄\n");</p><p> scanf("%d",&i);</p><p><b> if(i==1)</b></p><p><b> { </b></p><p> printf("輸入要?jiǎng)h除的記錄序號(hào):");<
47、;/p><p> scanf("%d",&n); </p><p> p1=headPtr;</p><p> while(p1->num!=n&&p1->next!=NULL)</p><p><b> { </b></p><p
48、><b> p2=p1; </b></p><p> p1=p1->next;</p><p> } </p><p> if(p1->num==n) //p1的num等于n</p><p><b> {</b></p>&l
49、t;p> if(p1==headPtr) </p><p><b> {</b></p><p> headPtr=headPtr->next;</p><p><b> }</b></p><p><b> else </b></p>&
50、lt;p><b> {</b></p><p> p2->next=p1->next;</p><p><b> }</b></p><p><b> free(p1);</b></p><p> printf("刪除成功\n")
51、;</p><p><b> }</b></p><p><b> else</b></p><p> printf("記錄不存在,序號(hào)錯(cuò)誤\n"); </p><p><b> }</b></p><p> else i
52、f(i==2)</p><p> { printf("輸入要?jiǎng)h除記錄的日期:");</p><p> scanf("%s",date);</p><p> p1=headPtr;</p><p> while(strcmp(date,p1->date)!=0&& p1-
53、>next!=NULL)</p><p><b> {</b></p><p><b> p2=p1;</b></p><p> p1=p1->next;</p><p> } </p><p&g
54、t; if(strcmp(date,p1->date)==0)</p><p><b> {</b></p><p> if(p1==headPtr)</p><p><b> {</b></p><p> headPtr=headPtr->next; </
55、p><p><b> }</b></p><p><b> else</b></p><p><b> { </b></p><p> p2->next=p1->next; </p><p><b> }<
56、/b></p><p> free(p1); </p><p> printf("刪除成功\n");</p><p><b> }</b></p><p><b> else </b></p><p>
57、; printf("記錄不存在\n"); </p><p><b> }</b></p><p> else if(i==3)</p><p><b> {</b></p><p> while(headPtr!=NULL)</p><p&g
58、t;<b> {</b></p><p> p1=headPtr; </p><p> headPtr=headPtr->next;</p><p> free(p1); </p><p> } </p&g
59、t;<p> printf("刪除成功\n");</p><p><b> }</b></p><p> return(headPtr);</p><p><b> }</b></p><p><b> 賬單查找</b></p&
60、gt;<p><b> 實(shí)現(xiàn)代碼如下:</b></p><p> /*4.按num查詢*/</p><p> APtr num_search(APtr headPtr,int num)</p><p><b> {</b></p><p> APtr cPtr;</p&
61、gt;<p> printf("%3s\t%-10s\t%-8s\t%-10s\t%-10s\t%-10s\n",</p><p> "No.","date","in_out","amount","kind","remain");</p>&l
62、t;p> if (headPtr->num==num)</p><p> printf("%d\t%-10s\t%-5s\t\t%5.2f\t\t%-10s\t%5.2f\n",headPtr->num,</p><p> headPtr->date,headPtr->in_out,headPtr->amount,headPtr
63、->kind,headPtr->remain);</p><p><b> else</b></p><p><b> {</b></p><p> cPtr=headPtr;</p><p> while (cPtr!=NULL&&cPtr->num!=n
64、um)</p><p><b> {</b></p><p> cPtr=cPtr->next;</p><p><b> }</b></p><p> if (cPtr!=NULL) </p><p><b>
65、; {</b></p><p> printf("%d\t%-10s\t%-5s\t\t%5.2f\t\t%-10s\t%5.2f\n",cPtr->num,</p><p> cPtr->date,cPtr->in_out,cPtr->amount,cPtr->kind,cPtr->remain);</p&g
66、t;<p> return cPtr; </p><p><b> }</b></p><p><b> else</b></p><p> printf("該條記錄不存在\n");</p><p><b>
67、}</b></p><p> return cPtr;</p><p><b> }</b></p><p> /*5.按date查詢*/</p><p> void date_search(APtr headPtr,char date[])</p><p><b>
68、 {</b></p><p> APtr cPtr;</p><p> int m=0; </p><p> printf("%3s\t%-10s\t%-8s\t%-10s\t%-10s\t%-10s\n",</p><p> "No.&qu
69、ot;,"date","in_out","amount","kind","remain");</p><p> cPtr=headPtr;</p><p> while(cPtr!=NULL)</p><p><b> {</b></
70、p><p> if (strcmp(cPtr->date,date)==0)</p><p><b> {</b></p><p> printf("%d\t%-10s\t%-5s\t\t%5.2f\t\t%-10s\t%5.2f\n",cPtr->num,</p><p>
71、cPtr->date,cPtr->in_out,cPtr->amount,cPtr->kind,cPtr->remain);</p><p><b> m=m+1;</b></p><p><b> }</b></p><p> cPtr=cPtr->next;</p>
72、<p> } </p><p><b> if(m==0)</b></p><p><b> {</b></p><p> printf("該條記錄不存在\n");</p><p><b> }</b></p
73、><p><b> }</b></p><p><b> 賬單排序?yàn)g覽</b></p><p><b> 實(shí)現(xiàn)代碼如下:</b></p><p> void date_sort(APtr *sPtr)</p><p><b> {<
74、/b></p><p> APtr pPtr=NULL,cPtr=NULL,t1Ptr=NULL,t2Ptr=NULL;</p><p><b> int i,j;</b></p><p> for (i=0;i<n-1;i++) </p><p> { &l
75、t;/p><p> pPtr=*sPtr; </p><p> cPtr=(*sPtr)->next; </p><p> for (j=0;j<n-1-i;j++) </p><p><b> {</b></p><p>
76、 if (strcmp(pPtr->date,cPtr->date)>0&&pPtr==*sPtr)</p><p><b> {</b></p><p> pPtr->next=cPtr->next;</p><p> cPtr->next=pPtr;</p><p
77、> t1Ptr=pPtr;</p><p> pPtr=cPtr;</p><p> cPtr=t1Ptr;</p><p> *sPtr=pPtr;</p><p><b> }</b></p><p><b> else</b></p>
78、<p><b> {</b></p><p> if (strcmp(pPtr->date,cPtr->date)>0)</p><p><b> {</b></p><p> t1Ptr->next=cPtr;</p><p> cPtr->nex
79、t=pPtr;</p><p> pPtr->next=t2Ptr;</p><p> t1Ptr=pPtr;</p><p> pPtr=cPtr;</p><p> cPtr=t1Ptr;</p><p><b> }</b></p><p><b
80、> } </b></p><p> if (cPtr->next!=NULL)</p><p><b> {</b></p><p> t1Ptr=pPtr;</p><p> pPtr=cPtr;</p><p> cPtr=cPtr->next;<
81、;/p><p> t2Ptr=cPtr->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p&g
82、t;<p> void amount_sort(APtr *sPtr)</p><p><b> {</b></p><p> APtr pPtr=NULL,cPtr=NULL,t1Ptr=NULL,t2Ptr=NULL;</p><p><b> int i,j;</b></p>&l
83、t;p> for (i=0;i<n-1;i++)</p><p> { </p><p> pPtr=*sPtr;</p><p> cPtr=(*sPtr)->next;</p><p> for (j=0;j<n-1-i;j++)</p><p><b>
84、; {</b></p><p> if (pPtr->amount>cPtr->amount&&pPtr==*sPtr)</p><p><b> {</b></p><p> pPtr->next=cPtr->next;</p><p> cPtr-&
85、gt;next=pPtr;</p><p> t1Ptr=pPtr;</p><p> pPtr=cPtr;</p><p> cPtr=t1Ptr;</p><p> *sPtr=pPtr;</p><p><b> }</b></p><p><b>
86、; else</b></p><p><b> {</b></p><p> if (pPtr->amount>cPtr->amount)</p><p><b> {</b></p><p> t1Ptr->next=cPtr;</p>
87、<p> cPtr->next=pPtr;</p><p> pPtr->next=t2Ptr;</p><p> t1Ptr=pPtr;</p><p> pPtr=cPtr;</p><p> cPtr=t1Ptr;</p><p><b> }</b><
88、;/p><p><b> }</b></p><p> if (cPtr->next!=NULL)</p><p><b> {</b></p><p> t1Ptr=pPtr;</p><p> pPtr=cPtr;</p><p>
89、cPtr=cPtr->next;</p><p> t2Ptr=cPtr->next;</p><p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p><b>
90、; }</b></p><p><b> 統(tǒng)計(jì)</b></p><p><b> 實(shí)現(xiàn)代碼如下:</b></p><p> /*9.統(tǒng)計(jì)各類數(shù)據(jù)*/</p><p> void Stat(APtr headPtr)</p><p><b>
91、{</b></p><p> int choice;</p><p> char IO[4],kind[30],date[12];</p><p> printf("請(qǐng)選擇項(xiàng)目序號(hào):\n");</p><p> printf("1總收入和總支出\n"</p><
92、p> "2各門類總計(jì)統(tǒng)計(jì)\n"</p><p><b> "3月度總計(jì)\n"</b></p><p> "4各門類多占總量的比例\n");</p><p> scanf("%d",&choice);</p><p>
93、switch(choice)</p><p><b> {</b></p><p> case 1:printf("計(jì)算總收入請(qǐng)輸入in,計(jì)算總支出請(qǐng)輸入out\n");</p><p> scanf("%s",IO);</p><p> IO_total(headPtr,
94、IO);</p><p><b> break;</b></p><p><b> case 2:</b></p><p> printf("統(tǒng)計(jì)收入輸入in,統(tǒng)計(jì)支出輸入out:");</p><p> scanf("%s",IO);</p&g
95、t;<p> printf("請(qǐng)輸入要統(tǒng)計(jì)的kind類型:");</p><p> scanf("%s",kind);</p><p> kind_total(headPtr,kind,IO);</p><p><b> break;</b></p><p>
96、<b> case 3:</b></p><p> printf("統(tǒng)計(jì)收入輸入in,統(tǒng)計(jì)支出輸入out:");</p><p> scanf("%s",IO);</p><p> printf("請(qǐng)輸入要統(tǒng)計(jì)的年月,格式****.**:");</p><p
97、> scanf("%s",date);</p><p> mon_total(headPtr,date,IO);</p><p><b> break;</b></p><p> case 4:printf("統(tǒng)計(jì)收入輸入in,統(tǒng)計(jì)支出輸入out:");</p><p&g
98、t; scanf("%s",IO);</p><p> printf("請(qǐng)輸入要統(tǒng)計(jì)的kind類型:");</p><p> scanf("%s",kind);</p><p> proportion(headPtr,kind,IO);</p><p><b>
99、break;</b></p><p><b> }</b></p><p><b> }</b></p><p> /*各門類總計(jì)統(tǒng)計(jì)*/</p><p> float kind_total(APtr headPtr,char kind[],char IO[])</p>
100、;<p><b> {</b></p><p><b> FILE *fp;</b></p><p> float sum=0;</p><p> char str[20];</p><p> APtr cPtr=headPtr;</p><p>
101、while(cPtr!=NULL) </p><p><b> {</b></p><p> if(strcmp(kind,cPtr->kind)==0&&strcmp(IO,cPtr->in_out)==0)</p><p><b> {</b></p>&l
102、t;p> sum+=cPtr->amount; </p><p><b> }</b></p><p> cPtr=cPtr->next; </p><p><b> } </b></p><p> printf("%s類的
103、%s統(tǒng)計(jì)結(jié)果為:%f\n",kind,IO,sum);</p><p> printf("保存結(jié)果,輸入要保存的文件名:");</p><p> scanf("%s",str);</p><p> if((fp=fopen(str,"a"))==NULL) </p>
104、<p><b> {</b></p><p> printf("文件打不開,無法保存\n"); </p><p><b> }</b></p><p><b> else</b></p><p><b> {</
105、b></p><p> fprintf(fp,"%s","The result is ");</p><p> fprintf(fp,"%s\t%s\t%f\n",kind,IO,sum); </p><p> printf("保存成功\n");</p>
106、;<p><b> }</b></p><p> return sum;</p><p><b> }</b></p><p> /*總收入總支出*/</p><p> float IO_total(APtr headPtr,char IO[])</p>&l
107、t;p><b> {</b></p><p> float sum=0;</p><p> char str[20];</p><p> APtr cPtr=headPtr;</p><p><b> FILE *fp;</b></p><p> while
108、(cPtr!=NULL) </p><p><b> {</b></p><p> if(strcmp(cPtr->in_out,IO)==0) </p><p><b> {</b></p><p> sum+=cPtr->amount; </p&g
109、t;<p><b> }</b></p><p> cPtr=cPtr->next;</p><p><b> }</b></p><p> printf("%s的結(jié)果為:%f\n",IO,sum); </p><p> printf(&q
110、uot;保存結(jié)果,輸入要保存的文件名:");</p><p> scanf("%s",str);</p><p> if((fp=fopen(str,"a"))==NULL)</p><p><b> {</b></p><p> printf("文件打
111、不開,無法保存\n");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> fprintf(fp,"%s","The result is &
112、quot;);</p><p> fprintf(fp,"%s\t%f\n",IO,sum); </p><p> printf("保存成功\n");</p><p><b> }</b></p><p> return sum;</p>&l
113、t;p><b> }</b></p><p><b> /*月度開銷*/</b></p><p> void mon_total(APtr headPtr,char date[],char IO[])</p><p><b> {</b></p><p><
114、b> FILE *fp;</b></p><p> char str[20];</p><p> float sum=0;</p><p> APtr cPtr=headPtr; </p><p> while(cPtr!=NULL) </p><p><b>
115、 {</b></p><p> if(strcmp(cPtr->in_out,IO)==0&&strncmp(cPtr->date,date,7)==0) </p><p><b> {</b></p><p> sum+=cPtr->amount;</p><p>
116、;<b> }</b></p><p> cPtr=cPtr->next; </p><p><b> }</b></p><p> printf("%s該月%s總計(jì)為:%f\n",date,IO,sum);</p><p> printf(&
117、quot;保存結(jié)果,輸入要保存的文件名:");</p><p> scanf("%s",str);</p><p> if((fp=fopen(str,"a"))==NULL)</p><p><b> {</b></p><p> printf("文件
118、打不開,無法保存\n");</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> fprintf(fp,"%s","The result is
119、");</p><p> fprintf(fp,"%s\t%s\t%f\n",date,IO,sum); </p><p> printf("保存成功\n");</p><p><b> }</b></p><p><b> }</b&
120、gt;</p><p> /*各門類所占比例*/</p><p> void proportion(APtr headPtr,char kind[],char IO[])</p><p><b> {</b></p><p><b> FILE *fp;</b></p><
121、;p> float pro,a,b;</p><p> char str[20];</p><p> a=kind_total(headPtr,kind,IO); </p><p> b=IO_total(headPtr,IO); </p><p> pro=a/b;
122、 </p><p> printf("%s類所占%s比例為:%f\n",kind,IO,pro);</p><p> printf("保存結(jié)果,輸入要保存的文件名:");</p><p> scanf("%s",str);</p>
123、;<p> if((fp=fopen(str,"a"))==NULL)</p><p><b> {</b></p><p> printf("文件打不開,無法保存\n");</p><p><b> }</b></p><p><
124、b> else</b></p><p><b> {</b></p><p> fprintf(fp,"%s","The result is ");</p><p> fprintf(fp,"%s/%s\t%f\n",kind,IO,pro); &
125、lt;/p><p> printf("保存成功\n");</p><p><b> }</b></p><p><b> }</b></p><p><b> 總結(jié)</b></p><p> 通過本此的課程設(shè)計(jì),讓我更熟練地掌
126、握了《C程序設(shè)計(jì)教程》的知識(shí),熟悉了一個(gè)管理系統(tǒng)的運(yùn)用和操作,熟悉如何采用DEV C++作為編譯環(huán)境,使程序成功的編譯和運(yùn)行,能夠運(yùn)用VC語言創(chuàng)建基本表和編輯信息,增加信息,刪除信息,修改信息,查找信息和瀏覽信息。通過對(duì)基本表格,編輯,增加,刪除,修改,查找,瀏覽模塊的鏈接,生成能操作運(yùn)行的管理系統(tǒng)。</p><p> 此次我們所設(shè)計(jì)的個(gè)人記賬系統(tǒng)可應(yīng)用于家庭的簡(jiǎn)單管理,對(duì)家庭各成員的財(cái)務(wù)收入,支出進(jìn)行編輯,增
127、加,刪除,修改,合計(jì)排序?yàn)g覽。</p><p> 在這次課程設(shè)計(jì)中由于對(duì)知識(shí)掌握的不夠熟悉,專業(yè)技術(shù)水平的有限,我遇到很多問題,從程序的初步設(shè)計(jì),編輯到程序的運(yùn)行,從一開始的按模塊分工撰寫,到各模塊的鏈接運(yùn)行。特別是程序運(yùn)行的時(shí)候,程序出現(xiàn)了一個(gè)錯(cuò)誤,使整個(gè)程序運(yùn)行不了,我更是在怎樣運(yùn)行程序上思想發(fā)生了沖突??傊琕C程序設(shè)計(jì)為我提供了一個(gè)相互學(xué)習(xí)的平臺(tái),為更好地學(xué)習(xí)這門課程提供了壞境和基礎(chǔ),因?yàn)檎n程設(shè)計(jì)我更加
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(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ì)報(bào)告-個(gè)人記賬系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)--java_個(gè)人記賬管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(jì)---小型記賬系統(tǒng)
- 個(gè)人約會(huì)管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 個(gè)人日程管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 個(gè)人博客課程設(shè)計(jì)報(bào)告
- 《個(gè)人網(wǎng)頁設(shè)計(jì)》課程設(shè)計(jì)報(bào)告
- 個(gè)人信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 個(gè)人博客系統(tǒng)課程設(shè)計(jì)
- 模板個(gè)人銀行管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 個(gè)人理財(cái)系統(tǒng)課程設(shè)計(jì)
- 個(gè)人網(wǎng)站系統(tǒng)課程設(shè)計(jì)
- 個(gè)人信息管理系統(tǒng)-課程設(shè)計(jì)報(bào)告
- 《國(guó)際結(jié)算課程設(shè)計(jì)》個(gè)人報(bào)告
- c語言課程設(shè)計(jì)報(bào)告---個(gè)人消費(fèi)管理系統(tǒng)
- javaee 課程設(shè)計(jì)--個(gè)人財(cái)務(wù)系統(tǒng)
- 個(gè)人博客管理系統(tǒng)課程設(shè)計(jì)
- 個(gè)人課程設(shè)計(jì)報(bào)告---網(wǎng)上書店
- 軟件工程課程設(shè)計(jì)個(gè)人報(bào)告
- 《個(gè)人網(wǎng)頁設(shè)計(jì)》課程設(shè)計(jì)報(bào)告(含源碼)
評(píng)論
0/150
提交評(píng)論