课程设计简单图形处理系统_第1页
课程设计简单图形处理系统_第2页
课程设计简单图形处理系统_第3页
课程设计简单图形处理系统_第4页
课程设计简单图形处理系统_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、简单图形处理系统程序设计基础课程设计报告专 业: 电子信息工程 班 级: 2007级 2 班 学 号: 2007082051姓 名:杨 淼 军指导教师:常 耀 辉2008年6月28日目 录1.课程设计目的32.课程设计题目描述和要求32.1课程题目32.2课程要求33.课程设计报告内容33.2 运行结果114. 课程设计总结125.参考书目121.课程设计目的开拓思维,检查和巩固所学的知识,为以后的学习和编程打下基础。2.课程设计题目描述和要求2.1课程题目简单图形处理系统2.2课程要求设某个图形处理程序只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by

2、+c0的三个系数a,b,c;对于圆,给出圆心坐标和半径。(为叙述性文字,告诉我题目要求做些什么)试说明图形的几何形状类型,并编写输入和输出图形数据、求两点距离、求两直线交点、 已知点和半径形成圆、已知两点形成直线等函数。(后面这些为具体的要求)3.课程设计报告内容#include<iostream>#include<cmath>#include<string>using namespace std;class point public: friend void point_count(point *p);/声明为友员函数,便于引用类的私有数据 friend

3、void build_line(point *p); void set_value() /作用:输入点的坐标cout<<"请输入点的坐标"<<endl;cin>>x>>y;void show() /作用:输出点的坐标cout<<"点的坐标是:("<<x<<","<<y<<")"<<endl;private:float x,y;void point_count(point *p) /作用:计算两点间

4、的距离cout<<"两点间的距离为:"<<endl;cout<<sqrt(*p).x-(*(p+1).x)*(*p).x-(*(p+1).x)+(*p).y-(*(p+1).y)*(*p).y-(*(p+1).y)<<endl;void build_line(point *p) /作用:用两点构造直线cout<<"两个点的坐标为:("<<(*p).x<<","<<(*p).y<<"),("<<(*

5、(p+1).x<<","<<(*(p+1).y<<")"<<endl;cout<<"参数:a="<<(*p).y-(*(p+1).y<<",b="<<(*(p+1).x-(*p).x<<",c="<<(*(p+1).y*(*p).x-(*p).y*(*(p+1).x<<endl;cout<<"直线方程是:"<<(*p).y

6、-(*(p+1).y<<"x+"<<(*(p+1).x-(*p).x<<"y+"<<(*(p+1).y*(*p).x-(*p).y*(*(p+1).x<<"=0"<<endl;class linepublic:friend void line_count(line *p);/声明为友员函数void set_value() /作用:输入直线的三个参数cout<<"请输入直线的三个参数"<<endl;cin>>a

7、>>b>>c;void show() /作用:输出直线的方程if(a=1&&b!=1)cout<<"直线的方程为:x+"<<b<<"y+"<<c<<"=0"<<endl;else if(a!=1&&b=1)cout<<"直线的方程为:"<<a<<"x+y+"<<c<<"=0"<<

8、endl;else if(a=1&&b=1)cout<<"直线的方程为:x+y+"<<c<<"=0"<<endl;else cout<<"直线的方程为:"<<a<<"x+"<<b<<"y+"<<c<<"=0"<<endl;private:float a,b,c;void line_count(line *p) /作用:

9、计算两直线的交点if(*p).a/(*(p+1).a=(*p).b/(*(p+1).b)cout<<"两直线平行,没有交点"<<endl;else cout<<"两直线的交点是:"<<endl; cout<<"("<<(*p).b*(*(p+1).c-(*p).c*(*(p+1).b)/(*p).b*(*(p+1).a-(*p).a*(*(p+1).b)<<","<<(*p).a*(*(p+1).c-(*p).c*(*(

10、p+1).a)/(*p).a*(*(p+1).b-(*p).b*(*(p+1).a)<<")"<<endl;class circlepublic:void set_value() /作用:输入圆心坐标和半径cout<<"请输入圆的坐标和半径"<<endl;cin>>x>>y>>r;void show() /作用:输出圆的圆心坐标、半径和方程(构造圆)cout<<"圆心坐标:("<<x<<","&l

11、t;<y<<"),半径:"<<r<<endl;if(x=0&&y=0)cout<<"圆的方程:xx+yy="<<r*r<<endl; else if(x=0&&y!=0)cout<<"圆的方程:xx+(y-"<<y<<")(y-"<<y<<")="<<r*r<<endl; else if(y=0&

12、&x!=0)cout<<"圆的方程:"<<"(x-"<<x<<")(x-"<<x<<")+yy="<<r*r<<endl; else cout<<"圆的方程:(x-"<<x<<")(x-"<<x<<")+(y-"<<y<<")(y-"<<y

13、<<")="<<r*r<<endl;private:float x,y,r;int main()point poi2;line lin2;circle cir;int i;string choose; /choose 选择是否继续输入string typ; /typ:图形的形状 / while(1)无限循环,让用户自己选择for(;)cout<<"请输入图形类型"<<endl;cin>>typ; /出现过:'cin' : ambiguous(不明确的,多定义的) sy

14、mbolcout<<"图形为:"<<typ<<endl;/处理点的问题if(typ="point")for(i=0;i+) /注意要让程序跳出poii.set_value();cout<<"是否继续输入点的坐标?"<<endl;cin>>choose;if(choose="no")break;if(i=0)poi0.show();else if(i=1)for(i=0;i<2;i+)poii.show();point_count(poi)

15、;build_line(poi);else break;/处理直线的问题else if(typ="line")for(i=0;i+)lini.set_value(); cout<<"是否继续输入直线的参数?"<<endl;cin>>choose;if(choose="no")break;/只有选择了不输入时,才能跳出if(i=0)lin0.show();else if(i=1)for(i=0;i<2;i+)lini.show(); line_count(lin);/处理圆的问题else if(

16、typ="circle")cir.set_value();cir.show();/处理其他图形的问题else cout<<"图形不在指定的范围内"<<endl;cout<<"是否继续输入图形的类型?"<<endl;cin>>choose; if(choose="no")break; /同样只有选择了不输入时,才能跳出return 0;3.2 运行结果4. 课程设计总结终于,激动人心的期末考试如期而至,从未感受过的课程设计就在眼前,既有几分新奇,又有几分神秘,但更多的是莫名的担心,既担心自己不会动手去做,又担心自己做的不是很好。终于,在担心与被动中,在考完C+程序设计后,我坐在了电脑前,一点点地构思算法、输入、编译、运行,不懂的就问同学,忘了的就看书。在编程中,慢慢地弄懂了题意,渐渐地就能构思出算法。终于,有了算法

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论