




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、程序上機作業(yè)程序設(shè)計報告( 2012 / 2013 學(xué)年 第 一 學(xué)期)題 目:家庭支出管理系統(tǒng) 專 業(yè) 自動化 學(xué) 生 姓 名 闞世俊 班 級 學(xué) 號 B 指 導(dǎo) 教 師 張勤 指 導(dǎo) 單 位 計算機軟件教學(xué)中心 日 期 2012年12月20日 評 分 細 則評分項優(yōu)秀良好中等差遵守機房規(guī)章制度上機時的表現(xiàn)學(xué)習(xí)態(tài)度程序準備情況程序設(shè)計能力團隊合作精神課題功能實現(xiàn)情況算法設(shè)計合理性用戶界面設(shè)計報告書寫認真程度內(nèi)容詳實程度文字表達熟練程度回答問題準確度簡 短 評 語教師簽名: 年 月 日評分等級備注評分等級有五種:優(yōu)秀、良好、中等、及格、不及格家庭支出管理系統(tǒng)一、 課題內(nèi)容和要求1、該系統(tǒng)要求對
2、一個家庭某月的支出情況進行統(tǒng)計和分析。通過此課題,熟練掌握數(shù)組、指針的各種操作,以及一些算法思想的應(yīng)用。2、功能要求:(1)支出信息包括:支出類型(主要可以分為飲食,服飾裝扮,禮金,教育培訓(xùn),電器,健身,通訊,子女培養(yǎng),旅游,文化娛樂,醫(yī)療,交通,聚會,居住等小項),金額,消費地點,消費時間等。(2)需要實現(xiàn)的功能1) 用戶根據(jù)口令進入系統(tǒng)2) 輸入某一月份,完成該月份的支出管理3) 輸入并統(tǒng)計該月的支出情況4) 顯示該月支出信息表,內(nèi)容應(yīng)包括日期,金額等5) 按支出類型進行分類統(tǒng)計和排序6) 進行本月消費分析,即分析每項支出所占總支出的百分比,并顯示分析結(jié)果7) 顯示按支出類型排序后的支出信
3、息8) 將排序后的內(nèi)容存為文件。(3)界面友好,輸入信息符合邏輯如存款金額不為負數(shù)、不可能有非數(shù)字的字符等。2、 需求分析這個程序利用輸入,輸出,排序和百分比等功能對家庭的各項支出管理進行操作,以次來方便操作管理。1, 菜單函數(shù),此函數(shù)是為了讓用戶根據(jù)菜單選擇功能并根據(jù)提示來進行操作。2,密碼函數(shù),因為家庭支出管理系統(tǒng)涉及到私人財務(wù),所以需要利用密碼函數(shù)對程序進行保密。因此只有在輸入正確的口令后才能進入該系統(tǒng)。3, 輸入函數(shù),為了實現(xiàn)將各個指出項目的烈性,支出的金額以及消費的時間,地點等存入需要的文件里,所以必須先要存在存儲器里。4, 求和函數(shù),實現(xiàn)簡單的求和功能,就是利用求和功能求出每月的各
4、項金額的總和。一次來統(tǒng)計出該月的支出情況。5, 輸出函數(shù),即通過行列表來直觀對應(yīng)所輸入的項目的金額,消費時間及地點。6,分析函數(shù),對本月的消費進行分析,分析出每項支出所占總支出的百分比,通過他們各自的項目金額所占的百分比來直觀顯示那個指出比較重要。7, 類別排序函數(shù),對本月相同的類別進行合并統(tǒng)計,并排序。8, 保存函數(shù),就是將輸入的信息保存下來并存入文檔或者其他形式的文件。3、 概要設(shè)計按消費價格排序支出情況計算消費總和主函數(shù)退出系統(tǒng)輸入消費金額消費分析按消費類別排序保存數(shù)據(jù)及結(jié)果輸入月份 首先,編寫一個現(xiàn)實的菜單函數(shù)以方便用戶將支出中的內(nèi)容(錢,時間,地點等)定義成結(jié)構(gòu)體。然后根據(jù)需求可以完
5、成需求的函數(shù),輸入信息的Put函數(shù),計算總支出的Money函數(shù),顯示所有的Display函數(shù)。最后,編寫主程序,這一步可以調(diào)用功能函數(shù),并利用相應(yīng)的函數(shù)將其與菜單聯(lián)系起來,方便用戶使用。1, 定義機構(gòu)體,聲明各成員的變量含義。2, 定義密碼函數(shù),通過對指針的運用,利用getch()函數(shù)來獲得輸入的密碼值,再用來與定義的密碼值作比較利用if else語句,來顯示輸入密碼的正確性。3, 顯示主菜單,采用switch()和case語句,根據(jù)用戶的選擇則進入相應(yīng)的模塊。4, Menu菜單包括輸入函數(shù)inputitems(),求和函數(shù)Summoney(),輸出函數(shù)showitems (),類別排序函數(shù)p
6、aixu(),消費價格排序函數(shù)shunxu(),分析函數(shù)analyseitems (),保存函數(shù)save (),并在最后添加一個退出選項exit。5, 設(shè)置密碼函數(shù)void password (),我是采用逐字比較法,用for循環(huán)一次進行從前到后的對比,假如完全正確用break跳出循環(huán)進入系統(tǒng),如果錯誤就要重新輸入。6, 輸入函數(shù)int inoutitems(expense sxp,int n),在第1步中定義了exp,其中的type,place,money,time都是成員變量,逐項進行輸入。輸入完畢的話則回到了第3步重新開始。7, 求和函數(shù)Summoney(expense sxp,int
7、n),利用循環(huán)和自加來求一個總和。相加的只是各項成員的成員變量money。8, 輸出函數(shù)Display(expense sxp,int n),仍然用循環(huán)采用逐項輸出。9, 分析函數(shù)analyseitems(expense sxp,int n),需要統(tǒng)計百分比,定義一個求和變量,計算所有輸出的總和s,再用每類支出除以s再乘以100%,用來求取百分比。10消費類別排序函數(shù)paixu(expense sxp,int n),用字符串比較法找出相同的類別,把同類別的值加到第一個相同的值上,后面的賦值為0,輸出時判斷不為0的值才輸出。11保存函數(shù)save(expense sxp,int n),將數(shù)據(jù)保存到
8、學(xué)號命名的文檔里。4、 源程序代碼#include<>#include<>#include<>#include<>#include<>#include<>#include<>typedef struct 入消費信息|n"); printf("tt|2.計算消費總和|n");printf("tt|3.顯示消費信息|n");printf("tt|4.對同種類型消費進行排序并顯示|n");printf("tt|5.消費情況分析|n&quo
9、t;);printf("tt|6.添加消費信息|n");printf("tt|7.保存數(shù)據(jù)|n");printf("tt|0.退出系統(tǒng)|n");printf("tt*n");printf("tt*n");printf("ttt請對應(yīng)選擇所需選項(0-7)");c=getchar();while(c<'0'|c>'7');return(c-'0'); void password()碼修改*n"); print
10、f("tt*tt.登陸*n"); printf("tt*n"); printf("tt*n"); printf("ttt請輸入您所要的選項(1,2):"); scanf("%d",&m); getchar(); switch(m) case 1:xt","r"); if(!fp1) printf("file cannot be opened"); exit(1); for(i=0;!feof(fp1);i+) ai=fgetc(fp1);
11、 fclose(fp1); printf("ttt請輸入原密碼:"); for(j=0;j<7;j+) scanf("%c",b+j); if (bj>='0'&&bj<='9'|bj>='a'&&bj<='z'|bj>='A'&&bj<='Z') putchar('*'); if(a0=b0&&a1=b1&&a2=b2&a
12、mp;&a3=b3&&a4=b4&&a5=b5) do printf("ttt請設(shè)置您的新密碼:"); for(j=0;j<7;j+) scanf("%c",c+j); if (cj>='0'&&cj<='9'|cj>='a'&&cj<='z'|cj>='A'&&cj<='Z') putchar('*'); prin
13、tf("ttt請確認您的新密碼:"); for(j=0;j<7;j+) scanf("%c",d+j); if (dj>='0'&&dj<='9'|dj>='a'&&dj<='z'|dj>='A'&&dj<='Z') putchar('*'); while(!(c0=d0&&c1=d1&&c2=d2&&c3=
14、d4&&c4=d4&&c5=d5); fp2=fopen("D:密碼.txt","w+"); if(!fp2) printf("the file cannot be opened"); exit(1); i=0; while(i<6) fprintf(fp2,"%c",ci); i+; fclose(fp2); printf("ttt密碼修改成功!n"); else printf("ttt密碼錯誤n"); exit(0); case 2:
15、xt","r"); if(!fp1) printf("the file cannot be opened!"); exit(1); for (i=0;!feof(fp1);i+) ei=fgetc(fp1); fclose(fp1); do printf("ttt請輸入六位數(shù)密碼:"); for(j=0;j<7;j+) scanf("%c",f+j); if (fj>='0'&&fj<='9'|fj>='a'&
16、&fj<='z'|fj>='A'&&fj<='Z') putchar('*'); if(!(e0=f0&&e1=f1&&e2=f2&&e3=f3&&e4=f4&&e5=f5) printf("n密碼錯誤!請重新輸入:n"); n+; if(n>3) printf("errorn"); exit(0); while(!(e0=f0&&e1=f1&
17、;&e2=f2&&e3=f3&&e4=f4&&e5=f5); printf("nttt歡迎使用!n"); int Inputitems(family sum,int n)ype); printf("ttt支出(大于0):"); scanf("ttt%f",&sumn+i.Getsum); printf("ttt地點:"); scanf("ttt%s",sumn+i.place); printf("ttt時間(0-31):&
18、quot;); scanf("ttt%d",&sumn+i.time); if(sumn+i.time<1|sumn+i.time>31) return false; gets(x); printf("ttt需要再次輸入嗎(y/n)"); scanf("ttt%c",&sign); i+; return(n+i); void Getsum(family sum,int n)etsum; printf("ttt%fn",getsum); void Showitems(family sum,
19、int n)ype,sumi-1.Getsum,sumi-1.place,sumi-1.time);if(i>1&&i%10=0)printf("ttt-n");printf("ttt");printf("ttt-n");printf("ttt");system("pause");void paixu(family sum,int n)xt","a+"); if(fp=NULL) printf("ttt the file cannot
20、 be opened!n"); exit(1); for(i=0;i<n-1;i+) for(j=i+1;j<n;j+) if(strcmp(sumi.type,sumj.type)=1) temp=sumj; sumj=sumi; sumi=temp; else if(strcmp(sumj.type,sumi.type)=0) if(sumi.Getsum,sumj.Getsum) temp=sumj; sumj=sumi; sumi=temp; fprintf(fp,"排序后:n"); for(i=0;i<n;i+) fprintf(fp,
21、"%-8s %-12f %-8s %-10dn",sumi.type,sumi.Getsum,sumi.place,sumi.place); fclose(fp); printf("ttt保存成功!n");void Analyseitems(family sum,int n)paixu(sum,n);float total=0,a=0,sum1=0;int i,j;for(i=0;i<n;i+)total+=sumi.Getsum;for(i=0;i<n;i+)sum1=sumi.Getsum;for(j=i+1;j<n;j+)if(s
22、trcmp(sumi.type,sumj.type)=0)sum1+=sumj.Getsum;i+;a=(sum1/total)*100;printf("ttt%-8s%-10f%n",sumi.type,a);void save(family sum,int n, int m)xt","a+");if(fp=NULL)printf("tttthe file cannot be opened!n");exit(1);fseek(fp,-1,SEEK_END);ype,sumi.Getsum,sumi.place,sumi.t
23、ime);fclose(fp);printf("ttt保存成功!n");int main()password();getch();int n=0,m;char c;doprintf("ttt請輸入您所要管理的月份(1-12):");scanf("%d",&m);while(m<1|m>12);for(;)switch(menu_select()case 1:printf("ttt請輸入相應(yīng)消費情況n");n=Inputitems(fam,n);printf("ttt想保存數(shù)據(jù)請輸入y/
24、Y!n");getchar();scanf("%c",&c);if(c='y'|c='Y')save(fam,n,m);printf("ttt");system("pause");break;case 2:printf("ttt消費總和n");Getsum(fam,n);printf("ttt");system("pause");break;case 3: printf("ttt消費情況n"); Showi
25、tems(fam,n); break; case 4:printf("ttt消費排序n");paixu(fam,n);Showitems(fam,n);printf("ttt");system("pause");break;case 5:printf("ttt消費金額分析n");Analyseitems(fam,n);printf("ttt 想保存數(shù)據(jù)請輸入 y/Y!n");getchar();scanf("%c",&c);if(c='y'|c=
26、9;Y')save(fam,n,m);printf("ttt");system("pause");break;case 6: printf("ttt添加消費情況n"); n=Inputitems(fam,n);getchar();scanf("%c",&c);if(c='y'|c='Y')save(fam,n,m);break;case 7: printf("ttt 保存消費數(shù)據(jù)n");save(fam,n,m);printf("ttt&
27、quot;);system("pause");case 0:printf("ttt謝謝使用!n");system("pause");exit(0);return 0;五、測試數(shù)據(jù)及其結(jié)果分析1按提示輸入密碼或是修改密碼,當(dāng)密碼錯誤時重新輸入。請輸入六位數(shù)密碼:*(172134)密碼錯誤!請重新輸入:*(983456)密碼錯誤!請重新輸入:*(578945)密碼錯誤!請重新輸入:*(942567)密碼錯誤!請重新輸入:*(776344)密碼錯誤!請重新輸入:errorPress any key to continue請輸入六位數(shù)密碼:*
28、(542346)密碼錯誤!請重新輸入:*(123456)歡迎使用!2.根據(jù)菜單提示選擇1,輸入消費信息。3.根據(jù)菜單提示選擇2,計算消費總和。4 根據(jù)菜單提示選擇3,顯示消費信息。5根據(jù)提示選擇4,對消費進行排序并顯示。6.根據(jù)菜單提示選擇5,進行消費分析,計算出各項支出占總支出的百分比。7.根據(jù)菜單提示選擇6,可以進行添加消費信息。8.根據(jù)菜單提示選擇7,可以將信息進行保存,保存結(jié)果在D盤中的的文件中。9 根據(jù)菜單提示選擇0,退出系統(tǒng)。6、 調(diào)試過程中的問題1.一開始是函數(shù)調(diào)用就有問題,包括函數(shù)定義有錯,還有就是定義的時候有重復(fù)了,然后不得不重新弄了。2再有就是消費類別排序中的價格排序有問題,就是支出順序變了,但類型順序沒變,導(dǎo)致類別的支出有時會改變,后來想到在調(diào)換支出時把類別的字符串也調(diào)換一下就解決了。這其中出現(xiàn)了多達89個錯誤,然后細心的根據(jù)運行的錯誤提示,一行一行的進行修改,直到?jīng)]有了errors,然后還有些不懂得錯
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 勞務(wù)合同兼職合同范本
- 分包制作安裝合同范本
- 借款車位轉(zhuǎn)讓合同范本
- 代理房屋合同范本
- 2024年玉環(huán)市委辦公室選聘考試真題
- 2024年舟山市定海區(qū)人民檢察院招聘用工人員筆試真題
- 關(guān)于電纜合同范本
- 2024年玉林市第十一中學(xué)招聘高中體育頂崗教師筆試真題
- 個人經(jīng)營服務(wù)合同范本
- 借款房屋轉(zhuǎn)讓合同范本
- GB∕T 8163-2018 輸送流體用無縫鋼管
- Windows Azure云平臺基本操作手冊
- 短視頻:策劃制作與運營課件
- T∕ASC 17-2021 電動汽車充換電設(shè)施系統(tǒng)設(shè)計標準
- 水閘設(shè)計步驟計算書(多表)
- PowerPoint使用技巧培訓(xùn)課件(共35張)
- SMA瀝青路面的設(shè)計與施工
- 腎內(nèi)科相關(guān)基礎(chǔ)知識學(xué)習(xí)教案
- (完整版)Frenchay構(gòu)音障礙評定
- 單兵戰(zhàn)斗動作教案
- 河北公務(wù)員四級聯(lián)考歷年真題
評論
0/150
提交評論