c++课程设计个人记账软件Word文件下载.docx
《c++课程设计个人记账软件Word文件下载.docx》由会员分享,可在线阅读,更多相关《c++课程设计个人记账软件Word文件下载.docx(36页珍藏版)》请在冰豆网上搜索。
为什么要理财?
每个人都希望过幸福美满的生活,但是你首先应自问有没有这样的能力?
房子、车子、股票、珠宝…//系统生成代码,略去…//系统生成代码,略去,在某些人眼里是财富的象征,生活品质的保证,是他们努力追求的价值。
也有许多所谓的有钱人,宁愿选择平平淡淡的生活,辛勤工作、努力储蓄,他们不认为华丽的外表相可以代表高水准的生活品质。
不过,显然大多数人一生中都是无法满足的。
心理学家马斯洛的需求理论告诉我们,人类的需求是有层级之分的:
在安全无虞的前提下追求温饱,当基本生活条件获得满足之后,则需求得到社会的尊重;
并进一步追求人生的最终目标自我实现。
而要依层级满足这些需求,必须建立在不虞遗乏的财务条件上。
因此,你必须认识理财的重要,订定一套适合自己的理财计划,来达成自己的生活目标。
我们知道,追求效益极大化是经济学的基本精神,即说以最小的代价,获得最大的收益。
但这并非表示我们吝于付出,因为资源是有限的,稀少的资源,迫使我们必须做选择,而理财行为就是聪明的选择。
我们付出代价最少、收益最大的一条路,让有限的资源得以发挥最大的效用。
对于我们能拥有的、以及想要争取的,透过会计学对财富流量及存量的记录,客观地显现在资产负债表以及损益表上,可以帮助我们看清自己的财务状况,进而规划出符合我们的需求、能力可及的财务目标。
对于资金的筹措及运用,财务学可以提供我们最佳的策略及方法,以最少的成本取得资源,并做好有效的分配,因应景气循环及环境的变化,配合目标定出自己的资产组合。
[1]
1.4理财软件的目的
俗话说“你不理财,财不理你”,只有通过合理的理财,才能够有效的管理你的个人资产的合理运用。
个人理财软件不仅可以帮你记帐,更多的是可以实时掌握你的收入与支出,掌握资金的变动情况,同时还可以统计出资金的主要流向,从而更合理的分配资金。
本课题将达到以下几个目的:
(1)清晰简便明了的操作,减少不必要的精力消耗。
传统的个人理财软件中,有大量的冗余功能,使用户的大部分精力将耗费在了解复杂的界面与繁琐的操作上,而作为缺少个人理财所应具有的简便明了的特点。
通过此个人理财软件,用户可以将绝大部分精力放在对账目的研究上,而不是无意义的操作上。
(2)提供更好的服务。
个人理财软件可以较迅速、有效地收集各种个人财务信息,用户可以直接从系统中获得自己所需的个人财务信息,并根据相关的信息做出决策和相应的行动方案。
(3)降低成本。
个人理财软件没有繁琐的操作,简便易懂的操作使用户减少了上手时间,降低了使用成本。
第一章C++简介
1.1编辑本段组成部分
根据EffectiveC++第三版第一条款的描述,现在C++由以下四个“子语言”组成:
1、C子语言。
C++支持C语言的几乎全部功能,主要是c89的部分,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。
2、面向对象的C++语言。
C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本。
3、泛型编程语言。
C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。
4、STL(C++标准模板库,StandardTemplateLibrary)。
随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。
此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。
编辑本段语言特点
·
C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
C++设计成直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。
C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
C++避免平台限定或没有普遍用途的特性。
C++不使用会带来额外开销的特性。
C++设计成无需复杂的程序设计环境。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。
关于此类话题,BjarneStroustrup的《C++语言的设计和演化》(1994)里做了详尽的陈述。
优点
C++在一定程度上可以和C语言很好的结合,甚至目前大多数C语言程序是在C++的集成开发环境中完成的。
C++相对众多的面向对象的语言,具有相当高的性能。
C++引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。
很多优秀的程序框架包括MFC、QT、wxWidgets就是使用的C++。
争议
C++由于语言本身过度复杂,这甚至使人类难于理解其语义。
更为糟糕的是C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。
由于本身的复杂性,复杂的C++程序的正确性相当难于保证。
也有人提出不支持多线程的原语等缺陷。
不过有如此多的知名人士提出了如此多的缺陷,正说明C++被广泛使用和成功。
1.2编辑本段代码性能
人们一般认为,使用Java或C#的开发成本比C++低。
但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。
这个条件就是:
软件规模和复杂度都比较小。
如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。
否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。
造成这种差别的就是C++的软件工程性。
美国AT&
T贝尔实验室的本贾尼·
斯特劳斯特卢普(BjarneStroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“CwithClasses”)。
一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。
虚函数(virtualfunction)、运算符重载(operatoroverloading)、多重继承(multipleinheritance)、模板(template)、异常(exception)、RTTI、命名空间(namespace)逐渐被加入标准。
1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC1988-1998。
C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。
1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。
C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。
先前被临时命名为C++0x的新标准将被称为C++2011。
C++2011将取代现行的C++标准ISO/IEC14882,它公开于1998年并于2003年更新,通称C++98以及C++03。
国际标准化组织于2011年9月1日出版发布ISO/IEC14882:
2011,名称是:
Informationtechnology--Programminglanguages--C++Edition:
3。
C++语言发展大概可以分为三个阶段:
第一阶段从80年代到1995年。
这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;
第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。
当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;
第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。
1.3编辑本段编程技巧
运算符new和delete提供了存储的动态内存分配和释放功能,它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。
使用new较之使用malloc()有以下的几个优点:
(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。
(2)自动地返回正确的指针类型,不用进行强制指针类型转换。
(3)可以用new对分配的对象进行初始化。
对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。
但是宏调用有许多的弊端,可能引起不期望的副作用。
例如宏:
#defineabs(a)(a)<
0?
(-a):
(a)),当使用abs(i++)时,这个宏就会出错。
所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。
使用内联函数只须把inline关键字放在函数返回类型的前面。
例如:
inlineintAdd(inta,intb);
//声明Add()为内联函数
这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。
使用函数重载。
在C语言中,两个函数的名称不能相同,否则会导致编译错误。
而在C++中,函数名相同而参数账目类型不同的两个函数被解释为重载。
voidPutHz(char*str);
//在当前位置输出汉字
voidPutHz(intx,?
inty,?
char*str);
//在x,y处输入数字
使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;
同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。
同时必须注意,参数账目类型相同,但是函数返回类型不同的两个函数不能重载。
用引用(reference)代替指针进行参数传递。
通常的情况下,一个函数应该具有尽可能大的灵活性。
使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C++的代码中都大量地使用了缺省参数。
需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。
亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。
否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。
1.4编辑本段编程开发
开发方式:
在unix世界有大量的程序员是传统的非IDE的方式进行软件开发。
一般是如下组合:
1.编译器:
gcc,clang等
2.编辑器:
一般是vim/emacs
3.make:
gnumake或者bsd的pmake等,功能与用法基本一样
4.版本管理:
cvs,svn,git等
5.代码阅读:
cscope,ctags,lxr等
集成开发环境(IDE)
第二章需求分析
内蒙古科技大学课程设计任务书
课程名称
C++语言课程设计
设计题目
长途客运售票管理系统的设计
指导教师
时间
2011-2012春学期第17、18周
一、教学要求
1.巩固和加深学生对C++语言课程的基本知识的理解和掌握
2.掌握C++语言编程和程序调试的基本技能
3.利用C++语言进行基本的软件设计
4.掌握书写程序设计说明文档的能力
5.提高运用C++语言解决实际问题的能力
二、设计资料及参数
用C++设计一个系统,能提供下列服务:
(1)录入消费和支出信息,格式为:
日期
金额
操作类型
消费类别
备注
2011-11-2
25
支出
食
购买水果
2011-11-10
40
收入
副食补贴
其中操作类型包括收入和支出,消费类别为衣,食,住,行和其他。
(2)查询功能。
查询某一天的消费和支出记录,并能进行修改;
(3)统计功能。
统计某个区间的消费和支出,例如11月份,则输入时间段2011-11-1到2011-11-30统计总的支出和收入。
按照消费类别统计某个时间段内的消费记录,如统计11月份买衣服的支出共有多少?
三、设计要求及成果
根据系统功能要求,可以将问题解决分为以下步骤:
(1)分析系统中的各个实体之间的关系及其属性和行为;
(2)根据问题描述,设计系统的类层次;
(3)完成类层次中各个类的描述(包括属性和方法);
(4)完成类中各个成员函数的定义;
(5)完成系统的应用模块;
(6)功能调试;
(7)提交课程设计报告:
完成系统总结报告以及系统使用说明书
功能:
输入正确密码登录系统,增加账目,删除账目,查询及修改账目,统计账目信息,退出系统。
设计思路:
1.登录系统:
输入正确密码进行登录,如密码错误提示重新输入密码,为确保账本安全,只有三次输入机会,三次后将不具有打开此账的权力。
2.新增账目:
可以增加账目内容,保存新增账目信息,以便查阅。
3.删除账目:
删除无用或过期账目,此功能为彻底删除,删除后不可恢复数据,若输入日期有误系统给出提示。
4.查询及修改:
查看账目信息,查账后可以是否对账目进行修改,修改错误账目,并保存修改信息,若输入日期有误系统给出提示。
5.统计账目:
输入你想查询的账目的起、止日期,若输入日期有误系统给出提示,统计系统自动分类一段时间内的交易类别和消费类别,方便查看。
第三章设计分析
3.1系统的基本功能
本软件具有六大模块:
登录系统,输入账目,删除账目,查询及修改,统计信息,退出系统。
登录系统:
输入密码进行登录,如密码错误提示重新输入密码。
新增账目:
增加账目内容,方便查阅。
删除账目:
删除无用或过期账目。
查询及修改:
查看账目,修改错误账目。
统计账目:
统计与分析账目信息。
功能图如下:
图3.1系统总体框架图
3.2系统流程图
3.2.1登录流程:
错误
正
三确
次
错
误
图3.2.1登录流程图
3.2.2输入流程:
图3.2.2输入流程图
3.2.3删除流程:
图3.2.3删除流程图
3.2.4查询及修改流程:
否
是
图3.2.4查询及修改流程图
3.2.5统计流程:
图3.2.5统计流程图
第四章运行及测试结果
4.1、登录主界面:
图4.1.1主界面登录窗口,密码正确时进入主界面
图4.1.2系统主界面,选择系统功能
4.2新增账目功能:
图4.2.1输入账目信息
4.3修改账目信息:
图4.3.1删除无用信息
4.4查询、修改账目:
图4.4.1查询交易日期,并决定是否修改
图4.4.2查询后修改信息
4.5统计账目:
图4.5.1统计一段时间内总收支、以及各消费类别的金额
4.6退出系统:
图4.6.1使用完毕,退出系统并保存
第五章总结
在为期两周的课程设计中,我体会颇多,学到很多东西。
我懂得了如何用MFC编写可视化界面的应用程序,利用设计个人记账系统的机会,我加强了对C++的认识,复习了自己以前的知识,自己的逻辑思考能力也提高不少。
从而对MicrosoftVisualC++6.0又有了更深入的认识!
在这次课程设计中,我还懂得了程序开发的一些比较重要的步骤,比如总体设计、数据库设计(含概念设计、逻辑设计、物理设计)、程序模块设计(含功能需求、用户界面设计、程序代码设计与分析、运行结果)、系统使用说明等。
总之,通过这次课程设计,我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。
最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序,让我对编程更加热爱了。
整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识;
设计增强了我们用所学知识去解决具体问题的能力,进一步培养了我们独立思考问题和解决问题的能力。
特别是学会了在VisualC++集成开发环境中如何调试程序的方法。
当然,老师的悉心指导和同学的帮助也是不可忽视的,在此感谢本次课程设计中所有辅导老师对我的关心和帮助,诚心诚意感谢他们对我的鼓励与教导,是她们在我迷茫的时候给了我些许提示,激发了我编程的灵感;
还有,我在此也十分感谢本次课程设计中同学们对我的帮助,尽管本次不是团队合作,但是他们也给了我不少的提示和帮助,是他们让我有信心坚持做下来,在此感谢他们!
通过完成本次面向对象程序设计的任务,使我熟练和掌握了这学期所学的有关visualc++中的一些主要知识点和应用点,如类的定义,类的实现,对象的定义,类的继承等等。
可以所学有所学,所有所用,不至于自己所学知识由于没有经历可用过程,而放弃对它的兴趣。
面向对象程序设计作为一门软件设计的课程,具有极强的实践性,使我加强了灵活应用理论知识的能力及面向对象程序设计技能。
此次,应用程序的设计和创建,经历了平时在课堂中和考试中,决不会有的重重难题和问题。
而这些问题,又都是课本上很少提到的、更深一层的知识领域和应用领域。
这些问题,并不是我们平时只靠课本,就可以轻易解决的。
所以,锻炼了我们面对难题,自己思索,自己探索,自己查资料发现问题、解决问题的独断能力。
当然,此次任务的完成,也体现出同学之间的团结精神。
所遇种种难以解决的问题,大家都会把它当作共同遇到的问题,在一起共同探讨,共同发挥自己所学和所知,投入式的互相帮助和解决困难。
“实践是检验真理的唯一标准”。
没有实践,就不会发现和深刻体会它的真实所在。
只有通过检验的真理,在自己的心里,才会认可它的真实性。
面向对象程序设计的完成,使我们懂得了真理的重要性,理论和实际的相结合,才能真正把握所学和所掌握的知识。
附录
以下是程序的源代码,并且加上了详细的注释:
#include<
iostream>
//io流
string>
//字符
iomanip>
//setw
fstream>
//对文件操作
cstdlib>
//exit(0);
cstdlib是C++里面的一个常用函数库,等价于C中的<
stdlib.h>
。
usingnamespacestd;
//标准命名空间防止与全局标示符重名
classbook
{
public:
book();
//默认构造函数
charinter_face();
//首页
voidadd_xinxi();
//添加数据
voiddel_xinxi();
//删除数据
voidshow_xinxi();
//显示指定数据
voidtongji();
//统计
voidsave_new();
//保存新增加的数据
voidCreateFile(char*s);
voidReadFile(char*s);
voidprint();
private:
stringjydate;
//日期
floatmoney;
//交易金额
stringjylx;
//操作类型
stringxflb;
//消费类别
stringbeizhu;
//备注
};
book:
:
book()//构造函数初始化
jydate="
\0"
;
money=0;
jylx="
xflb="
beizhu="
}
//首页
charbook:
inter_face()
system("
cls"
);
//清除屏幕
cout<
<
endl;
cout<
"
\t\t∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽∽"
<
endl
<
\t\t§
个人记账系统§
endl
\t\t∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞"
§
1.新增账目4.账目统计§
2.删除账目5.退出系统§
3.查询及修改§
<
\t\t≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌≌"
endl<
\t\t\t请选择:
;
cha