c++课程设计个人记账软件(2)

2019-05-18 17:21

内蒙古科技大学c++课程设计

争议

6

C++由于语言本身过度复杂,这甚至使人类难于理解其语义。更为糟糕的是C++的编译系统受到C++的复杂性的影响,非常难于编写,即使能够使用的编译器也存在了大量的问题,这些问题大多难于被发现。

由于本身的复杂性,复杂的C++程序的正确性相当难于保证。也有人提出不支持多线程的原语等缺陷。不过有如此多的知名人士提出了如此多的缺陷,正说明C++被广泛使用和成功。 1.2编辑本段代码性能

人们一般认为,使用Java或C#的开发成本比C++低。但是,如果你能够充分分析C++和这些语言的差别,会发现这句话的成立是有条件的。这个条件就是:软件规模和复杂度都比较小。如果不超过3万行有效代码(不包括生成器产生的代码),这句话基本上还能成立。否则,随着代码量和复杂度的增加,C++的优势将会越来越明显。造成这种差别的就是C++的软件工程性。

美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、命名空间(name space)逐渐被加入标准。1998年国际标准组织(ISO)颁布了C++程序设计语言的国际标准ISO/IEC 1988-1998。C++是具有国际标准的编程语言,通常称作ANSI/ISOC++。

1998年是C++标准委员会成立的第一年,以后每5年视实际需要更新一次标准。C++0x最终国际投票已于2011年8月10日结束,并且所有国家都投出了赞成票,C++0x已经毫无疑义地成为正式国际标准。先前被临时命名为C++0x的新标准将被称为C++ 2011。C++ 2011将取代现行的C++标准ISO/IEC 14882,它公开于1998年并于2003年更新,通称C++98以及C++03。国际标准化组织于2011年9月1日出版发布ISO/IEC 14882:2011,名称是:Information technology -- Programming languages -- C++ Edition: 3。

C++语言发展大概可以分为三个阶段:第一阶段从80年代到1995年。这一阶段C++语言基本上是传统类型上的面向对象语言,并且凭借着接近C语言的效率,在工业界使用的开发语言中占据了相当大份额;

第二阶段从1995年到2000年,这一阶段由于标准模板库(STL)和后来的Boost等程序库的出现,泛型程序设计在C++中占据了越来越多的比重性。当然,同时由于Java、C#等语言的出现和硬件价格的大规模下降,C++受到了一定的冲击;

第三阶段从2000年至今,由于以Loki、MPL等程序库为代表的产生式编程

6

内蒙古科技大学c++课程设计

7

和模板元编程的出现,C++出现了发展历史上又一个新的高峰,这些新技术的出现以及和原有技术的融合,使C++已经成为当今主流程序设计语言中最复杂的一员。

1.3编辑本段编程技巧

运算符new和delete提供了存储的动态内存分配和释放功能,它的作用相当于C语言的函数malloc()和free(),但是性能更为优越。使用new较之使用malloc()有以下的几个优点:

(1)new自动计算要分配类型的大小,不使用sizeof运算符,比较省事,可以避免错误。

(2)自动地返回正确的指针类型,不用进行强制指针类型转换。 (3)可以用new对分配的对象进行初始化。

对于频繁使用的函数,C语言建议使用宏调用代替函数调用以加快代码执行,减少调用开销。但是宏调用有许多的弊端,可能引起不期望的副作用。例如宏:#define abs(a)(a)<0?(-a):(a)),当使用abs(i++)时,这个宏就会出错。 所以在C++中应该使用inline内联函数替代宏调用,这样既可达到宏调用的目的,又避免了宏调用的弊端。

使用内联函数只须把inline关键字放在函数返回类型的前面。例如: inline int Add(int a,int b);//声明Add()为内联函数

这样编译器在遇到Add()函数时,就不再进行函数调用,而是直接嵌入函数代码以加快程序的执行。

使用函数重载。在C语言中,两个函数的名称不能相同,否则会导致编译错误。而在C++中,函数名相同而参数账目类型不同的两个函数被解释为重载。例如:

void PutHz(char* str);//在当前位置输出汉字

void PutHz(int x,?int y,?char * str);//在x,y处输入数字 使用函数重载可以帮助程序员处理更多的复杂问题,避免了使用诸如intabs()、fabs()、dabs()等繁杂的函数名称;同时在大型程序中,使函数名易于管理和使用,而不必绞尽脑汁地去处理函数名。同时必须注意,参数账目类型相同,但是函数返回类型不同的两个函数不能重载。

用引用(reference)代替指针进行参数传递。通常的情况下,一个函数应该具有尽可能大的灵活性。使用缺省参数为程序员处理更大的复杂性和灵活性问题提供了有效的方法,所以在C++的代码中都大量地使用了缺省参数。 需要说明的是,所有的缺省参数必须出现在不缺省参数的右边。亦即,一旦开始定义缺省参数,就不可再说明非缺省的参数。否则当你省略其中一个参数的时候,编译器无法知道你是自定义了这个参数还是利用了缺省参数而定义了非缺省的参数。

7

内蒙古科技大学c++课程设计

1.4编辑本段编程开发 开发方式 :

8

在unix世界有大量的程序员是传统的非IDE的方式进行软件开发。一般是如下组合:

1.编译器:gcc,clang等 2.编辑器:一般是vim/emacs

3.make:gnu make 或者bsd 的pmake等,功能与用法基本一样 4.版本管理:cvs,svn,git等 5.代码阅读:cscope,ctags,lxr等

集成开发环境(IDE)

8

内蒙古科技大学c++课程设计

9

第二章 需求分析

内蒙古科技大学课程设计任务书

课程名称 设计题目 指导教师 C++语言课程设计 长途客运售票管理系统的设计 时间 2011-2012春学期 第17、18周 一、教学要求 1. 巩固和加深学生对C++语言课程的基本知识的理解和掌握 2. 掌握C++语言编程和程序调试的基本技能 3. 利用C++语言进行基本的软件设计 4. 掌握书写程序设计说明文档的能力 5. 提高运用C++语言解决实际问题的能力 二、设计资料及参数 用C++设计一个系统,能提供下列服务: (1) 录入消费和支出信息,格式为: 日期 2011-11-2 2011-11-10 金额 25 40 操作类型 支出 收入 消费类别 食 食 备注 购买水果 副食补贴 其中操作类型包括收入和支出,消费类别为衣,食,住,行和其他。 (2) 查询功能。查询某一天的消费和支出记录,并能进行修改; (3) 统计功能。统计某个区间的消费和支出,例如11月份,则输入时间段2011-11-1到2011-11-30统计总的支出和收入。按照消费类别统计某个时间段内的消费记录,如统计11月份买衣服的支出共有多少? 三、设计要求及成果 9

内蒙古科技大学c++课程设计

根据系统功能要求,可以将问题解决分为以下步骤: (1)分析系统中的各个实体之间的关系及其属性和行为; (2)根据问题描述,设计系统的类层次; (3)完成类层次中各个类的描述(包括属性和方法); (4)完成类中各个成员函数的定义; (5)完成系统的应用模块; (6)功能调试; (7)提交课程设计报告:完成系统总结报告以及系统使用说明书 10

功能: 输入正确密码登录系统,增加账目,删除账目,查询及修改账目,统计账目信息,退出系统。 设计思路:

1.登录系统:

输入正确密码进行登录,如密码错误提示重新输入密码,为确保账本安全,只有三次输入机会,三次后将不具有打开此账的权力。

2.新增账目:

可以增加账目内容,保存新增账目信息,以便查阅。 3.删除账目:

删除无用或过期账目,此功能为彻底删除,删除后不可恢复数据,若输入日期有误系统给出提示。

4.查询及修改:

查看账目信息,查账后可以是否对账目进行修改,修改错误账目,并保存修改信息,若输入日期有误系统给出提示。

5.统计账目:

输入你想查询的账目的起、止日期,若输入日期有误系统给出提示,统计系统自动分类一段时间内的交易类别和消费类别,方便查看。

10


c++课程设计个人记账软件(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:几种常见的图形点阵模块

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: