個人財政收入支出_第1頁
個人財政收入支出_第2頁
個人財政收入支出_第3頁
個人財政收入支出_第4頁
個人財政收入支出_第5頁
已閱讀5頁,還剩23頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優質文檔-傾情為你奉上 宜春學院數學與計算機科學學院 課程設計說明書 課 程 名 稱: 數據結構 課 程 代 碼: 題 目: 個人財政收入支出管理 年級/專業/班: 12軟件工程 學 生 姓 名: 學 號: 指 導 教 師: 開 題 時 間: 年 月 日完 成 時 間: 年 月 日專心-專注-專業目 錄 1.1 課題背景.4 1.2 課題意義.4 2.1 設計目的.5 2.2 設計任務.5 3.1 問題的描述.6 3.2 需求分析.6 3.3 總體結構.6 3.4 界面模塊.。.6 附代碼 摘 要本次課程設計在 Windows 平臺上,以VC+為開發工具,分析設計了&#

2、160;“個人財務管理系統”。 如今計算機已走進千家萬戶,傳統的在紙上記錄收入支出的方式已經過時,人們需要一種可以在計算機記錄自己收入支出信息的軟件,可是市場上的財務管理軟件大多數十面向企業,或是有專門用途,面向普通用戶的個人財務管理系統很難找到,在者免費的軟件更是少之又少,為了滿足普通用戶的需求,特開發此軟件。 本系統功能簡單,只適合對個人財務管理要求不高的用戶,可以完成收入支出金錢及物品的記錄與查詢操縱,但這些對普通用戶還說應該夠了,本系統操作簡單,用戶無需記錄復雜的命令,打開主機面就可以很容易看出系統的功能,在者,本軟件為免費產品,對于不愿花很多錢購買軟件的用戶來說是

3、個很好的選擇,本軟件無需很高的硬件配置,一般的配置均可運行,占用系統資源少。關鍵詞:個人資金、收入、支出、輸出、收支平衡課程設計 -個人財政收入支出系統1、 引 言 1.1 課題背景 當今社會越來越著朝著信息化和數字化法發展,計算機的應用領域使我們的生活越來越方便和快捷,可以說我們的每個人生活都離不開計算機的幫助了。越來越多的個人應用軟件成為了人們重要的助手,也在潛移默化的改變著我們的生活。     隨著市場經濟的發展,我國居民對理財有著越來越高的要求。理財,是每個家庭和個人所必須面對的問題。現在,關于企業的會計制度逐漸完善,而且針對企業的財務

4、軟件系統也在飛速發展,但針對個人或家庭的財務系統目前還是一段空白。     實際生活中經常要對個人的各項財務收支進行管理,本課題的目的就是利用計算機對各項財務進行電子化的管理,使我們的理財更加方便和理性化,提升我們生活的質量和品位。 1.2 課題意義     我們經常看到企業的一些財務報表,這些報表主要是關注企業的資產負債表和損益表。簡單的說,前者是反映這個企業有多少錢,是存量;后者,反映了企業在一定時間能賺到多少錢,是流量。     

5、其實,對一個人或者家庭的財務情況,也是關注這兩個方面。關注家里存多少錢,關注今年賺了多少錢,花了多少,借出什么等等。     要做到這些需要對大量的數據做存儲和計算,工作是相當的復雜繁瑣和枯燥的,因而這些問題容易被人忽略。我們縱然可以為生活中的每一筆花銷記賬,但是對這樣大量的數據做分類處理確實是一個會令大多數人頭疼的問題,如果有一個個人理財的軟件理財的軟件對我們的日常財務進行那樣的繁瑣的數據處理和計算工作,相信可以讓我們理財的效率大大提高。這樣一個軟件不但可以方便我們的生活,更可以使我們對自己的財務狀況有一個清楚的了解。  與此同時,

6、這樣的一個軟件開發和制作也是對我們大學學到各種知識進行的一次綜合運用的一個好機會,是對我大學學習的一個檢驗和實踐。2、 設計目的與任務 2.1 設計目的 本次設計既是對書本知識的運用同時也是對實際問題的研究。利用數據結構課程的相關知識完成一個具有一定難度的綜合設計題目,利用C/C+語言進行程序設計,并規范地完成課程設計報告。通過課程設計,鞏固和加深對線性表、棧、隊列、字符串、數、圖、查找、排序等理論知識的理解;會使用數據結構的基本操作來解決一些生活中的實際問題,提高利用計算機分析解決綜合性實際問題的基本能力。 2.1 設計的任務 1)將收支的數據與相應的函數封裝到類中,并寫程序,使程序結構化。

7、  2)增加保存每筆收入的記錄,并對每筆記錄增加日期錄入,按日期的順序保存、查看記錄。 3)完成數據成員盈余的計算和輸出,要求每筆輸入和支出都要重新統計當前情況下的盈余數目。3、 設計方案 3.1 問題的描述設計個人財政收支情況系統,要求設計出收入、支出、查詢、刪除等。 3.2 需求分析 1) 可添加收入各方面信息,要求輸入信息的完整性高 2) 可對收入各方面信息修改、刪除 3) 可根據日期查找收入信息 4)可添加支出各方面信息,要求輸入信息的完整性高5)可對支出各方面信息修改、刪除6)可查詢收支平衡情況7)可根據日期查詢支出信息 3.3 總體結構 3.

8、4 界面模塊 3.4.1 主界面模塊輸入收入金額輸入日期選擇1開始輸入收入來源添加成功 3.4.2 選擇輸入收入記錄模塊選擇2輸入支出金額輸入日期開始添加成功輸入支出來源 3.4.5選擇輸入支出信息模塊 3.4.6查看收入記錄 3.4.7查看支出記錄 3.4.8 查看收支平衡情況 3.4.9 根據日期修改記錄4、 結 論 隨著計算機軟硬件的不斷發展,導航系統在客戶需求中的應用已成必然。  本系統在開發中也是嚴格按照物品庫存管理的實際情況進行開發的,在開發中,查閱了很多相關的算法資料,鞏固了數據結構、C語言和C+方面的知識,同時也學習了新的算法知識。最重要的是在開發過程中,通過不斷地學

9、習,不斷提高自己編程能力和實際應用能力,還有助于改善自己的邏輯思維能力,這對自己以后對軟件的開發提供很大的幫助。另外通過此次課程的設計使我認識到對知識的掌握不全面,即在學習專業知識的同時還需要再加強其他方面知識的學習,因為軟件的開發有時候涉及到其他方面的知識,只有了解了其他方面的知識才能收集資料,然后用于軟件開發。 這門課程是對我們大學生的編程能力的一次巨大考驗。在完成過程中大家都表現出了無窮的興趣。在設計的過程中找到了學習的樂趣。剛開始設計這程序的時候,我們都是很難著手。不過在同學的幫助下慢慢的解決了一個個問題。既幫助了自己,也讓同學關系得到了進步。5、 致謝 特此感謝老師以及同學的幫助六、

10、參考文獻1數據結構.管致錦.清華大學出版社 2數據結構學習輔導與實驗指導.王紅梅.清華大學出版社3C+程序設計. 錢能. 清華大學出版社4C+程序設計試驗指導. 錢能. 清華大學出版社附代碼/*個人財政支出管理*/#include<iostream.h> /輸入/輸出流的頭文件#include<string.h> /字符串處理函數的頭文件#include<stdlib.h> /終止程序的執行的頭文件#include<fstream.h> /對文件操作的頭文件bool IsDateRight(int,int,int); /函數原形說明,判

11、斷日期格式是否正確static double dlPurpose=0.0; /定義目標,為靜態全局變量/定義財務數據類class CFinance int nYear,nMonth,nDay; /定義年、月、日double dlIncome,dlOutput; /定義收入、支出數目double dlBalance; /定義結余情況char szPurpose20; /定義用途、目的double dlGap; /據目標的差額public: /公有成員CFinance();CFinance(int,int,int); /根據日期生成結點,查找用 int Compare(CFinance &

12、); /比較日期的大小,大于返回1,小于返回-1,等于返回0void Show(); /輸出記錄void SetFinance(int,int,int,double,double,char *); /對象賦值double ShowPur(); /返回目標void Calculate(double dlBal); /計算結點的盈余情況double GetBalance(); /返回結點的盈余情況,計算下一結點用void ModifyData(); /修改結點數據記錄void SetVal(int &,int &,int &,double &,double &

13、;,char *); /實現結點數據的輸入/輸出bool IsDateEqual(int,int,int); /判斷日期是否存在void ShowWithoutBalance(); /輸出除收支情況以外的記錄; /為靜態成員分配空間/將數據初值置為0.0CFinance:CFinance() dlIncome=0.0;dlOutput=0.0;dlBalance=0.0;/根據日期生成結點,查找用CFinance:CFinance(int year,int month,int day)nYear=year;nMonth=month;nDay=day;dlIncome=dlOutput=0.0;

14、dlBalance=0.0;/比較日期的大小(大于返回1,小于返回-1,等于返回0)int CFinance:Compare(CFinance &finance) if(nYear>finance.nYear)return 1;if(nYear<finance.nYear)return -1;if(nYear=finance.nYear)if(nMonth>finance.nMonth)return 1;if(nMonth<finance.nMonth)return -1;if(nMonth=finance.nMonth)if(nDay>finance.n

15、Day)return 1;if(nDay<finance.nDay)return -1;if(nDay=finance.nDay)return 0;/輸出記錄void CFinance:Show()cout<<"日期:"<<nYear<<" "<<nMonth<<" "<<nDay<<" 收入:"<<dlIncome<<" 支出:"<<dlOutput<<&q

16、uot; 用途:"<<szPurpose<<" 收支情況:"<<dlBalance<<" 目標:"<<dlPurpose<<endl;/為對象賦值void CFinance:SetFinance(int year,int month,int day,double income,double output,char *purpose)nYear=year;nMonth=month;nDay=day;dlIncome=income;dlOutput=output;strcpy(

17、szPurpose,purpose); /拷貝void CFinance:Calculate(double dlBal) /計算結點的盈余情況dlBalance=dlBal+dlIncome-dlOutput;double CFinance:GetBalance() /返回結點的盈余情況return dlBalance;/修改結點數據記錄void CFinance:ModifyData() double temp;if(dlIncome>0) /若dlIncome>0,修改收入數據;否則修改支出數據cout<<"輸入修改后的收入:"cin>&g

18、t;temp;if(temp>0)cout<<"修改成功!"<<endl;dlIncome=temp;elsecout<<"修改失敗!"<<endl;elsecout<<"輸入修改后的支出:"cin>>temp;if(temp>0)cout<<"修改成功!"<<endl;dlOutput=temp;elsecout<<"SORRY,修改失敗!"<<endl;/實現結

19、點數據的輸入/輸出void CFinance:SetVal(int &year,int &month,int &day,double &income,double &output,char *purpose)year=nYear;month=nMonth;day=nDay;income=dlIncome;output=dlOutput;strcpy(purpose,szPurpose); /拷貝/判斷日期是否存在bool CFinance:IsDateEqual(int year,int month,int day) if(nYear=year&

20、&nMonth=month&&nDay=day)return true;else return false;/輸出除收支情況以外的記錄void CFinance:ShowWithoutBalance()cout<<"日期:"<<nYear<<" "<<nMonth<<" "<<nDay<<" 收入:"<<dlIncome<<" 支出"<<dlOutput

21、<<" 用途:"<<szPurpose<<" 目標:"<<dlPurpose<<endl;/定義結點類class CNode CFinance *pData; /指向數據類的指針CNode *pNext; /指向鏈表的下一個結點的指針public:CNode(); /結點構造函數CNode(CNode &node); /用于拷貝的構造函數void InputData(CFinance *pdata); /輸入數據void ShowNode(); /輸出結點數據CFinance *GetD

22、ata(); /返回數據friend class CList; /定義鏈表類為友元類;/賦初值CNode:CNode()pData=0;pNext=0;/用于拷貝的構造函數CNode:CNode(CNode &node)pData=node.pData;pNext=node.pNext;/輸入數據void CNode:InputData(CFinance *pdata)pData=pdata;pNext=0;/輸出結點數據void CNode:ShowNode() pData->Show();CFinance *CNode:GetData() /返回數據return pData;

23、/定義鏈表類class CListprotected: /保護成員CNode *pHead; /鏈表頭結點指針public:CList();CList(); void AddNode(CNode *pnode); /在首部添加結點void DeleteNode(CNode *); /刪除一個指定的結點,返回該結點的指針CNode *LookUp(CFinance&); /查找一個指定的數據,返回該數據所在結點在鏈表中的指針,若未找到返回0void ShowList(); /打印整個鏈表void DeleteList(); /刪除整個鏈表CNode *GetListHead(); /返回

24、鏈表首結點CNode *GetListNextNode(CNode *); /返回鏈表指定結點的下一個結點void Insert(CNode *); /據日期插入結點CNode *GetLastNode(); /返回最后一個結點,看看最后的盈余有無赤字 void CalBalance(); /逐個結點計算盈余;/賦初值CList:CList() pHead=0;CList:CList() DeleteList();/在首部添加結點void CList:AddNode(CNode *pnode) if(pHead=0)pHead=pnode;pHead->pNext=0;elseGetLa

25、stNode()->pNext=pnode;pnode->pNext=0; /刪除指定結點void CList:DeleteNode(CNode *pnode) if(!pHead)cout<<"刪除結點錯誤:鏈表不存在!"<<endl;exit(1); /終止程序的執行if(pnode=pHead&&pHead->pNext=0)delete pHead->pData;delete pHead;pHead=0;else if(pnode=pHead)CNode *p=pnode->pNext;delet

26、e pHead->pData;delete pHead;pHead=p;elseCNode *p=pHead;while(p&&p->pNext!=pnode)p=p->pNext;if(!p)cout<<"刪除結點錯誤:結點不存在!"exit(1);elseCNode *q=pnode->pNext;delete pnode->pData;delete pnode;p->pNext=q;/查找指定數據,并返回該數據所在結點指針CNode *CList:LookUp(CFinance& finance)

27、 if(pHead=0)return 0;CNode *pn=pHead;while(pn)if(pn->pData->Compare(finance)=0)return pn;pn=pn->pNext;return 0;/打印整個鏈表void CList:ShowList()if(!pHead)cout<<"鏈表為空"<<endl;return;CNode *p=pHead;while(p)p->ShowNode();p=p->pNext;/刪除整個鏈表void CList:DeleteList()if(pHead=0

28、)return;CNode *p,*q;p=pHead;while(p)delete p->pData;q=p;p=p->pNext;delete q;pHead=0;/返回鏈表首結點CNode *CList:GetListHead()return pHead;/返回鏈表指定結點的下一個結點CNode *CList:GetListNextNode(CNode *pnode)return pnode->pNext;/據日期插入結點,并按日期的升序排序void CList:Insert(CNode *pnode) CNode *p,*q;if(pHead=0)pHead=pnod

29、e;pHead->pNext=0;return;if(pHead->pData->Compare(*(pnode->pData)=1)pnode->pNext=pHead;pHead=pnode;return;p=pHead;while(p&&p->pData->Compare(*(pnode->pData)=-1)q=p;p=p->pNext;q->pNext=pnode;pnode->pNext=p;/返回最后一個結點CNode *CList:GetLastNode()if(!pHead)return 0;C

30、Node *p=pHead;while(p->pNext)p=p->pNext;return p;/逐個結點計算盈余void CList:CalBalance() if(!pHead)return;double temp=0;CNode *p=pHead;while(p)p->pData->Calculate(temp);temp=p->pData->GetBalance();p=p->pNext;/定義處理記錄類class CRecord CList list; /把CList的對象list作為CRecord的成員public:void ReadFr

31、omFile(); /從文件中讀取數據void SaveToFile(); /把數據保存在文件中void Deposit(); /輸入收入數據void Withdraw(); /輸入支出數據void ViewDepositRecord(); /查看收入記錄void ViewWithdrawRecord(); /查看支出記錄void ViewBalance(); /查看收支平衡情況 void LookUpRecord(); /根據日期查找記錄 void EditRecord(); /根據日期修改記錄void DeleteRecord(); /根據日期刪除記錄void setgoal(double

32、); /設定目標; /從文件中讀取數據void CRecord:ReadFromFile() ifstream infile1("dlPurpose.txt"); /將infile1對象與dlPurpose.txt文件相聯系,即以后程序對infile1對象的操作均是對該文件的操作if(!infile1) cout<<"文件讀取失敗!"<<endl;exit(1); /終止程序的執行infile1>>dlPurpose; /將文件dlPurpose.txt中的數據輸入到已定義好的變量dlPurpose中ifstream

33、infile("finance.txt"); /將infile對象與finance.txt文件相聯系,即以后程序對infile對象的操作均是對該文件的操作if(!infile)cout<<"文件讀取失敗!"<<endl;exit(1);int year,month,day;double income,output;char purpose20;while(infile>>year>>month>>day>>income>>output>>purpose)CFi

34、nance *pfinance=new CFinance;pfinance->SetFinance(year,month,day,income,output,purpose);CNode *pnode=new CNode;pnode->InputData(pfinance);list.AddNode(pnode); list.CalBalance();/把數據保存在文件中void CRecord:SaveToFile() ofstream outfile1("dlPurpose.txt");if(!outfile1)cout<<"文件寫入失

35、敗!"<<endl;exit(1); outfile1<<dlPurpose;ofstream outfile("finance.txt");if(!outfile)cout<<"文件寫入失敗!"<<endl;exit(1);int year,month,day;double income,output;char purpose20;CNode *p=list.GetListHead();while(p)p->GetData()->SetVal(year,month,day,incom

36、e,output,purpose); /實現結點數據的輸入/輸出outfile<<year<<" "<<month<<" "<<day<<" "<<income<<" "<<output<<" "<<purpose<<endl;p=list.GetListNextNode(p);/輸入收入數據void CRecord:Deposit() int year

37、,month,day;double income;char purpose20;cout<<"請輸入日期:"cin>>year>>month>>day;while(!IsDateRight(year,month,day)cout<<"日期不正確!請重新輸入:"cin>>year>>month>>day;cout<<"請輸入收入金額:"cin>>income;cout<<"請輸入收入來源:&quo

38、t;cin>>purpose; CFinance *pfinance=new CFinance; pfinance->SetFinance(year,month,day,income,0,purpose); /對象賦值CNode *pnode=new CNode;pnode->InputData(pfinance);list.Insert(pnode);cout<<"添加成功!"<<endl;list.CalBalance();/輸入支出數據void CRecord:Withdraw() int year,month,day;

39、double output;char purpose20;cout<<"請輸入日期:"cin>>year>>month>>day; while(!IsDateRight(year,month,day)cout<<"日期不正確!請重新輸入:"cin>>year>>month>>day;cout<<"請輸入支出金額:"cin>>output;cout<<"請輸入支出用途:"cin>&

40、gt;purpose; CFinance *pfinance=new CFinance;pfinance->SetFinance(year,month,day,0,output,purpose);CNode *pnode=new CNode;pnode->InputData(pfinance);list.Insert(pnode);cout<<"添加成功!"<<endl;list.CalBalance();/查看收入記錄void CRecord:ViewDepositRecord() if(list.GetListHead()=0)ret

41、urn;CNode *p=list.GetListHead();int year,month,day;double income,output;char purpose20; while(p)p->GetData()->SetVal(year,month,day,income,output,purpose); /實現結點數據的輸入/輸出if(income>0)cout<<"日期:"<<year<<" "<<month<<" "<<day<&

42、lt;endl; cout<<"收入:"<<income<<endl; cout<<"用途:"<<purpose<<endl;p=list.GetListNextNode(p);/查看支出記錄void CRecord:ViewWithdrawRecord() if(list.GetListHead()=0)return;CNode *p=list.GetListHead();int year,month,day;double income,output;char purpose20;

43、while(p)p->GetData()->SetVal(year,month,day,income,output,purpose); /實現結點數據的輸入/輸出if(output>0)cout<<"日期:"<<year<<" "<<month<<" "<<day<<endl; cout<<"支出:"<<income<<endl; cout<<"用途:&qu

44、ot;<<purpose<<endl;p=list.GetListNextNode(p);/查看收支平衡情況void CRecord:ViewBalance() list.ShowList();if(list.GetLastNode()->GetData()->GetBalance()<0)cout<<"警告,已經超支!"<<endl;/根據日期查找記錄void CRecord:LookUpRecord()if(!list.GetListHead()cout<<"當前沒有記錄!"

45、;<<endl;return;int year,month,day;short mark=0;cout<<"請輸入日期:"cin>>year>>month>>day;while(!IsDateRight(year,month,day)cout<<"日期不正確!請重新輸入:"cin>>year>>month>>day;CNode *p=list.GetListHead();while(p)if(p->GetData()->IsDateEq

46、ual(year,month,day)p->GetData()->ShowWithoutBalance();mark=1;p=list.GetListNextNode(p);if(!mark)cout<<"無當天記錄!"<<endl;/根據日期修改記錄void CRecord:EditRecord()if(!list.GetListHead()cout<<"當前沒有記錄!"<<endl;return;int year,month,day;short mark=0,edited=0;cout<

47、;<"請輸入日期:"cin>>year>>month>>day;while(!IsDateRight(year,month,day)cout<<"日期不正確!請重新輸入:"cin>>year>>month>>day;CNode *p=list.GetListHead();while(p)if(p->GetData()->IsDateEqual(year,month,day)mark=1;char edit;dop->GetData()->Sh

48、owWithoutBalance(); cout<<"修改?(Y/N)"cin>>edit;if(edit='N'|edit='n')break;elsep->GetData()->ModifyData();edited=1;break;while(edit!='Y'&&edit!='y'&&edit!='N'&&edit!='n');p=list.GetListNextNode(p);if(!m

49、ark)cout<<"無當天記錄!"<<endl;if(edited)list.CalBalance();/根據日期刪除記錄void CRecord:DeleteRecord() if(!list.GetListHead()cout<<"當前沒有記錄!"<<endl;return;int year,month,day;short mark=0,deleted=0;cout<<"請輸入日期:"cin>>year>>month>>day;whi

50、le(!IsDateRight(year,month,day)cout<<"日期不正確!請重新輸入:"cin>>year>>month>>day;CNode *p=list.GetListHead();while(p) if(p->GetData()->IsDateEqual(year,month,day)mark=1;char del;dop->GetData()->ShowWithoutBalance();cout<<"刪除?(Y/N)"cin>>del;if(del='N'|del='n')break;elsedeleted=1;cout<<"刪除成功!"<<endl;break;while(del!='Y'&&del!='y'&&del!='

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論