1、简单图形处理系统简单图形处理系统程序设计基础课程设计报告目 录1.课程设计目的 32.课程设计题目描述和要求 32.1课程题目 32.2课程要求 33.课程设计报告内容 33.2 运行结果 114. 课程设计总结 125.参考书目 121.课程设计目的开拓思维,检查和巩固所学的知识,为以后的学习和编程打下基础。2.课程设计题目描述和要求2.1课程题目简单图形处理系统2.2课程要求设某个图形处理程序只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c0的三个系数a,b,c;对于圆,给出圆心坐标和半径。(为叙述性文字,告诉我题目要求做些什么)试说明图形的几
2、何形状类型,并编写输入和输出图形数据、求两点距离、求两直线交点、 已知点和半径形成圆、已知两点形成直线等函数。(后面这些为具体的要求)3.课程设计报告内容#include#include#includeusing namespace std;class point public: friend void point_count(point *p);/声明为友员函数,便于引用类的私有数据 friend void build_line(point *p); void set_value() /作用:输入点的坐标 cout请输入点的坐标xy; void show() /作用:输出点的坐标 cout点
3、的坐标是:(x,y)endl; private: float x,y;void point_count(point *p) /作用:计算两点间的距离 cout两点间的距离为:endl; coutsqrt(*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),(*(p+1).x,(*(p+1).y)endl; cout参数:a=(*p).y-(*(p+1).y,b=(*(p
4、+1).x-(*p).x,c=(*(p+1).y*(*p).x-(*p).y*(*(p+1).xendl; cout直线方程是:(*p).y-(*(p+1).yx+(*(p+1).x-(*p).xy+(*(p+1).y*(*p).x-(*p).y*(*(p+1).x=0endl;class linepublic: friend void line_count(line *p);/声明为友员函数 void set_value() /作用:输入直线的三个参数 cout请输入直线的三个参数abc; void show() /作用:输出直线的方程 if(a=1&b!=1)cout直线的方程为:x+by
5、+c=0endl; else if(a!=1&b=1)cout直线的方程为:ax+y+c=0endl; else if(a=1&b=1)cout直线的方程为:x+y+c=0endl; else cout直线的方程为:ax+by+c=0endl; private: float a,b,c;void line_count(line *p) /作用:计算两直线的交点 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)/
6、(*p).b*(*(p+1).a-(*p).a*(*(p+1).b), (*p).a*(*(p+1).c-(*p).c*(*(p+1).a)/(*p).a*(*(p+1).b-(*p).b*(*(p+1).a)endl; class circlepublic: void set_value() /作用:输入圆心坐标和半径 cout请输入圆的坐标和半径xyr; void show() /作用:输出圆的圆心坐标、半径和方程(构造圆) cout圆心坐标:(x,y),半径:rendl; if(x=0&y=0)cout圆的方程:xx+yy=r*rendl; else if(x=0&y!=0)cout圆的
7、方程:xx+(y-y)(y-y)=r*rendl; else if(y=0&x!=0)cout圆的方程:(x-x)(x-x)+yy=r*rendl; else cout圆的方程:(x-x)(x-x)+(y-y)(y-y)=r*rendl; 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请输入图形类型typ; /出现过:
8、cin : ambiguous(不明确的,多定义的) symbol cout图形为:typendl;/处理点的问题 if(typ=point) for(i=0;i+) /注意要让程序跳出 poii.set_value(); cout是否继续输入点的坐标?choose; if(choose=no)break; if(i=0)poi0.show(); else if(i=1) for(i=0;i2;i+) poii.show(); point_count(poi); build_line(poi); else break; /处理直线的问题 else if(typ=line) for(i=0;i+
9、) lini.set_value(); cout是否继续输入直线的参数?choose; if(choose=no)break;/只有选择了不输入时,才能跳出 if(i=0)lin0.show(); else if(i=1) for(i=0;i2;i+) lini.show(); line_count(lin); /处理圆的问题 else if(typ=circle) cir.set_value(); cir.show(); /处理其他图形的问题 else cout图形不在指定的范围内endl; cout是否继续输入图形的类型?choose; if(choose=no)break; /同样只有选
10、择了不输入时,才能跳出 return 0;3.2 运行结果 4. 课程设计总结终于,激动人心的期末考试如期而至,从未感受过的课程设计就在眼前,既有几分新奇,又有几分神秘,但更多的是莫名的担心,既担心自己不会动手去做,又担心自己做的不是很好。终于,在担心与被动中,在考完C+程序设计后,我坐在了电脑前,一点点地构思算法、输入、编译、运行,不懂的就问同学,忘了的就看书。在编程中,慢慢地弄懂了题意,渐渐地就能构思出算法。终于,有了算法,其他过程的设计就显得得心应手了。在编程中,我发现:类和链表有点不同,但也有相通之处,用类做过的题目,用链表再做时,就显得很简单了。在本题中,我建立了对象数组,因为数组的内存本来是连续的,再加上只有两个元素,所以就没有用链表(可以存大量的数据)了。在编完程序后,我觉得:耐心和细心在编程中都显得很重要,稍有不注意,少一个;或是一个都会出来意想不到的错误个数,给调试带来麻烦!所以,编写程序一定要细致小心,认真努力,那么我们就一定能取得最后的成功!5.参考书目1 谭浩强,C+程序设计,北京,清华大学出版社,2007年.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1