




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、程序設計工程訓練報告C 語言程序設計個人財務管理系統(tǒng)課程名稱 C 語言程序設計工程訓練姓 名 院(系) 信息科學與技術學院專業(yè)班級 學 號 指導教師 教務處制目目 錄錄1.需求分析.12 系統(tǒng)總框圖和功能模塊說明 .12.1 系統(tǒng)總框圖 .12.2 功能模塊說明 .13 系統(tǒng)設計 .23.1 主要結構體 .23.2 主要功能函數(shù) .24 系統(tǒng)調試 .34.1、程序開始執(zhí)行時系統(tǒng)的所顯示的頁面:.34.2、選擇退出系統(tǒng):.34.3、選擇登陸,并且輸入的帳號和密碼都正確:.34.4、用戶輸入的帳號不正確:.44.5、用戶輸入的帳號正確,密碼不正確:.44.6、用戶進行具體操作:.55 總結 .66
2、 源程序清單 .611.需求分析編寫一個個人財政支出管理系統(tǒng),主要解決的問題是作為一個系統(tǒng)而言,它所要面對不只是某一個人而言,而是要面對很多的用戶。那么想要解決這一問題,就必須要求這個系統(tǒng)能夠存儲許多用戶的基本信息和記錄。同時也要求系統(tǒng)能夠對不同的用戶的身份進行查找和驗證。在驗證通過之后,在對其進行用戶所要求的操作。作為一個財政支出系統(tǒng),那么就要求對于用戶關于金錢的每一項操作都要有相應的記錄,同時并允許用戶對于每一條整體的記錄進行操作,例如可以根據(jù)時間來查找某一確定日期是否進行了收入或者支出的操作,也可以根據(jù)特定的需要來刪除某一條整體的記錄。但不允許對每條記錄的單項數(shù)據(jù)進行更改,因為不管是收入
3、還是支出,所涉及的金額都是固定的,時間也是固定的,所以系統(tǒng)不允許用戶對其進行操作。除此之外,還必須有足夠大的空間來存儲新的記錄。所以此程序就是基于這個思想而編寫出來的,基本滿足了用戶對于一個財政支出管理系統(tǒng)所要求的相關功能。2 系統(tǒng)總框圖和功能模塊說明2.1 系統(tǒng)總框圖個人財務管理系統(tǒng)個人財務管理系統(tǒng)輸入個人信息比對個人信息修改賬戶資料查詢賬戶信息輸出賬戶清單2.2 功能模塊說明(1)old_record( ):此函數(shù)由系統(tǒng)自行調用,作用是將所有用戶信息存入系統(tǒng)。(2)void save( ): 此函數(shù)的作用是將結構體數(shù)組中的信息寫入文件存儲,由系統(tǒng)調用。(3)load( ):此函數(shù)的作用是將
4、結構體數(shù)組中寫入文件的信息讀出,由系統(tǒng)調用。2(4)lookup_accounts( ):此函數(shù)的作用是將用戶輸入的帳號與系統(tǒng)中的所有帳號進行對比,查看系統(tǒng)中是否有此帳號。(5) check_code( ):此函數(shù)是作用是在系統(tǒng)查詢到了帳號之后,對用戶輸入的帳號和密碼進行檢驗,看是否相對應。(6)print_message( ):此函數(shù)的功能是在系統(tǒng)檢查了用戶輸入的帳號和密碼之后,如果用戶通過了系統(tǒng)的檢查,在此顯示用戶可見的基本信息。(7)find_record( ):此函數(shù)的作用是根據(jù)用戶輸入的日期進行查找操作。(8)insert_record( ):此函數(shù)的功能是在記錄中增加一條新的記錄,
5、這個記錄由用戶輸入。(9)del_record( ):此函數(shù)的功能是根據(jù)用戶的輸入的位置,將相應位置的記錄刪除。(10)sum_num( ):此函數(shù)的功能是計算所有收入和支出的總和,計算全部的收入的總合,計算全部輸出的總合。(11)打印輸出記錄的函數(shù):在本程序中一共有三個打印輸出記錄的函數(shù),分別為 all_print( ) 、acc_print( ) 、pay_print( )這三個函數(shù)。它們的功能依次是打印輸出全部記錄,打印輸出輸入記錄,打印輸出支出記錄。(12)mian( ):在主函數(shù)中,可以根據(jù)用戶的選擇來操作系統(tǒng)允許用戶使用的功能,也可以隨時退出這個系統(tǒng)。3 系統(tǒng)設計3.1 主要結構體
6、個人信息賬戶信息3.2 主要功能函數(shù)old_record( ) /將所有用戶信息存入系統(tǒng)print_message( ) /顯示用戶可見的基本信息sum_num( ) /計算所有收入和支出的總和all_print( ) 、acc_print( ) 、pay_print( ) /打印輸出全部記錄,打印輸出輸入記錄,打印輸出支出記錄34 系統(tǒng)調試4.1、程序開始執(zhí)行時系統(tǒng)的所顯示的頁面:4.2、選擇退出系統(tǒng):4.3、選擇登陸,并且輸入的帳號和密碼都正確:44.4、用戶輸入的帳號不正確:4.5、用戶輸入的帳號正確,密碼不正確:54.6、用戶進行具體操作:65 總結本程序在編寫是,主要就是基于用戶的角
7、度去分析該如何設計此程序,和編寫功能模塊的。在編寫程序時,所有的數(shù)據(jù)都是對結構體進行的操作,在此過程中,我發(fā)現(xiàn)了自己在對指針操作的時候,尤其是對指向結構體數(shù)組的指針和指向結構體的指針的操作都不夠熟練。但在編寫完此程序之后,我感覺自己對語法的應用有了明顯的提高。6 源程序清單#include#include#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 n
8、ame20; int rec_len; struct record recmax;rmax; /系統(tǒng)原有數(shù)據(jù),用戶不可知int old_record( struct list_record r)7 int i; for(i=0;i3;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,333333); strcpy( ,wa
9、ng); 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); strcpy(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); st
10、rcpy(r2.rec0.date,07-01-03); strcpy(r2.rec1.date,07-02-03); strcpy(r2.rec2.date,07-03-03); strcpy(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);8 strcpy
11、(r1.rec2.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; r1.rec0.num=-3000; r1.rec1.num=5000; r1.rec2.num=-1000; r1.re
12、c2.num=2000; r2.rec0.num=1000; r2.rec1.num=-1500; r2.rec2.num=3000; r2.rec2.num=-500; return ok;/將數(shù)據(jù)寫入文件void save( )FILE *fp; int i; if(fp=fopen(wenjian,wb)=null) printf(can not open the file.n); return; for(i=0;imax;i+)9 if(fwrite(&ri,sizeof(struct list_record),1,fp)!=1) printf(file write error.n);
13、 fclose(fp);/文件讀出void load( )FILE *fp; int i; if(fp=fopen(wenjian,rb)=null) printf(can not open infile.n); return; for(i=0;imax;i+) if(fread(&ri,sizeof(struct list_record),1,fp)!=1) if(feof(fp) (fclose(fp); return; fclose(fp);/將用戶輸入的帳號與系統(tǒng)中原有帳號比較,查找用戶帳號int lookup_accounts( struct list_record r,char a
14、cc) int i; for(i=0;i3;i+) if(strcmp(ri.account,acc)=0) return ok;10 printf(帳號不存在,請重新輸入!n); return null; /檢查密碼函數(shù) struct list_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;ia.rec_len;i+) strcpy(a.reci.da
15、te,0); strcpy(a.reci.operate,0); a.reci.num=0; for(i=0;iname); printf(帳號:%sn,(*p).account); /根據(jù)用戶輸入的日期,查找記錄int find_record( struct list_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.opera
16、te); printf(%d n,(*p).reci.num); return ok; if(i=(*p).rec_len) printf(the date is not exit!n); return null; /插入函數(shù),根據(jù)用戶輸入的信息,增加記錄int insert_record( struct list_record *p,struct record *p1,int lop) int i; if(lop(*p).rec_len+1) 12 printf(the position is wrong.n); return 0; else for(i=(*p).rec_len;ilop-
17、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; 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) in
18、t i; if(lop2(*p).rec_len) printf(the position is wrong.n); return null; else13 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
19、*p) 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); /計算總的錢數(shù)int sum_num( struct list_record *p) int i; int sum=0; int sum_in=0;14 int sum_out=0; for(i=0;i0) sum_in+=(*p).reci.num; if(*p).reci.
20、num0) sum_out+=(*p).reci.num; printf(總金額為: %dn,sum); printf(總收入為: %dn,sum_in); printf(總支出為: %dn,sum_out); return ok;/輸出收入記錄int acc_print( struct list_record *p) int i; int sum_acc=0; printf(date operate numn); for(i=0;i0) sum_acc+=(*p).reci.num; printf(%s ,(*p).reci.date); printf(%s ,(*p).reci.opera
21、te);printf(%d ,(*p).reci.num); printf(n); 15 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;irec_len;i+) if(*p).reci.num0) sum_pay+=(*p).reci.num; p
22、rintf(%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;16 int x,k,lop1,lop2; char data120; char accou20,cod20; struct record *p0; struct re
23、cord a; struct list_record b; struct list_record *p; b.rec_len=0; p0=&a; old_record(r); save( ); load( ); printf( 歡迎使用個人財政支出管理系統(tǒng)!n); printf(-n); printf(| |n); printf(| 1、登陸系統(tǒng) |n); printf(| 2、退出系統(tǒng) |n); printf(| |n); printf(-n); scanf(%d,&x); if(x=0) printf( 感謝您使用本系統(tǒng),再見!n); else do printf(請輸入帳號:); /while(j3); scanf(%s,accou); if(lookup_accounts(r,accou)17 printf(請輸入密碼:); /while(j3) scanf(%s,cod); n+; while(n3); if(n=3) printf(您的密碼不正確,請退出系統(tǒng),謝謝使用,再見!n); break; else printf(-請選擇您要進行的操作-n); printf(| |n); /while(j0) if(k=10) pr
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- VB開發(fā)流程的常見問題及答案
- 軟件考試試題及答案總結分享
- 開放源代碼軟件考試題目及答案
- 信息處理技術員考試題庫及答案
- 2025屆湖南省岳陽市汨羅市沙溪中學數(shù)學七下期末學業(yè)質量監(jiān)測試題含解析
- 兒童活動中心安全防范措施計劃
- 明確任務分工的實施方案計劃
- 校內交流與學習共享活動計劃
- 軟件水平考試信息處理試題及答案
- 教學日志撰寫要求計劃
- 分子氧氧化丙烯制環(huán)氧丙烷銅基催化劑的制備及性能研究
- GB/T 10069.3-2024旋轉電機噪聲測定方法及限值第3部分:噪聲限值
- 知道智慧網(wǎng)課《科技倫理》章節(jié)測試答案
- 【真題】2023年常州市中考道德與法治試卷(含答案解析)
- GA 1808-2022軍工單位反恐怖防范要求
- GB/T 14689-2008技術制圖圖紙幅面和格式
- 伍德里奇計量經(jīng)濟學中文答案(共175頁)
- 強制性條文監(jiān)理執(zhí)行計劃(水利水電專業(yè)工程)5-5
- 車庫頂板行車及堆載方案范本
- 關于開展超大規(guī)格防火門產(chǎn)品證書有效性重新確認換證工
- 尿素合成塔制造工藝
評論
0/150
提交評論