《面向对象程的序设计》课程设计家庭财务管理系统_第1页
《面向对象程的序设计》课程设计家庭财务管理系统_第2页
《面向对象程的序设计》课程设计家庭财务管理系统_第3页
《面向对象程的序设计》课程设计家庭财务管理系统_第4页
《面向对象程的序设计》课程设计家庭财务管理系统_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

河南城建学院《面向对象程序设计》课程设计设计说明书课程名称:《面向对象程序设计》课程设计设计题目:家庭财务管理系统指导教师:班级:学号:学生姓名:同组人员:计算机科学与工程系2011年6月23日目录第1章选题 21.1题目背景 21.2系统实现的具体分工 21.2.1选题 21.2.2团队分工 31.3开发环境 3第2章设计内容 32.1实现功能 32.2概要设计(涉及类的框图) 42.3界面设计 6第3章系统实现 63.1涉及知识点 63.2系统运行(主要运行界面抓图) 73.3源程序清单(关键代码) 7第4章测试与实验结果 16第5章结束语 17参考文献 17第1章选题1.1题目背景近几年来,随着我国城乡居民收入的增加和生活水平的提高,家庭理财已成为人们居家过日子的重要内容。社会学家细心的观察到,时下家庭的“小九九”比之计划经济年代,开始发生微妙的变化。现在的城乡家庭生活发生了明显的变化,人们的收入逐渐拉开档次,消费水平也高了。大多数家庭关注的是提高生活质量,一方面精打细算,量入为出,把钱用在刀刃上;另一方面保证适当的娱乐活动、社会交际、智力开发等方面的开支。为此,不少家庭就有中长期财务预算,有基本建设规划。总的说来,家庭理财必须以量入为出为原则,以财产保值增值为目标,处理好积累和消费的关系。因此,应树立以下四个观念:第一,资金运动质量观。资金(包括现金,有价证券,存款等)运动,是家庭经济活动的价值反应,家庭理财应管好用活资金,加速资金周转,提高资金利用效果,力争做到结构合理、偿债能力强、经济效益高,家庭财务做为资金的载体,应力争实现其保值增值。第二,资金使用责任观。家庭财产作为社会资源的一部分,有责任创造社会财富,履行社会责任,为适应我国经济发展的要求,家庭可根据自身状况,适当投资,适度超前消费。第三,经济效益观。家庭经济生活的基本目标,是在满足生活最佳需要的基础上,实现家庭财力的最大化。因此家庭理财要与经济效益挂钩,必须处理好投入与产出的关系,规避各种经济风险,堵塞各种经济漏洞,增收节支,当好家理好财,不断提高经济效益。第四,利益协调观。家庭作为社会的细胞,它无疑又是一个利益结合体。从该意义上讲,家庭理财实质就是处理协调家庭内部及与各有关的经济方面的经济利益关系。在理财实践中,要坚持公正、公平、诚实和守信的原则,妥善处理好家庭内部利益关系、家庭与国家及有关经济单位的利益关系。1.2系统实现的具体分工家庭财务的中心内容账务管理。人们几乎每一天都会经过许多次货币活动。其中包括了买入卖出实物,娱乐消费,起居饮食消费,还有发放工资,收缴保费等。如果能把各类不同的活动进行分类,建立不同的账户,分别对活动进行管理,那么无论现在还是将来,你的账务就会清楚明白了。每天,我们对自己账务的操作有如下几类:添加新的数据项,比如今天我卖出了多少元,生活中,我们就要对自己还有多少元。现在我们把这些工作放到程序里去实现,就是这样的操作。某账户今天是添加还是减少,比如对元的操作就是减少。做到程序里,把它存放到一个数据表里就可以了。归结后,账户的操作一般如下:新添,删除,增加,减少,查找,统计。对重要的数据表记录还可以打印。1.2.1选题现代社会家庭的理财观念进一步提高,理财手段变得更加丰富。随着生活水平和文化水平的提高,家庭购买电脑的能力和应用电脑的能力开始提高。电脑及其应用的普及化,人们应用电脑进行家庭财务管理的观念增强,因此,开发一个通用性家庭理财软件已经成为社会需求。本系统是一个家庭通用型理财软件,系统目标是把适合家庭化管理的各种理财手段及家庭日常收支管理实现计算机化管理,使对家庭及家庭成员的收支活动更好地进行记录并加以统计分析成为可能,也使家庭理财变得方便,快捷,全面。团队分工表1.1项目分工一览表角色姓名承担的具体任务组长周广敬程序的整体构架,功能实现。组员郭黎阳功能的实现。组员时兴平调试运行程序,查错,改错。1.3开发环境编程工具:VisualC++6.0机型:方正电脑处理器名称:Intel(R)Core(TM)2DuoCPUE7200@2.53GHz硬盘驱动器:WDCWD1600AAJS-22WAAO系统内存:金士顿内存2GB显示卡: NVIDIAGeFORCE9400GT显示器: 方正科技FG981-W9操作系统: MicrosoftWindowsXPProfessional第2章设计内容2.1实现功能家庭财务的中心内容账务管理。人们几乎每一天都会经过许多次货币活动。其中包括了买入卖出实物,娱乐消费,起居饮食消费,还有发放工资,收缴保费等。如果能把各类不同的活动进行分类,建立不同的账户,分别对活动进行管理,那么无论现在还是将来,你的账务就会清楚明白了。每天,我们对自己账务的操作有如下几类:添加新的数据项,比如今天我卖出了多少钱,生活中,我们就要对自己还有多少钱,今天所得的利润进行统计。现在我们把这些工作放到程序里去实现,就是这样的操作。某账户今天是添加还是减少,比如对钱的操作就是减少,如果与这个操作相关的账户是现金。做到程序里,把它存放到一个数据表里就可以了。归结后,账户的操作一般如下:新添,删除,增加,减少,查找,转账,统计。2.2概要设计(涉及类的框图)Finance类private:私有成员变量 inttag;//删除标记1:已删0:未删 intno;//财务编号 charname[20];//姓名 intacount; intontag;//intdate;//财务日期public:公共函数声明 Finance(){} char*getname(){returnname;}//获取姓名 intgetno(){returnno;}//获取财务编号 intgetacout(){returnacount;} intgettag(){returntag;}//获取删除标记 intgetontag(){returnontag;} intgetdate(){returndate;}//获取日期 voidsetname(charna[]);//设置 voiddelfinance(){tag=1;}//删除财务voidaddfinance(intda,intn,char*na,intnu);//增加财务 intborrowfinance();//支出操作 voidretfinance();//收入操作 voiddisp();//输出财务BDatabase类private:私有成员变量 inttop;//财务记录指针 Financefinance[Maxb];//财务记录public:公共函数声明 BDatabase();//构造函数,将finance.txt读到finance[]中 voidclear();//全部删除 intaddfinance(intda,intn,char*na,intnu);//增加收入 Finance*query(intfinanceid);//查找财务 voidfinancedata();//财务维护 voidfinancecount();//财务统计 voidfinancecount(intdata);//按月财务统计 voiddisp();//显示财务 ~BDatabase();//析构这个类表1业务流程图符号符号名称说明实体数据的源点/终点输入/输出表示输入或输出的报表处理能改变数据值或数据位置的加工或部件数据流用来连接其他符号,指明数据流动方向存储表示任何种类的联机存储收入支出表收入支出表收入支出帐簿账务设置信息收入支出管理用户时间类型总计统计文件记录2.3界面设计在用户界面部分,根据需求分析结果,用户需要一个友善界面。在界面设计上,应做到简单明了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。在界面设计部分,本系统为用户提供友好、方便、直观、简洁的操作环境。可供用户选择的项目主要有:退出,新增账务,删除账务,查找账务,显示所有账务,总计。第3章系统实现3.1涉及知识点类封装、面向对象程序设计、数组的应用、循环语句的使用、过程化设计的思想等。3.2系统运行(主要运行界面抓图)图3.1系统主界面系统功能实现3.3源程序清单(关键代码)//程序主函数//#include<iostream>#include<iomanip>#include<string>#include<fstream>#include"Finance.h"#include"BDatabase.h"usingnamespacestd;voidBDatabase::financedata(){ charchoice; charbname[40]; intdanum; intfinanceid; intacount; intdate; Finance*b; while(choice!='0') { cout<<"—————————————————————————————"<<endl; cout<<"\n\n\t\t^_^欢迎进入家庭财务收支系统^_^"<<endl; cout<<"╭————————————————————————————╮"<<endl;cout<<"∣菜单∣"<<endl; cout<<"├————————————————————————————┤"<<endl; cout<<"∣0.退出∣"<<endl; cout<<"∣1.新增账务∣"<<endl; cout<<"∣2.更改账务∣"<<endl; cout<<"∣3.删除账务∣"<<endl; cout<<"∣4.查找账务∣"<<endl; cout<<"∣5.显示所有账务∣"<<endl; cout<<"∣6.总计∣"<<endl; cout<<"∣7.按时间统计∣"<<endl; cout<<"∣8.全部删除∣"<<endl; cout<<"∣9.将信息存入文件∣"<<endl;cout<<"╰————————————————————————————╯"<<endl; cout<<"——————————————————————————————"<<endl; cout<<"请选择您要服务的类别:"; cin>>choice; switch(choice) { case'1': cout<<"输入财务编号:"<<endl; cin>>financeid; cout<<"输入家庭成员名:"<<endl; cin>>bname; cout<<"输入金额:"<<endl; cin>>acount; cout<<"输入时间:如2010年7月写成20107"<<endl; cin>>danum; addfinance(danum,financeid,bname,acount); break; case'2': cout<<"输入财务编号:"<<endl; cin>>financeid; b=query(financeid); if(b==NULL) { cout<<"该财务不存在"<<endl; break; } cout<<"输入新的家庭成员名:"<<endl; cin>>bname; b->setname(bname); break; case'3': cout<<"读入财务编号:"<<endl; cin>>financeid; b=query(financeid); if(b==NULL) { cout<<"该财务不存在"<<endl; break; } b->delfinance(); break; case'4': cout<<"读入财务编号:"<<endl; cin>>financeid; b=query(financeid); if(b==NULL) { cout<<"该财务不存在"<<endl; break; } b->disp(); break; case'5': cout<<setw(6)<<"时间"<<setw(6)<<"编号"<<setw(18)<<"家庭成员名"<<setw(10)<<"收支类别"<<setw(10)<<"金额"<<endl; disp(); break; case'6': financecount(); break; case'7': cout<<"请输入年月"<<endl; cin>>date; financecount(date); break; case'8': clear(); cout<<"删除成功!"<<endl; break; case'9': break; default: cout<<"请重新输入:"; } }}//main()函数的实现,程序的主界面的引导voidmain(){charchoice; intfinanceid; BDatabaseBookDB;while(choice!='0') { system("cls"); cout<<"\n\t\tO(∩_∩)O~欢迎使用家庭理财管理系统\n";cout<<"╭————————————————————————————╮"<<endl;cout<<"∣主菜单∣"<<endl;cout<<"├————————————————————————————┤"<<endl;cout<<"∣1.进入家庭理财管理系统∣"<<endl;cout<<"∣∣"<<endl;cout<<"∣0.退出∣"<<endl;cout<<"╰————————————————————————————╯"<<endl;cout<<"请选择您要服务的类别:"; cin>>choice; switch(choice) {case'1': BookDB.financedata(); break; case'0': break; default:return;} }}//BDatabase.h头文件BDatabase类的声明#include<iostream>#include<iomanip>#include<string>#include<fstream>#include"Finance.h"#ifndefBDATABASEH#defineBDATABASEHconstintMaxb=10000;classBDatabase{private: inttop;//财务记录指针 Financefinance[Maxb];//财务记录public: BDatabase();//构造函数,将finance.txt读到finance[]中 voidclear();//全部删除 intaddfinance(intda,intn,char*na,intnu);//增加收入 Finance*query(intfinanceid)//查找财务 { for(inti=0;i<=top;i++) if(finance[i].getno()==financeid&&finance[i].gettag()==0) { return&finance[i]; } returnNULL; } voidfinancedata();//财务维护 voidfinancecount();//财务统计 voidfinancecount(intdata);//按月财务统计 voiddisp(); ~BDatabase();//析构函数,将finance[]写到finance.txt文件中};#endif//BDatabase.cppBDatabase功能函数#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"Finance.h"#include"BDatabase.h"BDatabase::BDatabase()//构造函数,将finance.txt读到finance[]中 { Financeb; top=-1; fstreamfile("finance.txt",ios::in); while(1) { file.read((char*)&b,sizeof(b)); if(!file)break; top++; finance[top]=b; } file.close(); } voidBDatabase::clear()//全部删除 { top=-1; }intBDatabase::addfinance(intda,intn,char*na,intnu)//增加收入 { Finance*p=query(n); if(NULL==p) { top++; finance[top].addfinance(da,n,na,nu); return1; } return0; }voidBDatabase::financecount()//财务统计 { intBnum=0; intRnum=0; intMcout=0; intBcout=0; intRcout=0; for(inti=0;i<=top;i++) { if(finance[i].getontag()==1) { Bcout+=finance[i].getacout(); Bnum++; finance[i].disp(); } else{ Rcout+=finance[i].getacout(); Rnum++; finance[i].disp(); } } Mcout=Bcout-Rcout; cout<<"收入总金额"<<Bcout<<endl; cout<<"支出总金额:"<<Rcout<<endl; cout<<"收支结余:"<<Mcout<<endl; }voidBDatabase::financecount(intdata)//按月财务统计 { intda=data; intBnum=0; intRnum=0; intMcout=0; intBcout=0; intRcout=0; for(inti=0;i<=top;i++) { if(finance[i].getdate()==da) { if(finance[i].getontag()==1) { Bcout+=finance[i].getacout(); Bnum++; finance[i].disp(); } else{ Rcout+=finance[i].getacout(); Rnum++; finance[i].disp(); } } }Mcout=Bcout-Rcout; cout<<"收入总金额"<<Bcout<<endl; cout<<"支出总金额:"<<Rcout<<endl; cout<<"收支结余:"<<Mcout<<endl; } voidBDatabase::disp() { for(inti=0;i<=top;i++) if(finance[i].gettag()==0) finance[i].disp(); } BDatabase::~BDatabase()//析构函数,将finance[]写到finance.txt文件中 { fstreamfile("finance.txt",ios::out); for(inti=0;i<=top;i++) if(finance[i].gettag()==0) file.write((char*)&finance[i],sizeof(finance[i])); file.close(); }//Finance.hFinance头文件Finance类的声明#include<iostream>#include<iomanip>#include<string>#include<fstream>#ifndefFINANCEH#defineFINANCEHclassFinance{private: inttag;//删除标记1:已删0:未删 intno;//财务编号 charname[20];//姓名 intacount; intontag;//intdate;//财务日期public: Finance(){} char*getname(){returnname;}//获取姓名 intgetno(){returnno;}//获取财务编号 intgetacout(){returnacount;} intgettag(){returntag;}//获取删除标记 intgetontag(){returnontag;} intgetdate(){returndate;}//获取日期 voidsetname(charna[]);//设置 voiddelfinance(){tag=1;}//删除财务voidaddfinance(intda,intn,char*na,intnu);//增加财务 intborrowfinance() { if(ontag==1) { ontag=0; return1; } return0; }//支出操作 voidretfinance();//收入操作 voiddisp();//输出财务};#endif//Finance.cppFinance函数的功能实现#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"Finance.h"#include"BDatabase.h"voidFinance::setname(charna[])//设置 { strcpy(name,na); }voidFinance::addfinance(intda,intn,char*na,intnu)//增加财务 { charch; tag=0; date=da; no=n; strcpy(name,na); acount=n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论