课程设计.docx
- 文档编号:27141317
- 上传时间:2023-06-27
- 格式:DOCX
- 页数:16
- 大小:174.33KB
课程设计.docx
《课程设计.docx》由会员分享,可在线阅读,更多相关《课程设计.docx(16页珍藏版)》请在冰豆网上搜索。
课程设计
目录
1前言1
2需求分析1
2.1任务和要求1
2.2运行环境1
2.3开发工具1
3分析和设计2
3.1系统分析及设计思路2
3.2主要类图2
3.3函数流程图4
4具体代码实现6
5课程设计总结11
5.1程序运行结果或预期运行结果11
5.2设计结论13
参考文献13
致谢13
1前言
面向对象程序课程设计,使我们能将学到的面向对象的程序设计思想用到具体的工作和学习中,加深对类与对象的理解,是将计算机课程与实际问题相联接的关键步骤。
本次课程设计的题目为《简单图形处理》,主要运用了类体系,处理点、直线、圆三种基本图形。
课程设计前期,我复习了《面向对象程序》书本,并查询了有关的书籍;课程设计中期,我们通过所学的基本理论、专业知识进行结构设计。
我们组全体成员齐心协力、互助合作,发挥了积极合作的团队精神。
课程设计后期,主要进行设计排版整理,并得到老师的审批和指正,使我圆满地完成了设计任务,在此我表示衷心的感谢。
通过本次课程设计,锻炼了我的创新思维和动手能力,提高我分析问题和运用专业知识解决实际问题的能力,并培养了我注重实事求事、独立思考的科学精神。
2需求分析
2.1任务和要求
设计类体系,处理点、直线、圆三种基本图形。
要求:
(1)对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c=0的三个系数a,b,c;对于圆,给出圆心坐标和半径。
(2)试说明图形的几何形状类型,并实现图形数据的输入和输出。
(3)添加求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线等函数。
2.2运行环境
(1)WINDOWS2000/XP系统
(2)VisualC++6.0编译环境或DEVC++5.0编译环境
2.3开发工具
C++语言
3分析和设计
3.1系统分析及设计思路
系统分析:
面向对象是指确定对象的类和它们之间的相互关系,描述对象的属性和方法,解释对象之间的关系。
且每个对象都应该能够接受数据和处理数据,并将数据传达给其它对象。
面向对象程序设计能设计出整个系统的模型,而且规范,技术成熟,便于控制和管理,同时面向对象程序设计推广了程序的灵活性和可维护性。
设计思路:
完成这个程序,运用了数学函数,要引用cmath.h头文件。
图形的几何形状类型的实现需要三个类:
point类、line类、circle类。
在point类中,主要构造voidset_value()方法,实现输入点的坐标;构造voidshow()方法,实现输出点的坐标;构造voidpoint_count(point*p)方法,实现计算两点间的距离;构造voidbuild_line(point*p)方法,实现用两点构造直线。
在line类中,主要构造voidset_value()方法,实现输入直线的三个参数;构造voidshow()方法,实现输出直线的方程;构造voidline_count(line*p)方法,实现计算两直线的交点。
在circle类中,主要构造voidset_value()方法,实现输入圆心坐标和半径;构造voidshow()方法,实现输出圆的圆心坐标、半径和方程。
定义主函数intmain(),输入图形的类型,用if语句判断,如果输入是point类型,则输出图形为point,调用poi[i].set_value()函数,输入点的坐标,接着进行选择,如输入yes,则调用poi[i].set_value()函数,再输入一个点的坐标,接着进行选择,如输入no,则调用poi[i].show()函数,输出两个点的坐标,调用voidpoint_count(point*p)函数计算两点之间的距离,调用voidbuild_line(point*p)函数,用两点构造直线。
如果输入是line类型,则输出图形为line,调用lin[i].set_value()函数,输入直线的三个参数,接着进行选择,如输入yes,则lin[i].set_value()函数,输入直线的三个参数,接着进行选择,如输入no,调用poi[i].show()函数,输出直线的方程,调用line_count(lin)函数,计算两直线的交点。
如果输入是circle类型,则输出图形为circle,调用cir.set_value()函数,输入输入圆心坐标和半径,调用cir.show()函数,输出圆的圆心坐标、半径和方程。
3.2主要类图
一条直线是由无数个点组成,用point类表示点,用line类描述直线,而这两个类之间是包含关系,用circle类描述圆,而一个圆上有无数个有无数个点,所以point类和circle类之间也是包含关系。
point类、line类、circle类之间的关系UML图,如图3-1-1所示。
图3-1-1点、线、圆的UML图
3.3函数流程图
1、line类中的构造方法voidset_value(),输入直线的三个参数a,b,c构造方法voidshow(),输出直线的方程。
输出直线的方程流程图,如图3-3-1所示
图3-3-1输出直线的方程流程图
2、Circle类中的构造方法voidset_value(),输入圆心坐标和半径x,y,r;构造方法voidshow(),输出圆的圆心坐标、半径和方程。
输出圆的圆心坐标、半径和方程的流程图,如图3-3-2所示
图3-3-2输出圆的方程流程图
4具体代码实现
#include
#include
#include
usingnamespacestd;
classpoint
{
public:
friendvoidpoint_count(point*p);//声明为友员函数,便于引用类的私有数据
friendvoidbuild_line(point*p);
voidset_value()//作用:
输入点的坐标
{
cout<<"请输入点的坐标"< cin>>x>>y; } voidshow()//作用: 输出点的坐标 { cout<<"点的坐标是: ("< } private: floatx,y; }; voidpoint_count(point*p)//作用: 计算两点间的距离 { cout<<"两点间的距离为: "< cout< } voidbuild_line(point*p)//作用: 用两点构造直线 { cout<<"两个点的坐标为: ("<<(*p).x<<","<<(*p).y<<"), ("<<(*(p+1)).x<<","<<(*(p+1)).y<<")"< cout<<"参数: a="<<(*p).y-(*(p+1)).y<<",b="<<(*(p+1)).x-(*p).x <<",c="<<(*(p+1)).y*(*p).x-(*p).y*(*(p+1)).x< cout<<"直线方程是: "<<(*p).y-(*(p+1)).y<<"x+"<<(*(p+1)).x-(*p).x <<"y+"<<(*(p+1)).y*(*p).x-(*p).y*(*(p+1)).x<<"=0"< } classline { public: friendvoidline_count(line*p);//声明为友员函数 voidset_value()//作用: 输入直线的三个参数 { cout<<"请输入直线的三个参数"< cin>>a>>b>>c; } voidshow()//作用: 输出直线的方程 { if(a==1&&b! =1) cout<<"直线的方程为: x+"< elseif(a! =1&&b==1) cout<<"直线的方程为:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计