個人賬簿管理系統(tǒng)23459_第1頁
個人賬簿管理系統(tǒng)23459_第2頁
個人賬簿管理系統(tǒng)23459_第3頁
個人賬簿管理系統(tǒng)23459_第4頁
個人賬簿管理系統(tǒng)23459_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、PAGE 課程設計說明書課程設計名稱: 軟件課程設計 課程設計題目: 個人賬簿管理系統(tǒng) 學 院 名 稱: 信息工程學院 專業(yè): 電子信息科學與技術 班級: 090431 學號: 09043125 姓名: 邵林 評分: 教師: 廖遠 20 12 年 6 月 29 日 軟件 課程設計任務書20112012學年第二學期 分散1周 第18周 20 周集中題目個人帳簿管理系統(tǒng)設計功能:個人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項開支情況,包括食品消費,房租,子女教育費用,水電費,醫(yī)療費,儲蓄等.進入系統(tǒng)后可以輸入和修改某月的收支情況,可以對每月的開支從小到大進行排序,可以根據(jù)輸入的月份查詢每月的收支情況

2、。進度安排1。 分散1周:布置任務、查閱資料、選擇方案 注意:學生的設計方案需經指導老師檢查通過后方可進實驗室進行制作。2。 第18周:軟件設計3。 第19周第20周:軟件編碼、調試、 驗收及測試并上交報告學生姓名:邵林、劉舒林指導時間 分散1周,集中指導:2011.6。116。29指導地點 E505任務下達2012 年 6 月 4 日任務完成2012 年6 月 29 日考核方式1。評閱 2.答辯 3。實際操作 4.其它指導教師廖遠系(部)主任萬在紅注:1、此表一組一表二份,課程設計小組組長一份;任課教師授課時自帶一份備查。課程設計結束后與“課程設計小結”、“學生成績單一并交院教務存檔摘 要針

3、對一些人對需要對自己的收入支出有一個詳細的記錄和了解,個人賬簿管理系統(tǒng)孕育而生。本系統(tǒng)主要是用C語言編寫,運用結構體數(shù)組,子函數(shù),同時通過函數(shù)指針數(shù)組實現(xiàn)函數(shù)的調用,本系統(tǒng)的功能包括按輸入、輸出、修改、查詢、刪除及按收入排序及按月份大小排序,通過文件操作保存數(shù)據(jù)和加載數(shù)據(jù)等.本系統(tǒng)設計人性化,適合于大部分家庭用戶對個人收支的管理,是生活更加便捷。關鍵詞: C語言,數(shù)據(jù)結構,個人賬簿管理目 錄 TOC o ”13 h z u HYPERLINK l _Toc328509327 前 言 PAGEREF _Toc328509327 h 1 HYPERLINK l ”_Toc328509328” 第一

4、章 系統(tǒng)功能分析 PAGEREF _Toc328509328 h 2 HYPERLINK l _Toc328509329 1。1個人賬簿管理 PAGEREF _Toc328509329 h 2 HYPERLINK l ”_Toc328509330 1。2解決個人賬簿管理 PAGEREF _Toc328509330 h 2 HYPERLINK l _Toc328509331 1。2。1 概要分析 PAGEREF _Toc328509331 h 2 HYPERLINK l ”_Toc328509332” 1.2。2 流程圖 PAGEREF _Toc328509332 h 3 HYPERLINK l

5、 _Toc328509333” 第二章 系統(tǒng)總體設計 PAGEREF _Toc328509333 h 4 HYPERLINK l ”_Toc328509334” 2.1系統(tǒng)總體設計思路 PAGEREF _Toc328509334 h 4 HYPERLINK l _Toc328509335” 2.2各個功能模塊簡介 PAGEREF _Toc328509335 h 4 HYPERLINK l ”_Toc328509336 2.2。 1結構體數(shù)組 PAGEREF _Toc328509336 h 4 HYPERLINK l _Toc328509337 2。2。 2各種收支信息輸入函數(shù)的創(chuàng)建 PAGER

6、EF _Toc328509337 h 4 HYPERLINK l _Toc328509338” 2。2。 3收支排序函數(shù)的創(chuàng)建 PAGEREF _Toc328509338 h 5 HYPERLINK l ”_Toc328509339 2。2。 4增刪改函數(shù)的創(chuàng)建 PAGEREF _Toc328509339 h 5 HYPERLINK l ”_Toc328509340 2。2. 5數(shù)據(jù)信息保存文件和加載文件數(shù)據(jù)函數(shù)的創(chuàng)建 PAGEREF _Toc328509340 h 7 HYPERLINK l _Toc328509341” 2。2.6數(shù)據(jù)信息打印函數(shù)的創(chuàng)建 PAGEREF _Toc328509

7、341 h 7 HYPERLINK l _Toc328509342 第三章 文件函數(shù)、打印函數(shù)和主函數(shù)詳細設計 PAGEREF _Toc328509342 h 9 HYPERLINK l _Toc328509343 3。1程序代碼實現(xiàn) PAGEREF _Toc328509343 h 9 HYPERLINK l _Toc328509344 3。1.1程序主界面 PAGEREF _Toc328509344 h 9 HYPERLINK l _Toc328509345” 3.2文件函數(shù)的實現(xiàn) PAGEREF _Toc328509345 h 10 HYPERLINK l ”_Toc328509346 3

8、.2打印數(shù)據(jù) PAGEREF _Toc328509346 h 11 HYPERLINK l ”_Toc328509347 第四章 測試數(shù)據(jù)與結果 PAGEREF _Toc328509347 h 12 HYPERLINK l ”_Toc328509348” 4。1主函數(shù)界面測試 PAGEREF _Toc328509348 h 12 HYPERLINK l _Toc328509349” 4。2輸入函數(shù)測試 PAGEREF _Toc328509349 h 12 HYPERLINK l _Toc328509350 4。3查找指定月份數(shù)據(jù)測試 PAGEREF _Toc328509350 h 12 HYP

9、ERLINK l _Toc328509351 4.4查看所有月份數(shù)據(jù)測試 PAGEREF _Toc328509351 h 13 HYPERLINK l _Toc328509352 4。5添加數(shù)據(jù)信息測試 PAGEREF _Toc328509352 h 13 HYPERLINK l ”_Toc328509353 4。6修改原有信息測試 PAGEREF _Toc328509353 h 13 HYPERLINK l ”_Toc328509354 4.7刪除指定的信息測試 PAGEREF _Toc328509354 h 13 HYPERLINK l ”_Toc328509355 4.8按月份大小排序測

10、試 PAGEREF _Toc328509355 h 13 HYPERLINK l _Toc328509356” 4.9按總收入排序測試 PAGEREF _Toc328509356 h 14 HYPERLINK l ”_Toc328509357” 4.10將數(shù)據(jù)信息保存到文件測試 PAGEREF _Toc328509357 h 14 HYPERLINK l _Toc328509358” 4.11加載文件中的數(shù)據(jù)信息測試 PAGEREF _Toc328509358 h 14 HYPERLINK l ”_Toc328509359” 結 論 PAGEREF _Toc328509359 h 15 HYP

11、ERLINK l ”_Toc328509360 結 束 語 PAGEREF _Toc328509360 h 16 HYPERLINK l ”_Toc328509361” 參考文獻 PAGEREF _Toc328509361 h 17 HYPERLINK l _Toc328509362” 程序分工 PAGEREF _Toc328509362 h 18 HYPERLINK l ”_Toc328509363 附錄 PAGEREF _Toc328509363 h 19 PAGE 10 前 言你是否還在回憶你上個月的收入是多少,支出是多少,都用到哪里去了?很多吧?是的,我們生活中有太多的收入支出,如子女

12、消費、水電費、房租、收入等等。我們需要用東西把他們都一一記錄下來。個人賬簿管理系統(tǒng)則可以滿足我們對這些方面的要求。本系統(tǒng)使用GCC(GNU Compiler Collection,GNUHYPERLINK ”http:/view/487018.htm編譯器套裝)開發(fā)工具來開發(fā)該應用程序。采C語言為開發(fā)語言,通過一個結構體數(shù)組記錄各種收入支出信息,運用一些數(shù)據(jù)結構和算法達到個人賬簿管理的各種功能.本設計報告詳細討論了該系統(tǒng)的開發(fā)、設計環(huán)境、實現(xiàn)算法及其具體的實現(xiàn)。個人賬簿管理系統(tǒng)是結合了文件、結構體、函數(shù)等操作,運用了數(shù)據(jù)結構中最基本的一些算法,使程序簡單明了,本程序也采用了函數(shù)指針數(shù)組來實現(xiàn)函

13、數(shù)的調用,從而達到了不浪費內存的目的,同時也加快了程序的運行速度.同時本系統(tǒng)界面人性化,易操作,能夠滿足大部分家庭的要求。 第一章 系統(tǒng)功能分析本程序可以實現(xiàn)個人賬簿的按月份插入、輸出、修改、查詢、刪除、按收入排序、按月份大小排序、將數(shù)據(jù)保存到文件和加載文件數(shù)據(jù)等功能,其中每一個功能,都分別使用了一個函數(shù),其中程序的主界面簡潔明了。可以按主界面的提示完成每一塊功能.1.1個人賬簿管理在程序中定義了一個結構體主要包括(月份,全部的收入,食品開支,房租,水電費,醫(yī)療費,儲蓄,子女教育費和總體的支出費用)其次定義了10個函數(shù),分別是輸入信息,查看指定月份信息,查看全部月份信息,插入信息,修改信息,刪

14、除指定月份信息,按月份大小排序,按總收入排序,保存數(shù)據(jù)到文件和加載文件數(shù)據(jù)。其中每一個程序都能實現(xiàn)相應部分的功能,并且使用了結構體數(shù)組的操作,通過對結構體數(shù)組的操作和文件的操作完成各自對應的功能.1.2解決個人賬簿管理1.2。1 概要分析個人賬簿管理通過以下函數(shù)實現(xiàn):Input(PEL *a); /輸入個人收支信息函數(shù)Myprintf(PEL *a); /打印指定月份收支信息函數(shù)Allprintf(PEL *a); /打印所以月份收支信息函數(shù)Add(PEL a); /添加指定月份收支信息函數(shù)Modify(PEL a); /修改指定月份收支信息函數(shù)Delrecord(PEL *a); /刪除指定

15、月份收支信息函數(shù)Yuepaixu(PEL *a); /按月份大小排序函數(shù)Zongpaixu(PEL *a); /按總收入排序函數(shù)Save(PEL a); /將所以收支信息保存到文件函數(shù)Load(PEL a); /加載文件的信息到結構體數(shù)組函數(shù) 這十個函數(shù)分別完成每一部分功能 ,其中都是與主函數(shù)調用相對應的函數(shù),完成相應的功能.1.2。2 流程圖 第二章 系統(tǒng)總體設計2。1系統(tǒng)總體設計思路個人賬簿管理系統(tǒng)可以通過創(chuàng)建一個結構體數(shù)組,通過輸入信息函數(shù),查看指定月份信息函數(shù),查看全部月份信函數(shù)息,插入信息函數(shù),修改信息函數(shù),刪除指定月份信息函數(shù),按月份大小排序函數(shù),按總收入排序函數(shù),保存數(shù)據(jù)到文件函

16、數(shù)和加載文件數(shù)據(jù)函數(shù)對結構體數(shù)組操作來完成系統(tǒng)的主要功能,其中每一個功能都為對應的一個函數(shù),增加程序的可讀性,以實現(xiàn)程序的整體功能。2.2各個功能模塊簡介2。2。 1結構體數(shù)組首先創(chuàng)建一個結構體數(shù)組,以便將各種收支信息存入到結構體數(shù)組。typedef struct personalint month; /月份float foodxiaofei; /食品消費float fangzu; /房租float zinvxiaofei; /子女教育消費float shuidianfei; /水電費float yiliaofei; /醫(yī)療費float moneyin; /儲蓄float yueshouru;

17、 /月收入PEL;PEL aN;2。2. 2各種收支信息輸入函數(shù)的創(chuàng)建 輸入函數(shù)的主要功能是將個人收支信息寫入到結構體數(shù)組。函數(shù)通過修改結構體數(shù)組指針來完成數(shù)據(jù)的寫入。函數(shù)首先選擇需要寫入幾個月的收支信息,通過for循環(huán)按照提示一次將數(shù)據(jù)寫入,for循環(huán)的結束條件是月份個數(shù)。主要代碼如下:for(i=0;in;i+)scanf(%d%ff%f%f%f%ff,ai。month,&ai。foodxiaofei,ai。fangzu,&ai。zinvxiaofei,&ai.shuidianfei,&ai.yiliaofei,ai。moneyin,ai。yueshouru);/n為需要寫入的月份個數(shù)2。

18、2. 3收支排序函數(shù)的創(chuàng)建 收支排序函數(shù)的主要功能是將收支信息按照一定的順序排列。為使設計更加人性化,排序可以分為按月份大小排序和按總收入排序。對結構體數(shù)組成員的排序可以使用冒泡排序快速實現(xiàn)。冒泡排序的基本思想是:兩兩比較待排序記錄的關鍵字,發(fā)現(xiàn)兩個記錄的次序相反時即進行交換,直到沒有反序的記錄為止。 按月份大小排序可以比較每個結構體數(shù)組成員ai。month的大小,通過for循環(huán)將整個結構體數(shù)組進行交換。按總收入排序則是比較ai.yueshouru的大小.通過判斷可以取得有效月份的個數(shù)k,在通過循環(huán)的兩次嵌套,外層循環(huán)控制下一次比較的次數(shù),內循環(huán)循環(huán)次數(shù)受外循環(huán)控制次數(shù)影響。冒泡排序詳細設計如

19、下:for(i=0;ik;i+)for(j=0;jki;j+)if(aj.month=aj+1.month)tmp=aj;aj=aj+1;aj+1=tmp;2。2。 4增刪改函數(shù)的創(chuàng)建增刪改函數(shù)的功能是實現(xiàn)對指定收支信息修改,通過增刪改函數(shù)我們可以更加靈活的處理個人收支信息。增刪改函數(shù)函數(shù)可以通過修改結構體數(shù)組指針來實現(xiàn).添加指定月份收支信息,我們可以在原有收支信息后面添加,即在已經創(chuàng)建的結構體數(shù)組里面添加數(shù)據(jù)。先通過判斷語句找到函數(shù)有效的月份個數(shù)k,再在結構體數(shù)組ak+1處依次添加所需要的信息.主要設計如下:for(i=0;iN;i+)if(ai。month!=0)k+;for(i=k;in

20、+k;i+)scanf(%df%f%f%ffff”,ai。month,&ai.foodxiaofei,ai。fangzu,&ai。zinvxiaofei,&ai.shuidianfei,ai.yiliaofei,ai。moneyin,&ai。yueshouru);/n為所需要添加月份的個數(shù) 刪除收支數(shù)據(jù)信息函數(shù)的創(chuàng)建可以對結構體數(shù)組元素進行移位來實現(xiàn).通過判斷語句找到指定月份的位置k,將指定月份后的數(shù)據(jù)全部往前移動一位,即ak=ak+i。依次移動直到結束。注意移動時不能超出數(shù)組的下標。主要設計代碼如下:for(i=0;iN;i+)if(ai。month=mon)k=i;for(i=k;iN-1

21、;i+)ai=ai+1;修改收支信息函數(shù)的創(chuàng)建比較簡單。只需要通過一個判斷語句找到指定月份的位置。重新輸入數(shù)據(jù)替換原有數(shù)據(jù)即可.主要設計代碼如下:for(i=0;iN;i+)if(ai.month=mon)scanf(”%df%ff%fff%f,ai.month,&ai。foodxiaofei,ai。fangzu,ai。zinvxiaofei,&ai.shuidianfei,ai。yiliaofei,ai.moneyin,ai。yueshouru);2.2。 5數(shù)據(jù)信息保存文件和加載文件數(shù)據(jù)函數(shù)的創(chuàng)建通過文件的操作能實現(xiàn)將個人收支信息保存到文件備份,以防系統(tǒng)出現(xiàn)問題后無法找到這些信息.同時也可

22、以快速的加載文件的數(shù)據(jù)實現(xiàn)系統(tǒng)設置的各種操作。收支數(shù)據(jù)信息寫入函數(shù)的創(chuàng)建,先創(chuàng)建一個文件類型指針。以“wb”方式創(chuàng)建一個名為“mybill。txt”的文件。通過fprintf函數(shù)將結構體數(shù)組中的數(shù)據(jù)信息依次寫入數(shù)據(jù)流中指定的文件中。主要設計代碼如下:for(i=0;iN;i+) /N初始化為12個月fprintf(fp,”%dt.3ft%.3ft。3ft%.3ft%.3ft%。3ft%。3f”,ai。month,ai。foodxiaofei,ai.fangzu,ai。zinvxiaofei,ai。shuidianfei,ai.yiliaofei,ai。moneyin,ai。yueshouru)

23、;fprintf(fp,rn); 收支信息讀取函數(shù)是寫函數(shù)的逆過程。以“rb的方式打開名為“mybill.txt”的文件。通過fscanf函數(shù)依次將數(shù)據(jù)從數(shù)據(jù)流指向的文件中讀取到結構體數(shù)組中去。主要設計代碼如下:for(i=0;iN;i+)fscanf(fp,%d%f%f%fffff,ai。month,ai.foodxiaofei,&ai。fangzu,&ai.zinvxiaofei,ai.shuidianfei,&ai.yiliaofei,&ai.moneyin,ai.yueshouru);2.2.6數(shù)據(jù)信息打印函數(shù)的創(chuàng)建收支數(shù)據(jù)信息打印函數(shù)的主要功能是將結構體中的數(shù)據(jù)按要求顯示給用戶.為了

24、使設計更加人性化,顯示信息分為顯示指定月份的收支數(shù)據(jù)信息和全部月份的收支數(shù)據(jù)信息。 顯示指定月份的收支數(shù)據(jù)信息函數(shù)可以通過一條判斷語句找到指定月份所處的位置,將此處結構體數(shù)組的信息打印出來即可。主要設計代碼如下: for(i=0;iN;i+)/mon為需要打印的月份if(ai.month=mon)printf(”%4dt8。2f8。2f%8.2f%9.2f10。2f%9.2f%8。2fn”,ai。month,ai。foodxiaofei,ai。fangzu,ai.zinvxiaofei,ai.shuidianfei,ai。yiliaofei,ai。moneyin,ai。yueshouru);

25、顯示全部月份的收支數(shù)據(jù)信息函數(shù)只需通過for循環(huán)將數(shù)組遍歷一邊即可。主要設計代碼如下:for(i=0;iN;i+)/初始化函數(shù)為0,以0為標志顯示有效月份的收支信息if(ai。month!=0)printf(”4dt%8。2f8.2f%8。2f%9.2f10。2f%9。2f8。2fn,ai.month,ai.foodxiaofei,ai.fangzu,ai.zinvxiaofei,ai。shuidianfei,ai.yiliaofei,ai。moneyin,ai.yueshouru);第三章 文件函數(shù)、打印函數(shù)和主函數(shù)詳細設計3。1程序代碼實現(xiàn)3.1.1程序主界面各個子函數(shù)的調用可以使用函數(shù)指

26、針數(shù)組來實現(xiàn),通過指定的下標可以調用指定函數(shù).函數(shù)指針數(shù)組的每個元素是每個子函數(shù)名。主函數(shù)的界面可以通過printf函數(shù)來顯示。主要設計代碼如下:printf(tttt個人帳簿管理系統(tǒng)n);printf(tt-n”);printf(tt0:-退出系統(tǒng)-n”);printf(tt1:-輸入數(shù)據(jù)-n);printf(tt2:-查找指定月份數(shù)據(jù)-n);printf(”tt3:-查看全部數(shù)據(jù)-n”);printf(”tt4:-添加數(shù)據(jù)-n”);printf(tt5:-修改數(shù)據(jù)-n”);printf(tt6:-刪除數(shù)據(jù)-n”);printf(tt7:-按月份大小排序-n);printf(tt8:-按總收

27、入排序-n”);printf(tt9:-保存文件-n”);printf(”tt10-加載文件-n”);printf(tt-n); 按主函數(shù)的提示我們進行選擇需要的操作.選擇我們可以定義一個int類型chose,chose是多少我們就選擇了那個操作。 定義一個函數(shù)指針數(shù)組,將我們的每個函數(shù)的首地址(即函數(shù)名)存放到數(shù)組中,chose對應數(shù)組的下標,這樣我們即可實現(xiàn)函數(shù)的調用。主要設計代碼如下:void(*fun11)(PELa)=out,input,myprintf,allprintf,add,modify,delrecord,yuepaixu,zongpaixu,save,load;funch

28、ose(a);3。2文件函數(shù)的實現(xiàn)文件函數(shù)包括數(shù)據(jù)保存到文件函數(shù)和加載文件中的數(shù)據(jù)函數(shù)。保存到文件函數(shù)可以通過for循環(huán)按照一定的格式將結構體數(shù)組中的數(shù)據(jù)保存到文件。而加載文件數(shù)據(jù)函數(shù)則相反,通過for循環(huán)將數(shù)據(jù)加載到結構體數(shù)組。收支數(shù)據(jù)信息保存到文件函數(shù)可以將結構體數(shù)組中的數(shù)據(jù)保存到文件。此子函數(shù)的形參為結構體類型數(shù)組,通過指針我們可以將收支數(shù)據(jù)信息依次寫入到文件。文件操作必須先創(chuàng)建一個文件指針,我們可定義它為FILE p,運用fopen函數(shù)以“wb”的格式創(chuàng)建我們需要的文件“mybill。txt,通過fprintf函數(shù)將結構體數(shù)組中的數(shù)據(jù)依次寫入到數(shù)據(jù)流指向的fp中??刂苀printf中的

29、格式可以使數(shù)據(jù)在文件中有序的顯示出來.主要設計代碼如下:for(i=0;iN;i+)fprintf(fp,”%dt。3ft.3ft.3ft%.3ft%.3ft。3ft。3f,ai。month,ai.foodxiaofei,ai。fangzu,ai.zinvxiaofei,ai。shuidianfei,ai。yiliaofei,ai。moneyin,ai。yueshouru);fprintf(fp,rn);fclose(fp); 讀取收支信息函數(shù)實際上是寫函數(shù)的逆過程.同樣定義一個FILE *fp,以“rb”的方式打開我們已經創(chuàng)建的文件“mybill.txt” ,運用fscanf讀取數(shù)據(jù)流指向的

30、文件fp中的數(shù)據(jù)。這樣我們就可以將文件中的數(shù)據(jù)寫入到結構體數(shù)組中。主要設計代碼如下:for(i=0;iN;i+)fscanf(fp,”d%ffff%fff,&ai.month,ai.foodxiaofei,&ai.fangzu,&ai.zinvxiaofei,&ai.shuidianfei,&ai.yiliaofei,&ai。moneyin,&ai.yueshouru);3。2打印數(shù)據(jù)打印函數(shù)數(shù)據(jù)可以分為打印指定月份的數(shù)據(jù)和打印所以月份的數(shù)據(jù)。打印指定月份數(shù)據(jù)函數(shù)可以通過對結構體數(shù)組的遍歷,查看是否有與之對應的月份數(shù)據(jù),如果找到這打印數(shù)據(jù),沒找到顯示提示信息。主要設計代碼如下:for(i=0;

31、iN;i+)/mon為需要打印的月份if(ai.month=mon)printf(4dt%8.2f8.2f8.2f9。2f10.2f 9。2f8.2fn”,ai.month,ai.foodxiaofei,ai.fangzu,ai。zinvxiaofei,ai。shuidianfei,ai。yiliaofei,ai.moneyin,ai.yueshouru);打印全部月份數(shù)據(jù)可以通過for循環(huán)遍歷結構體數(shù)組知道遇到0(初始化結構體數(shù)組為0)結束,這樣可以加快運行速率。具體設計代碼如下:for(i=0;iN;i+)if(ai。month!=0)printf(”%4dt8。2f8。2f8.2f9。2

32、f%10。2f 9.2f8。2fn”,ai.month,ai.foodxiaofei,ai。fangzu,ai.zinvxiaofei,ai。shuidianfei,ai.yiliaofei,ai.moneyin,ai.yueshouru); PAGE 12第四章 測試數(shù)據(jù)與結果4.1主函數(shù)界面測試函數(shù)操作分為十個部分,按照提示可實現(xiàn)對應的功能。4.2輸入函數(shù)測試依照提示數(shù)幾個月的消費信息。4。3查找指定月份數(shù)據(jù)測試按操作提示可以查找指定月份的數(shù)據(jù)。4.4查看所有月份數(shù)據(jù)測試按提示可以查看所有月份的收支信息:4。5添加數(shù)據(jù)信息測試按提示可以添加指定月份的收支信息。4。6修改原有信息測試按提示可

33、以修改指定月份的收支信息。4.7刪除指定的信息測試按提示操作可以刪除指定月份的收支信息。4.8按月份大小排序測試按操作提示可以對所以月份收支信息按月份從小到大排序。4.9按總收入排序測試按操作提示可以對所以月份收支信息按月份從小到大排序.4.10將數(shù)據(jù)信息保存到文件測試按操作提示可以對所以月份收支信息保存到文件。4。11加載文件中的數(shù)據(jù)信息測試按操作提示可以對所以月份收支信息加載到結構體數(shù)組.結 論 個人賬簿管理系統(tǒng)主要實現(xiàn)了對個人收支信息的增刪改和保存,使我們的生活更加便捷.同時通過這次軟件課程設計使我了解到了 :寫一個程序首先要有算法,而算法有很多種,使用最優(yōu)的算法,能節(jié)約很多時間和加快系

34、統(tǒng)的速度.在這個程序中,主要還是利用了C語言中數(shù)組和文件的操作,其中最主要的就是結構體數(shù)組的讀寫,還有查找、修改及刪除數(shù)組中的數(shù)據(jù)。刪除數(shù)據(jù)記得一定不能越界。文件操作還是比較復雜的,首先要創(chuàng)建一個文件指針,通過函數(shù)按一定的格式將數(shù)據(jù)信息讀取或者寫入.在結構體的操作用,不能直接給結構體變量賦值。這個程序的界面編的雖然不怎么好看,但基本賬簿管理的功能都達到了。但是還有許多地方需要改進。 PAGE 13結 束 語在這次課程設計中,我學習到了,不管做什么事情還是團隊協(xié)作,才可以使一件事情辦得最后,一個人的力量永遠是有限的,不管一個人的能力有多大,總會有一些地方的不足,尤其是我們編程這一行,最主要的還是

35、要團隊合作.其次就是寫程序時要用到注釋,因為一個程序是由幾個人寫出來的,假如不寫注釋的話,就相互都看不懂,也不能實現(xiàn)程序的結合,所以說寫程序時注釋很重要.最后,我覺得不管做什么事情必須認認真真的做,要沉得下心來,尤其是寫程序,假如沉不下心來做的話,也決對寫不出一個好的程序或者實用的程序來。 PAGE 14參考文獻1 譚浩強著C語言程序設計(第三版)M清華大學出版社.2008。2 Kenneth A. Reek .C與指針(第二版)M. 北京:人民郵電出版社,2008。3 鄭阿奇Visual C+實用教程(第三版)M電子工業(yè)出版社.2007.PAGE 15 PAGE 19程序分工姓名任務分配邵林

36、打印函數(shù),文件函數(shù),主函數(shù)劉舒林數(shù)據(jù)輸入函數(shù),增刪改函數(shù)附錄 程序代碼:/個人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項開支情況,包括食品消費,房租,子女教育費用,水電費,醫(yī)療費,儲蓄等。進入系統(tǒng)后可以輸入和修改某月的收支情況,可以對每月的開支從小到大進行排序,可以根據(jù)輸入的月份查詢每月的收支情況。*/*要求:根據(jù)以上任務說明,設計數(shù)據(jù)結構,并設計程序完成功能。*/includestdio.hincludeincludedefine N 12typedef struct personalint month; /月份float foodxiaofei; /食品消費float fangzu; /房租

37、float zinvxiaofei; /子女教育消費float shuidianfei; /水電費float yiliaofei; /醫(yī)療費float moneyin; /儲蓄float yueshouru; /月收入PEL;void input(PEL a) /輸入月消費int n,i;printf(確定要輸入幾個月的賬單:);scanf(d,n);if(n0&n13)printf(”n請依次輸入數(shù)據(jù)說明:中間以空格符隔開:n);printf(本月月份 食品消費 房租費用 子女費用 水電費用 醫(yī)療費用 儲蓄費用 收入費用n”);for(i=0;in;i+)scanf(”%d%f%f%f%f%

38、f%f%f”,ai。month,&ai。foodxiaofei,&ai。fangzu,ai.zinvxiaofei,&ai。shuidianfei,ai。yiliaofei,ai。moneyin,&ai.yueshouru);printf(”信息錄入成功!n”);else printf(”輸入有誤!n”);exit(0);void yuepaixu(PEL a)/月排序int i,j,k=0;PEL tmp;for(i=0;iN;i+)if(ai。month!=0)k+;for(i=0;ik;i+)for(j=0;jk+)if(aj。month=aj+1.month)tmp=aj;aj=aj+

39、1;aj+1=tmp;printf(”按月份排序成功!n);void zongpaixu(PEL a)/總收入排序PEL tmp;int i,j,k=0,t;for(i=0;i=aj+1。yueshouru)tmp=aj;aj=aj+1;aj+1=tmp;printf(按每月總收入排序成功!n);void modify(PEL a)/修改指定月份的數(shù)據(jù)int mon;printf(”請輸入要修改的月份:);scanf(”d”,&mon);int i=0;printf(本月月份 食品消費 房租費用 子女費用 水電費用 醫(yī)療費用 儲蓄費用 收入費用n”);for(i=0;iN;i+)if(ai。m

40、onth=mon)scanf(%dfff%fff%f”,ai。month,&ai.foodxiaofei,&ai.fangzu,ai。zinvxiaofei,ai.shuidianfei,&ai。yiliaofei,ai。moneyin,&ai.yueshouru);printf(修改指定月份數(shù)據(jù)成功!n”);void delrecord(PEL a)/刪除指定月份數(shù)據(jù)函數(shù)int mon;printf(”請輸入要修改的月份:);scanf(”d”,&mon);int i,k;for(i=0;iN;i+)if(ai.month=mon)k=i;for(i=k;iN1;i+)ai=ai+1;pri

41、ntf(”刪除指定月份數(shù)據(jù)成功!n”);void add(PEL a)/添加數(shù)據(jù)int n,i,k=0;printf(”確定要輸入增加幾個個月的賬單:);scanf(d,n);printf(n請依次輸入數(shù)據(jù)說明:中間以空格符隔開:n);for(i=0;iN;i+)if(ai.month!=0)k+;for(i=k;in+k;i+)printf(”本月月份 食品消費 房租費用 子女費用 水電費用 醫(yī)療費用 儲蓄費用 收入費用)n);scanf(dffff%ff%f,&ai。month,ai。foodxiaofei,&ai。fangzu,ai。zinvxiaofei,&ai.shuidianfei

42、,&ai。yiliaofei,ai。moneyin,&ai。yueshouru);printf(”信息添加成功!);void myprintf(PEL a)/打印指定月份數(shù)據(jù)函數(shù)int mon;printf(請輸入要查看的月份n”);scanf(”%d,&mon);int i=0; printf(n*n”);printf(n 本月月份 食品消費 房租費用 子女費用 水電費用 醫(yī)療費用 儲蓄費用 收費用入n”);for(i=0;iN;i+)if(ai。month=mon)printf(%4dt8。2f%8.2f%8。2f9。2f10。2f %9.2f%8。2fn”,ai.month,ai.foodxiaofei,ai。fangzu,ai。zinvxiaofei,ai。shuidianfei,ai.yiliaofei,ai。moneyin,ai。yueshouru);printf(*end*n”);void allprintf(

溫馨提示

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

評論

0/150

提交評論