![C語(yǔ)言程序設(shè)計(jì)個(gè)人財(cái)務(wù)管理系統(tǒng)_第1頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/037ad9ff-2c00-479e-9206-112df24de3f2/037ad9ff-2c00-479e-9206-112df24de3f21.gif)
![C語(yǔ)言程序設(shè)計(jì)個(gè)人財(cái)務(wù)管理系統(tǒng)_第2頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/037ad9ff-2c00-479e-9206-112df24de3f2/037ad9ff-2c00-479e-9206-112df24de3f22.gif)
![C語(yǔ)言程序設(shè)計(jì)個(gè)人財(cái)務(wù)管理系統(tǒng)_第3頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/037ad9ff-2c00-479e-9206-112df24de3f2/037ad9ff-2c00-479e-9206-112df24de3f23.gif)
![C語(yǔ)言程序設(shè)計(jì)個(gè)人財(cái)務(wù)管理系統(tǒng)_第4頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/037ad9ff-2c00-479e-9206-112df24de3f2/037ad9ff-2c00-479e-9206-112df24de3f24.gif)
![C語(yǔ)言程序設(shè)計(jì)個(gè)人財(cái)務(wù)管理系統(tǒng)_第5頁(yè)](http://file3.renrendoc.com/fileroot_temp3/2022-2/23/037ad9ff-2c00-479e-9206-112df24de3f2/037ad9ff-2c00-479e-9206-112df24de3f25.gif)
版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、程序設(shè)計(jì)工程訓(xùn)練報(bào)告C語(yǔ)言程序設(shè)計(jì)個(gè)人財(cái)務(wù)管理系統(tǒng)課程名稱(chēng) C語(yǔ)言程序設(shè)計(jì)工程訓(xùn)練姓 名 院(系) 信息科學(xué)與技術(shù)學(xué)院專(zhuān)業(yè)班級(jí) 學(xué) 號(hào) 指導(dǎo)教師 教務(wù)處制目 錄1.需求分析12系統(tǒng)總框圖和功能模塊說(shuō)明12.1系統(tǒng)總框圖12.2功能模塊說(shuō)明13系統(tǒng)設(shè)計(jì)23.1主要結(jié)構(gòu)體23.2主要功能函數(shù)24系統(tǒng)調(diào)試34.1、程序開(kāi)始執(zhí)行時(shí)系統(tǒng)的所顯示的頁(yè)面:34.2、選擇退出系統(tǒng):34.3、選擇登陸,并且輸入的帳號(hào)和密碼都正確:34.4、用戶(hù)輸入的帳號(hào)不正確:44.5、用戶(hù)輸入的帳號(hào)正確,密碼不正確:44.6、用戶(hù)進(jìn)行具體操作:55總結(jié)66源程序清單61.需求分析編寫(xiě)一個(gè)個(gè)人財(cái)政支出管理系統(tǒng),主要解決的問(wèn)題是
2、作為一個(gè)系統(tǒng)而言,它所要面對(duì)不只是某一個(gè)人而言,而是要面對(duì)很多的用戶(hù)。那么想要解決這一問(wèn)題,就必須要求這個(gè)系統(tǒng)能夠存儲(chǔ)許多用戶(hù)的基本信息和記錄。同時(shí)也要求系統(tǒng)能夠?qū)Σ煌挠脩?hù)的身份進(jìn)行查找和驗(yàn)證。在驗(yàn)證通過(guò)之后,在對(duì)其進(jìn)行用戶(hù)所要求的操作。作為一個(gè)財(cái)政支出系統(tǒng),那么就要求對(duì)于用戶(hù)關(guān)于金錢(qián)的每一項(xiàng)操作都要有相應(yīng)的記錄,同時(shí)并允許用戶(hù)對(duì)于每一條整體的記錄進(jìn)行操作,例如可以根據(jù)時(shí)間來(lái)查找某一確定日期是否進(jìn)行了收入或者支出的操作,也可以根據(jù)特定的需要來(lái)刪除某一條整體的記錄。但不允許對(duì)每條記錄的單項(xiàng)數(shù)據(jù)進(jìn)行更改,因?yàn)椴还苁鞘杖脒€是支出,所涉及的金額都是固定的,時(shí)間也是固定的,所以系統(tǒng)不允許用戶(hù)對(duì)其進(jìn)行操
3、作。除此之外,還必須有足夠大的空間來(lái)存儲(chǔ)新的記錄。所以此程序就是基于這個(gè)思想而編寫(xiě)出來(lái)的,基本滿(mǎn)足了用戶(hù)對(duì)于一個(gè)財(cái)政支出管理系統(tǒng)所要求的相關(guān)功能。2系統(tǒng)總框圖和功能模塊說(shuō)明2.1系統(tǒng)總框圖個(gè)人財(cái)務(wù)管理系統(tǒng)輸入個(gè)人信息比對(duì)個(gè)人信息修改賬戶(hù)資料查詢(xún)賬戶(hù)信息輸出賬戶(hù)清單2.2功能模塊說(shuō)明(1)old_record( ):此函數(shù)由系統(tǒng)自行調(diào)用,作用是將所有用戶(hù)信息存入系統(tǒng)。(2)void save( ): 此函數(shù)的作用是將結(jié)構(gòu)體數(shù)組中的信息寫(xiě)入文件存儲(chǔ),由系統(tǒng)調(diào)用。(3)load( ):此函數(shù)的作用是將結(jié)構(gòu)體數(shù)組中寫(xiě)入文件的信息讀出,由系統(tǒng)調(diào)用。(4)lookup_accounts( ):此函數(shù)的作用
4、是將用戶(hù)輸入的帳號(hào)與系統(tǒng)中的所有帳號(hào)進(jìn)行對(duì)比,查看系統(tǒng)中是否有此帳號(hào)。(5) check_code( ):此函數(shù)是作用是在系統(tǒng)查詢(xún)到了帳號(hào)之后,對(duì)用戶(hù)輸入的帳號(hào)和密碼進(jìn)行檢驗(yàn),看是否相對(duì)應(yīng)。(6)print_message( ):此函數(shù)的功能是在系統(tǒng)檢查了用戶(hù)輸入的帳號(hào)和密碼之后,如果用戶(hù)通過(guò)了系統(tǒng)的檢查,在此顯示用戶(hù)可見(jiàn)的基本信息。(7)find_record( ):此函數(shù)的作用是根據(jù)用戶(hù)輸入的日期進(jìn)行查找操作。(8)insert_record( ):此函數(shù)的功能是在記錄中增加一條新的記錄,這個(gè)記錄由用戶(hù)輸入。(9)del_record( ):此函數(shù)的功能是根據(jù)用戶(hù)的輸入的位置,將相應(yīng)位置的
5、記錄刪除。(10)sum_num( ):此函數(shù)的功能是計(jì)算所有收入和支出的總和,計(jì)算全部的收入的總合,計(jì)算全部輸出的總合。(11)打印輸出記錄的函數(shù):在本程序中一共有三個(gè)打印輸出記錄的函數(shù),分別為all_print( )、acc_print( )、pay_print( )這三個(gè)函數(shù)。它們的功能依次是打印輸出全部記錄,打印輸出輸入記錄,打印輸出支出記錄。(12)mian( ):在主函數(shù)中,可以根據(jù)用戶(hù)的選擇來(lái)操作系統(tǒng)允許用戶(hù)使用的功能,也可以隨時(shí)退出這個(gè)系統(tǒng)。3系統(tǒng)設(shè)計(jì)3.1主要結(jié)構(gòu)體個(gè)人信息賬戶(hù)信息3.2主要功能函數(shù)old_record( ) /將所有用戶(hù)信息存入系統(tǒng)print_message
6、( ) /顯示用戶(hù)可見(jiàn)的基本信息sum_num( ) /計(jì)算所有收入和支出的總和all_print( )、acc_print( )、pay_print( ) /打印輸出全部記錄,打印輸出輸入記錄,打印輸出支出記錄4系統(tǒng)調(diào)試4.1、程序開(kāi)始執(zhí)行時(shí)系統(tǒng)的所顯示的頁(yè)面:4.2、選擇退出系統(tǒng):4.3、選擇登陸,并且輸入的帳號(hào)和密碼都正確:4.4、用戶(hù)輸入的帳號(hào)不正確:4.5、用戶(hù)輸入的帳號(hào)正確,密碼不正確:4.6、用戶(hù)進(jìn)行具體操作:5總結(jié)本程序在編寫(xiě)是,主要就是基于用戶(hù)的角度去分析該如何設(shè)計(jì)此程序,和編寫(xiě)功能模塊的。在編寫(xiě)程序時(shí),所有的數(shù)據(jù)都是對(duì)結(jié)構(gòu)體進(jìn)行的操作,在此過(guò)程中,我發(fā)現(xiàn)了自己在對(duì)指針操作的
7、時(shí)候,尤其是對(duì)指向結(jié)構(gòu)體數(shù)組的指針和指向結(jié)構(gòu)體的指針的操作都不夠熟練。但在編寫(xiě)完此程序之后,我感覺(jué)自己對(duì)語(yǔ)法的應(yīng)用有了明顯的提高。6源程序清單#include<stdio.h>#include<string.h>#define null 0#define max 20#define ok 1 struct record char date20; char operate20; int num; struct list_record char account20; char code20; char name20; int rec_len; struct record r
8、ecmax;rmax; /系統(tǒng)原有數(shù)據(jù),用戶(hù)不可知int old_record( struct list_record r) int i; for(i=0;i<3;i+) ri.rec_len=4; strcpy(r0.account,"1001"); strcpy(r1.account,"1002"); strcpy(r2.account,"1003"); strcpy(r0.code,"111111"); strcpy(r1.code,"222222"); strcpy(r2.code
9、,"333333"); strcpy( ,"wang"); strcpy( ,"li"); strcpy( ,"zhang"); strcpy(r0.rec0.date,"07-01-01"); strcpy(r0.rec1.date,"07-02-01"); strcpy(r0.rec2.date,"07-03-01"); strcpy(r0.rec3.date,"07-04-01"); st
10、rcpy(r1.rec0.date,"07-01-02"); strcpy(r1.rec1.date,"07-02-02"); strcpy(r1.rec2.date,"07-03-02"); strcpy(r1.rec3.date,"07-04-02"); strcpy(r2.rec0.date,"07-01-03"); strcpy(r2.rec1.date,"07-02-03"); strcpy(r2.rec2.date,"07-03-03"); s
11、trcpy(r2.rec3.date,"07-04-03"); strcpy(r0.rec0.operate,"in"); strcpy(r0.rec1.operate,"out"); strcpy(r0.rec2.operate,"in"); strcpy(r0.rec3.operate,"out"); strcpy(r1.rec0.operate,"out"); strcpy(r1.rec1.operate,"in"); strcpy(r1.rec2.
12、operate,"out"); strcpy(r1.rec3.operate,"in"); strcpy(r2.rec0.operate,"in"); strcpy(r2.rec1.operate,"out"); strcpy(r2.rec2.operate,"in"); strcpy(r2.rec3.operate,"out"); r0.rec0.num=3000; r0.rec1.num=-1500; r0.rec2.num=2500; r0.rec3.num=-1000
13、; r1.rec0.num=-3000; r1.rec1.num=5000; r1.rec2.num=-1000; r1.rec2.num=2000; r2.rec0.num=1000; r2.rec1.num=-1500; r2.rec2.num=3000; r2.rec2.num=-500; return ok;/將數(shù)據(jù)寫(xiě)入文件void save( )FILE *fp; int i; if(fp=fopen("wenjian","wb")=null) printf("can not open the file.n"); retur
14、n; for(i=0;i<max;i+) if(fwrite(&ri,sizeof(struct list_record),1,fp)!=1) printf("file write error.n"); fclose(fp);/文件讀出void load( )FILE *fp; int i; if(fp=fopen("wenjian","rb")=null) printf("can not open infile.n"); return; for(i=0;i<max;i+) if(fread(&
15、amp;ri,sizeof(struct list_record),1,fp)!=1) if(feof(fp) (fclose(fp); return; fclose(fp);/將用戶(hù)輸入的帳號(hào)與系統(tǒng)中原有帳號(hào)比較,查找用戶(hù)帳號(hào)int lookup_accounts( struct list_record r,char acc) int i; for(i=0;i<3;i+) if(strcmp(ri.account,acc)=0) return ok; printf("帳號(hào)不存在,請(qǐng)重新輸入!n"); return null; /檢查密碼函數(shù) struct list_
16、record check_code(struct list_record r,char acc,char c) int i; struct list_record a; strcpy(a.account,"0"); strcpy(a.code,"0"); a.rec_len=0; for(i=0;i<a.rec_len;i+) strcpy(a.reci.date,"0"); strcpy(a.reci.operate,"0"); a.reci.num=0; for(i=0;i<3;i+) if(str
17、cmp(ri.account,acc)=0) if(strcmp(ri.code,c)=0) return ri; printf("the code is wrong,please input again!n"); return a; /顯示用戶(hù)基本信息void print_message( struct list_record *p)printf("姓名:%sn",p->name); printf("帳號(hào):%sn",(*p).account); /根據(jù)用戶(hù)輸入的日期,查找記錄int find_record( struct li
18、st_record *p,char d) int i; for(i=0;i<(*p).rec_len;i+) if(strcmp(*p).reci.date,d)=0) printf("date operate moneyn"); printf("%s ",(*p).reci.date); printf("%s ",(*p).reci.operate); printf("%d n",(*p).reci.num); return ok; if(i=(*p).rec_len) printf("the d
19、ate is not exit!n"); return null; /插入函數(shù),根據(jù)用戶(hù)輸入的信息,增加記錄int insert_record( struct list_record *p,struct record *p1,int lop) int i; if(lop<1)|(lop>(*p).rec_len+1) printf("the position is wrong.n"); return 0; else for(i=(*p).rec_len;i>lop-1;i-) strcpy(*p).reci.date,(*p).reci-1.da
20、te); strcpy(*p).reci.operate,(*p).reci-1.operate); (*p).reci.num=(*p).reci-1.num; strcpy(p->reci.date,p1->date); strcpy(*p).reci.operate,(*p1).operate); (*p).reci.num=(*p1).num; (*p).rec_len+; return ok;/ 刪除記錄函數(shù)int del_record( struct list_record *p,int lop2) int i; if(lop2<1)|(lop2>(*p).
21、rec_len) printf("the position is wrong.n"); return null; else for(i=lop2-1;i<(*p).rec_len-1;i+) strcpy(*p).reci.date,(*p).reci+1.date); strcpy(*p).reci.operate,(*p).reci+1.operate); (*p).reci.num=(*p).reci+1.num; (*p).rec_len-; return ok; /輸出全部記錄函數(shù) void all_print( struct list_record *p)
22、 int i; printf("date operate numn"); for(i=0;i<(*p).rec_len;i+) printf("%s ",(*p).reci.date); printf("%s ",(*p).reci.operate); printf("%d ",(*p).reci.num); printf("n"); /計(jì)算總的錢(qián)數(shù)int sum_num( struct list_record *p) int i; int sum=0; int sum_in=0; int
23、 sum_out=0; for(i=0;i<(*p).rec_len;i+) sum+=(*p).reci.num; if(*p).reci.num>0) sum_in+=(*p).reci.num; if(*p).reci.num<0) sum_out+=(*p).reci.num; printf("總金額為: %dn",sum); printf("總收入為: %dn",sum_in); printf("總支出為: %dn",sum_out); return ok;/輸出收入記錄int acc_print( str
24、uct list_record *p) int i; int sum_acc=0; printf("date operate numn"); for(i=0;i<(*p).rec_len;i+) if(*p).reci.num>0) sum_acc+=(*p).reci.num; printf("%s ",(*p).reci.date); printf("%s ",(*p).reci.operate);printf("%d ",(*p).reci.num); printf("n");
25、 printf("總收入金額為: %dn",sum_acc); return ok; if(sum_acc=0) printf("there is no account.n"); return null;/輸出支出記錄 int pay_print( struct list_record *p)int i; int sum_pay=0; printf("date operate numn"); for(i=0;i<p->rec_len;i+) if(*p).reci.num<0) sum_pay+=(*p).reci.
26、num; printf("%s ",(*p).reci.date); printf("%s ",(*p).reci.operate);printf("%d ",(*p).reci.num); printf("n"); printf("總的支出為: %dn",sum_pay); return ok; if(sum_pay=0) printf("there is no payout.n"); return null; void main( ) int j=0,n=0; int x
27、,k,lop1,lop2; char data120; char accou20,cod20; struct record *p0; struct record a; struct list_record b; struct list_record *p; b.rec_len=0; p0=&a; old_record(r); save( ); load( ); printf(" 歡迎使用個(gè)人財(cái)政支出管理系統(tǒng)!n"); printf("-n"); printf("| |n"); printf("| 1、登陸系統(tǒng) |n&
28、quot;); printf("| 2、退出系統(tǒng) |n"); printf("| |n"); printf("-n"); scanf("%d",&x); if(x=0) printf(" 感謝您使用本系統(tǒng),再見(jiàn)!n"); else do printf("請(qǐng)輸入帳號(hào):"); /while(j<3); scanf("%s",accou); if(lookup_accounts(r,accou) printf("請(qǐng)輸入密碼:")
29、; /while(j<3); scanf("%s",cod); b=check_code(r,accou,cod); if(b.rec_len=0) do b=check_code(r,accou,cod); /while(n>3) scanf("%s",cod); n+; while(n<3); if(n=3) printf("您的密碼不正確,請(qǐng)退出系統(tǒng),謝謝使用,再見(jiàn)!n"); break; else printf("-請(qǐng)選擇您要進(jìn)行的操作-n"); printf("| |n&quo
30、t;); /while(j<3); printf("| 2、查找記錄 |n"); printf("| 3、增加記錄 |n"); printf("| 4、刪除記錄 |n"); printf("| 5、輸出所有記錄 |n"); printf("| 6、輸出所有收入記錄 |n"); printf("| 7、輸出所有支出記錄 |n"); printf("| |n"); printf("-|n"); p=&b; print_message(p); do scanf("%d",&k); /whi
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年電子系統(tǒng)項(xiàng)目可行性研究報(bào)告
- 成都2025年四川省成都市雙流區(qū)西航港第二初級(jí)中學(xué)招聘教師3人筆試歷年參考題庫(kù)附帶答案詳解
- 2025年智能泥漿儲(chǔ)量檢測(cè)儀項(xiàng)目可行性研究報(bào)告
- 2025年摩托車(chē)大架項(xiàng)目可行性研究報(bào)告
- 2025年對(duì)開(kāi)機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年可調(diào)開(kāi)電源項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國(guó)不銹鋼化妝鏡行業(yè)投資前景及策略咨詢(xún)研究報(bào)告
- 2025年三層氣泡膜機(jī)組項(xiàng)目可行性研究報(bào)告
- 2025至2030年集裝箱標(biāo)角件項(xiàng)目投資價(jià)值分析報(bào)告
- 2025至2030年通訊口光隔離保護(hù)器項(xiàng)目投資價(jià)值分析報(bào)告
- (2024年)保安培訓(xùn)圖文課件
- 專(zhuān)題16.7 二次根式章末八大題型總結(jié)(拔尖篇)-八年級(jí)數(shù)學(xué)下冊(cè)(人教版)(解析版)
- 如何提高調(diào)查研究能力
- 電網(wǎng)兩票培訓(xùn)課件
- 改革開(kāi)放教育援藏的創(chuàng)新及其成效
- 小學(xué)科學(xué)人教鄂教版四年級(jí)下冊(cè)全冊(cè)教案2023春
- 第3課+中古時(shí)期的西歐(教學(xué)設(shè)計(jì))-【中職專(zhuān)用】《世界歷史》(高教版2023基礎(chǔ)模塊)
- 2024年南通建筑電工證考試題模擬試題電工培訓(xùn)試題及答案(全國(guó)通用)
- 班組建設(shè)工作匯報(bào)
- 遛狗行業(yè)市場(chǎng)分析
- 2025小學(xué)道德與法治開(kāi)學(xué)第一課(思想政治理論教育課)
評(píng)論
0/150
提交評(píng)論