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