版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、PAGE 課程設(shè)計(jì)說明書課程設(shè)計(jì)名稱: 軟件課程設(shè)計(jì) 課程設(shè)計(jì)題目: 個(gè)人賬簿管理系統(tǒng) 學(xué) 院 名 稱: 信息工程學(xué)院 專業(yè): 電子信息科學(xué)與技術(shù) 班級: 090431 學(xué)號(hào): 09043125 姓名: 邵林 評分: 教師: 廖遠(yuǎn) 20 12 年 6 月 29 日 軟件 課程設(shè)計(jì)任務(wù)書20112012學(xué)年第二學(xué)期 分散1周 第18周 20 周集中題目個(gè)人帳簿管理系統(tǒng)設(shè)計(jì)功能:個(gè)人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項(xiàng)開支情況,包括食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等.進(jìn)入系統(tǒng)后可以輸入和修改某月的收支情況,可以對每月的開支從小到大進(jìn)行排序,可以根據(jù)輸入的月份查詢每月的收支情況
2、。進(jìn)度安排1。 分散1周:布置任務(wù)、查閱資料、選擇方案 注意:學(xué)生的設(shè)計(jì)方案需經(jīng)指導(dǎo)老師檢查通過后方可進(jìn)實(shí)驗(yàn)室進(jìn)行制作。2。 第18周:軟件設(shè)計(jì)3。 第19周第20周:軟件編碼、調(diào)試、 驗(yàn)收及測試并上交報(bào)告學(xué)生姓名:邵林、劉舒林指導(dǎo)時(shí)間 分散1周,集中指導(dǎo):2011.6。116。29指導(dǎo)地點(diǎn) E505任務(wù)下達(dá)2012 年 6 月 4 日任務(wù)完成2012 年6 月 29 日考核方式1。評閱 2.答辯 3。實(shí)際操作 4.其它指導(dǎo)教師廖遠(yuǎn)系(部)主任萬在紅注:1、此表一組一表二份,課程設(shè)計(jì)小組組長一份;任課教師授課時(shí)自帶一份備查。課程設(shè)計(jì)結(jié)束后與“課程設(shè)計(jì)小結(jié)”、“學(xué)生成績單一并交院教務(wù)存檔摘 要針
3、對一些人對需要對自己的收入支出有一個(gè)詳細(xì)的記錄和了解,個(gè)人賬簿管理系統(tǒng)孕育而生。本系統(tǒng)主要是用C語言編寫,運(yùn)用結(jié)構(gòu)體數(shù)組,子函數(shù),同時(shí)通過函數(shù)指針數(shù)組實(shí)現(xiàn)函數(shù)的調(diào)用,本系統(tǒng)的功能包括按輸入、輸出、修改、查詢、刪除及按收入排序及按月份大小排序,通過文件操作保存數(shù)據(jù)和加載數(shù)據(jù)等.本系統(tǒng)設(shè)計(jì)人性化,適合于大部分家庭用戶對個(gè)人收支的管理,是生活更加便捷。關(guān)鍵詞: C語言,數(shù)據(jù)結(jié)構(gòu),個(gè)人賬簿管理目 錄 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個(gè)人賬簿管理 PAGEREF _Toc328509329 h 2 HYPERLINK l ”_Toc328509330 1。2解決個(gè)人賬簿管理 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)總體設(shè)計(jì) PAGEREF _Toc328509333 h 4 HYPERLINK l ”_Toc328509334” 2.1系統(tǒng)總體設(shè)計(jì)思路 PAGEREF _Toc328509334 h 4 HYPERLINK l _Toc328509335” 2.2各個(gè)功能模塊簡介 PAGEREF _Toc328509335 h 4 HYPERLINK l ”_Toc328509336 2.2。 1結(jié)構(gòu)體數(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ù)詳細(xì)設(shè)計(jì) PAGEREF _Toc328509342 h 9 HYPERLINK l _Toc328509343 3。1程序代碼實(shí)現(xiàn) PAGEREF _Toc328509343 h 9 HYPERLINK l _Toc328509344 3。1.1程序主界面 PAGEREF _Toc328509344 h 9 HYPERLINK l _Toc328509345” 3.2文件函數(shù)的實(shí)現(xiàn) PAGEREF _Toc328509345 h 10 HYPERLINK l ”_Toc328509346 3
8、.2打印數(shù)據(jù) PAGEREF _Toc328509346 h 11 HYPERLINK l ”_Toc328509347 第四章 測試數(shù)據(jù)與結(jié)果 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” 結(jié) 論 PAGEREF _Toc328509359 h 15 HYP
11、ERLINK l ”_Toc328509360 結(jié) 束 語 PAGEREF _Toc328509360 h 16 HYPERLINK l ”_Toc328509361” 參考文獻(xiàn) PAGEREF _Toc328509361 h 17 HYPERLINK l _Toc328509362” 程序分工 PAGEREF _Toc328509362 h 18 HYPERLINK l ”_Toc328509363 附錄 PAGEREF _Toc328509363 h 19 PAGE 10 前 言你是否還在回憶你上個(gè)月的收入是多少,支出是多少,都用到哪里去了?很多吧?是的,我們生活中有太多的收入支出,如子女
12、消費(fèi)、水電費(fèi)、房租、收入等等。我們需要用東西把他們都一一記錄下來。個(gè)人賬簿管理系統(tǒng)則可以滿足我們對這些方面的要求。本系統(tǒng)使用GCC(GNU Compiler Collection,GNUHYPERLINK ”http:/view/487018.htm編譯器套裝)開發(fā)工具來開發(fā)該應(yīng)用程序。采C語言為開發(fā)語言,通過一個(gè)結(jié)構(gòu)體數(shù)組記錄各種收入支出信息,運(yùn)用一些數(shù)據(jù)結(jié)構(gòu)和算法達(dá)到個(gè)人賬簿管理的各種功能.本設(shè)計(jì)報(bào)告詳細(xì)討論了該系統(tǒng)的開發(fā)、設(shè)計(jì)環(huán)境、實(shí)現(xiàn)算法及其具體的實(shí)現(xiàn)。個(gè)人賬簿管理系統(tǒng)是結(jié)合了文件、結(jié)構(gòu)體、函數(shù)等操作,運(yùn)用了數(shù)據(jù)結(jié)構(gòu)中最基本的一些算法,使程序簡單明了,本程序也采用了函數(shù)指針數(shù)組來實(shí)現(xiàn)函
13、數(shù)的調(diào)用,從而達(dá)到了不浪費(fèi)內(nèi)存的目的,同時(shí)也加快了程序的運(yùn)行速度.同時(shí)本系統(tǒng)界面人性化,易操作,能夠滿足大部分家庭的要求。 第一章 系統(tǒng)功能分析本程序可以實(shí)現(xiàn)個(gè)人賬簿的按月份插入、輸出、修改、查詢、刪除、按收入排序、按月份大小排序、將數(shù)據(jù)保存到文件和加載文件數(shù)據(jù)等功能,其中每一個(gè)功能,都分別使用了一個(gè)函數(shù),其中程序的主界面簡潔明了。可以按主界面的提示完成每一塊功能.1.1個(gè)人賬簿管理在程序中定義了一個(gè)結(jié)構(gòu)體主要包括(月份,全部的收入,食品開支,房租,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄,子女教育費(fèi)和總體的支出費(fèi)用)其次定義了10個(gè)函數(shù),分別是輸入信息,查看指定月份信息,查看全部月份信息,插入信息,修改信息,刪
14、除指定月份信息,按月份大小排序,按總收入排序,保存數(shù)據(jù)到文件和加載文件數(shù)據(jù)。其中每一個(gè)程序都能實(shí)現(xiàn)相應(yīng)部分的功能,并且使用了結(jié)構(gòu)體數(shù)組的操作,通過對結(jié)構(gòu)體數(shù)組的操作和文件的操作完成各自對應(yīng)的功能.1.2解決個(gè)人賬簿管理1.2。1 概要分析個(gè)人賬簿管理通過以下函數(shù)實(shí)現(xiàn):Input(PEL *a); /輸入個(gè)人收支信息函數(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); /加載文件的信息到結(jié)構(gòu)體數(shù)組函數(shù) 這十個(gè)函數(shù)分別完成每一部分功能 ,其中都是與主函數(shù)調(diào)用相對應(yīng)的函數(shù),完成相應(yīng)的功能.1.2。2 流程圖 第二章 系統(tǒng)總體設(shè)計(jì)2。1系統(tǒng)總體設(shè)計(jì)思路個(gè)人賬簿管理系統(tǒng)可以通過創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組,通過輸入信息函數(shù),查看指定月份信息函數(shù),查看全部月份信函數(shù)息,插入信息函數(shù),修改信息函數(shù),刪除指定月份信息函數(shù),按月份大小排序函數(shù),按總收入排序函數(shù),保存數(shù)據(jù)到文件函
16、數(shù)和加載文件數(shù)據(jù)函數(shù)對結(jié)構(gòu)體數(shù)組操作來完成系統(tǒng)的主要功能,其中每一個(gè)功能都為對應(yīng)的一個(gè)函數(shù),增加程序的可讀性,以實(shí)現(xiàn)程序的整體功能。2.2各個(gè)功能模塊簡介2。2。 1結(jié)構(gòu)體數(shù)組首先創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組,以便將各種收支信息存入到結(jié)構(gòu)體數(shù)組。typedef struct personalint month; /月份float foodxiaofei; /食品消費(fèi)float fangzu; /房租float zinvxiaofei; /子女教育消費(fèi)float shuidianfei; /水電費(fèi)float yiliaofei; /醫(yī)療費(fèi)float moneyin; /儲(chǔ)蓄float yueshouru;
17、 /月收入PEL;PEL aN;2。2. 2各種收支信息輸入函數(shù)的創(chuàng)建 輸入函數(shù)的主要功能是將個(gè)人收支信息寫入到結(jié)構(gòu)體數(shù)組。函數(shù)通過修改結(jié)構(gòu)體數(shù)組指針來完成數(shù)據(jù)的寫入。函數(shù)首先選擇需要寫入幾個(gè)月的收支信息,通過for循環(huán)按照提示一次將數(shù)據(jù)寫入,for循環(huán)的結(jié)束條件是月份個(gè)數(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為需要寫入的月份個(gè)數(shù)2。
18、2. 3收支排序函數(shù)的創(chuàng)建 收支排序函數(shù)的主要功能是將收支信息按照一定的順序排列。為使設(shè)計(jì)更加人性化,排序可以分為按月份大小排序和按總收入排序。對結(jié)構(gòu)體數(shù)組成員的排序可以使用冒泡排序快速實(shí)現(xiàn)。冒泡排序的基本思想是:兩兩比較待排序記錄的關(guān)鍵字,發(fā)現(xiàn)兩個(gè)記錄的次序相反時(shí)即進(jìn)行交換,直到?jīng)]有反序的記錄為止。 按月份大小排序可以比較每個(gè)結(jié)構(gòu)體數(shù)組成員ai。month的大小,通過for循環(huán)將整個(gè)結(jié)構(gòu)體數(shù)組進(jìn)行交換。按總收入排序則是比較ai.yueshouru的大小.通過判斷可以取得有效月份的個(gè)數(shù)k,在通過循環(huán)的兩次嵌套,外層循環(huán)控制下一次比較的次數(shù),內(nèi)循環(huán)循環(huán)次數(shù)受外循環(huán)控制次數(shù)影響。冒泡排序詳細(xì)設(shè)計(jì)如
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ù)的功能是實(shí)現(xiàn)對指定收支信息修改,通過增刪改函數(shù)我們可以更加靈活的處理個(gè)人收支信息。增刪改函數(shù)函數(shù)可以通過修改結(jié)構(gòu)體數(shù)組指針來實(shí)現(xiàn).添加指定月份收支信息,我們可以在原有收支信息后面添加,即在已經(jīng)創(chuàng)建的結(jié)構(gòu)體數(shù)組里面添加數(shù)據(jù)。先通過判斷語句找到函數(shù)有效的月份個(gè)數(shù)k,再在結(jié)構(gòu)體數(shù)組ak+1處依次添加所需要的信息.主要設(shè)計(jì)如下: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為所需要添加月份的個(gè)數(shù) 刪除收支數(shù)據(jù)信息函數(shù)的創(chuàng)建可以對結(jié)構(gòu)體數(shù)組元素進(jìn)行移位來實(shí)現(xiàn).通過判斷語句找到指定月份的位置k,將指定月份后的數(shù)據(jù)全部往前移動(dòng)一位,即ak=ak+i。依次移動(dòng)直到結(jié)束。注意移動(dòng)時(shí)不能超出數(shù)組的下標(biāo)。主要設(shè)計(jì)代碼如下:for(i=0;iN;i+)if(ai。month=mon)k=i;for(i=k;iN-1
21、;i+)ai=ai+1;修改收支信息函數(shù)的創(chuàng)建比較簡單。只需要通過一個(gè)判斷語句找到指定月份的位置。重新輸入數(shù)據(jù)替換原有數(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)建通過文件的操作能實(shí)現(xiàn)將個(gè)人收支信息保存到文件備份,以防系統(tǒng)出現(xiàn)問題后無法找到這些信息.同時(shí)也可
22、以快速的加載文件的數(shù)據(jù)實(shí)現(xiàn)系統(tǒng)設(shè)置的各種操作。收支數(shù)據(jù)信息寫入函數(shù)的創(chuàng)建,先創(chuàng)建一個(gè)文件類型指針。以“wb”方式創(chuàng)建一個(gè)名為“mybill。txt”的文件。通過fprintf函數(shù)將結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)信息依次寫入數(shù)據(jù)流中指定的文件中。主要設(shè)計(jì)代碼如下:for(i=0;iN;i+) /N初始化為12個(gè)月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ù)流指向的文件中讀取到結(jié)構(gòu)體數(shù)組中去。主要設(shè)計(jì)代碼如下: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ù)的主要功能是將結(jié)構(gòu)體中的數(shù)據(jù)按要求顯示給用戶.為了
24、使設(shè)計(jì)更加人性化,顯示信息分為顯示指定月份的收支數(shù)據(jù)信息和全部月份的收支數(shù)據(jù)信息。 顯示指定月份的收支數(shù)據(jù)信息函數(shù)可以通過一條判斷語句找到指定月份所處的位置,將此處結(jié)構(gòu)體數(shù)組的信息打印出來即可。主要設(shè)計(jì)代碼如下: 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ù)組遍歷一邊即可。主要設(shè)計(jì)代碼如下:for(i=0;iN;i+)/初始化函數(shù)為0,以0為標(biāo)志顯示有效月份的收支信息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ù)詳細(xì)設(shè)計(jì)3。1程序代碼實(shí)現(xiàn)3.1.1程序主界面各個(gè)子函數(shù)的調(diào)用可以使用函數(shù)指
26、針數(shù)組來實(shí)現(xiàn),通過指定的下標(biāo)可以調(diào)用指定函數(shù).函數(shù)指針數(shù)組的每個(gè)元素是每個(gè)子函數(shù)名。主函數(shù)的界面可以通過printf函數(shù)來顯示。主要設(shè)計(jì)代碼如下:printf(tttt個(gè)人帳簿管理系統(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ù)的提示我們進(jìn)行選擇需要的操作.選擇我們可以定義一個(gè)int類型chose,chose是多少我們就選擇了那個(gè)操作。 定義一個(gè)函數(shù)指針數(shù)組,將我們的每個(gè)函數(shù)的首地址(即函數(shù)名)存放到數(shù)組中,chose對應(yīng)數(shù)組的下標(biāo),這樣我們即可實(shí)現(xiàn)函數(shù)的調(diào)用。主要設(shè)計(jì)代碼如下:void(*fun11)(PELa)=out,input,myprintf,allprintf,add,modify,delrecord,yuepaixu,zongpaixu,save,load;funch
28、ose(a);3。2文件函數(shù)的實(shí)現(xiàn)文件函數(shù)包括數(shù)據(jù)保存到文件函數(shù)和加載文件中的數(shù)據(jù)函數(shù)。保存到文件函數(shù)可以通過for循環(huán)按照一定的格式將結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)保存到文件。而加載文件數(shù)據(jù)函數(shù)則相反,通過for循環(huán)將數(shù)據(jù)加載到結(jié)構(gòu)體數(shù)組。收支數(shù)據(jù)信息保存到文件函數(shù)可以將結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)保存到文件。此子函數(shù)的形參為結(jié)構(gòu)體類型數(shù)組,通過指針我們可以將收支數(shù)據(jù)信息依次寫入到文件。文件操作必須先創(chuàng)建一個(gè)文件指針,我們可定義它為FILE p,運(yùn)用fopen函數(shù)以“wb”的格式創(chuàng)建我們需要的文件“mybill。txt,通過fprintf函數(shù)將結(jié)構(gòu)體數(shù)組中的數(shù)據(jù)依次寫入到數(shù)據(jù)流指向的fp中??刂苀printf中的
29、格式可以使數(shù)據(jù)在文件中有序的顯示出來.主要設(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í)際上是寫函數(shù)的逆過程.同樣定義一個(gè)FILE *fp,以“rb”的方式打開我們已經(jīng)創(chuàng)建的文件“mybill.txt” ,運(yùn)用fscanf讀取數(shù)據(jù)流指向的
30、文件fp中的數(shù)據(jù)。這樣我們就可以將文件中的數(shù)據(jù)寫入到結(jié)構(gòu)體數(shù)組中。主要設(shè)計(jì)代碼如下: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ù)可以通過對結(jié)構(gòu)體數(shù)組的遍歷,查看是否有與之對應(yīng)的月份數(shù)據(jù),如果找到這打印數(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)遍歷結(jié)構(gòu)體數(shù)組知道遇到0(初始化結(jié)構(gòu)體數(shù)組為0)結(jié)束,這樣可以加快運(yùn)行速率。具體設(shè)計(jì)代碼如下: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ù)與結(jié)果4.1主函數(shù)界面測試函數(shù)操作分為十個(gè)部分,按照提示可實(shí)現(xiàn)對應(yīng)的功能。4.2輸入函數(shù)測試依照提示數(shù)幾個(gè)月的消費(fèi)信息。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ù)信息測試按操作提示可以對所以月份收支信息加載到結(jié)構(gòu)體數(shù)組.結(jié) 論 個(gè)人賬簿管理系統(tǒng)主要實(shí)現(xiàn)了對個(gè)人收支信息的增刪改和保存,使我們的生活更加便捷.同時(shí)通過這次軟件課程設(shè)計(jì)使我了解到了 :寫一個(gè)程序首先要有算法,而算法有很多種,使用最優(yōu)的算法,能節(jié)約很多時(shí)間和加快系
34、統(tǒng)的速度.在這個(gè)程序中,主要還是利用了C語言中數(shù)組和文件的操作,其中最主要的就是結(jié)構(gòu)體數(shù)組的讀寫,還有查找、修改及刪除數(shù)組中的數(shù)據(jù)。刪除數(shù)據(jù)記得一定不能越界。文件操作還是比較復(fù)雜的,首先要?jiǎng)?chuàng)建一個(gè)文件指針,通過函數(shù)按一定的格式將數(shù)據(jù)信息讀取或者寫入.在結(jié)構(gòu)體的操作用,不能直接給結(jié)構(gòu)體變量賦值。這個(gè)程序的界面編的雖然不怎么好看,但基本賬簿管理的功能都達(dá)到了。但是還有許多地方需要改進(jìn)。 PAGE 13結(jié) 束 語在這次課程設(shè)計(jì)中,我學(xué)習(xí)到了,不管做什么事情還是團(tuán)隊(duì)協(xié)作,才可以使一件事情辦得最后,一個(gè)人的力量永遠(yuǎn)是有限的,不管一個(gè)人的能力有多大,總會(huì)有一些地方的不足,尤其是我們編程這一行,最主要的還是
35、要團(tuán)隊(duì)合作.其次就是寫程序時(shí)要用到注釋,因?yàn)橐粋€(gè)程序是由幾個(gè)人寫出來的,假如不寫注釋的話,就相互都看不懂,也不能實(shí)現(xiàn)程序的結(jié)合,所以說寫程序時(shí)注釋很重要.最后,我覺得不管做什么事情必須認(rèn)認(rèn)真真的做,要沉得下心來,尤其是寫程序,假如沉不下心來做的話,也決對寫不出一個(gè)好的程序或者實(shí)用的程序來。 PAGE 14參考文獻(xiàn)1 譚浩強(qiáng)著C語言程序設(shè)計(jì)(第三版)M清華大學(xué)出版社.2008。2 Kenneth A. Reek .C與指針(第二版)M. 北京:人民郵電出版社,2008。3 鄭阿奇Visual C+實(shí)用教程(第三版)M電子工業(yè)出版社.2007.PAGE 15 PAGE 19程序分工姓名任務(wù)分配邵林
36、打印函數(shù),文件函數(shù),主函數(shù)劉舒林?jǐn)?shù)據(jù)輸入函數(shù),增刪改函數(shù)附錄 程序代碼:/個(gè)人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項(xiàng)開支情況,包括食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等。進(jìn)入系統(tǒng)后可以輸入和修改某月的收支情況,可以對每月的開支從小到大進(jìn)行排序,可以根據(jù)輸入的月份查詢每月的收支情況。*/*要求:根據(jù)以上任務(wù)說明,設(shè)計(jì)數(shù)據(jù)結(jié)構(gòu),并設(shè)計(jì)程序完成功能。*/includestdio.hincludeincludedefine N 12typedef struct personalint month; /月份float foodxiaofei; /食品消費(fèi)float fangzu; /房租
37、float zinvxiaofei; /子女教育消費(fèi)float shuidianfei; /水電費(fèi)float yiliaofei; /醫(yī)療費(fèi)float moneyin; /儲(chǔ)蓄float yueshouru; /月收入PEL;void input(PEL a) /輸入月消費(fèi)int n,i;printf(確定要輸入幾個(gè)月的賬單:);scanf(d,n);if(n0&n13)printf(”n請依次輸入數(shù)據(jù)說明:中間以空格符隔開:n);printf(本月月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲(chǔ)蓄費(fèi)用 收入費(fèi)用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(本月月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲(chǔ)蓄費(fèi)用 收入費(fèi)用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(”確定要輸入增加幾個(gè)個(gè)月的賬單:);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(”本月月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲(chǔ)蓄費(fèi)用 收入費(fèi)用)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 本月月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲(chǔ)蓄費(fèi)用 收費(fèi)用入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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 房屋出售代理人合同(2篇)
- 2024音響設(shè)備展會(huì)展覽策劃及組織服務(wù)合同3篇
- 2024石材加工廠安全生產(chǎn)與風(fēng)險(xiǎn)管理的合同范本
- 二零二五版農(nóng)產(chǎn)品市場調(diào)研與營銷策劃合同4篇
- 2025年度婚紗攝影情侶寫真拍攝服務(wù)合同2篇
- 2025年版智慧社區(qū)門衛(wèi)及智能安防系統(tǒng)運(yùn)營合同4篇
- 二零二五年度面粉質(zhì)量檢測與認(rèn)證合同4篇
- 二零二五年度土地租賃抵押借款合同范本
- 2025年度土地儲(chǔ)備開發(fā)合同范本3篇
- 2025版新能源行業(yè)農(nóng)民工勞動(dòng)合同示范文本3篇
- SYT 6968-2021 油氣輸送管道工程水平定向鉆穿越設(shè)計(jì)規(guī)范-PDF解密
- 冷庫制冷負(fù)荷計(jì)算表
- 肩袖損傷護(hù)理查房
- 設(shè)備運(yùn)維管理安全規(guī)范標(biāo)準(zhǔn)
- 辦文辦會(huì)辦事實(shí)務(wù)課件
- 大學(xué)宿舍人際關(guān)系
- 2023光明小升初(語文)試卷
- GB/T 14600-2009電子工業(yè)用氣體氧化亞氮
- 申請使用物業(yè)專項(xiàng)維修資金征求業(yè)主意見表
- 房屋買賣合同簡單范本 房屋買賣合同簡易范本
- 無抽搐電休克治療規(guī)范
評論
0/150
提交評論