




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
/數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)報(bào)告?zhèn)€人帳簿管理系統(tǒng)設(shè)計(jì)2010年01月21日目錄1.引言(1)2需求分析(2)3概要設(shè)計(jì)(4)4具體設(shè)計(jì)(5)5測試結(jié)果(6)6設(shè)計(jì)體會(huì)(12)7結(jié)束語(13)8參考文獻(xiàn)(11)摘要該課程設(shè)計(jì)主要設(shè)計(jì)個(gè)人賬簿管理系統(tǒng)以記錄某人每月的全部收入及各項(xiàng)開支狀況,包括食品消費(fèi),房租,子女教化費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等。在課程設(shè)計(jì)中,用到了C語言以及數(shù)據(jù)結(jié)構(gòu)中的相關(guān)學(xué)問,當(dāng)然也有少數(shù)參考了其他人對(duì)某些問題的處理閱歷。對(duì)于進(jìn)入系統(tǒng)后可以輸入和修改某月的收支狀況,可以對(duì)每月的開支從小到大進(jìn)行排序,可以依據(jù)輸入的月份查詢每月的收支狀況。在程序設(shè)計(jì)中,添加了運(yùn)用說明和幫助事項(xiàng),并且采納了面對(duì)對(duì)象這種解決問題的方法。程序通過調(diào)試運(yùn)行,初步是想了設(shè)計(jì)目標(biāo),并且經(jīng)過適當(dāng)完善后,將可以應(yīng)用在個(gè)人理財(cái)解決實(shí)際問題。一引言本課程設(shè)計(jì)主要解決在個(gè)人帳簿管理系統(tǒng)記錄某人每月的全部收入及各項(xiàng)開支狀況,包括食品消費(fèi),房租,子女教化費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等。進(jìn)入系統(tǒng)后可以輸入和修改某月的收支狀況,可以對(duì)每月的開支從小到大進(jìn)行排序,可以依據(jù)輸入的月份查詢每月的收支狀況。現(xiàn)在是一個(gè)科技文化飛速發(fā)展的時(shí)代,家家戶戶都可以見到計(jì)算機(jī)的影子,我們平常的生活,工作以及學(xué)習(xí)和消遣都和電腦有著親密的聯(lián)系。隨著經(jīng)濟(jì)的發(fā)展,理財(cái)成為我們生活中不行缺少的內(nèi)容,理財(cái)?shù)闹匾宰圆淮浴R虼?,特別有必要設(shè)計(jì)一個(gè)個(gè)人帳薄管理系統(tǒng),它能夠?yàn)槲覀兗彝ド顐€(gè)人理財(cái)供應(yīng)諸多便利,使理財(cái)更系統(tǒng),更精確。作為計(jì)算機(jī)應(yīng)用的一部分,運(yùn)用計(jì)算機(jī)供應(yīng)個(gè)人帳薄管理系統(tǒng),既繼承了傳統(tǒng)理財(cái)形式,也克服了人工理財(cái)?shù)暮芏嗳秉c(diǎn),譬如:計(jì)算困難,會(huì)時(shí)有錯(cuò)誤,而用計(jì)算機(jī)處理的話這種錯(cuò)誤可以輕易避開;輸入便利,節(jié)約了理財(cái)人的時(shí)間,提高效率和精確度。查詢便利、信息具體清楚。便于理財(cái)。二需求分析個(gè)人帳薄管理系統(tǒng)具有良好的性能和好用的功能,其性能的良好表現(xiàn)為:輸入性強(qiáng)、檢索快速、查詢便利、牢靠性高等,其好用的功能表現(xiàn)為:由于個(gè)人理財(cái)所要記載的項(xiàng)目比較瑣碎,查詢不便利,簡潔搞錯(cuò)依次,應(yīng)用該管理系統(tǒng)可以輸入隨意每月開支狀況,不但不會(huì)輕易犯錯(cuò),而且可以簡潔修改每月的記錄,包括食品消費(fèi),房租,子女教化費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等。節(jié)約時(shí)間和空間,這些優(yōu)點(diǎn)能夠促進(jìn)優(yōu)化家庭及財(cái)政管理,促進(jìn)財(cái)政管理的科技化和現(xiàn)代化。個(gè)人帳薄管理系統(tǒng)可以為用戶供應(yīng)隨意月份的查詢,月份消費(fèi)信息包括食品消費(fèi),房租,子女教化費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄,具體信息如表2-1所示。表2-1個(gè)人開支項(xiàng)目信息表數(shù)字編號(hào)名稱具體信息1錄入數(shù)據(jù)錄入個(gè)人每月份的開支狀況2查看數(shù)據(jù)查看所錄入月份的開支狀況3修改數(shù)據(jù)假如錄入開清狀況有誤,可以修改4查詢數(shù)據(jù)可以查詢?nèi)吭路莸拈_支狀況5排序數(shù)據(jù)可以把所要查詢的月份的開支狀況按從小到大排列6刪除數(shù)據(jù)刪除所輸入月份的數(shù)據(jù)0退出系統(tǒng)退出系統(tǒng)三概要設(shè)計(jì)設(shè)計(jì)本系統(tǒng),首先要細(xì)致研讀老是給的題目要求,細(xì)致分析設(shè)計(jì)該題須要用到的技術(shù)和學(xué)問,同時(shí)應(yīng)當(dāng)主動(dòng)查詢相關(guān)資料,復(fù)習(xí)有關(guān)學(xué)問,不懂的地方多向同學(xué)以及摯友提問,從而達(dá)到事半功倍的想過,也可以參考網(wǎng)上的有關(guān)學(xué)問幫助有自己解答,總之,就是動(dòng)用一切可以動(dòng)用的力氣,達(dá)到充溢自己的目的!以下為該設(shè)計(jì)系統(tǒng)流程圖起先結(jié)束0退出系統(tǒng)6刪除數(shù)據(jù)5排序數(shù)據(jù)4查詢數(shù)據(jù)3修改數(shù)據(jù)2查詢數(shù)據(jù)1錄入數(shù)據(jù)菜單起先結(jié)束0退出系統(tǒng)6刪除數(shù)據(jù)5排序數(shù)據(jù)4查詢數(shù)據(jù)3修改數(shù)據(jù)2查詢數(shù)據(jù)1錄入數(shù)據(jù)菜單圖3.0四具體設(shè)計(jì)1算法設(shè)計(jì)(1)錄入、查詢、修改、刪除數(shù)據(jù)。建立一個(gè)文件,包括某人5個(gè)月的開支狀況,對(duì)文件中的信息擴(kuò)充,包括修改,刪除等。所以先確定文件保存路徑,接受鍵盤輸入,像文件內(nèi)寫入內(nèi)容,將dat格式文件轉(zhuǎn)換為txt文件,查詢用聲明,自定義數(shù)據(jù)類型,然后返回查詢結(jié)果及查詢狀態(tài),繼而對(duì)查詢結(jié)果排序。刪除數(shù)據(jù)時(shí),先調(diào)用打開轉(zhuǎn)換的文本文件。修改數(shù)據(jù)時(shí),要重寫數(shù)據(jù),刪除源文件,重命名中間文件,顯示新的數(shù)據(jù)。(2)起泡排序起泡排序是每趟把當(dāng)先序列中最小的元素放在起先位置,是交換排序中最簡潔的排序方法,其基本思想是:兩兩比較相鄰記錄的關(guān)鍵碼,假如反序則交換,值到?jīng)]有反序的記錄為止,將整個(gè)待排序的記錄序列分成為有序區(qū)和無序區(qū),初始狀態(tài)有序區(qū)為空,無序區(qū)包括全部待排序的記錄。對(duì)無序去從前向后依次將相鄰記錄的關(guān)鍵碼進(jìn)行比較,若反序則交換,從而使得關(guān)鍵碼曉得記錄向前移,關(guān)鍵碼大的記錄向后移(像水中的氣泡,體積大的先浮現(xiàn)來)。重復(fù)執(zhí)行,之前無序區(qū)中沒有反序的記錄。確定每趟范圍。(3)其基本思想是:先確定文件保存路徑,建立一個(gè)文件,錄入個(gè)人5個(gè)月的開支狀況,對(duì)文件中的信息擴(kuò)充,包括修改,刪除等。接受鍵盤輸入,向文件內(nèi)寫入內(nèi)容,將dat格式文件轉(zhuǎn)換為txt文件,然后輸入2進(jìn)行查看,查看所錄入的數(shù)據(jù),假如數(shù)據(jù)有誤,可以輸入3修改數(shù)據(jù),輸入4查詢?nèi)吭路莸拈_支狀況,系統(tǒng)自動(dòng)啟用氣泡排序?qū)?shù)據(jù)細(xì)心兩兩比較,按從小到大的依次排列。2實(shí)現(xiàn)代碼#include<stdio.h>#include<stdlib.h>#include<memory.h>#include<windows.h>//文件保存路徑#defineFilePath1"Myinfor.dat"#defineFilePath2"Myinfor.txt"http://查詢用聲明#defineStatusint#defineOK1#defineError0#defineNotFound2typedefstruct{intmonth;//月份intfood;//食品消費(fèi)inthouse;//房租費(fèi)用intedu;//子女教化費(fèi)用intelc;//水電費(fèi)用inthealth;//醫(yī)療費(fèi)用intstore;//儲(chǔ)蓄費(fèi)用intincome;//收入費(fèi)用}Infor;typedefstruct{//查詢用自定義數(shù)據(jù)類型intno;intdata;}pType;voidmenu(void);//菜單voidinput(Infor*newI);//接收鍵盤輸入voidwriteinfor(Infor*newI);//向文件內(nèi)寫入內(nèi)容voidchangeFormat(void);//將dat格式文件轉(zhuǎn)換為txt文件Statussearch(Infor*a);//查詢函數(shù)[返回查詢的結(jié)果及查詢的狀態(tài)]voidpaixu(Infor*a);//對(duì)查詢據(jù)結(jié)果排序voidmodify(Infor*a,intmon);//修改數(shù)據(jù)voiddelRecord(intmon);//刪除數(shù)據(jù)voidmain(){while(1){menu();}}voidmenu(void){intitem;intmon;Infor*a;a=(Infor*)malloc(sizeof(Infor));do{printf("\n…………個(gè)人帳簿管理系統(tǒng)--軟件082郭帥…………\n\n");printf("\t\t1.錄入數(shù)據(jù)。\n");printf("\t\t2.查看數(shù)據(jù)。\n");printf("\t\t3.修改數(shù)據(jù)。\n");printf("\t\t4.查詢數(shù)據(jù)。\n");printf("\t\t5.排序數(shù)據(jù)。\n");printf("\t\t6.刪除數(shù)據(jù)。\n");printf("\t\t0.退出系統(tǒng)。\n\n");printf("請(qǐng)輸入要進(jìn)行的操作:");scanf("%d",&item);}while(item>6||item<-1);switch(item){//退出程序case0:getchar();//保存界面getchar();exit(0);break;//錄入數(shù)據(jù)case1:input(a);writeinfor(a);break;//查看數(shù)據(jù)case2:changeFormat();break;//修改數(shù)據(jù)case3: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)用儲(chǔ)蓄費(fèi)用本月收入\n");printf("\n");printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);input(a);modify(a,mon);}break;//查詢數(shù)據(jù)case4:item=search(a);if(item!=OK)printf("\n沒有符合條件的記錄!\n");else{printf("\n記錄月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用本月收入\n");printf("\n");printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);}break;//排序數(shù)據(jù)case5:item=search(a);if(item!=OK)printf("\n沒有符合條件的記錄!\n");elsepaixu(a);break;//刪除數(shù)據(jù)case6: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)用儲(chǔ)蓄費(fèi)用本月收入\n");printf("\n");printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);delRecord(mon);}break;}free(a);//釋放內(nèi)存空間}voidinput(Infor*newI){printf("\n請(qǐng)依次輸入數(shù)據(jù)[說明:中間以空格符隔開]:\n(本月月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用收入費(fèi)用)\n");scanf("%d%d%d%d%d%d%d%d",&newI->month,&newI->food,&newI->house,&newI->edu,&newI->elc,&newI->health,&newI->store,&newI->income);fflush(stdin);}voidwriteinfor(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ù)錄入勝利!\n");}voidchangeFormat(void)//短暫只能操作一行文件有待改進(jìn){FILE*fp1,*fp2;Infor*a;a=(Infor*)malloc(sizeof(Infor));fp1=fopen(FilePath1,"rb+");if(fp1==NULL){printf("無法找到文件:%s\n",FilePath1);return;//返回主函數(shù)}fp2=fopen(FilePath2,"wt+");if(fp2==NULL){printf("無法創(chuàng)建文件:%s\n",FilePath2);return;//返回主函數(shù)}fputs("\n……個(gè)人帳簿管理系統(tǒng)……\n\n",fp2);fputs("記錄月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用本月收入\n",fp2);fputs("\n",fp2);printf("\n記錄月份食品消費(fèi)房租費(fèi)用子女費(fèi)用水電費(fèi)用醫(yī)療費(fèi)用儲(chǔ)蓄費(fèi)用本月收入\n");printf("\n");rewind(fp1);fread(a,sizeof(Infor),1,fp1);while(!feof(fp1))//從原文件[.dat]中讀數(shù)據(jù)寫入顯示文件[.txt]中{printf("%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);fprintf(fp2,"%7d%8d%8d%8d%8d%8d%8d%8d\n",a->month,a->food,a->house,a->edu,a->elc,a->health,a->store,a->income);fread(a,sizeof(Infor),1,fp1);}fputs("\n",fp2);fputs("關(guān)閉本程序接著原程序!\n",fp2);fclose(fp1);fclose(fp2);system(FilePath2);//調(diào)用打開轉(zhuǎn)換的文本文件remove(FilePath2);//刪除文本文件文件}Statussearch(Infor*a){FILE*fp1;intmon;intisfound=0;printf("請(qǐng)正確輸入要查詢的月份:");scanf("%d",&mon);fflush(stdin);//清除緩沖區(qū)fp1=fopen(FilePath1,"rb+");if(fp1==NULL){printf("無法找到文件:%s\n",FilePath1);returnError;//返回主函數(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)returnOK;elsereturnNotFound;}voidpaixu(Infor*a){inti=0,j=0,flag=0,t;pTypepx[8]={{0,0}};charstr[8][10]={"記錄月份","食品消費(fèi)","房租費(fèi)用","子女費(fèi)用","水電費(fèi)用","醫(yī)療費(fèi)用","儲(chǔ)蓄費(fèi)用","本月收入"};for(;i<8;i++)px[i].no=i;px[0].data=a->month;px[1].data=a->food;px[2].data=a->house;px[3].data=a->edu;px[4].data=a->elc;px[5].data=a->health;px[6].data=a->store;px[7].data=a->income;for(i=1;i<8;i++)//冒泡排序{flag=0;for(j=0;j<8-i;j++)if(px[j].data>px[j+1].data){t=px[j].data;px[j].data=px[j+1].data;px[j+1].data=t;t=px[j].no;px[j].no=px[j+1].no;px[j+1].no=t;flag=1;}//輸出結(jié)果if(flag==0)break;}printf("\n");for(i=0;i<8;i++){printf("%s",str[px[i].no]);}printf("\n\n");for(i=0;i<8;i++){printf("%8d",px[i].data);}printf("\n");}voidmodify(Infor*a,intmon)//修改數(shù)據(jù){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))//重寫數(shù)據(jù){if(b->month==mon){fwrite(a,sizeof(Infor),1,fp2);//修改數(shù)據(jù)}else{fwrite(b,sizeof(Infor),1,fp2);}fread(b,sizeof(Infor),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//刪除源文件rename("temp.dat",FilePath1);//重命名中間文件printf("修改數(shù)據(jù)勝利!\n");changeFormat();//顯示數(shù)據(jù)}voiddelRecord(intmon)//刪除數(shù)據(jù){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))//重寫數(shù)據(jù){if(b->month!=mon)fwrite(b,sizeof(Infor),1,fp2);fread(b,sizeof(Infor),1,fp1);}fclose(fp1);fclose(fp2);remove(FilePath1);//刪除源文件rename(
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 急性心肌梗死課件
- 前臺(tái)服務(wù)中的細(xì)節(jié)管理計(jì)劃
- 《第三單元 網(wǎng)絡(luò)生活:第14課 文明上網(wǎng)》教學(xué)設(shè)計(jì)-2024-2025學(xué)年浙江攝影版(2020)三年級(jí)下冊(cè)
- 誤吸的預(yù)防與處理流程
- 2025年畫具畫材項(xiàng)目合作計(jì)劃書
- 江西省九江市高中數(shù)學(xué) 第二章 概率 3 條件概率與獨(dú)立事件(2)教學(xué)實(shí)錄 北師大版選修2-3
- Unit 4 Time Story Time(教學(xué)設(shè)計(jì))-2023-2024學(xué)年人教新起點(diǎn)版英語二年級(jí)下冊(cè)
- 血透患者高鉀血癥的護(hù)理
- 員工安全培訓(xùn)
- 2025年脈沖反應(yīng)堆及配套產(chǎn)品項(xiàng)目合作計(jì)劃書
- 天津醫(yī)院運(yùn)營分析報(bào)告
- 消化道出血病人健康教育課件
- ps摳圖講課教案
- 《橋梁施工方法掛籃》課件
- 《慢性呼吸道疾病》課件
- 2024年國家能源集團(tuán)招聘筆試參考題庫含答案解析
- 2024版行政管理培訓(xùn)課件
- 南開大學(xué)有機(jī)化學(xué)筆記-王積濤版
- Register and Genre語域與體裁課件
- AQL抽樣標(biāo)準(zhǔn)表完整
- 工程結(jié)算審核服務(wù)方案技術(shù)標(biāo)
評(píng)論
0/150
提交評(píng)論