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

下載本文檔

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

文檔簡介

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

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

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

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

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

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

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

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

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

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

11、輸出查詢模塊查詢模塊結(jié)構(gòu)樹圖按日查詢 按日查詢整表輸出整表輸出按類輸出4.1.4界面設(shè)計家庭財務(wù)管理系統(tǒng)的界面設(shè)計主要遵循方便易用、界面友好的原則,具體設(shè)計如下。軟件開始界面(1) 系統(tǒng)增加模塊系統(tǒng)修改模塊(2) 系統(tǒng)排序模塊(4)系統(tǒng)查詢模塊4.2 核心代碼#include<stdio.h>#include <stdlib.h> /*這個頭文件包含exit函數(shù)*/#define A 100 /*定義了結(jié)構(gòu)體數(shù)組的大小*/int a; /*整體變量a控制函數(shù)中的選項*/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; /*三個變量用來儲存收支情況里的日期*/int xiangmu; /*這個變量用來儲存收支情況里的項目,包括收入和各種支出,*/int shumu; /*這個變量用來儲存收支情況里的數(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("請輸入日期 (* * *)n");scanf("%d %d %d",&p->nian,&p->yue,&p->ri); /*輸入日期*/printf("請輸入項目:n 0 收入n 1 食品消費n 2 房租n 3 子女教育費n 4 水電費n 5 醫(yī)療費n 6 儲蓄n 7 其他n");scanf(&q

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

15、;請輸入原項目:n 0 收入n 1 食品消費n 2 房租n 3 子女教育費n 4 水電費n 5 醫(yī)療費n 6 儲蓄n 7 其他n");scanf("%d",&m);printf("請輸入原數(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("請選擇你要修改的選項:n1 日期n2 項目n3 數(shù)目n"); /*找到后選擇要修改的項目*/ scanf("%d",&x); if(x=1) printf("請輸入要修改的日期 (* * *)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); /*修改完畢,輸出修改完畢的項*/ else if(x=2) printf("請輸入要修改的項目:n 0 收入n 1 食品消費n 2 房租n 3 子女教育費n 4 水電費n 5 醫(yī)療費n 6 儲蓄n 7 其他n"); scanf("%d",&p->xiangmu);printf("%d.%d.%dn%dn%

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

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

20、quot;,&w); if(w=1) /*整表輸出*/ printf("請輸入要查詢的年月日(* * *)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項目:%dn數(shù)目:%dn",p->nian,p->yue,p->r

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

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

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

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

25、xiangmu=m)printf("年月日:%d.%d.%dn項目:%dn數(shù)目:%dn",p->nian,p->yue,p->ri,p->xiangmu,p->shumu); /*查找完畢,輸出所查找到的所有項*/ 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等.壓縮文件請下載最新的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

提交評論