面向对象程序设计》课程设计家庭财务管理系统.doc

上传人:土8路 文档编号:11066155 上传时间:2021-06-25 格式:DOC 页数:18 大小:123.50KB
返回 下载 相关 举报
面向对象程序设计》课程设计家庭财务管理系统.doc_第1页
第1页 / 共18页
面向对象程序设计》课程设计家庭财务管理系统.doc_第2页
第2页 / 共18页
面向对象程序设计》课程设计家庭财务管理系统.doc_第3页
第3页 / 共18页
面向对象程序设计》课程设计家庭财务管理系统.doc_第4页
第4页 / 共18页
面向对象程序设计》课程设计家庭财务管理系统.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《面向对象程序设计》课程设计家庭财务管理系统.doc》由会员分享,可在线阅读,更多相关《面向对象程序设计》课程设计家庭财务管理系统.doc(18页珍藏版)》请在三一文库上搜索。

1、河南城建学院 面向对象程序设计课程设计 设计说明书 课程名称: 面向对象程序设计课程设计 设计题目: 家庭财务管理系统 指导教师: 班 级: 学 号: 学生姓名: 同组人员: 计算机科学与工程系 2011 年 6 月 23 日 目 录 第第 1 章章 选选 题题.2 1.1 题目背景.2 1.2 系统实现的具体分工.2 1.2.1 选题.2 1.2.2 团队分工.3 1.3 开发环境.3 第第 2 章章 设计内容设计内容.3 2.1 实现功能.3 2.2 概要设计(涉及类的框图).4 2.3 界面设计.6 第第 3 章章 系统实现系统实现.6 3.1 涉及知识点.6 3.2 系统运行(主要运行

2、界面抓图).7 3.3 源程序清单(关键代码).7 第第 4 章章 测试与实验结果测试与实验结果.16 第第 5 章章 结束语结束语.17 参考文献参考文献.17 第 1 章 选 题 1.1 题目背景 近几年来,随着我国城乡居民收入的增加和生活水平的提高,家庭理财已成为人们居家过日子 的重要内容。社会学家细心的观察到,时下家庭的“小九九”比之计划经济年代,开始发生微妙的 变化。现在的城乡家庭生活发生了明显的变化,人们的收入逐渐拉开档次,消费水平也高了。大多 数家庭关注的是提高生活质量,一方面精打细算,量入为出,把钱用在刀刃上;另一方面保证适当 的娱乐活动、社会交际、智力开发等方面的开支。为此,

3、不少家庭就有中长期财务预算,有基本建 设规划。 总的说来,家庭理财必须以量入为出为原则,以财产保值增值为目标,处理好积累和消费的关 系。因此,应树立以下四个观念: 第一,资金运动质量观。资金(包括现金,有价证券,存款等)运动,是家庭经济活动的价值 反应,家庭理财应管好用活资金,加速资金周转,提高资金利用效果,力争做到结构合理、偿债能 力强、经济效益高,家庭财务做为资金的载体,应力争实现其保值增值。 第二,资金使用责任观。家庭财产作为社会资源的一部分,有责任创造社会财富,履行社会责 任,为适应我国经济发展的要求,家庭可根据自身状况,适当投资,适度超前消费。 第三,经济效益观。家庭经济生活的基本目

4、标,是在满足生活最佳需要的基础上,实现家庭财 力的最大化。因此家庭理财要与经济效益挂钩,必须处理好投入与产出的关系,规避各种经济风险, 堵塞各种经济漏洞,增收节支,当好家理好财,不断提高经济效益。 第四,利益协调观。家庭作为社会的细胞,它无疑又是一个利益结合体。从该意义上讲,家庭 理财实质就是处理协调家庭内部及与各有关的经济方面的经济利益关系。在理财实践中,要坚持公 正、公平、诚实和守信的原则,妥善处理好家庭内部利益关系、家庭与国家及有关经济单位的利益 关系。 1.2 系统实现的具体分工 家庭财务的中心内容账务管理。人们几乎每一天都会经过许多次货币活动。其中包括了买入卖 出实物,娱乐消费,起居

5、饮食消费,还有发放工资,收缴保费等。如果能把各类不同的活动进行分 类,建立不同的账户,分别对活动进行管理,那么无论现在还是将来,你的账务就会清楚明白了。 每天,我们对自己账务的操作有如下几类:添加新的数据项,比如今天我卖出了多少元,生活 中,我们就要对自己还有多少元。现在我们把这些工作放到程序里去实现,就是这样的操作。某账 户今天是添加还是减少,比如对元的操作就是减少。做到程序里,把它存放到一个数据表里就可以 了。归结后,账户的操作一般如下:新添,删除,增加,减少,查找,统计。对重要的数据表记录 还可以打印。 1.2.1 选题 现代社会家庭的理财观念进一步提高,理财手段变得更加丰富。随着生活水

6、平和文化水平的提 高,家庭购买电脑的能力和应用电脑的能力开始提高。电脑及其应用的普及化,人们应用电脑进行 家庭财务管理的观念增强,因此,开发一个通用性家庭理财软件已经成为社会需求。本系统是一个 家庭通用型理财软件,系统目标是把适合家庭化管理的各种理财手段及家庭日常收支管理实现计算 机化管理,使对家庭及家庭成员的收支活动更好地进行记录并加以统计分析成为可能,也使家庭理 财变得方便,快捷,全面。 1.2.2团队分工 表 1.1 项目分工一览表 角色姓名承担的具体任务 组长周广敬程序的整体构架,功能实现。 组员郭黎阳功能的实现。 组员时兴平调试运行程序,查错,改错。 1.3 开发环境 编程工具:Vi

7、sual C+ 6.0 机型:方正电脑 处理器名称:Intel(R)Core(TM)2 Duo CPU E7200 2.53GHz 硬盘驱动器:WDC WD1600AAJS-22WAAO 系统内存:金士顿内存 2GB 显示卡: NVIDIA GeFORCE 9400 GT 显示器: 方正科技 FG981-W9 操作系统:Microsoft Windows XP Professional 第 2 章 设计内容 2.1 实现功能 家庭财务的中心内容账务管理。人们几乎每一天都会经过许多次货币活动。其中包括了买入卖 出实物,娱乐消费,起居饮食消费,还有发放工资,收缴保费等。如果能把各类不同的活动进行分

8、 类,建立不同的账户,分别对活动进行管理,那么无论现在还是将来,你的账务就会清楚明白了。 每天,我们对自己账务的操作有如下几类:添加新的数据项,比如今天我卖出了多少钱,生活 中,我们就要对自己还有多少钱,今天所得的利润进行统计。现在我们把这些工作放到程序里去实 现,就是这样的操作。某账户今天是添加还是减少,比如对钱的操作就是减少,如果与这个操作相 关的账户是现金。做到程序里,把它存放到一个数据表里就可以了。归结后,账户的操作一般如下: 新添,删除,增加,减少,查找,转账,统计。 2.2 概要设计(涉及类的框图) Finance 类类 private: 私有成员变量私有成员变量 int tag;

9、/删除标记 1:已删 0:未删 int no;/财务编号 char name20;/姓名 int acount; int ontag;/ int date;/财务日期 public: 公共函数声明公共函数声明 Finance() char *getname() return name; /获取姓名 int getno() return no; /获取财务编号 int getacout()return acount; int gettag() return tag; /获取删除标记 int getontag() return ontag; int getdate() return date; /

10、获取日期 void setname(char na);/设置 void delfinance() tag=1;/删除财务 void addfinance(int da,int n,char *na,int nu);/增加财务 int borrowfinance();/支出操作 void retfinance();/收入操作 void disp();/输出财务 BDatabase 类类 private: 私有成员变量私有成员变量 int top; /财务记录指针 Finance financeMaxb; /财务记录 public: 公共函数声明公共函数声明 BDatabase();/构造函数,将

11、 finance.txt 读到 finance中 void clear();/全部删除 int addfinance(int da,int n,char *na,int nu);/增加收入 Finance *query(int financeid);/查找财务 void financedata();/财务维护 void financecount();/ 财务统计 void financecount(int data); / 按月财务统计 void disp(); /显示财务 BDatabase();/析构这个类 表表 1 1 业务流程图符号业务流程图符号 符号名称说明 实体数据的源点/终点 输

12、入/输出 表示输入或输出的报表 处理 能改变数据值或数据位置的加工或部 件 数据流 用来连接其他符号,指明数据流动方 向 存储表示任何种类的联机存储 收入支出表 收入支出帐簿 账务 设置信息 收入支出管理 用户 时间 类型 总计 统计 文件记录 2.3 界面设计 在用户界面部分,根据需求分析结果,用户需要一个友善界面。在界面设计上,应做到简单明 了,易于操作,并且要注意到界面的布局,应突出的显示重要以及出错信息。在界面设计部分,本 系统为用户提供友好、方便、直观、简洁的操作环境。可供用户选择的项目主要有:退出,新增账 务,删除账务,查找账务,显示所有账务,总计。 第 3 章 系统实现 3.1

13、涉及知识点 类封装、面向对象程序设计、数组的应用、循环语句的使用、过程化设计的思想 等。 3.2 系统运行(主要运行界面抓图) 图 3.1 系统主界面 系统功能实现 3.3 源程序清单(关键代码) /程序主函数程序主函数/ #include #include #include #include #include Finance.h #include BDatabase.h using namespace std; void BDatabase:financedata() char choice; char bname40; int danum; int financeid; int acoun

14、t; int date; Finance *b; while (choice!=0) cout endl; coutnntt_欢迎进入家庭财务收支系统_ 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;

15、 cout endl; cout endl; cout choice; switch (choice) case 1: cout 输入财务编号: financeid; cout 输入家庭成员名: bname; cout 输入金额: acount; cout输入时间:如 2010 年 7 月写成 20107danum; addfinance(danum,financeid,bname,acount); break; case 2: cout 输入财务编号: financeid; b=query(financeid); if (b=NULL) cout 该财务不存在 endl; break; co

16、ut 输入新的家庭成员名: bname; b-setname(bname); break; case 3: cout 读入财务编号: financeid; b=query(financeid); if (b=NULL) cout 该财务不存在 delfinance(); break; case 4: cout 读入财务编号: financeid; b=query(financeid); if (b=NULL) cout 该财务不存在disp(); break; case 5: cout setw(6) 时间setw(6) 编号 setw(18) 家庭成员名 setw(10)收支类别 setw(

17、10)金额endl; disp(); break; case 6: financecount(); break; case 7: cout请输入年月date; financecount(date); break; case 8: clear(); cout删除成功!endl; break; case 9: break; default: cout请重新输入:; /main() 函数的实现,程序的主界面的引导函数的实现,程序的主界面的引导 void main() char choice; int financeid; BDatabase BookDB; while(choice!=0) syst

18、em(cls); coutnttO(_)O欢迎使用家庭理财管理系统 n; cout endl; cout 主菜单 endl; cout endl; cout 1.进入家庭理财管理系统 endl; cout endl; cout 0.退出 endl; cout endl; cout choice; switch (choice) case 1: BookDB.financedata(); break; case 0: break; default:return; /BDatabase.h 头文件头文件 BDatabase 类的声明类的声明 #include #include #include #

19、include #include Finance.h #ifndef BDATABASEH #define BDATABASEH const int Maxb=10000; class BDatabase private: int top; /财务记录指针 Finance financeMaxb; /财务记录 public: BDatabase();/构造函数,将 finance.txt 读到 finance中 void clear();/全部删除 int addfinance(int da,int n,char *na,int nu);/增加收入 Finance *query(int fin

20、anceid)/查找财务 for (int i=0;i=top;i+) if (financei.getno()=financeid return NULL; void financedata();/财务维护 void financecount();/ 财务统计 void financecount(int data); / 按月财务统计 void disp(); BDatabase(); /析构函数,将 finance写到 finance.txt 文件中 ; #endif /BDatabase.cpp BDatabase 功能函数功能函数 #include #include #include

21、#include #include Finance.h #include BDatabase.h BDatabase:BDatabase()/构造函数,将 finance.txt 读到 finance中 Finance b; top=-1; fstream file(finance.txt,ios:in); while (1) file.read(char *) if (!file) break; top+; financetop=b; file.close(); void BDatabase:clear()/全部删除 top=-1; int BDatabase:addfinance(int

22、da,int n,char *na,int nu)/增加收入 Finance *p=query(n); if (NULL=p) top+; financetop.addfinance(da,n,na,nu); return 1; return 0; void BDatabase:financecount()/ 财务统计 int Bnum=0; int Rnum=0; int Mcout=0; int Bcout=0; int Rcout=0; for(int i=0;i=top;i+) if(financei.getontag()=1) Bcout+=financei.getacout();

23、Bnum+; financei.disp(); else Rcout+=financei.getacout(); Rnum+; financei.disp(); Mcout=Bcout-Rcout; cout收入总金额Bcoutendl; cout支出总金额:Rcoutendl; cout收支结余:Mcoutendl; void BDatabase:financecount(int data) / 按月财务统计 int da=data; int Bnum=0; int Rnum=0; int Mcout=0; int Bcout=0; int Rcout=0; for(int i=0;i=to

24、p;i+) if(financei.getdate()=da) if(financei.getontag()=1) Bcout+=financei.getacout(); Bnum+; financei.disp(); else Rcout+=financei.getacout(); Rnum+; financei.disp(); Mcout=Bcout-Rcout; cout收入总金额Bcoutendl; cout支出总金额:Rcoutendl; cout收支结余:Mcoutendl; void BDatabase:disp() for (int i=0;i=top;i+) if (fina

25、ncei.gettag()=0) financei.disp(); BDatabase:BDatabase() /析构函数,将 finance写到 finance.txt 文件中 fstream file(finance.txt,ios:out); for (int i=0;i=top;i+) if (financei.gettag()=0) file.write(char *) file.close(); /Finance.h Finance 头文件头文件 Finance 类的声明类的声明 #include #include #include #include #ifndef FINANCE

26、H #define FINANCEH class Finance private: int tag;/删除标记 1:已删 0:未删 int no;/财务编号 char name20;/姓名 int acount; int ontag;/ int date;/财务日期 public: Finance() char *getname() return name; /获取姓名 int getno() return no; /获取财务编号 int getacout()return acount; int gettag() return tag; /获取删除标记 int getontag() retur

27、n ontag; int getdate() return date; /获取日期 void setname(char na);/设置 void delfinance() tag=1;/删除财务 void addfinance(int da,int n,char *na,int nu);/增加财务 int borrowfinance() if (ontag=1) ontag=0; return 1; return 0; /支出操作 void retfinance();/收入操作 void disp();/输出财务 ; #endif /Finance.cpp Finance 函数的功能实现函数的

28、功能实现 #include #include #include #include #include Finance.h #include BDatabase.h void Finance:setname(char na)/设置 strcpy(name,na); void Finance:addfinance(int da,int n,char *na,int nu)/增加财务 char ch; tag=0; date=da; no=n; strcpy(name,na); acount=nu; ontag=1; cout 记录为支出按(y) ,收入(其他键)ch; if(ch=Y|ch=y) o

29、ntag=0; void Finance:retfinance()/收入操作 ontag=1; void Finance:disp()/输出财务 cout setw(6) date setw(6) no setw(18) name setw(10) (ontag=1? 收入:支出) setw(10)acountendl; 第 4 章 测试与实验结果 我在这次课程设计中种主要负责程序的整体架构和财务库类的功能实现。通过思考,我发现 针对本题目对账目进行处理比对用户进行管理要简便许多,于是我选定了对账目进行管理的设计思 路。建立 Finance 类 作为一个账目的对象。建立 BDatabase 类

30、 作为整体账目库类并对两个类的声 明与功能进行了整体的封装,实现了面向对象程序设计的最基本优化,使程序的可读性与可维护性 得到了显著提高。 在函数功能的实现方面,我尽量利用面向对象程序设计的思路进行设计,尽量减少代码的从 重复。并利用友元等特性设计函数。 实验结果与预想相符,设计的功能全部实现。但是对于类的继承,友元的使用等方面还不忽 视非常纯熟。在今后的学习中我要加强这方面的锻炼。 第 5 章 结束语 这次课程设计历经一个星期左右,通过这一个星期的学习,发现了自己的很多不足,自己知 识的很多漏洞,也有很多闻所未闻的东西,理解实践的能力急需提高。但是对于类的继承,友元的 使用等方面还不忽视非常

31、纯熟。在今后的学习中我要加强这方面的锻炼。课程设计是培养学生综合 运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力 的具体训练和考察过程.。在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把 握一件事情,如何去做一件事情,又如何完成一件事情。在设计过程中,与同学分工设计,和同学 们相互探讨,相互学习,相互监督。学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也 学会了做人与处世。 在这次设计过程中,体现出自己单独设计程序的能力以及综合运用知识的能 力,体会了学以致用、突出自己劳动成果的喜悦心情,从中发现自己平时学习的不足和薄弱环节, 从

32、而加以弥补。 在此感谢我们的陈红军老师.,老师严谨细致、一丝不苟的作风一直是我工作、学习中的榜样; 老师循循善诱的教导和不拘一格的思路给予我无尽的启迪;这次程序设计的每个实验细节和每个数 据,都离不开老师您的细心指导。而您开朗的个性和宽容的态度,帮助我能够很顺利的完成了这次 课程设计。 同时感谢对我帮助过的同学们,谢谢你们对我的帮助和支持,让我感受到同学的友谊。 由于本人的设计能力有限,在设计过程中难免出现错误,恳请老师们多多指教,我十分乐意接 受你们的批评与指正,本人将万分感谢 参考文献 1 钱能. C+程序设计教程(修订版).清华大学出版社 2 严蔚敏 吴伟民.数据结构(C 语言版).清华大学出版社 3 C+入门经典(清华大学出版)

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1