c分数计算器课设.docx

上传人:b****6 文档编号:15507563 上传时间:2023-07-05 格式:DOCX 页数:28 大小:27.06KB
下载 相关 举报
c分数计算器课设.docx_第1页
第1页 / 共28页
c分数计算器课设.docx_第2页
第2页 / 共28页
c分数计算器课设.docx_第3页
第3页 / 共28页
c分数计算器课设.docx_第4页
第4页 / 共28页
c分数计算器课设.docx_第5页
第5页 / 共28页
c分数计算器课设.docx_第6页
第6页 / 共28页
c分数计算器课设.docx_第7页
第7页 / 共28页
c分数计算器课设.docx_第8页
第8页 / 共28页
c分数计算器课设.docx_第9页
第9页 / 共28页
c分数计算器课设.docx_第10页
第10页 / 共28页
c分数计算器课设.docx_第11页
第11页 / 共28页
c分数计算器课设.docx_第12页
第12页 / 共28页
c分数计算器课设.docx_第13页
第13页 / 共28页
c分数计算器课设.docx_第14页
第14页 / 共28页
c分数计算器课设.docx_第15页
第15页 / 共28页
c分数计算器课设.docx_第16页
第16页 / 共28页
c分数计算器课设.docx_第17页
第17页 / 共28页
c分数计算器课设.docx_第18页
第18页 / 共28页
c分数计算器课设.docx_第19页
第19页 / 共28页
c分数计算器课设.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

c分数计算器课设.docx

《c分数计算器课设.docx》由会员分享,可在线阅读,更多相关《c分数计算器课设.docx(28页珍藏版)》请在冰点文库上搜索。

c分数计算器课设.docx

c分数计算器课设

课程设计报告

课程名称算法与程序设计

课题名称分数计算器设计

专业信息与计算科学

班级1601班

学号1428

姓名王世成许依哲

指导教师王祝君、赵钍焱

2018年01月04日

湖南工程学院

课程设计任务书

课程名称

课题

算法与程序设计

分数计算器设计

专业班级信息与计算科学1601班

学生姓名王世成许依哲

学号1428

指导老师王祝君、赵钍焱

审批

任务书下达日期2017年12月18日

任务完成日期

2018年

01月

04日

一.设计要求:

1、问题描述

定义一个整数类。

定义一个分数类,由整数类派生。

能对分数进行各种计算和输入/输出。

2、功能要求

(1)定义整数类和分数类。

其中,包括构造函数、析构函数、显示函数等。

(2)输入/输出:

对流提取和流插入运算符进行重载。

(3)计算功能:

可进行分数的加、减、乘和除法运算。

(4)化简功能:

将分数化简为最简分数。

(5)异常办理功能:

分数中分母不能够为零。

(6)菜单功能:

每种功能的操作都是在菜单中进行相应选择。

3、问题的解决方案

依照系统功能要求,能够将问题解决分为以下步骤:

应用系统解析,建立该系统的功能模块框图以及界面的组织和设计;

(2)解析系统中的各个实体及它们之间的关系;

(3)依照问题描述,设计系统的类层次;

(4)完成类层次中各个类的描述;

(5)完成类中各个成员函数的定义;

(6)完成系统的应用模块;

(7)功能调试;

(8)完成系统总结报告。

前言

在网站上找了一个源代码对它进行了解析,我们一起读懂这个程序在这个过程中间碰到我不懂的和他不懂的地方,但是经过两个人的合作最后把程序全部都读懂了,如由开始的定义整数类,不清楚为什么要定义两个,此后慢慢看下去此后就知道了,因为这个要由整数类派生出分数类,在后边也碰到王看不懂的地方履约分,经过我给他举实例尔后再经过用程序代码打上去,慢慢就对这个分数计算器的计算功能全部认识了,包括后边的层次图,我经过上网XX层次图的构造,他则对整个程序进行解析,从整个层面上看。

拿到这个课题此后我们一起查找资料,源代码有很多不理解的地方,我们一起学习,一点点的理解。

还有层次图的设计,系统的调试,解析,一个个过程慢慢摸

索,两个人互相帮助下,完成了这个课题。

系统调试过程出现一些问题,此后经过

咨询来老师,上网找寻的方法纠正了错误,让程序顺利进行。

 

(一)需求解析.....................................

(二)整体设计.....................................

(三)详细设计.....................................

(四)系统调试.....................................

(六)使用说明及编程领悟...........................

(七)要点源程序(带说明).........................

二、设计内容

 

(一)需求解析

系统设计目的与意义:

制作一个分数计算器,以完成分数与分数,整数与分数之间的四则运算,以及分数的

化简,并对分数进行输入/输出。

(二)整体设计

系统功能解析;

(1)定义整数类和分数类。

其中,包括构造函数、析构函数、显示函数等。

(2)输入/输出:

对流提取和流插入运算符进行重载。

(3)计算功能:

可进行分数的加、减、乘和除法运算。

(4)化简功能:

将分数化简为最简分数。

(5)异常办理功能:

分数中分母不能够为零。

(6)菜单功能:

每种功能的操作都是在菜单中进行相应选择。

系统功能模块划分与设计(系统功能模块图):

头文件

声明整数类声明派生类

主函数成员函数定义

定义类的对象定义成员函数

(三)详细设计

类层次图

 

加法运算

(四)系统调试

减法运算

系统主界面

进行分数与整数运算调试

类类

进行分数约分调试

进行分数与分数运算调试

退出调试

乘法运算

 

除法运算

进行分母为0的调试

约分

(六)使用说明及编程领悟

依照屏幕上的提示进行操作,输入整数与分数,其次依照页面弹出来的文字进行分数与

在调试的过程中我们忽略了这是由多个文件合

分数的四则运算也许整数与分数的四则运算,

并而来的大文件,之间合并在一起去操作,以致怎么运行都是出现一个错误,最后拆分开来

运运运运

就调试成算功了,算包括后算面的办理算整个过程真的有点麻烦,最后还是坚持下来了,感觉挺好的,

自然完成这个课设也让我们再次感觉到这么学科的好处以及学习的乐趣

(七)要点源程序(带说明)

//分数计算器h.h:

#include

classInteger//整数类

{

protected:

intfz;

intfm;

public:

Integer(inta=0,intb=1):

fz(a),fm(b){}

~Integer(){}

voiddisplay();

};

classFraction:

publicInteger//分数类,进行计算和输入输出

{

public:

Fraction(inta=0,intb=1):

Integer(a,b){}

friendistream&operator>>(istream&,Fraction&);//重载输入流

friendostream&operator<<(ostream&,Fraction&);//重载输出流

Fractionoperator+(Fraction&c);//重载+运算符(分数与分数)

Fractionoperator+(intn);//重载+运算符(整数与分数)

Fractionoperator-(Fraction&c);//重载-运算符(分数与分数)

Fractionoperator-(intn);//重载-运算符(整数与分数)

friendFractionoperator-(intn,Fraction&c);

Fractionoperator*(Fraction&c);//重载*运算符(分数与分数)

Fractionoperator*(intn);//重载*运算符(整数与分数)

Fractionoperator/(Fraction&c);//重载/运算符(分数与分数)

Fractionoperator/(intn);//重载/运算符(整数与分数)

friendFractionoperator/(intn,Fraction&c);

Fractionpredigest();//约分函数

voiddisplay();

};

//实现函数(分数计算器设计)

#include

//#include"分数计算器h.h"

voidInteger:

:

display()

{

cout<

cout<<"------------------

分数计算器-----------------

"<

cout<<"

请选择功能:

"<

cout<<"

1

分数与整数的四则运算。

"<

cout<<"

2

整数与分数的四则运算。

"<

cout<<"

3

分数与分数的四则运算。

"<

cout<<"

0

输入0退出。

"<

}

FractionFraction:

:

predigest()//定义约分函数

{

intn,d,t,sign=1;

Fractiontemp;

if(fz<0&&fm<0)

{

fz=-fz;

fm=-fm;

}

if(fz>0&&fm<0)

{

fm=-fm;

sign=-1;

}

if(fz<0&&fm>0)

{

fz=-fz;

sign=-1;

}

n=fz;

d=fm;

intr;

if(n

{t=n;n=d;d=t;}

r=n%d;

while(r!

=0)

{

n=d;

d=r;//d为最大合约数

r=n%d;

}

temp.fz=sign*(fz/d);

temp.fm=fm/d;

returntemp;

}

FractionFraction:

:

operator+(Fraction&c)//重载两个分数的加法运算符

{

Fractiontemp;

temp.fz=fz*c.fm+fm*c.fz;

temp.fm=fm*c.fm;

returntemp;

}

FractionFraction:

:

operator+(intn)//重载分数和整数的加法运算

{

Fractiontemp;

temp.fz=fm*n+fz;

temp.fm=fm;

returntemp;

}

Fractionoperator-(intn,Fraction&c)

{

Fractiontemp;

;

temp.fm=c.fm;

returntemp;

}

FractionFraction:

:

operator-(intn)//重载分数减整数的减法运算符

{

Fractiontemp;

temp.fz=fz-fm*n;

temp.fm=fm;

returntemp;

}

FractionFraction:

:

operator-(Fraction&c)//重载两个分数的减法运算符

{

Fractiontemp;

-fm*c.fz;

=fm*c.fm;

returntemp;

}

FractionFraction:

:

operator*(Fraction&c)//重载两个分数的乘法运算符

{

Fractiontemp;

temp.fz=fz*c.fz;

temp.fm=fm*c.fm;

returntemp;

}

FractionFraction:

:

operator*(intn)//重载分数与整数的乘法运算符

{

Fractiontemp;

temp.fz=fz*n;

temp.fm=fm;

returntemp;

}

FractionFraction:

:

operator/(Fraction&c)//重载两个分数的除法运算符

{

Fractiontemp;

temp.fz=fz*c.fm;

temp.fm=fm*c.fz;

returntemp;

}

FractionFraction:

:

operator/(intn)//重载分数除以整数的除法运算符

{

Fractiontemp;

temp.fz=fz;

temp.fm=fm*n;

returntemp;

}

Fractionoperator/(intn,Fraction&c)

{

Fractiontemp;

;

;

returntemp;

}

ostream&operator<<(ostream&output,Fraction&t)//重载输出运算符,输出分数

{

inta,b,c;

a=t.fz;

b=t.fm;

if(a==0||b==0)

//当分子,也许分母为

0时,输出

0

cout<<"0";

if(b==1)

//当分母为

1时,输出分子

cout<

if(a>b&&b!

=1)

//判断分数为假分数

{

c=a/b;

a=a%b;

cout<

if(a!

=0)

cout<<"又"<

}

if(a<0&&-a>b&&b!

=1)//当分数为负时,判断为假分数

{

c=-a/b;

a=-a%b;

c=-c;

cout<<'='<

if(a!

=0)

cout<<"又"<

}

&&t.fm!

=0&&t.fm!

=1)

//判断为真分数

output<

if(t.fz<0&&&&t.fm!

=0&&t.fm!

=1)

//判断为真分数

output<<"("<

returnoutput;

}

istream&operator>>(istream&input,Fraction&t)

{inta,c;

charb;

input>>a>>b>>c;

if(b=='/'&&c!

=0)

{

//重载输入运算符,输入分数

t.fz=a;

t.fm=c;

}

else

cout<<"

错误!

输入格式错误或分母为

0!

请退出重新输入!

"<

returninput;

}

#include

intmain()//main函数

{

Integerdis;

Fractiona,b,result,real;

intm,z;

charc;//数据种类

();

while(m!

=0)

{

cout<<"请输入:

(0-3):

";

cin>>m;

if(m==1)//分数与整数的运算

{

cout<

请输入一个分数:

";

cin>>a;

cout<

请输入运算符:

";

cin>>c;

cout<

输入一个正整数

:

";

cin>>z;

if(c=='+')

result=a+z;

if(c=='-')

result=a-z;

if(c=='*')

result=a*z;

if(c=='/')

result=a/z;

real=result.predigest();

cout<<"运算式规范为:

()<

cout<

}

if(m==2)

{

//整数与分数的运算

cout<

cout<

请输入一个正整数

:

";

cin>>z;

cout<

请输入运算符

:

";

cin>>c;

cout<

请输入一个分数

:

";

cin>>b;

if(c=='+')

result=b+z;

if(c=='-')

result=z-b;

if(c=='*')

result=b*z;

if(c=='/')

result=z/b;

real=result.predigest();

cout<<"运算式规范为:

()<<'='<

cout<

}

if(m==3)

//分数与分数的运算

{

cout<

cout<

请输入一个分数

:

";

cin>>a;

cout<

请输入运算符

:

";

cin>>c;

cout<

请输入一个分数

:

";

cin>>b;

if(c=='+')

result=a+b;

if(c=='-')

result=a-b;

if(c=='*')

result=a*b;

if(c=='/')

result=a/b;

real=result.predigest();

cout<<"运算式规范为:

()<<'='<

cout<

}

}

return0;

}

书写格式

a.要求用A4纸打印成册

b.正文格式:

一级标题用3号黑体,二级标题用四号宋体加粗,正文用小四号宋体;行距为22。

c.正文的内容:

正文总字数要求在3000字左右(不含程序原代码)。

d.封面格式以下页。

核查方式

指导老师负责查收程序的运行结果,并结合学生的工作态度、本质着手能力、创新精神和设计报告等进行

综合考评,并按优秀、优秀、中等、及格和不及格五个等级给出每位同学的课程设计成绩。

详细核查标准包括

以下几个部分:

a.平时出勤(占10%)

b.系统需求解析、功能设计、数据构造设计及程序整体构造合理与否(占10%)

c.程序能否完满、正确地运行,个人能否独立、熟练地调试程序(占40%)

d.设计报告(占30%)

注意:

不得抄袭他人的报告(或给他人抄袭),一旦发现,成绩为零分。

e.独立完成情况(占10%)。

课程查收要求

a.判断算法设计的合理性,运行相关程序,获得正确的数值结果。

b.回答相关问题。

c.提交课程设计报告。

d.提交软盘(源程序、设计报告文档)。

e.依内容的创新程度,完满程序情况及对程序讲解情况打分。

二、教材及参照书

朱战立等着,C++面向对象程序设计,人民邮电初版社;

郑莉著,

C++

语言程序设计(含实验指导书)。

清华大学初版社

构造化程序设计部分

钱能主编

C++

程序设计教程,清华大学初版社,

 

戴锋编著,

VisualC++

程序设计基础

清华大学初版社

 

吕日著,C++程序设计教程,清华大学初版社,

C++大学教程,美国Harvey等

三、进度安排

1、班级:

信息与计算科学:

1601、1602

2、主讲教师:

3、指导教师:

4、时间安排:

第18周

星期一8时:

30分——11时:

30分;14时:

00分——17时:

00分

星期二8时:

30分——11时:

30分;14时:

00分——17时:

00分

星期三8时:

30分——11时:

30分;14时:

00分——17时:

00分

星期四8时:

30分——11时:

30分;14时:

00分——17时:

00分

星期五8时:

30分——11时:

30分;14时:

00分——17时:

00分

附:

选题方案:

所选题目依照学生学号确定,学号模7加1,即(学号%9+1)。

如你的学号为17,则所选题目

号为:

17%7+1==4(题目4)。

同班的同学自由组合,能够最多三个选同一题的同学共同完成一项作业。

学有余力的同学能够自由组合做题目8,能够自由设计吉祥物的图案。

理学院课程设计评分表

课程名称:

算法与程序设计

项目评价

设计方案的合理性与创立性

 

设计与调试结果

设计说明书的质量

争辩陈述与回答以下问题情况

课程设计周表现情况

综合成绩

教师签字:

日期:

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2