C語言課程設計——家庭財務管理系統(tǒng)_第1頁
C語言課程設計——家庭財務管理系統(tǒng)_第2頁
C語言課程設計——家庭財務管理系統(tǒng)_第3頁
C語言課程設計——家庭財務管理系統(tǒng)_第4頁
C語言課程設計——家庭財務管理系統(tǒng)_第5頁
已閱讀5頁,還剩26頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設計報告課程設計題目:家庭財務管理系統(tǒng)學生姓名:專業(yè):信息工程班級:指導教師:2018年1月1 需求分析根據(jù)家庭賬務管理的需要,建立一個“家庭賬務管理系統(tǒng)”,以方便對家庭日常收入及 支出進行記錄和管理。該系統(tǒng)要求:家庭月收入管理家庭月支出管理統(tǒng)計家庭總收入/總支出系統(tǒng)提供收入/支出的添加、刪除和修改功能。2 .總體設計根據(jù)以上分析,本家庭賬務管理系統(tǒng)主要包括: 從鍵盤鍵入家庭月收入、月支出數(shù)據(jù); 查詢月收入、月支出明細;刪除收入、支出數(shù)據(jù);修改收入、支出數(shù)據(jù);統(tǒng)計總收入/總支出;退出系統(tǒng)。除main ()函數(shù)之外,系統(tǒng)還定義了以下函數(shù)來實現(xiàn)各部分內(nèi)容:addjncome ():添加收入數(shù)據(jù)

2、函數(shù)。add_payout ():添加支出數(shù)據(jù)函數(shù)。search_data ():查找數(shù)據(jù)函數(shù)。ini tialize ():初始化函數(shù),讀取文本數(shù)據(jù)。showjnfo ():顯示數(shù)據(jù)函數(shù)。countjotal ():統(tǒng)計函數(shù),統(tǒng)計總收入、總支出。update_data ():修改信息函數(shù)。delete_data ():刪除數(shù)據(jù)函數(shù)。(9) quit ():退出函數(shù)。程序結(jié)構功能圖如下:家庭財務管理系統(tǒng)退W系統(tǒng)z收入管理3.詳細設 計3.1收入管理3.2支出管理開始輸出菜單,輸入操作選擇,/4 .測試結(jié)果4.1程序運行主菜單室庭財務管理系統(tǒng)4.3查詢收入明細測試支出雷理:5.7.退出:。退出系

3、統(tǒng))請選B要進行的操作”小4.2添加收入測試收入管理亶翻J支8 6袁羽細余支出8修沓支統(tǒng)計汁-統(tǒng)計總收入二總支出退出詞-退出系統(tǒng)請選擇要進行的操作2沁青輸入要查詢的穿月好匹骯“7年月1!20t3/09DM型;收入:備汪工資請按任意鍵畛心其也數(shù)據(jù)? o葉n>4.4刪除收入測試WWVWUAAAnAARK/W.MAAjAjIKJ(冢庭財務管理系統(tǒng)3:.EKKKN 扶1X3<Wr>Et MiMKIiEXXXX匚77rH一k KiHpta十.: 一力卜紈/<¥¥Wzfl>201-4/l112014Z01168.23:備汪Ky)刪除成功) an人 key

4、to cnnt-imie4.5修改收入測試4.8刪除支出測試計 LXHJCWOftUiXJHXKKIHIHieTCJlXlUCJUUJUaaC收A管理m添加收入3刪除收入趴查育收入明細收入* x)« BOf MJtHBtiM 一 K.出一KJCMiMtiMICiUJUfNJf 3<JC支出管理出.添加支出刪除支出查詢支出明細8 修改支出統(tǒng) 計也統(tǒng)計創(chuàng)“ i2吏出退出:肌退出系Z充1.操作段二9:4 牟百 YYY/02: 2013/02;收入1400.08: I!#a請輸入年月(¥¥¥V/ri>2013/2 輸入奈庭成員姓名(最大長度為_L少輸

5、:lyy人眷注(最大長度為餉:工資.4.6添加支出測試1 KH%ittWKME JB冢庭財務管理系統(tǒng)資細 面細收入管理逍3-剃:一支出吩勰金十誦出:肌退出系統(tǒng)>wwga行:的操作<0-9>=&>6殉人年月 <VW¥/M)2 013/1癥志入家庭成負妊電(最大長度為,4SWAWi=2M籍輸黃睿注嚎大長度加哄購物4.7查詢支出明細測試K31唾月休:&學I擇人也輸:類型作值I海am", m mote,姓亡I金額2BB.00 I倚汪-S udvlBllmlaufMawmwvwlvllBlwlurlVlaA-waufvawMilw 豕庭財

6、務* 菅 珥1 務nrrwmvwwwMwvwnrnmwmwwKirwwruYuwvwwdmwvrw收初狒敏:M1XNJf 繇 XNw 4翹:K軌耳 NJIeKH 曲 2-0.耳X質(zhì)耳昶X *入HL ML"L JR支出管于郭虧探加支出巴刪I除支出般護細繞 i+=?.AAfcA/.aSSmerS : 0-iai泉庭財務管理系統(tǒng)LMJ4M XKJWJC JCXIMTeTW - THt收入管理【添加收入 刪雀收入J收入明名田“攵入 -K - KME- V.U JOC 3KHU NW_一 支出管理污一添加豆串查詢支出陽細7 .俱IJ除支田馭焉改支出出3< :gatdi K 出 虹 ;kl

7、M.甘 u 材 皿 口出X :utava; j fcUtea _ik 計二9 統(tǒng)計包收入/總支出 退出gg 退出系統(tǒng)請選擇要進行的操作V。-”汐請輔人要查詢的年月VY¥Y¥ZH>2O13Z1;#£購物;NO. ;年聲月;類型:姓名;金額1 i2Ul3z(»l;支出 ilyy;刪除成功Fr«ss an<Z key to continue4.9修改支出測試家庭財務管理系統(tǒng)rwrw.IFWOw缺 4-1?I攵人明細I攵入支出管理汗hlwLi音!wK.luwK. H.,襯!山q“KW也W 岸U耐U岸山K,屏lK 統(tǒng) 計汐-統(tǒng)計總收入”總支出

8、退出=0.退出系統(tǒng)ZRQ、。<¥¥¥¥/H>2313/9NO.I年帛I類倒姓名I金額I備注IN0.12013/09年/月12013/09:2001MV300.00衣耶請 H修改成功注最大長度為20:農(nóng)服裘型姓名金教I#?-支出200.00衣服lyy4.10*MMHWmMlFWV6rwwwiNHrwawWY/HHavilvwiw%MM細丁 明明 入也 詢改。詢改 直修“否修 X 2 4MG 0CM入入F 片支支 加除“捫除 添刪2添刪 X 1 3x5 7 X 理S 管I管 入MM出 收一支統(tǒng)i: 9 統(tǒng)注/總支出X X * XX k X X X

9、 X'M MM XX XV MMX XM XM X XX X一出:。.退出系統(tǒng)>諳選婪進行的操作v0-9> = ?合計收入J734-63嘴余420d.G3V I500980I4.11送 1匕系統(tǒng)測試)接任百,迪返回主菜單ikWlVJkWAWWANWJJUVUVCVrVLrAHKJtflJVAJ 解才務管理系統(tǒng)nsrwnwrsmmmrmxmnriwrKmnrwwihrKmHVMYU)A A.宜月。支出管理=$總支出查詢支出明名日 !除支出改支出統(tǒng)計伙統(tǒng)計施收人/總支出整丁竽昌1借4#蒜一林一督一- MIU*陽版珞X 綁 竽F媳品MU4,玄艮|卜出 /充科斗冷料若瓢滯-K斗Hi

10、HXi芹君斗騫番祥耳辜屏M斗科 Q低耳濟耳刺譽界耳精選攝蘿進亍的操作d日勺rcss any key to continue.5 .軟件操作使用說明書本系統(tǒng)采用命令行對話方式進行操作,運行后出現(xiàn)主界面(如下圖所示)然后按照 主界面菜單指引操作即可。家庭財務管理系統(tǒng)*w 、r« 、r W8rwirwmn、rrw«ai、*<M一fWKT/VAAX/K/1n<TMwrsr收入管理”透加收入2 .真硼為人明細 3 ,刪際收入4.修改收入支出管理工,懣加支出6 .查迪克出明細 二期1五包8二送艾包一一里土9受tt包上足三老菽一加;至而凄彳 一 請選擇要進行的操作。-9;6.

11、總結(jié)編寫程序之前要有一個整體的思路,不能寫到哪里算哪里。這樣很容易遺漏,連 續(xù)性也 不好。通過本次的課程設計讓我對于數(shù)組、文件的存放、循環(huán)結(jié)構等知識有了更加透徹的 理解。希望在以后的課程設計中對于知識的運用能夠更加的熟練。代碼:# in elude <stdio.h>#inelude <stdlib.h># in elude <stri ng.h># in elude vconi o.h>#defi ne MAXNAME 11 /家庭成員姓名的最大長度#define MAXDETAIL 21/ 注最大長度自定義枚舉類型fLtype,用來表示收入與支出

12、typedef enum _fi_type(in come=1, / 收入payout =-1 支出 fiJype;/家庭財務信息結(jié)構體typedef struct JiJnfo(int year;int mon th;fiJype type;char n ame9;float mon ey;char detail11;fi nfo;/存儲財務數(shù)據(jù)結(jié)構的結(jié)構體typedef struct _fi_data(fi info info;struct fi data* n ext; fi_data;fi-data *head;/財務數(shù)據(jù)的頭結(jié)點void menu ();/ 菜單函數(shù)void add_

13、 in come();void search_ in come();void delete_ in come();void update_ in come();void addjDayout();void search_payout();void delete_payout();void update_payout();void coun t_total();void quit();/void search_data(fi_type type);void delete_data(fi_type type);void update_data(fi_type type);/void in itia

14、lize();void save_to_file();void clear_data();fi_data *get_last();fi_data *get_previous(fi_data *p);void in put_ in fo(fi_ info *in fo);void show J nfo(fi_data *p);void menu()prin tf("nn); prinprinprin tf("tt prin tf("5. printf(" 6. prin tf("ttt 7. printf(n 8.tf(Htt*nn) prin*

15、nH) 家庭財務管理系統(tǒng)n");收入管理:”);添加收入)查詢收入明細rT); 刪除收入) 修改收入n“);*prin tf("tt prin tf("1. printf(" 2. prin tf("ttt 3. printf(" 4.支出管理:”);添加支出)查詢支出明細n“);刪除支出) 修改支出n“);prin tf("tt 統(tǒng) 計:");printf("9.統(tǒng)計總收入/總支出n“);prin*n")printf(ntt 退 出:0.退出系統(tǒng) n“);prin*)void mai n()(

16、int selected=O;in itialize();while(selected>=0&&selected<=9)(system(,cls");menu();printf("tt>請選擇要進行的操作(0-9):");if(sca nf(”d”, &selected)!=1 |selected<0|selected>9)printf("tt>輸入有誤!請選擇S9)之間的數(shù)字!按任意鍵重試)getchar(); ) else ( switch(selected)(case O:exit(O);

17、clear_data();break;case 1 :add_ in come();save_to_file();break;case 2:search_ in come();break;case 3:delete_ in come();save_to_file();break;case 4:update_ in come();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;

18、case 8:update_payout();save_to_file();break;case 9:co un t_total();break;)void add_ in come() 添力I收入(fi_data *p=(fi_data *)malloc(sizeof(fi_data);p-> next=NULL;in putj nfo(&(p->i nfo);p->in fo.type=in come;if(head=NULL) head=p;elseget_last()->n ext=p;)void add_payout() 添加支出(fi_data *p

19、=(fi_data *)malloc(sizeof(fi_data); p-> next=NULL;in putj nfo(&(p->i nfo);p->in fo.type=payout;if(head=NULL) head=p;elseget_last()->n ext=p;)輸入函數(shù)void in putj nfo(fi_i nfo *info) (printf("tt> 請輸入年月(YYYY/M)");sea nf("%d/%dM,&(in fo->year),&(in fo->mo nth

20、);prin tf("tt>請輸入家庭成員姓名(最大長度為%d):'MAXNAME-1);sea nf(,%s,',i nfo-> name);printfC'tt>輸入金額:");sea nf(,'%f',&(i nfo->mo ney);printf("tt>請輸入備注(最大長度為d):“,20);sea nf("%sn,i nfo->detail);)查找數(shù)據(jù)函數(shù)void search_data(fi_type type)(int year=0;int mon th

21、=O;fi_data *p=NULL;int coun t=0;char in put=':while(l)(prin tf("tt>請輸入要查詢的年月(YYYY/M)");if(sca nf("%d/%dH, &year,&mon th)!=2)( printf("tt> 輸入有誤 nM);) else( p=head;coun t=0;while(p!=NULL)(if(p->in fo.year=year)&&(p->info.mon th=month)&&(p->

22、;in fo.type=type)( show_ in fo(p);system("PAUSE");coun t+;) p=p->n ext;)if(co un t=0)printfC'tt>沒有找到數(shù)據(jù)n");)prin tf("tt>繼續(xù)查找其他數(shù)據(jù)?(y or n)”);in put=getchar();if(i nput=y|i nput='Y,)con ti nue;elsebreak;)初始化函數(shù),讀取文本數(shù)據(jù)void in itialize()(FILE * fp=NULL;fi_data *p=NULL;

23、fi data *last=NULL;int coun t=0;fp=fope n( Hdata.txtH,"rb");if(fp=NULL)(fp=fope n( Hdata.txtH,"w");fclose(fp);retur n;)p=(fi_data*)malloc(sizeof(fi_data); memset(p,0,sizeof(fi_data);p-> next=NULL;while(fread(&(p->in fo),sizeof(fi_ in fo),1,fp)=1) if(head=NULL)head=p;els

24、e(last=get_last();last- >n ext=p;)coun t+;fseek(fp,cou nt*sizeof(fi_i nfo),SEEK_SET); p=(fi_data *)malloc(sizeof(fi_data);memset(p,0,sizeof(fi_data);p-> next=NULL;)free(p);p=NULL;fclose(fp);)顯示信息函數(shù)void show nfo(fi_data *p)(int i=0;prin tf("|tt|tt|tt|tt|tt|tt|nn);printfC'|NO.t | 年/ 月 t

25、t| 類型 tt| 姓名 tt| 金額 tt| 備注 tt|nH);prin tf("|%5dt|%4d/%02dt|%4st|%10st|%10.2f|%20s|n",i+1,p->info.year,p->info.month,p->info.type=income?"收入":“支出”,p->info.n ame,p->info.mon ey,p->in fo.detail);prin tf("|tt|tt|tt|tt|tt|tt|nn);)統(tǒng)計總收入、總支出void coun t_total()(flo

26、at total in come=0.0;float total_payout=0.0;fi_data *p=head;while(p!=NULL)(if(p->in fo.type=in come)(total_ in come+=p->info.mon ey;)else(total_payout+=p->info.mon ey;)p=p->n ext;)prin tf(',tt+tt4-tt+n,');printf("tt|合計收入t|合計支出W結(jié)余t|W);prin tf("tt%12.2f|%12.2f|%12.2f|nM,t

27、otalJ ncome,total_payout,total_i ncome -total_payout);prin tf(Htt+tt+tt+n");printf('>tt>按任意鍵返回主菜單)getchar();getchar();)保存到文件void save_to_file()(FILE *fp=fopen("data.txt","wbH);fi_data *p=head;while(p!=NULL)(fwrite(&(p->i nfo),sizeof(fi_i nfo),1,fp);fseek(fp,O,SEE

28、K_END);p=p->n ext;) fclose(fp);)修改信息函數(shù)void update_data(fi_type type)int year=0;int mon th=O;fi_data *p=NULL;fi_data *pre=NULL;char in put;int coun t=0;int i=0;while(1) prin tf("tt>請輸入要查詢的年月(YYYY/M)");if(sca nf("%d/%dH, &year,&mon th)!=2)( printf("tt> 輸入有誤 n"

29、);) else( p=head;coun t=0;while(p!=NULL)( if(p->in fo.year=year)&&(p->info.mon th=month)&&(p->in fo.type=type)(coun t+;show_ in fo(p);in putj nfo(&(p->i nfo);printf("tt修改成功 n");P=get_previous(p);)p=p->n ext;)if(co un t=0)printf("tt>沒有找到數(shù)據(jù)n");

30、prin tf("tt>繼續(xù)查找其他數(shù)據(jù)?(y or n)");in put=getchar();if(i nput=y|i nput='Y') con ti nue;elsebreak;)void delete_data(fi_type type)/刪除數(shù)據(jù)函數(shù)(int year=0;int mon th=O;fi_data *p=NULL;fi_data *pre=NULL;int coun t=0;char in put=':int i=0;while(1) prin tf(ntt>請輸入要查詢的年月(YYYY/M)");if(sca nf("%d/%d", &year,&mo nth)!=2)( printfC*tt> 輸入有誤 n) else(p=head;coun t=0;while(p!=NULL) (if(p->in fo.year=year)&&(p->info.mon th=month)&&

溫馨提示

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

評論

0/150

提交評論