2023年全國(guó)碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論