第二組家庭財(cái)務(wù)管理系統(tǒng)_第1頁
第二組家庭財(cái)務(wù)管理系統(tǒng)_第2頁
第二組家庭財(cái)務(wù)管理系統(tǒng)_第3頁
第二組家庭財(cái)務(wù)管理系統(tǒng)_第4頁
第二組家庭財(cái)務(wù)管理系統(tǒng)_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、中北大學(xué)數(shù) 據(jù) 結(jié) 構(gòu)課 程 設(shè) 計(jì) 說 明 書  學(xué)生姓名:李曉晨學(xué) 號(hào):04學(xué)生姓名:文巧麗學(xué) 號(hào):10學(xué)生姓名:梁振寧學(xué) 號(hào):26學(xué)生姓名:閆夢(mèng)彪學(xué) 號(hào):27學(xué) 院:信息商務(wù)學(xué)院專 業(yè):10060342X 題 目:家庭財(cái)務(wù)管理指導(dǎo)教師武瑞娟,賈美麗    2011 年 11月28日1 設(shè)計(jì)目的家庭財(cái)務(wù)系統(tǒng)主要對(duì)家庭的各項(xiàng)財(cái)務(wù)收支管理進(jìn)行在計(jì)算機(jī)上的信息存儲(chǔ)和處理,從而簡(jiǎn)化用戶的工作量。該系統(tǒng)使普通家庭對(duì)于一般的家庭財(cái)務(wù),例如:記錄家庭每月的全部收入及各項(xiàng)開支情況,包括食品消費(fèi),房租,子女教育費(fèi)用,水電費(fèi),醫(yī)療費(fèi),儲(chǔ)蓄等

2、。進(jìn)入系統(tǒng)后可以輸入和修改某月的收支情況,可以對(duì)每月的開支從小到大進(jìn)行排序,可以根據(jù)輸入的月份查詢每月的收支情況。2. 設(shè)計(jì)內(nèi)容家庭財(cái)務(wù)管理系統(tǒng)是為用戶進(jìn)行家庭成員的收支構(gòu)成及信息管理進(jìn)行輔助的應(yīng)用軟件,設(shè)計(jì)內(nèi)容大致如下:(1) 增加家庭成員收支信息:用戶根據(jù)提示輸入增加的項(xiàng)目,如:年、月、日、項(xiàng)目、數(shù)目。可一次性輸入多條家庭成員的收支信息記錄,系統(tǒng)將家庭成員收信息記錄存儲(chǔ)在系統(tǒng)磁盤的文件中,以便進(jìn)行管理,查找,排序。(2) 修改家庭成員收支信息:用戶輸入要進(jìn)行修改,根據(jù)提示確定要修改的項(xiàng),再根據(jù)提示確定修改的項(xiàng)目:如:年月日,項(xiàng)目,數(shù)目,繼續(xù)存儲(chǔ)在系統(tǒng)的磁盤中。(3) 家庭成員收支排序:該項(xiàng)

3、需求要求根據(jù)收支數(shù)目用冒泡法進(jìn)行排序,以便用戶對(duì)家庭成員收狀況有較為直觀的了解。(4) 查詢家庭成員財(cái)務(wù)情況:分為按日查詢和按月查詢兩個(gè)具體需求,根據(jù)用戶自己的需求,選擇整表輸出或按類輸出,系統(tǒng)會(huì)列出用戶所需的信息在該功能中,也提示用戶是否需要修改,如果不需要,則返回主界面。3本設(shè)計(jì)所采用的數(shù)據(jù)結(jié)構(gòu)1、常量定義 #define A 100    在排序?yàn)g覽、刪除、修改等功能模塊中該常量用于定義數(shù)組長(zhǎng)度。程序先把要排序或刪除、修改的文件中的每條記錄存放在數(shù)組當(dāng)中,然后用特定的算法對(duì)該數(shù)組中的家庭成員信息進(jìn)行排序、刪除、修改等操

4、作。C語言中的數(shù)組長(zhǎng)度是固定的,并且必須在聲明時(shí)指定數(shù)組的長(zhǎng)度,因此用SIZE常量定義該數(shù)組的長(zhǎng)度,由于財(cái)務(wù)信息文件的信息量較大,因此定義大小為100,并可根據(jù)需要進(jìn)行簡(jiǎn)單更改。int a    整體變量a控制函數(shù)中的選項(xiàng),在本程序有好界面中,會(huì)輸入用戶選擇的選項(xiàng),以整形儲(chǔ)存在a中。 int  i   整體變量i用來控制函數(shù)中for循環(huán)的次數(shù),在函數(shù)中,會(huì)涉及很多for循環(huán),i用來控制循環(huán)次數(shù),以免陷入死循環(huán),或者不循環(huán)。2、收支情況信息數(shù)據(jù)結(jié)構(gòu) 用于存放收支情況的日期、項(xiàng)目、收入或支出方面的信

5、息。struct shouzhi/*定義結(jié)構(gòu)體struct shouzhi*/int nian; int yue;int ri;int xiangmu;int shumu; zhangmu100 由于日期、項(xiàng)目、收入或支出構(gòu)成用于描述一個(gè)有機(jī)整體收支情況,為了表明這些字段不是孤立的,而是共同描述一個(gè)完整的事物,因此用結(jié)構(gòu)體這種形式來體現(xiàn)。4功能模塊詳細(xì)設(shè)計(jì)4.1 詳細(xì)設(shè)計(jì)思想 開發(fā)與設(shè)計(jì)的總體思想 本系統(tǒng)的總體思想基于結(jié)構(gòu)化的程序設(shè)計(jì)。應(yīng)用高級(jí)語言程序設(shè)計(jì)中的基本控制結(jié)構(gòu),如循環(huán)和選擇,著重實(shí)現(xiàn)管理系統(tǒng)的

6、增、改、查等典型的管理功能由于主要實(shí)現(xiàn)的是管理系統(tǒng)的增、改、查等典型功能。在軟件開發(fā)過程中應(yīng)用了軟件工程的基本理論。因此,系統(tǒng)的設(shè)計(jì)方法是結(jié)構(gòu)化設(shè)計(jì)方法,開發(fā)手段是C語言。 4.1.2系統(tǒng)模塊結(jié)構(gòu)圖家庭財(cái)務(wù)管理系統(tǒng)可以分為4個(gè)模塊:系統(tǒng)增加模塊,系統(tǒng)修改模塊,系統(tǒng)排序模塊,系統(tǒng)查詢模塊,如圖所示:排序模塊增加模塊家庭財(cái)務(wù)管理系統(tǒng)修改模塊查詢模塊系統(tǒng)模塊結(jié)構(gòu)圖 4.1.3 模塊設(shè)計(jì)(一) 系統(tǒng)增加模塊1、模塊描述  對(duì)增加財(cái)務(wù)收支信息功能管理。對(duì)增加的操作,會(huì)將操作結(jié)果保存至數(shù)組。  2、源文件定義  源文件:  &

7、amp;p->nian,&p->yue,&p->ri 三個(gè)變量用來儲(chǔ)存收支情況里的日期&p->xiangmu 這個(gè)變量用來儲(chǔ)存收支情況里的項(xiàng)目,包括收入和各種支出&p->shumu 這個(gè)變量用來儲(chǔ)存收支情況里的數(shù)目增加項(xiàng)目增加日期增加模塊增加數(shù)目增加模塊結(jié)構(gòu)樹圖 (二) 系統(tǒng)修改模塊1、模塊描述  修改收支信息。輸入要修改的項(xiàng)目的日期、項(xiàng)目、數(shù)量,在選擇要輸入要修改的內(nèi)容的類型,并輸入修改的內(nèi)容,并將操作結(jié)果保存至數(shù)組。2、源文件定義  源文件:  &p->n

8、ian,&p->yue,&p->ri 三個(gè)變量用來儲(chǔ)存收支情況里的日期&p->xiangmu 這個(gè)變量用來儲(chǔ)存收支情況里的項(xiàng)目,包括收入和各種支出&p->shumu 這個(gè)變量用來儲(chǔ)存收支情況里的數(shù)目輸入修改資料輸入原資料修改模塊修改收支情況修改模塊結(jié)構(gòu)樹圖 (三) 系統(tǒng)排序模塊 1、模塊描述 排序收支信息。原理是冒泡排序,依次比較相鄰的兩個(gè)數(shù),將小數(shù)放在前面,大數(shù)放在后面。即在第一趟:首先比較第1個(gè)和第2個(gè)數(shù),將小數(shù)放前,大數(shù)放后。然后比較第2個(gè)數(shù)和第3個(gè)數(shù),將小數(shù)放前,大數(shù)放后,如此繼續(xù),直至比較最后兩個(gè)數(shù),將小數(shù)放前,大數(shù)放后。至此第

9、一趟結(jié)束,將最大的數(shù)放到了最后。在第二趟:仍從第一對(duì)數(shù)開始比較(因?yàn)榭赡苡捎诘?個(gè)數(shù)和第3個(gè)數(shù)的交換,使得第1個(gè)數(shù)不再小于第2個(gè)數(shù)),將小數(shù)放前,大數(shù)放后,一直比較到倒數(shù)第二個(gè)數(shù)(倒數(shù)第一的位置上已經(jīng)是最大的),第二趟結(jié)束,在倒數(shù)第二的位置上得到一個(gè)新的最大數(shù)(其實(shí)在整個(gè)數(shù)列中是第二大的數(shù))。如此下去,重復(fù)以上過程,直至最終完成排序。并將操作結(jié)果保存至數(shù)組。2、源文件定義 源文件: &p->nian,&p->yue,&p->ri 三個(gè)變量用來儲(chǔ)存收支情況里的日期&p->xiangmu 這個(gè)變量用來儲(chǔ)存收支情況里的項(xiàng)目,包括收入和各種支出&

10、amp;p->shumu 這個(gè)變量用來儲(chǔ)存收支情況里的數(shù)目系統(tǒng)查詢模塊(四) 系統(tǒng)查詢模塊 1、模塊描述  查詢收支信息。讓用戶選擇查詢的方式,再根據(jù)用戶輸入的信息,對(duì)結(jié)構(gòu)體數(shù)組每項(xiàng)遍歷和用戶所輸入的比較,只要相同就輸出。2、源文件定義  源文件:  &p->nian,&p->yue,&p->ri 三個(gè)變量用來儲(chǔ)存收支情況里的日期&p->xiangmu 這個(gè)變量用來儲(chǔ)存收支情況里的項(xiàng)目,包括收入和各種支出&p->shumu 這個(gè)變量用來儲(chǔ)存收支情況里的數(shù)目按類

11、輸出查詢模塊查詢模塊結(jié)構(gòu)樹圖按日查詢 按日查詢整表輸出整表輸出按類輸出4.1.4界面設(shè)計(jì)家庭財(cái)務(wù)管理系統(tǒng)的界面設(shè)計(jì)主要遵循方便易用、界面友好的原則,具體設(shè)計(jì)如下。軟件開始界面(1) 系統(tǒng)增加模塊系統(tǒng)修改模塊(2) 系統(tǒng)排序模塊(4)系統(tǒng)查詢模塊4.2 核心代碼#include<stdio.h>#include <stdlib.h> /*這個(gè)頭文件包含exit函數(shù)*/#define A 100 /*定義了結(jié)構(gòu)體數(shù)組的大小*/int a; /*整體變量a控制函數(shù)中的選項(xiàng)*/int i; /*整體變量i用來控制函數(shù)中for循環(huán)的次數(shù)*/int k=0;char x;struc

12、t shouzhi /*定義結(jié)構(gòu)體struct shouzhi*/int nian; int yue;int ri; /*三個(gè)變量用來儲(chǔ)存收支情況里的日期*/int xiangmu; /*這個(gè)變量用來儲(chǔ)存收支情況里的項(xiàng)目,包括收入和各種支出,*/int shumu; /*這個(gè)變量用來儲(chǔ)存收支情況里的數(shù)目*/zhangmu100=2011,01,01,0,3500,2011,02,03,0,4000,2011,01,02,2,400,2011,01,12,3,500,2011,01,02,2,500,2011,02,04,2,4400,2011,01,30,1,400,2011,01,02,4,

13、100,2011,02,04,3,10,2011,01,02,0,1000; /*為結(jié)構(gòu)體數(shù)組賦初值*/void zengjia(struct shouzhi *p) /*增加函數(shù)*/printf("請(qǐng)輸入日期 (* * *)n");scanf("%d %d %d",&p->nian,&p->yue,&p->ri); /*輸入日期*/printf("請(qǐng)輸入項(xiàng)目:n 0 收入n 1 食品消費(fèi)n 2 房租n 3 子女教育費(fèi)n 4 水電費(fèi)n 5 醫(yī)療費(fèi)n 6 儲(chǔ)蓄n 7 其他n");scanf(&q

14、uot;%d",&p->xiangmu); /*輸入項(xiàng)目*/printf("請(qǐng)輸入數(shù)目:n");scanf("%d",&p->shumu); /*輸入數(shù)目*/void xiugai(struct shouzhi *p,int u) /*修改函數(shù)*/int n,y,r,m,s; /*5個(gè)變量用來存儲(chǔ)要修改的日期,項(xiàng)目和數(shù)目*/printf("請(qǐng)輸入原日期 (* * *)n");scanf("%d %d %d",&n,&y,&r);-printf("

15、;請(qǐng)輸入原項(xiàng)目:n 0 收入n 1 食品消費(fèi)n 2 房租n 3 子女教育費(fèi)n 4 水電費(fèi)n 5 醫(yī)療費(fèi)n 6 儲(chǔ)蓄n 7 其他n");scanf("%d",&m);printf("請(qǐng)輸入原數(shù)目:n");scanf("%d",&s);for(i=0;i<u;i+,p=p+1) /*用for循環(huán)來查找出要修改的結(jié)構(gòu)體*/if(p->nian=n&&p->yue=y&&p->ri=r&&p->xiangmu=m&&p-&g

16、t;shumu=s) printf("%d.%d.%dn%dn%dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu); printf("請(qǐng)選擇你要修改的選項(xiàng):n1 日期n2 項(xiàng)目n3 數(shù)目n"); /*找到后選擇要修改的項(xiàng)目*/ scanf("%d",&x); if(x=1) printf("請(qǐng)輸入要修改的日期 (* * *)n "); scanf("%d %d %d",&p->nian,&p-&g

17、t;yue,&p->ri);printf("%d.%d.%dn%dn%dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu); /*修改完畢,輸出修改完畢的項(xiàng)*/ else if(x=2) printf("請(qǐng)輸入要修改的項(xiàng)目:n 0 收入n 1 食品消費(fèi)n 2 房租n 3 子女教育費(fèi)n 4 水電費(fèi)n 5 醫(yī)療費(fèi)n 6 儲(chǔ)蓄n 7 其他n"); scanf("%d",&p->xiangmu);printf("%d.%d.%dn%dn%

18、dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu);/*修改完畢,輸出修改完畢的項(xiàng)*/ else if(x=3) printf("請(qǐng)輸入要修改的數(shù)目:n"); scanf("%d",&p->shumu);printf("%d.%d.%dn%dn%dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu); /*修改完畢,輸出修改完畢的項(xiàng)*/ else if(x!=1&&am

19、p;x!=2&&x!=3) printf("輸入錯(cuò)誤,請(qǐng)重新輸入n");/*沒找到所要查詢的結(jié)構(gòu)體,輸出這句話*/ void chaxun(struct shouzhi *p) /*查詢函數(shù)*/int n,y,r,m,i,w; /*5個(gè)變量用來存儲(chǔ)要修改的日期,項(xiàng)目和數(shù)目*/char x;printf("1.日收支報(bào)表n2.月收支報(bào)表n");scanf("%d",&a);if(a=1) /*查詢?nèi)帐罩?bào)表*/ printf("1.整表輸出n2.按類輸出n"); scanf("%d&

20、quot;,&w); if(w=1) /*整表輸出*/ printf("請(qǐng)輸入要查詢的年月日(* * *)n"); scanf("%d %d %d",&n,&y,&r); /*輸入完畢要查詢的年月日*/ for(i=0;i<A;i+,p+) /*開始查詢*/ if(p->nian=n&&p->yue=y&&p->ri=r) printf("年月日:%d.%d.%dn項(xiàng)目:%dn數(shù)目:%dn",p->nian,p->yue,p->r

21、i,p->xiangmu,p->shumu); /*查找完畢,輸出所查找到的項(xiàng)*/ else if(w=2) /*按類輸出*/ printf("請(qǐng)輸入要查詢的年月日(* * *)n"); scanf("%d %d %d",&n,&y,&r);printf("請(qǐng)輸入要查詢的項(xiàng)目:n 0 收入n 1 食品消費(fèi)n 2 房租n 3 子女教育費(fèi)n 4 水電費(fèi)n 5 醫(yī)療費(fèi)n 6 儲(chǔ)蓄n 7 其他n");scanf("%d",&m); /*輸入完畢,開始查詢*/ for(i=0;i&

22、lt;A;i+,p+) /*for循環(huán)查找所要查找的項(xiàng)*/ if(p->nian=n&&p->yue=y&&p->ri=r&&p->xiangmu=m) /*當(dāng)年月日,項(xiàng)目都相同時(shí)進(jìn)行一下操作*/ printf("年月: %d.%d.%d n項(xiàng)目: %dn數(shù)目:%dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu); /*查找完畢,輸出所查找到的所有項(xiàng)*/ else if(a=2) /*查詢?cè)率罩?bào)表*/ printf("1.

23、整表輸出n2.按類輸出n"); scanf("%d",&a); switch (a) /*整表輸出*/ case 1:printf("請(qǐng)輸入要查詢的年月(* *)n"); scanf("%d %d",&n,&y); /*輸入年月*/ for(i=0;i<A;i+,p+) /*輸入完畢,開始查詢*/ /*for循環(huán)查找所要查找的項(xiàng)*/ if(p->nian=n&&p->yue=y) /*找出符合的所有項(xiàng)*/ printf("年月日:%d.%d.%dn項(xiàng)目:%d

24、n數(shù)目:%dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu); /*輸出查詢到的項(xiàng)*/ break; /*查找完畢,跳出循環(huán)*/case 2:printf("請(qǐng)輸入要查詢的年月項(xiàng)目(* * *)n"); /*按類輸出*/scanf("%d %d %d",&n,&y,&m);for(i=0;i<A;i+,p+) /*for循環(huán)查找所要查找的項(xiàng)*/if(p->nian=n&&p->yue=y&&p->

25、xiangmu=m)printf("年月日:%d.%d.%dn項(xiàng)目:%dn數(shù)目:%dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu); /*查找完畢,輸出所查找到的所有項(xiàng)*/ void paixu(struct shouzhi *p,int u) /*排序函數(shù),用來按從大到小的順序排列數(shù)目*/int t;int j;for(i=0;i<u;i+) /*for循環(huán)用控制冒泡排序*/ for(int j=0,o=0;j<u-1;j+,o+) /*for循環(huán)用控制冒泡排序*/ if(p+o)->shumu>(p+1+o)->shumu) t=(p+o)->nian;(p+o)->nian=(p+o+1)->nian;(p+o+1)->nian=t;t=(p+o)->yue;(p+

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論