




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、C語言課程設(shè)計(jì)家庭財(cái)務(wù)管理系統(tǒng) 課程設(shè)計(jì)報(bào)告課程設(shè)計(jì)題目: 家庭財(cái)務(wù)管理系統(tǒng) 學(xué)生姓名: 專 業(yè): 信息工程班 級(jí): 指導(dǎo)教師: 2018年 1月 8日1.需求分析根據(jù)家庭賬務(wù)管理的需要,建立一個(gè)“家庭賬務(wù)管理系統(tǒng)”,以方便對(duì)家庭日常收入及支出進(jìn)行記錄和管理。該系統(tǒng)要求:家庭月收入管理家庭月支出管理統(tǒng)計(jì)家庭總收入/總支出系統(tǒng)提供收入/支出的添加、刪除和修改功能。2. 總體設(shè)計(jì)根據(jù)以上分析,本家庭賬務(wù)管理系統(tǒng)主要包括: 從鍵盤鍵入家庭月收入、月支出數(shù)據(jù);查詢?cè)率杖搿⒃轮С雒骷?xì);刪除收入、支出數(shù)據(jù);修改收入、支出數(shù)據(jù);統(tǒng)計(jì)總收入/總支出;退出系統(tǒng)。除main()函數(shù)之外,系統(tǒng)還定義了以下函數(shù)來實(shí)現(xiàn)
2、各部分內(nèi)容:add_income():添加收入數(shù)據(jù)函數(shù)。add_payout():添加支出數(shù)據(jù)函數(shù)。search_data():查找數(shù)據(jù)函數(shù)。initialize():初始化函數(shù),讀取文本數(shù)據(jù)。show_info():顯示數(shù)據(jù)函數(shù)。count_total():統(tǒng)計(jì)函數(shù),統(tǒng)計(jì)總收入、總支出。update_data():修改信息函數(shù)。delete_data():刪除數(shù)據(jù)函數(shù)。quit():退出函數(shù)。程序結(jié)構(gòu)功能圖如下:3.詳細(xì)設(shè)計(jì)3.1收入管理3.2支出管理4.測(cè)試結(jié)果4.1 程序運(yùn)行主菜單 4.2 添加收入測(cè)試4.3 查詢收入明細(xì)測(cè)試4.4 刪除收入測(cè)試4.5 修改收入測(cè)試4.6 添加支出測(cè)試4
3、.7 查詢支出明細(xì)測(cè)試4.8 刪除支出測(cè)試4.9 修改支出測(cè)試4.10 統(tǒng)計(jì)總收入/支出測(cè)試4.11 退出系統(tǒng)測(cè)試5.軟件操作使用說明書 本系統(tǒng)采用命令行對(duì)話方式進(jìn)行操作,運(yùn)行后出現(xiàn)主界面(如下圖所示),然后按照主界面菜單指引操作即可。6.總結(jié)編寫程序之前要有一個(gè)整體的思路,不能寫到哪里算哪里。這樣很容易遺漏,連續(xù)性也不好。通過本次的課程設(shè)計(jì)讓我對(duì)于數(shù)組、文件的存放、循環(huán)結(jié)構(gòu)等知識(shí)有了更加透徹的理解。希望在以后的課程設(shè)計(jì)中對(duì)于知識(shí)的運(yùn)用能夠更加的熟練。代碼:#include #include #include #include #define MAXNAME 11 /家庭成員姓名的最大長(zhǎng)度#d
4、efine MAXDETAIL 21 /注最大長(zhǎng)度/自定義枚舉類型fi_type,用來表示收入與支出 typedef enum _fi_type income=1,/收入 payout =-1 /支出 fi_type; / 家庭財(cái)務(wù)信息結(jié)構(gòu)體typedef struct _fi_info int year; int month; fi_type type; char name9; float money; char detail11; fi_info; / 存儲(chǔ)財(cái)務(wù)數(shù)據(jù)結(jié)構(gòu)的結(jié)構(gòu)體 typedef struct _fi_data fi_info info; struct _fi_data* n
5、ext; fi_data; fi_data *head;/財(cái)務(wù)數(shù)據(jù)的頭結(jié)點(diǎn) void menu();/菜單函數(shù) void add_income(); void search_income(); void delete_income(); void update_income(); void add_payout(); void search_payout(); void delete_payout(); void update_payout(); void count_total(); void quit(); / void search_data(fi_type type); void de
6、lete_data(fi_type type); void update_data(fi_type type); / void initialize(); void save_to_file(); void clear_data(); fi_data *get_last(); fi_data *get_previous(fi_data *p); void input_info(fi_info *info); void show_info(fi_data *p); void menu() printf(n); printf(tt n); printf(tt n); printf(ttt 家庭財(cái)務(wù)
7、管理系統(tǒng)n); printf(tt n); printf(tt n); printf(tt*n); printf(tt收入管理:); printf(1.添加收入); printf( 2.查詢收入明細(xì)n); printf(ttt 3.刪除收入); printf( 4.修改收入n); printf(tt*n); printf(tt支出管理:); printf(5.添加支出); printf( 6.查詢支出明細(xì)n); printf(ttt 7.刪除支出); printf( 8.修改支出n); printf(tt*n); printf(tt統(tǒng) 計(jì):); printf(9.統(tǒng)計(jì)總收入/總支出n); pr
8、intf(tt*n); printf(tt退 出:0.退出系統(tǒng)n); printf(tt*nnn); void main() int selected=0; initialize(); while(selected=0&selected請(qǐng)選擇要進(jìn)行的操作(0-9):); if(scanf(%d,&selected)!=1|selected9) printf(tt輸入有誤!請(qǐng)選擇(0-9)之間的數(shù)字!按任意鍵重試); getchar(); else switch(selected) case 0:exit(0);clear_data();break; case 1:add_income();sa
9、ve_to_file();break; case 2:search_income();break; case 3:delete_income();save_to_file();break; case 4:update_income();save_to_file();break; case 5:add_payout();save_to_file();break; case 6:search_payout();break; case 7:delete_payout();save_to_file();break; case 8:update_payout();save_to_file();break
10、; case 9:count_total();break; void add_income()/添加收入 fi_data *p=(fi_data *)malloc(sizeof(fi_data); p-next=NULL; input_info(&(p-info); p-info.type=income; if(head=NULL) head=p; else get_last()-next=p; void add_payout()/添加支出 fi_data *p=(fi_data *)malloc(sizeof(fi_data); p-next=NULL; input_info(&(p-inf
11、o); p-info.type=payout; if(head=NULL) head=p; else get_last()-next=p; /輸入函數(shù) void input_info(fi_info *info) printf(tt請(qǐng)輸入年月(YYYY/M); scanf(%d/%d,&(info-year),&(info-month); printf(tt請(qǐng)輸入家庭成員姓名(最大長(zhǎng)度為%d):,MAXNAME-1); scanf(%s,info-name); printf(tt輸入金額:); scanf(%f,&(info-money); printf(tt請(qǐng)輸入備注(最大長(zhǎng)度為%d):,2
12、0); scanf(%s,info-detail); /查找數(shù)據(jù)函數(shù) void search_data(fi_type type) int year=0; int month=0; fi_data *p=NULL; int count=0; char input= ; while(1) printf(tt請(qǐng)輸入要查詢的年月(YYYY/M); if(scanf(%d/%d,&year,&month)!=2) printf(tt輸入有誤n); else p=head; count=0; while(p!=NULL) if(p-info.year=year)&(p-info.month=month)
13、&(p-info.type=type) show_info(p); system(PAUSE); count+; p=p-next; if(count=0) printf(tt沒有找到數(shù)據(jù)n); printf(tt繼續(xù)查找其他數(shù)據(jù)?(y or n); input=getchar(); if(input=y|input=Y) continue; else break; /初始化函數(shù),讀取文本數(shù)據(jù) void initialize() FILE * fp=NULL; fi_data *p=NULL; fi_data *last=NULL; int count=0; fp=fopen(data.txt
14、,rb); if(fp=NULL) fp=fopen(data.txt,w); fclose(fp); return; p=(fi_data*)malloc(sizeof(fi_data); memset(p,0,sizeof(fi_data); p-next=NULL; while(fread(&(p-info),sizeof(fi_info),1,fp)=1) if(head=NULL) head=p; else last=get_last(); last-next=p; count+; fseek(fp,count*sizeof(fi_info),SEEK_SET); p=(fi_dat
15、a *)malloc(sizeof(fi_data); memset(p,0,sizeof(fi_data); p-next=NULL; free(p); p=NULL; fclose(fp); /顯示信息函數(shù) void show_info(fi_data *p) int i=0; printf(|tt|tt|tt|tt|tt|tt|n); printf(|NO.t |年/月tt|類型tt|姓名tt|金額tt|備注tt|n); printf(|%5dt|%4d/%02dt|%4st|%10st|%10.2f|%20s|n,i+1, p-info.year,p-info.month,p-info
16、.type=income?收入:支出, ,p-info.money,p-info.detail); printf(|tt|tt|tt|tt|tt|tt|n); /統(tǒng)計(jì)總收入、總支出 void count_total() float total_income=0.0; float total_payout=0.0; fi_data *p=head; while(p!=NULL) if(p-info.type=income) total_income+=p-info.money; else total_payout+=p-info.money; p=p-next; print
17、f(tt+tt+tt+n); printf(tt|合計(jì)收入t|合計(jì)支出t|結(jié)余t|n); printf(tt%12.2f|%12.2f|%12.2f|n,total_income,total_payout,total_income-total_payout); printf(tt+tt+tt+n); printf(tt按任意鍵返回主菜單); getchar();getchar(); /保存到文件 void save_to_file() FILE *fp=fopen(data.txt,wb ); fi_data *p=head; while(p!=NULL) fwrite(&(p-info),s
18、izeof(fi_info),1,fp); fseek(fp,0,SEEK_END); p=p-next; fclose(fp); /修改信息函數(shù) void update_data(fi_type type) int year=0; int month=0; fi_data *p=NULL; fi_data *pre=NULL; char input; int count=0; int i=0; while(1) printf(tt請(qǐng)輸入要查詢的年月(YYYY/M); if(scanf(%d/%d,&year,&month)!=2) printf(tt輸入有誤n); else p=head;
19、count=0; while(p!=NULL) if(p-info.year=year)&(p-info.month=month)&(p-info.type=type) count+; show_info(p); input_info(&(p-info); printf(tt修改成功n); p=get_previous(p); p=p-next; if(count=0) printf(tt沒有找到數(shù)據(jù)n); printf(tt繼續(xù)查找其他數(shù)據(jù)?(y or n); input=getchar(); if(input=y|input=Y) continue; else break; void de
20、lete_data(fi_type type)/刪除數(shù)據(jù)函數(shù) int year=0; int month=0; fi_data *p=NULL; fi_data *pre=NULL; int count=0; char input= ; int i=0; while(1) printf(tt請(qǐng)輸入要查詢的年月(YYYY/M); if(scanf(%d/%d,&year,&month)!=2) printf(tt輸入有誤n); else p=head; count=0; while(p!=NULL) if(p-info.year=year)&(p-info.month=month)&(p-info.type=type) count+; show_info(p); pre=get_previous(p); if(pre=NULL) head=head-next; else pre-next=p-next; free(p); printf(tt刪除成功n); p=p-next; if(count=0) printf(tt沒有找到數(shù)據(jù)n); printf(tt繼續(xù)查找其他數(shù)據(jù)?(y or n); input=getchar(); if(input=y|input=Y) c
溫馨提示
- 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 鋁合金材料施工方案
- (三模)榆林市2025屆高三第三次模擬檢測(cè)生物試卷(含答案詳解)
- 數(shù)控加工工藝與編程技術(shù)基礎(chǔ) 教案 模塊一 任務(wù)4 數(shù)控加工機(jī)床夾具基礎(chǔ)
- 結(jié)合農(nóng)業(yè)植保技術(shù)的現(xiàn)代農(nóng)業(yè)病蟲害防治思路與具體辦法探討
- 醫(yī)療機(jī)構(gòu)水污染物排放的管理制度與組織架構(gòu)
- 石油化工靜電接地系統(tǒng)的組成與功能
- 綠色發(fā)展與可持續(xù)城鎮(zhèn)化策略
- 積極穩(wěn)妥推進(jìn)碳達(dá)峰碳中和的策略及實(shí)施路徑
- 采購鐵皮保溫施工方案
- 2018年數(shù)學(xué)(北師大版選修2-2)練習(xí)第3章22最大值最小值問題活頁作業(yè)14
- 2023光伏板索支承結(jié)構(gòu)技術(shù)規(guī)程
- JJF1033-2023計(jì)量標(biāo)準(zhǔn)考核規(guī)范
- 2024年全國“紀(jì)檢監(jiān)察”業(yè)務(wù)相關(guān)知識(shí)考試題庫(附含答案)
- MTBE裂解工藝交流材料
- 中醫(yī)診斷學(xué)第七章第二節(jié)六經(jīng)辨證
- 租賃合同審批表
- 數(shù)據(jù)庫及其應(yīng)用-重點(diǎn)復(fù)習(xí)資料.代碼02120
- 巖石堅(jiān)固性和穩(wěn)定性分級(jí)表
- 律師事務(wù)所函[]第號(hào)
- 物流經(jīng)典游戲啤酒游戲(完全操作版)
- 新形勢(shì)下如何做一名合格的鄉(xiāng)鎮(zhèn)干部之我見
評(píng)論
0/150
提交評(píng)論