個人帳簿管理系統(tǒng)設(shè)計-數(shù)據(jù)結(jié)構(gòu)_第1頁
個人帳簿管理系統(tǒng)設(shè)計-數(shù)據(jù)結(jié)構(gòu)_第2頁
個人帳簿管理系統(tǒng)設(shè)計-數(shù)據(jù)結(jié)構(gòu)_第3頁
個人帳簿管理系統(tǒng)設(shè)計-數(shù)據(jù)結(jié)構(gòu)_第4頁
個人帳簿管理系統(tǒng)設(shè)計-數(shù)據(jù)結(jié)構(gòu)_第5頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、- -計算機(jī)學(xué)院信管專業(yè)數(shù)據(jù)結(jié)構(gòu)課程設(shè)計題 目: 個人帳簿管理系統(tǒng)設(shè)計 班 級: 姓 名: 學(xué) 號: 同組人: 起 迄 日 期 課程設(shè)計地點(diǎn): 指導(dǎo)教師: 評閱意見:成績評定:評閱人: 日期:完成日期:2021年12月目錄第一章 前言2第二章 系統(tǒng)功能分析21. 功能22. 要求23. 系統(tǒng)功能需求2第三章 總體設(shè)計31. 系統(tǒng)設(shè)計32. 分塊設(shè)計3第四章 調(diào)試結(jié)果和測試分析91. 主界面102.錄入數(shù)據(jù)103.查看數(shù)據(jù)114.修改數(shù)據(jù)115.查詢數(shù)據(jù)116.排序數(shù)據(jù)127.刪除數(shù)據(jù)12第五章 總結(jié)心得體會12第六章 參考文獻(xiàn)13第七章 致謝14第八章 附錄14第一章 前言:程序設(shè)計過程有如解

2、決一個實際問題,從解決實際問題的角度,我們可以這樣來看:首先要了解這個問題的根本要求,即輸入、輸出、完成從輸入到輸出的要求是什么;其次,從問題的要害入手,從前到后的解決問題的每個方面,即從輸入開始入手,著重考慮如何從輸入導(dǎo)出輸出,在這個過程中,可確定所需的變量、數(shù)組、指針、鏈表、命令、函數(shù),然后確定處理過程算法??傻米詈蠼Y(jié)果這次我們組要解決的實際問題是個人賬簿管理系統(tǒng)的設(shè)計,我們將嚴(yán)格按照程序設(shè)計的過程來完成這一個課題的設(shè)計第二章 系統(tǒng)功能分析1. 功能:個人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項開支情況,包括食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲蓄等。進(jìn)入系統(tǒng)后可以輸入和修改某月

3、的收支情況,可以對每月的開支從小到大進(jìn)行排序,可以根據(jù)輸入的月份查詢每月的收支情況。2. 要求:1界面友好,函數(shù)功能要劃分好2總體設(shè)計應(yīng)畫一流程圖3程序要加必要的注釋4要提供程序測試方案5) 程序一定要經(jīng)得起測試,寧可功能少一些,也要能運(yùn)行起來,不能運(yùn)行的程序是沒有價值的。3. 系統(tǒng)功能需求分析1.文件操作功能:自動加載和保存數(shù)據(jù)文件。2.數(shù)據(jù)輸入功能:可以按提示錄入各項數(shù)據(jù)。3.數(shù)據(jù)修改功能:可以按提示修改各項數(shù)據(jù)。4.查詢功能:可按月份、食品消費(fèi)進(jìn)行特定查詢,及顯示全部數(shù)據(jù)。5.排序功能:完成對每月開支的排序。6.刪除功能:可以按提示刪除一些數(shù)據(jù)。7.轉(zhuǎn)碼功能:我們對文件用的是dat的形式

4、,設(shè)計轉(zhuǎn)碼功能,將它轉(zhuǎn)為txt形式。第三章 總體設(shè)計1. 系統(tǒng)分析按系統(tǒng)分析的功能要求將系統(tǒng)劃分為以下幾個主要功能模塊: 結(jié)構(gòu)圖 主菜單錄入數(shù)據(jù)修改數(shù)據(jù)查詢數(shù)據(jù)刪除數(shù)據(jù)排序退出2. 分塊設(shè)計 1主界面設(shè)計void menu(void) int item; int mon; Infor *a; a=(Infor *)malloc(sizeof(Infor); do printf("個人帳簿管理系統(tǒng)設(shè)計n"); printf("1.錄 入 數(shù) 據(jù)n"); printf("2.查 看 數(shù) 據(jù)n"); printf("3.修 改 數(shù)

5、 據(jù)n"); printf("4.查 詢 數(shù) 據(jù)n"); printf("5.排 序 數(shù) 據(jù)n"); printf("6.刪 除 數(shù) 據(jù)n"); printf("7.退 出 系 統(tǒng)n"); printf("請輸入要進(jìn)行的操作: " ); scanf("%d",&item); while(item>6 | item<-1);2錄入功能設(shè)計void input(Infor *newI) printf("n依次輸入數(shù)據(jù):n(本月月份 食品消費(fèi)

6、 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 收入費(fèi)用)n"); scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->spxf,&newI->fzfy,&newI->znjy,&newI->sdfy,&newI->ylfy,&newI->cxfy,&newI->srfy); fflush(stdin); 3修改功能設(shè)計void modify(Infor *a,int mon) FILE *fp1,*fp2; I

7、nfor *b; b=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,"rt"); fp2=fopen("temp.dat","wt+"); rewind(fp1); fread(b,sizeof(Infor),1,fp1); while (!feof(fp1) if(b->month=mon) fwrite(a,sizeof(Infor),1,fp2); else fwrite(b,sizeof(Infor),1,fp2); fread(b,sizeof(Infor),1,

8、fp1); fclose(fp1); fclose(fp2); remove(FilePath1);/刪除源文件 rename("temp.dat",FilePath1);/重命名中間文件 printf("修改數(shù)據(jù)成功!n" ); changeFormat(); 4查詢功能設(shè)計Status search(Infor *a) FILE *fp1; int mon; int isfound=0; printf("請正確輸入要查詢的月份:"); scanf("%d",&mon); fflush(stdin); f

9、p1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("無法找到文件:%sn",FilePath1); return Error; /返回主函數(shù) rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1) if(a->month=mon) isfound=1; break; else isfound=0; fread(a,sizeof(Infor),1,fp1); fclose(fp1); if(isfound) return OK; else re

10、turn NotFound; 5刪除功能設(shè)計void delRecord(int mon) FILE *fp1,*fp2; Infor *b; b=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,"rt"); fp2=fopen("temp.dat","wt+"); rewind(fp1); fread(b,sizeof(Infor),1,fp1); while (!feof(fp1) if(b->month!=mon) fwrite(b,sizeof(Infor),1,fp

11、2); fread(b,sizeof(Infor),1,fp1); fclose(fp1); fclose(fp2); remove(FilePath1);/刪除源文件 rename("temp.dat",FilePath1);/重命名中間文件 printf("刪除數(shù)據(jù)成功!n" ); changeFormat(); 6排序功能設(shè)計void paixu(Infor *a) int i=0,j=0,flag=0,t; pType px8=0,0; char str810="記錄月份","食品消費(fèi)","房租費(fèi)

12、用","子女費(fèi)用","水電費(fèi)用","醫(yī)療費(fèi)用","儲蓄費(fèi)用","本月收入" for(;i<8;i+) pxi.no=i; px0.data=a->month; px1.data=a->spxf; px2.data=a->fzfy; px3.data=a->znjy; px4.data=a->sdfy; px5.data=a->ylfy; px6.data=a->cxfy; px7.data=a->srfy; for(i=1;i<

13、;8;i+) flag=0; for(j=0;j<8-i;j+) if(pxj.data>pxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1.no; pxj+1.no=t; flag=1; if(flag=0) break; printf("n"); for(i=0;i<8;i+) printf(" %s",strpxi.no); printf("n- n"); for(i=0;i<8;i+) pri

14、ntf("%8d ",pxi.data); printf("n"); 第四章 調(diào)試結(jié)果與測試分析1. 主界面2. 錄入數(shù)據(jù)3. 查看數(shù)據(jù)4. 修改數(shù)據(jù)5. 查詢數(shù)據(jù)6. 排序數(shù)據(jù)7. 刪除數(shù)據(jù)第五章 總結(jié)心得體會在這次的課程設(shè)計,我發(fā)現(xiàn)了自己還有很多的缺乏,在數(shù)據(jù)結(jié)構(gòu)操作方面還有很多的不會。還需要更加深入的學(xué)習(xí)。通過此次的課程設(shè)計,在大一語言學(xué)習(xí)的根底上,我較為深入的掌握了數(shù)據(jù)結(jié)構(gòu)與算法的設(shè)計方法,具備了一定的獨(dú)立分析和設(shè)計能力和初步掌握軟件開發(fā)過程的問題分析、系統(tǒng)設(shè)計、程序編碼、測試等根本方法和技能。第六章 參考文獻(xiàn)1. 嚴(yán)蔚敏 吳偉民?數(shù)據(jù)結(jié)構(gòu)?C語

15、言版清華大學(xué)出版社 2007 2.催俊凱。計算機(jī)軟件根底。機(jī)械工業(yè)出版社。2007.73.唐發(fā)根。數(shù)據(jù)結(jié)構(gòu)教程第二版。北京航空航天大學(xué)出版社。2005.54.譚浩強(qiáng)。C程序設(shè)計第三版。清華大學(xué)出版社。20055.王宏生,宋繼紅。數(shù)據(jù)結(jié)構(gòu)。北京:國防工業(yè)出版社,2006.16.李建學(xué),李光元,吳春芳。數(shù)據(jù)結(jié)構(gòu)課程設(shè)計案例精編用C/C+描述。北京:清華大學(xué)出版社。2007.213參考資料第七章 致謝感謝隊友的幫助,在我一些不懂的地方給予了我及時的幫助感謝席老師的輔導(dǎo),在有些方面自己和同組人還有好多的不會,不過經(jīng)過老師的輔導(dǎo)還是成功編寫了出來第八章 附錄源程序:#include <stdio.

16、h> #include <stdlib.h> #include <memory.h> #include <windows.h> /文件保存路徑 #define FilePath1 "Myinfor.dat" #define FilePath2 "Myinfor.txt" /查詢用聲明 #define Status int #define OK 1 #define Error 0 #define NotFound 2 typedef struct int month;/月份 int spxf;/食品消費(fèi) int f

17、zfy;/房租費(fèi)用 int znjy;/子女教育費(fèi)用 int sdfy;/水電費(fèi)用 int ylfy;/醫(yī)療費(fèi)用 int cxfy;/儲蓄費(fèi)用 int srfy;/收入費(fèi)用 Infor; typedef struct / 查詢用自定義數(shù)據(jù)類型 int no; int data; pType; void menu(void); /菜單 void input(Infor *newI); /接收鍵盤輸入 void writeinfor(Infor *newI);/向文件內(nèi)寫入內(nèi)容 void changeFormat(void );/將dat格式文件轉(zhuǎn)換為txt文件 Status search(Inf

18、or *a);/查詢函數(shù)返回查詢的結(jié)果及查詢的狀態(tài) void paixu(Infor *a);/對查詢據(jù)結(jié)果排序 void modify(Infor *a,int mon);/修改數(shù)據(jù) void delRecord(int mon);/刪除數(shù)據(jù) void main() while(1) menu(); void menu(void) int item; int mon; Infor *a; a=(Infor *)malloc(sizeof(Infor); do printf("個人帳簿管理系統(tǒng)設(shè)計n"); printf("1.錄 入 數(shù) 據(jù)n"); pr

19、intf("2.查 看 數(shù) 據(jù)n"); printf("3.修 改 數(shù) 據(jù)n"); printf("4.查 詢 數(shù) 據(jù)n"); printf("5.排 序 數(shù) 據(jù)n"); printf("6.刪 除 數(shù) 據(jù)n"); printf("7.退 出 系 統(tǒng)n"); printf("請輸入要進(jìn)行的操作: " ); scanf("%d",&item); while(item>6 | item<-1); switch(item)

20、 /退出程序 case 0: getchar(); getchar(); exit(1); break; /錄入數(shù)據(jù) case 1: input(a); writeinfor(a); break; /查看數(shù)據(jù) case 2: changeFormat(); break; /修改數(shù)據(jù) case 3: item=search(a); mon=a->month; if (item!=OK) printf("n沒有符合條件的記錄!n"); else printf("n錄月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 本月收入 n"); p

21、rintf("- n"); printf("%7d %8d %8d %8d %8d %8d %8d %8d/n",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); input(a); modify(a,mon); break; /查詢數(shù)據(jù) case 4: item=search(a); if (item!=OK) printf("n沒有符合條件的記錄!n"); else printf("n記錄月

22、份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 本月收入 n"); printf("- n"); printf("%7d %8d %8d %8d %8d %8d %8d %8d/n",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); break; /排序數(shù)據(jù) case 5: item=search(a); if (item!=OK) printf("n沒有符合條件的記錄!n");

23、 else paixu(a); break; /刪除數(shù)據(jù) case 6: item=search(a); mon=a->month; if (item!=OK) printf("n沒有符合條件的記錄!n"); else printf("n記錄月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 本月收入 n"); printf("- n"); printf("%7d %8d %8d %8d %8d %8d %8d %8d/n",a->month,a->spxf,a->fzfy,a

24、->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); delRecord(mon); break; free(a);/釋放內(nèi)存空間 void input(Infor *newI) printf("n依次輸入數(shù)據(jù):n(本月月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 收入費(fèi)用)n"); scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->spxf,&newI->fzfy,&newI->z

25、njy,&newI->sdfy,&newI->ylfy,&newI->cxfy,&newI->srfy); fflush(stdin); void writeinfor(Infor *newI) FILE *fp; fp=fopen(FilePath1,"ab+"); if(fp=NULL) printf("無法創(chuàng)立文件:%s",FilePath1); exit(0); fwrite(newI,sizeof(Infor),1,fp); fclose(fp); printf("數(shù)據(jù)錄入成功!

26、n"); void changeFormat(void) /暫時只能操作一行文件有待改良 FILE *fp1,*fp2; Infor *a; a=(Infor *)malloc(sizeof(Infor); fp1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("無法找到文件:%sn",FilePath1); return ; /返回主函數(shù) fp2=fopen(FilePath2,"wt+"); if(fp2=NULL) printf("無法創(chuàng)立文件:%sn",F

27、ilePath2); return ; /返回主函數(shù) fputs(" n個人帳簿管理系統(tǒng)n",fp2); fputs("記錄月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 本月收入n",fp2); fputs("- n",fp2); printf("n記錄月份 食品消費(fèi) 房租費(fèi)用 子女費(fèi)用 水電費(fèi)用 醫(yī)療費(fèi)用 儲蓄費(fèi)用 本月收入 n"); printf("- n"); rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(

28、fp1) printf("%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); fprintf(fp2,"%7d %8d %8d %8d %8d %8d %8d %8dn",a->month,a->spxf,a->fzfy,a->znjy,a->sdfy,a->ylfy,a->cxfy,a->srfy); frea

29、d(a,sizeof(Infor),1,fp1); fputs("- n",fp2); fputs("關(guān)閉本程序繼續(xù)原程序!n",fp2); fclose(fp1); fclose(fp2); system(FilePath2); /調(diào)用翻開轉(zhuǎn)換的文本文件 remove(FilePath2);/刪除文本文件文件 Status search(Infor *a) FILE *fp1; int mon; int isfound=0; printf("請正確輸入要查詢的月份:"); scanf("%d",&mon)

30、; fflush(stdin); fp1=fopen(FilePath1,"rb+"); if(fp1=NULL) printf("無法找到文件:%sn",FilePath1); return Error; /返回主函數(shù) rewind(fp1); fread(a,sizeof(Infor),1,fp1); while(!feof(fp1) if(a->month=mon) isfound=1; break; else isfound=0; fread(a,sizeof(Infor),1,fp1); fclose(fp1); if(isfound)

31、return OK; else return NotFound; void paixu(Infor *a) int i=0,j=0,flag=0,t; pType px8=0,0; char str810="記錄月份","食品消費(fèi)","房租費(fèi)用","子女費(fèi)用","水電費(fèi)用","醫(yī)療費(fèi)用","儲蓄費(fèi)用","本月收入" for(;i<8;i+) pxi.no=i; px0.data=a->month; px1.data=a-&g

32、t;spxf; px2.data=a->fzfy; px3.data=a->znjy; px4.data=a->sdfy; px5.data=a->ylfy; px6.data=a->cxfy; px7.data=a->srfy; for(i=1;i<8;i+) flag=0; for(j=0;j<8-i;j+) if(pxj.data>pxj+1.data) t=pxj.data; pxj.data=pxj+1.data; pxj+1.data=t; t=pxj.no; pxj.no=pxj+1.no; pxj+1.no=t; flag=1; if(flag=0) break; printf("n"); for(i=0;i<8;i+) printf(" %s"

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論