學(xué)生個(gè)人收支管理系統(tǒng)_第1頁(yè)
學(xué)生個(gè)人收支管理系統(tǒng)_第2頁(yè)
學(xué)生個(gè)人收支管理系統(tǒng)_第3頁(yè)
學(xué)生個(gè)人收支管理系統(tǒng)_第4頁(yè)
學(xué)生個(gè)人收支管理系統(tǒng)_第5頁(yè)
已閱讀5頁(yè),還剩21頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

目錄前言 1第一章系統(tǒng)功能分析 21.1學(xué)生個(gè)人收支管理 21.2解決個(gè)人收支管理 21.2.1概要分析 21.2.2流程圖 4第二章系統(tǒng)總體設(shè)計(jì) 52.1系統(tǒng)總體設(shè)計(jì)思路 52.2各個(gè)功能模塊簡(jiǎn)介 52.2.1結(jié)構(gòu)體數(shù)組 52.2.2各種收支信息輸入函數(shù)的創(chuàng)建 52.2.3按月排序,按總收入函數(shù)的創(chuàng)建 62.2.4增刪改某月函數(shù)的創(chuàng)建 72.2.5計(jì)算某月總支出函數(shù)的創(chuàng)建 82.2.6顯示指定月份和全部月份函數(shù)的創(chuàng)建 82.2.7按總支出排序函數(shù)的創(chuàng)建 9第三章顯示全月函數(shù)和主函數(shù)詳細(xì)設(shè)計(jì) 113.1程序代碼實(shí)現(xiàn) 113.1.1程序主界面 113.2顯示全月函數(shù) 12第四章測(cè)試數(shù)據(jù)與結(jié)果 144.1主函數(shù)界面測(cè)試 144.2輸入函數(shù)測(cè)試 144.3查找指定月份數(shù)據(jù)測(cè)試 144.4查看所有月份數(shù)據(jù)測(cè)試 154.5添加數(shù)據(jù)信息測(cè)試 154.6修改原有信息測(cè)試 154.7刪除指定的信息測(cè)試 154.8按月份大小排序測(cè)試 164.9按總收入排序測(cè)試 164.10計(jì)算某個(gè)月總收入 164.11按總支出排序 16結(jié)論 17附錄 18PAGE13前言你是否還在回憶你上個(gè)月的收入是多少,支出是多少,都用到哪里去了?很多吧?是的,我們生活中有太多的收入支出,,包括收入,伙食消費(fèi),日常用品費(fèi)用,水電費(fèi),醫(yī)療費(fèi),娛樂(lè)等。我們需要用東西把他們都一一記錄下來(lái)。學(xué)生個(gè)人收支管理系統(tǒng)則可以滿足我們對(duì)這些方面的要求。個(gè)人賬簿管理系統(tǒng)是結(jié)合了文件、結(jié)構(gòu)體、函數(shù)等操作,運(yùn)用了數(shù)據(jù)結(jié)構(gòu)中最基本的一些算法,使程序簡(jiǎn)單明了,本程序也采用了函數(shù)指針數(shù)組來(lái)實(shí)現(xiàn)函數(shù)的調(diào)用,從而達(dá)到了不浪費(fèi)內(nèi)存的目的,同時(shí)也加快了程序的運(yùn)行速度。同時(shí)本系統(tǒng)界面人性化,易操作,能夠滿足大部分同學(xué)的要求。第一章系統(tǒng)功能分析本程序可以實(shí)現(xiàn)個(gè)人賬簿的按月份插入、輸出、修改、查詢、刪除、按收入排序、按月份大小排序、計(jì)算某個(gè)月消費(fèi)總支出、按消費(fèi)總支出排序,其中每一個(gè)功能,都分別使用了一個(gè)函數(shù),其中程序的主界面簡(jiǎn)潔明了??梢园粗鹘缑娴奶崾就瓿擅恳粔K功能。1.1學(xué)生個(gè)人收支管理在程序中定義了一個(gè)結(jié)構(gòu)體主要包括(月份,伙食消費(fèi)日常用品費(fèi)用住宿費(fèi)水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用收入費(fèi)用總支出)其次定義了10個(gè)函數(shù),分別是輸入信息,查看指定月份信息,查看全部月份信息,插入信息,修改信息,刪除指定月份信息,按月份大小排序,按總收入排序,計(jì)算總支出,按總支出排序。其中每一個(gè)程序都能實(shí)現(xiàn)相應(yīng)部分的功能,并且使用了結(jié)構(gòu)體數(shù)組的操作,通過(guò)對(duì)結(jié)構(gòu)體數(shù)組的操作和文件的操作完成各自對(duì)應(yīng)的功能。1.2解決個(gè)人收支管理1.2.1概要分析學(xué)生個(gè)人收支管理通過(guò)以下函數(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);//刪除指定月份收支信息函數(shù)Yuepaixu(PEL*a);//按月份大小排序函數(shù)Zongpaixu(PEL*a);//按總收入排序函數(shù)voidzongzhichu(PEL*a)//消費(fèi)總支出voidzongzhichupaixu(PEL*a)//消費(fèi)總排序這十個(gè)函數(shù)分別完成每一部分功能,其中都是與主函數(shù)調(diào)用相對(duì)應(yīng)的函數(shù),完成相應(yīng)的功能。1.2.2流程圖選擇是否正確操作提示開(kāi)始選擇是否正確操作提示開(kāi)始 N Y 退出系統(tǒng)按總消費(fèi)排序某月總消費(fèi)按總收入排序按月份排序刪除數(shù)據(jù)修改數(shù)據(jù)添加數(shù)據(jù)輸出全部數(shù)據(jù)輸出指定月份輸入函數(shù)退出系統(tǒng)按總消費(fèi)排序某月總消費(fèi)按總收入排序按月份排序刪除數(shù)據(jù)修改數(shù)據(jù)添加數(shù)據(jù)輸出全部數(shù)據(jù)輸出指定月份輸入函數(shù)選擇是否正確選擇是否正確 N Y結(jié)束 結(jié)束第二章系統(tǒng)總體設(shè)計(jì)2.1系統(tǒng)總體設(shè)計(jì)思路個(gè)人收支管理系統(tǒng)可以通過(guò)創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組,通過(guò)輸入信息函數(shù),查看指定月份信息函數(shù),查看全部月份信函數(shù)息,插入信息函數(shù),修改信息函數(shù),刪除指定月份信息函數(shù),按月份大小排序函數(shù),按總收入排序函數(shù),計(jì)算總支出和按總支出排序函數(shù)對(duì)結(jié)構(gòu)體數(shù)組操作來(lái)完成系統(tǒng)的主要功能,其中每一個(gè)功能都為對(duì)應(yīng)的一個(gè)函數(shù),增加程序的可讀性,以實(shí)現(xiàn)程序的整體功能。2.2各個(gè)功能模塊簡(jiǎn)介2.2.1結(jié)構(gòu)體數(shù)組首先創(chuàng)建一個(gè)結(jié)構(gòu)體數(shù)組,以便將各種收支信息存入到結(jié)構(gòu)體數(shù)組。typedefstructpersonal{ intmonth;//月份 floatfoodxiaofei;//伙食消費(fèi) floatfangzu;//住宿費(fèi) floatrichangxiaofei;//日常用品費(fèi)用 floatshuidianfei;//水電費(fèi) floatyiliaofei;//醫(yī)療費(fèi) floatmoneyin;//儲(chǔ)蓄 floatyueshouru;//月收入 floatzongzhichu;//總支出}PEL;PELa[N];2.2.2各種收支信息輸入函數(shù)的創(chuàng)建輸入函數(shù)的主要功能是將個(gè)人收支信息寫入到結(jié)構(gòu)體數(shù)組。函數(shù)通過(guò)修改結(jié)構(gòu)體數(shù)組指針來(lái)完成數(shù)據(jù)的寫入。函數(shù)首先選擇需要寫入幾個(gè)月的收支信息,通過(guò)for循環(huán)按照提示一次將數(shù)據(jù)寫入,for循環(huán)的結(jié)束條件是月份個(gè)數(shù)。主要代碼如下:for(i=0;i<n;i++){ scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].fangzu,&a[i].zinvxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].moneyin,&a[i].yueshouru);}//n為需要寫入的月份個(gè)數(shù)2.2.3按月排序,按總收入函數(shù)的創(chuàng)建收支排序函數(shù)的主要功能是將收支信息按照一定的順序排列。為使設(shè)計(jì)更加人性化,排序可以分為按月份大小排序和按總收入排序。對(duì)結(jié)構(gòu)體數(shù)組成員的排序可以使用冒泡排序快速實(shí)現(xiàn)。冒泡排序的基本思想是:兩兩比較待排序記錄的關(guān)鍵字,發(fā)現(xiàn)兩個(gè)記錄的次序相反時(shí)即進(jìn)行交換,直到?jīng)]有反序的記錄為止。按月份大小排序可以比較每個(gè)結(jié)構(gòu)體數(shù)組成員a[i].month的大小,通過(guò)for循環(huán)將整個(gè)結(jié)構(gòu)體數(shù)組進(jìn)行交換。按總收入排序則是比較a[i].yueshouru的大小.通過(guò)判斷可以取得有效月份的個(gè)數(shù)k,在通過(guò)循環(huán)的兩次嵌套,外層循環(huán)控制下一次比較的次數(shù),內(nèi)循環(huán)循環(huán)次數(shù)受外循環(huán)控制次數(shù)影響。冒泡排序詳細(xì)設(shè)計(jì)如下:for(i=0;i<k;i++){ for(j=0;j<k-i;j++){ if(a[j].month>=a[j+1].month){ tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } }2.2.4增刪改某月函數(shù)的創(chuàng)建增刪改函數(shù)的功能是實(shí)現(xiàn)對(duì)指定收支信息修改,通過(guò)增刪改函數(shù)我們可以更加靈活的處理個(gè)人收支信息。增刪改函數(shù)函數(shù)可以通過(guò)修改結(jié)構(gòu)體數(shù)組指針來(lái)實(shí)現(xiàn)。添加指定月份收支信息,我們可以在原有收支信息后面添加,即在已經(jīng)創(chuàng)建的結(jié)構(gòu)體數(shù)組里面添加數(shù)據(jù)。先通過(guò)判斷語(yǔ)句找到函數(shù)有效的月份個(gè)數(shù)k,再在結(jié)構(gòu)體數(shù)組a[k+1]處依次添加所需要的信息。主要設(shè)計(jì)如下:for(i=0;i<N;i++){ if(a[i].month!=0) k++; } for(i=k;i<n+k;i++){ scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].fangzu,&a[i].zinvxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].moneyin,&a[i].yueshouru); }//n為所需要添加月份的個(gè)數(shù) 刪除收支數(shù)據(jù)信息函數(shù)的創(chuàng)建可以對(duì)結(jié)構(gòu)體數(shù)組元素進(jìn)行移位來(lái)實(shí)現(xiàn)。通過(guò)判斷語(yǔ)句找到指定月份的位置k,將指定月份后的數(shù)據(jù)全部往前移動(dòng)一位,即a[k]=a[k+i]。依次移動(dòng)直到結(jié)束。注意移動(dòng)時(shí)不能超出數(shù)組的下標(biāo)。主要設(shè)計(jì)代碼如下:for(i=0;i<N;i++){ if(a[i].month==mon) k=i; } for(i=k;i<N-1;i++) a[i]=a[i+1];修改收支信息函數(shù)的創(chuàng)建比較簡(jiǎn)單。只需要通過(guò)一個(gè)判斷語(yǔ)句找到指定月份的位置。重新輸入數(shù)據(jù)替換原有數(shù)據(jù)即可。主要設(shè)計(jì)代碼如下:for(i=0;i<N;i++){ if(a[i].month==mon) scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].fangzu,&a[i].zinvxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].moneyin,&a[i].yueshouru);2.2.5計(jì)算某月總支出函數(shù)的創(chuàng)建計(jì)算總支出函數(shù)的主要功能是將結(jié)構(gòu)體中某個(gè)月的消費(fèi)總和計(jì)算出來(lái),顯示給用戶。主要代碼如下:intmon; floatsum=0;a[i].zongzhichu=0.0; printf("請(qǐng)輸入要計(jì)算總支出的月份:"); scanf("%d",&mon);for(i=0;i<N;i++) { if(a[i].month==mon) sum=a[i].foodxiaofei+a[i].fangzu+a[i].richangxiaofei+a[i].shuidianfei+a[i].yiliaofei+a[i].moneyin; } printf("%f",sum); a[i].zongzhichu=sum;2.2.6顯示指定月份和全部月份函數(shù)的創(chuàng)建收支數(shù)據(jù)信息打印函數(shù)的主要功能是將結(jié)構(gòu)體中的數(shù)據(jù)按要求顯示給用戶。為了使設(shè)計(jì)更加人性化,顯示信息分為顯示指定月份的收支數(shù)據(jù)信息和全部月份的收支數(shù)據(jù)信息。顯示指定月份的收支數(shù)據(jù)信息函數(shù)可以通過(guò)一條判斷語(yǔ)句找到指定月份所處的位置,將此處結(jié)構(gòu)體數(shù)組的信息打印出來(lái)即可。主要設(shè)計(jì)代碼如下:for(i=0;i<N;i++){//mon為需要打印的月份 if(a[i].month==mon) printf("%4d\t%8.2f%8.2f%8.2f%9.2f%10.2f%9.2f%8.2f\n",a[i].month,a[i].foodxiaofei,a[i].fangzu,a[i].zinvxiaofei,a[i].shuidianfei,a[i].yiliaofei,a[i].moneyin,a[i].yueshouru);}顯示全部月份的收支數(shù)據(jù)信息函數(shù)只需通過(guò)for循環(huán)將數(shù)組遍歷一邊即可。主要設(shè)計(jì)代碼如下:for(i=0;i<N;i++){//初始化函數(shù)為0,以0為標(biāo)志顯示有效月份的收支信息 if(a[i].month!=0) printf("%4d\t%8.2f%8.2f%8.2f%9.2f%10.2f%9.2f%8.2f\n",a[i].month,a[i].foodxiaofei,a[i].fangzu,a[i].zinvxiaofei,a[i].shuidianfei,a[i].yiliaofei,a[i].moneyin,a[i].yueshouru);}2.2.7按總支出排序函數(shù)的創(chuàng)建按總支出排序則是比較a[i].zongzhichu的大小.通過(guò)判斷可以取得有效月份的個(gè)數(shù)k,在通過(guò)循環(huán)的兩次嵌套,外層循環(huán)控制下一次比較的次數(shù),內(nèi)循環(huán)循環(huán)次數(shù)受外循環(huán)控制次數(shù)影響。冒泡排序詳細(xì)設(shè)計(jì)如下:inti,j,k=0; for(i=0;i<N;i++){ if(a[i].month!=0) k++; } printf("\n"); for(i=0;i<k;i++){ for(j=0;j<k;j++){ if(a[j].zongzhichu>=a[j+1].zongzhichu) { tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } } printf("按每月總消費(fèi)排序成功!\n");}第三章顯示全月函數(shù)和主函數(shù)詳細(xì)設(shè)計(jì)3.1程序代碼實(shí)現(xiàn)3.1.1程序主界面各個(gè)子函數(shù)的調(diào)用可以使用函數(shù)指針數(shù)組來(lái)實(shí)現(xiàn),通過(guò)指定的下標(biāo)可以調(diào)用指定函數(shù)。函數(shù)指針數(shù)組的每個(gè)元素是每個(gè)子函數(shù)名。主函數(shù)的界面可以通過(guò)printf函數(shù)來(lái)顯示。主要設(shè)計(jì)代碼如下:printf("\t\t\t\t學(xué)生收支管理系統(tǒng)\n"); printf("\t\t\n"); printf("\t\t0:退出系統(tǒng)\n"); printf("\t\t1:輸入數(shù)據(jù)\n"); printf("\t\t2:查找指定月份數(shù)據(jù)\n"); printf("\t\t3:查看全部數(shù)據(jù)\n"); printf("\t\t4:添加數(shù)據(jù)\n"); printf("\t\t5:修改數(shù)據(jù)\n"); printf("\t\t6:刪除數(shù)據(jù)\n"); printf("\t\t7:按月份大小排序\n"); printf("\t\t8:按總收入排序\n"); printf("\t\t9:計(jì)算某月總支出\n"); printf("\t\t10按總支出排序\n"); printf("\t\t\n");按主函數(shù)的提示我們進(jìn)行選擇需要的操作。選擇我們可以定義一個(gè)int類型chose,chose是多少我們就選擇了那個(gè)操作。定義一個(gè)函數(shù)指針數(shù)組,將我們的每個(gè)函數(shù)的首地址(即函數(shù)名)存放到數(shù)組中,chose對(duì)應(yīng)數(shù)組的下標(biāo),這樣我們即可實(shí)現(xiàn)函數(shù)的調(diào)用。主要設(shè)計(jì)代碼如下: void(*fun[11])(PEL*a)={out,input,myprintf,allprintf,add,modify,delrecord,yuepaixu,zongpaixu,zongzhichu,zongzhichupaixu}; fun[chose](a); 3.2顯示全月函數(shù)顯示函數(shù)數(shù)據(jù)可以分為打印指定月份的數(shù)據(jù)和打印所以月份的數(shù)據(jù)。顯示指定月份數(shù)據(jù)函數(shù)可以通過(guò)對(duì)結(jié)構(gòu)體數(shù)組的遍歷,查看是否有與之對(duì)應(yīng)的月份數(shù)據(jù),如果找到這打印數(shù)據(jù),沒(méi)找到顯示提示信息。主要設(shè)計(jì)代碼如下: for(i=0;i<N;i++){//mon為需要打印的月份 if(a[i].month==mon) printf("%4d\t%8.2f%8.2f%8.2f%9.2f%10.2f%9.2f%8.2f\n",a[i].month,a[i].foodxiaofei,a[i].fangzu,a[i].zinvxiaofei,a[i].shuidianfei,a[i].yiliaofei,a[i].moneyin,a[i].yueshouru); }輸出全部月份數(shù)據(jù)可以通過(guò)for循環(huán)遍歷結(jié)構(gòu)體數(shù)組知道遇到0(初始化結(jié)構(gòu)體數(shù)組為0)結(jié)束,這樣可以加快運(yùn)行速率。具體設(shè)計(jì)代碼如下: for(i=0;i<N;i++){ if(a[i].month!=0){ printf("%4d\t%8.2f%8.2f%8.2f%9.2f%10.2f%9.2f%8.2f\n",a[i].month,a[i].foodxiaofei,a[i].fangzu,a[i].zinvxiaofei,a[i].shuidianfei,a[i].yiliaofei,a[i].moneyin,a[i].yueshouru); }}PAGE17第四章測(cè)試數(shù)據(jù)與結(jié)果4.1主函數(shù)界面測(cè)試函數(shù)操作分為十個(gè)部分,按照提示可實(shí)現(xiàn)對(duì)應(yīng)的功能。4.2輸入函數(shù)測(cè)試依照提示數(shù)幾個(gè)月的消費(fèi)信息。4.3查找指定月份數(shù)據(jù)測(cè)試按操作提示可以查找指定月份的數(shù)據(jù)。4.4查看所有月份數(shù)據(jù)測(cè)試按提示可以查看所有月份的收支信息:4.5添加數(shù)據(jù)信息測(cè)試按提示可以添加指定月份的收支信息。4.6修改原有信息測(cè)試按提示可以修改指定月份的收支信息。4.7刪除指定的信息測(cè)試按提示操作可以刪除指定月份的收支信息。4.8按月份大小排序測(cè)試按操作提示可以對(duì)所以月份收支信息按月份從小到大排序。4.9按總收入排序測(cè)試按操作提示可以對(duì)所以月份收支信息按月份從小到大排序。4.10計(jì)算某個(gè)月總收入按操作提示可以對(duì)所以月份收支信息計(jì)算總收入4.11按總支出排序按操作提示可以對(duì)所以月份收支信息按總支出排序。結(jié)論學(xué)生個(gè)人收支管理系統(tǒng)主要實(shí)現(xiàn)了對(duì)個(gè)人收支信息的增刪改和保存,使我們的生活更加便捷。同時(shí)通過(guò)這次軟件課程設(shè)計(jì)使我了解到了:寫一個(gè)程序首先要有算法,而算法有很多種,使用最優(yōu)的算法,能節(jié)約很多時(shí)間和加快系統(tǒng)的速度。在這個(gè)程序中,主要還是利用了C語(yǔ)言中數(shù)組和函數(shù)調(diào)用的操作,其中最主要的就是結(jié)構(gòu)體數(shù)組的讀寫,還有查找、修改及刪除數(shù)組中的數(shù)據(jù)。刪除數(shù)據(jù)記得一定不能越界。排序消費(fèi)總和、收支。在結(jié)構(gòu)體的操作用,不能直接給結(jié)構(gòu)體變量賦值。這個(gè)程序的界面編的雖然不怎么好看,但基本個(gè)人收支管理的功能都達(dá)到了。但是還有許多地方改進(jìn)。PAGE18PAGE17附錄#include<stdio.h>#include<string.h>#include<math.h>#include<malloc.h>#include<stdlib.h>#defineN12inti;typedefstructpersonal{ intmonth;//月份 floatfoodxiaofei;//伙食消費(fèi) floatfangzu;//住宿費(fèi) floatrichangxiaofei;//日常用品費(fèi)用 floatshuidianfei;//水電費(fèi) floatyiliaofei;//醫(yī)療費(fèi) floatmoneyin;//儲(chǔ)蓄 floatyueshouru;//月收入 floatzongzhichu;//總支出}PEL;voidinput(PEL*a)//輸入月消費(fèi){ intn,i; printf("確定要輸入幾個(gè)月的賬單:"); scanf("%d",&n); if(n>0&&n<13) { printf("\n請(qǐng)依次輸入數(shù)據(jù)[說(shuō)明:中間以空格符隔開(kāi)]:\n"); printf("本月月份伙食消費(fèi)日常用品費(fèi)用住宿費(fèi)水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用收入費(fèi)用\n"); for(i=0;i<n;i++) { scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].fangzu,&a[i].richangxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].moneyin,&a[i].yueshouru); } printf("信息錄入成功!\n"); } else{ printf("輸入有誤!\n"); exit(0); }}voidyuepaixu(PEL*a)//月排序{ inti,j,k=0; PELtmp; for(i=0;i<N;i++) { if(a[i].month!=0) k++; } for(i=0;i<k;i++) { for(j=0;j<k-i;j++) { if(a[j].month>=a[j+1].month) { tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } } printf("按月份排序成功!\n");}voidzongpaixu(PEL*a)//總收入排序{ PELtmp; inti,j,k=0; for(i=0;i<N;i++){ if(a[i].month!=0) k++; } printf("\n"); for(i=0;i<k;i++){ for(j=0;j<k;j++){ if(a[j].yueshouru>=a[j+1].yueshouru){ tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } } printf("按每月總收入排序成功!\n");}voidmodify(PEL*a)//修改指定月份的數(shù)據(jù){ intmon; printf("請(qǐng)輸入要修改的月份:"); scanf("%d",&mon); inti=0; printf("本月月份伙食消費(fèi)日常用品費(fèi)用住宿費(fèi)水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用收入費(fèi)用\n"); for(i=0;i<N;i++){ if(a[i].month==mon) scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].fangzu,&a[i].richangxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].moneyin,&a[i].yueshouru); } printf("修改指定月份數(shù)據(jù)成功!\n");}voiddelrecord(PEL*a)//刪除指定月份數(shù)據(jù)函數(shù){ intmon; printf("請(qǐng)輸入要修改的月份:"); scanf("%d",&mon); inti,k; for(i=0;i<N;i++){ if(a[i].month==mon) k=i; } for(i=k;i<N-1;i++) a[i]=a[i+1]; printf("刪除指定月份數(shù)據(jù)成功!\n");}voidadd(PEL*a)//添加數(shù)據(jù){ intn,i,k=0; printf("確定要輸入增加幾個(gè)個(gè)月的賬單:"); scanf("%d",&n); printf("\n請(qǐng)依次輸入數(shù)據(jù)[說(shuō)明:中間以空格符隔開(kāi)]:\n"); for(i=0;i<N;i++){ if(a[i].month!=0) k++; } for(i=k;i<n+k;i++){ printf("本月月份伙食消費(fèi)日常用品費(fèi)用住宿費(fèi)水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用收入費(fèi)用)\n"); scanf("%d%f%f%f%f%f%f%f",&a[i].month,&a[i].foodxiaofei,&a[i].fangzu,&a[i].richangxiaofei,&a[i].shuidianfei,&a[i].yiliaofei,&a[i].moneyin,&a[i].yueshouru); } printf("信息添加成功!");}voidmyprintf(PEL*a)//打印指定月份數(shù)據(jù)函數(shù){ intmon; printf("請(qǐng)輸入要查看的月份\n"); scanf("%d",&mon); inti=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;i<N;i++){ if(a[i].month==mon) printf("%4d\t%8.2f%8.2f%12.2f%8.2f%9.2f%9.2f%9.2f%9.2f\n",a[i].month,a[i].foodxiaofei,a[i].fangzu,a[i].richangxiaofei,a[i].shuidianfei,a[i].yiliaofei,a[i].moneyin,a[i].yueshouru,a[i].zongzhichu=a[i].foodxiaofei+a[i].fangzu+a[i].richangxiaofei+a[i].shuidianfei+a[i].yiliaofei+a[i].moneyin); } printf("*************************************end**********************************************\n");}voidallprintf(PEL*a)//打印所有月份數(shù)據(jù){ inti=0;printf("\n**********************************all*****************************************\n"); printf("\n本月月份伙食消費(fèi)日常用品費(fèi)用住宿費(fèi)水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用收入費(fèi)用總支出\n"); for(i=0;i<N;i++) if(a[i].month!=0){ printf("%4d\t%8.2f%8.2f%12.2f%8.2f%9.2f%9.2f%9.2f%9.2f\n",a[i].month,a[i].foodxiaofei,a[i].fangzu,a[i].richangxiaofei,a[i].shuidianfei,a[i].yiliaofei,a[i].moneyin,a[i].yueshouru,a[i].zongzhichu=a[i].foodxiaofei+a[i].fangzu+a[i].richangxiaofei+a[i].shuidianfei+a[i].yiliaofei+a[i].moneyin); } printf("*********************************end******************************************\n");}voidzongzhichu(PEL*a)//消費(fèi)總支出{ PELtmp; intmon; floatsum=0;a[i].zongzhichu=0.0; printf("請(qǐng)輸入要計(jì)算總支出的月份:"); scanf("%d",&mon);for(i=0;i<N;i++) { if(a[i].month==mon) sum=a[i].foodxiaofei+a[i].fangzu+a[i].richangxiaofei+a[i].shuidianfei+a[i].yiliaofei+a[i].moneyin; } printf("%f",sum); a[i].zongzhichu=sum;}voidzongzhichupaixu(PEL*a)//消費(fèi)總排序{ PELtmp; inti,j,k=0; for(i=0;i<N;i++){ if(a[i].month!=0) k++; } printf("\n"); for(i=0;i<k;i++){ for(j=0;j<k;j++){ if(a[j].zongzhichu>=a[j+1].zongzhichu) { tmp=a[j]; a[j]=a[j+1]; a[j+1]=tmp; } } } printf("按每月總消費(fèi)排序成功!\n");}voidout(PEL*a){ exit(0);}intmain(){ PELa[N]={0}; intchose; do{ do{ printf("\t\t\t\t學(xué)生收支管理系統(tǒng)\n"); printf("\t\t\n"); printf("\t\t0:退出系統(tǒng)\n");

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(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)論