C++课程设计 - 副本

  • 格式:doc
  • 大小:199.00 KB
  • 文档页数:15

1
目录
1 设计目的与任务··································2
1.1 设计目的····································2
1.2 设计任务····································2
2 设计思路········································3
3 类层次图········································4
4 设计说明文档····································5
5 程序代码········································6
6 设计心得·······································11
7 参考文献·······································12
8 附录···········································13
2

1 设计目的与任务
1.1 设计目的

通过设计完成“模拟计算机程序”的任务,进一步熟悉C++中类

的概念、类的封装、继承的实现方式。了解系统开放的需求分析、类
层次设计、模块分解、编码测试、模块组装与整体调试的全过程,加
深对C++的理解与Visual C++环境的使用,逐步熟悉程序设计的方法,
并养成良好的编程习惯。
1.2 设计任务
设计一个程序模拟一个简单的手持计算器,程序支持算术运算
“+、-、*、/”四则运算及C(清除)、A(全清除)操作。并实现如
下基本要求:程序运行时,显示一个窗口,等待用户输入,用户可以
从键盘输入要计算的表达式,输入的表达式显示在窗口中,用户键入
“=”符号后,窗口显示结果。运行环境:VC++6.0。
3

2 设计思路
本程序的原思路形成于C语言,最终融合学习的C++知识,通过
对Fun类中不同函数的调用来分别实现程序初始界面的显示、对符合
要求的输入进行计算和显示、对不符合要求的输入进行判断和显示、
清除、全清除(返回主界面)、进行第二次运算的等操作。本程序主
要通过switch语句定义加、减、乘、除的运算,并在除法运算中利
用if语句判断除法是否为零且给出相关提示;通过调用function函
数判断用户的输入是否符合要求,其中运用了强制类型转换及递归调
用。本程序作为一个简单的手持计算器的模拟,在每一次计算后需要
通过输入“A”或“C”实现进入下一次计算的界面,而不能连续进行
计算。再者,限于本人的能力,此程序并未实现“用户键入‘=’后
窗口显示出结果”及带“()”的复合运算的功能,甚为遗憾。
4

3 类层次图
用户进入初始界面并开始输入(或重新开始输入)
输入符合要求 按“A”键 输入不符合
程序自动进行计
算并显示结果

屏幕输出

“error”
并要求继续输

按“C”

输入除
“A”“C”以
外的键

清除屏幕并显示“请继续输入”
5

4 设计说明文档
进入程序后,系统首先通过调用界面函数void first()实现
初始界面的显示;接着,程序会利用语句cin>>X>>op>>Y来接收用户
的输入数据;之后,通过void function(char)函数判断用户的输
入是否符合要求,若符合要求则调用计算函数void caculate
(double,char,double)来进行计算并显示结果,否则,将提示用
户“error!请重新输入:”;完成一次计算后,若用户输入“A”或“C”
以外的内容,程序将提示错误。
6

5 程序代码
#include
#include
class Fun
{
private:
char fun_op,iteam,ca_opp;
double X,op,Y;
public:
void function(char);
void first();
void caculate(double,char,double);
};
void Fun::function(char i)
{
char op;
double X,Y;
iteam=i;
if(iteam=='c'||iteam=='c')
{
7

system("cls");
cout<<"请继续输入:"<cin>>X>>op>>Y;
Fun::caculate(X,op,Y);
}
if(iteam=='A'||iteam=='a')
{
system("cls");
Fun::first();
cout<<"请输入:"<cin>>X>>op>>Y;
Fun::caculate(X,op,Y);
}
}
void Fun::first()
{
cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
~~~~~~~~~~~~~~~~~~"<cout<<"~~~~~~~~~~~~~~~~~~~~~~~~欢迎使用计算器
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"<cout<cout<<" 按C键清除 按A键
8

全清除(返回主界面)"<cout<}
void Fun::caculate(double m_X,char m_op,double m_Y)
{
char opp;
X=m_X,op=m_op,Y=m_Y;
cout<<"结果:";
switch(m_op)
{
case'+':X=X+Y;
cout<break;
case'-':X=X-Y;
cout<break;
case'*':X=X*Y;
cout<break;
case'/':if(Y!=0)
{
X=X/Y;
9

cout<}
else
cout<<"error!请重新输入:"<break;
default:cout<<"error!请重新输入:"<}
int c=0;
cin>>opp;
if(opp!='c'&&opp!='a'&&opp!='A')
c=1;
while(c)
{
c=0;
cout<<"error!请重新输入:";
cin>>opp;
if(opp!='c'&&opp!='C'&&opp!='a'&&opp!='A')
c=1;
}
c=1;
Fun::function(opp);
if(opp=='+'||opp=='-'||opp=='*'||opp=='/')
10

{
cin>>Y;
Fun::caculate(X,opp,Y);
}
else if(sizeof(double (opp))==8)
{
X=double(opp)-48;
cin>>opp>>Y;
Fun::caculate(X,opp,Y);
}
}
void main()
{
Fun d_fun;
char op;
double X,Y;
d_fun.first();
cout<<"请输入:";
cin>>X>>op>>Y;
d_fun.caculate(X,op,Y);
}
11

6 设计心得
本次设计的原始思路鉴于C语言,之后融合C++知识,从设计总
体来说,思路清晰,基本功能得到实现。由于本人实力有限,并为达
到全部设计的要求。对于C++知识中类的概念有了进一步的认识和提
高,对系统开发的需求分析、类层次设计、模块分解、编码测试、模
块组装与整体调试的全过程也有了初步的了解,加深了对C++的理解
与Visual C++环境的使用。当然,学无止境,我们的C++知识还是不
够系统不够扎实,在以后的学习中需加倍努力,不断提高自己的编程
能力。
12

7 参考文献
[1] 《C++面向对象程序设计》 谭浩强编著 清华大学出版社
13
8 附录
14
15