版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1.课程设计总体要求22.设计任务与分析22.1设计题目22.2主要内容22.3任务分析23.设计方案23.1模块23.2流程图33.3主要函数33.4负责的模块设计34.程序调试65.总结与心得126.参考文献131. 课程设计总体要求采用模块儿化程序设计; 鼓励可视化编程; 源程序中有足够的注释; 学生可自行增加新功能模块儿; 必须上机调试通过; 注重算法运用,优化存储效率与运算效率; 需提交源程序及相关文件;2. 设计任务与分析2.1设计题目 简单图形处理2.2主要内容 只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c0的三个系数a,b,c;
2、对于圆,给出圆心坐标和半径。试说明图形的几何形状类型,并编写输入和输出图形数据、求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线等函数。2.3任务分析这个系统主要需要实现对求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线。我们可以先构建一个主函数,然后一次插入不同的功能函数。在实现功能函数的过程中又通过菜单函数进行各功能函数的调用。在运用图形处理函数的时候要用到图形文件。3. 设计方案3.1模块(1)输入两点,求出之间的距离。(2)输入圆心和半径输出一般的圆。(3)输入两直线表达式x,y的系数,求出两直线的交点。(4)输入两点,输出通过该两点的直线。(5)退出。3.
3、2流程图进入选择菜单输入数字040退出系统开始1两点之间的距离退出系统4形成直线2两直线的交点退出系统3形成圆3.3主要函数1.pointjl() (求两点之间的距离)2.linejd();(求两直线的交点)3.yuan();(已知圆心和半径形成圆)4.line1();(已知两点形成直线)5.choice();(功能选择)3.4负责的模块设计我所负责的模块:(1) 输入两直线表达式x,y的系数,求出两直线的交点。 void linejd()/*求两直线交点*/float a1,a2,b1,b2,c1,c2,x,y;/*请输入直线的系数*/printf("*n");print
4、f("请输入直线1 a1x+b1y+c10 的系数 a1,b1,c1 和直线2 a2x+b2y+c20 的系数 a2,b2,c1:n"); printf("*n");scanf("%f,%f,%f,%f,%f,%f",&a1,&b1,&c1,&a2,&b2,&c2);if(a1*b2=b1*a2)if(b1*c2=c1*b2)printf("两直线重合,有无数个交点。n");elseprintf("两直线平行,无交点。n");elsex=(c2/b
5、2-c1/b1)/(a1/b1-a2/b2); y=(c2/a2-c1/a1)/(b1/a1-b2/a2); printf("两直线交点是 x=%f,y=%f.n",x,y);getchar();(2) 输入两点,输出通过该两点的直线。void line1() /*输出输入已知数据的直线*/int x1,y1,x2,y2;int gdriver, gmode, i;printf("*n");printf("请输入两点 ,x1,y1,x2,y2:n");printf("*n");scanf("%d,%d,%
6、d,%d",&x1,&y1,&x2,&y2);gdriver=detect;initgraph(&gdriver, &gmode, "c:caicbgi");setbkcolor(blue);/*设定背景颜色为蓝色*/cleardevice();setcolor(green);setlinestyle(0, 0, 3);setcolor(2);setcolor(white);setlinestyle(4, 0xaaaa, 1);line(x1+320, y1+240, x2+320, y2+240);getch();
7、closegraph();(3) 选择函数的设计int choice ()/*选择函数的定义*/char c;int k=1;menu();c=getchar();while(k)switch(c) case '1':pointjl() ;k=0;break; case '2':linejd() ;k=0;break; /*求已知两直线之间的交点函数*/ case '3':yuan();k=0;break; case '4':line1();k=0;break; case '0':k=0;break; printf
8、("*n");printf("欢迎使用该系统n");printf("*n");return 1;4. 程序调试下面是进入时出现的一个示例图片。通过查找资料并以此图来调试我们知道画面中心的坐标是(320,240),我们就在程序中每个输入的横坐标加上320,纵坐标加上240,以防输入坐标偏离中心太远导致显示不理想。同时该圆的半径是98,这样我们就对数字代表的长度有了一个大概的了解。下面是对输出直线功能的调试。输入数据:0,0,200,200;显示出的图形如下图所示。我们可以看出,x轴正方向向左,y轴正方向向下。为了进一步验证y轴正方向向下
9、,我做了第二次输入。如下图,此次输入的数据为:0,0,0,-200;由此可以断定,y轴的正方向向下。接下来是对求两直线交点的调试。由下图可以看出当输入数据为1,2,3,3,2,1时得出交点为(1,-2)。对于直线x+2y+3=0与直线3x+2y+1=0,我们直接将x=1,y=-2带入,发现均成立,于是所求交点是正确的,程序没有问题。但是当我们输入两条重合或者平行直线时,程序给出了以下结果:可以发现给出的结果为1.#inf00的字样,这表示超出机器浮点类型所表示的范围。于是我认为程序还需改进。改进后调试结果如下:改进成功!下面是对选择功能的调试。输入1,结果如下:没有问题。输入2,结果如下:没有
10、问题。输入3,结果如下:没有问题。输入4,结果如下:没有问题。至此,调试完毕!5. 总结与心得每一个简单的功能的实现实际上背后都有一个繁重的工程。尽管这是一个很简单的图形的输出、处理系统,但是每一个函数的设计、每一个功能的实现都来之不易。尤其是当每一个模块的程序编写好后的试运行,一个个error的寻找、改正花费了数倍于编写的时间。尽管编写的过程漫长、枯燥,甚至痛苦,但是当最后程序成功运行时,兴奋的心情还是立刻充斥心间,最后的成功就是对前面付出的最好回报。通过这次实践我也学到了很多。c语言的知识更加扎实、丰富,做事更加细心、耐心,还学会了如何与人合作来更快、更高效地完成任务。总之,这次实践中我收
11、获了许多,希望以后可以继续与他人合作完成更多的任务!6. 参考文献 1 谭浩强. c语言程序设计m.北京:清华大学出版社.20062 张高煜. c语言程序设计实训.北京:中国水利出版社.20013 王晓东. c语言设计简明教程.北京:中国水利出版社.2006附:源代码: #include <graphics.h>#include "stdio.h"#include "math.h"#include "stdlib.h"#include "conio.h"void linejd()/*求两直线交点*/fl
12、oat a1,a2,b1,b2,c1,c2,x,y;/*请输入直线的系数*/printf("*n");printf("请输入直线1 a1x+b1y+c10 的系数 a1,b1,c1 和直线2 a2x+b2y+c20 的系数 a2,b2,c1:n"); printf("*n"); scanf("%f,%f,%f,%f,%f,%f",&a1,&b1,&c1,&a2,&b2,&c2);if(a1*b2=b1*a2)if(b1*c2=c1*b2)printf("两直
13、线重合,有无数个交点。n");elseprintf("两直线平行,无交点。n");elsex=(c2/b2-c1/b1)/(a1/b1-a2/b2); y=(c2/a2-c1/a1)/(b1/a1-b2/a2); printf("两直线交点是 x=%f,y=%f.n",x,y);getchar();void pointjl() /*求两点之间的距离*/int x1,y1,x2,y2; float jl;printf("*n");printf("请输入两点,x1,y1,x2,y2:n");printf(&q
14、uot;*n");scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);jl=sqrt(pow(x1-x2,2)+pow(y1-y2,2);printf("这是两点 x1=%d , y1=%d 和 x2=%d , y2=%d 之间的距离是n jl=%fn",x1,y1,x2,y2,jl); getchar();void line1() /*输出输入已知数据的直线*/int x1,y1,x2,y2;int gdriver, gmode, i;printf("*n");prin
15、tf("请输入两点 ,x1,y1,x2,y2:n");printf("*n");scanf("%d,%d,%d,%d",&x1,&y1,&x2,&y2);gdriver=detect;initgraph(&gdriver, &gmode, "c:caicbgi");setbkcolor(blue);/*设定背景颜色为蓝色*/cleardevice();setcolor(green);setlinestyle(0, 0, 3);setcolor(2);setcolor(
16、white);setlinestyle(4, 0xaaaa, 1);line(x1+320, y1+240, x2+320, y2+240);getch();closegraph();void yuan() /*输出输入了已知数据的圆*/int x1,y1,r;int gdriver, gmode, i;printf("*n");printf("请输入圆心 x1,y1 圆的半径 r:n");printf("*n");scanf("%d,%d,%d",&x1,&y1,&r);gdriver=d
17、etect;initgraph(&gdriver, &gmode, "c:caicbgi");setbkcolor(blue);cleardevice();setcolor(green);circle(x1+320, y1+240, r);setlinestyle(0, 0, 3);setcolor(2);setcolor(white);setlinestyle(4, 0xaaaa, 1);getch();closegraph();void menu() /*菜单函数*/printf("*n");printf("欢迎进入简单的图
18、形处理系统!n");printf("*n");printf("*n");printf("请输入 1,2,3,4:n");/*请输入数字1,2,3,4*/printf("1.两点之间的距离n");/*两点之间的距离*/printf("2.两直线的交点 n");/*两直线的交点*/ printf("3.已知点和半径形成圆n");/*已知点和半径形成圆*/ printf("4.已知两点形成直线 n");/*已知两点形成直线*/printf("*n");int choice ()/*选择函数的定义*/char c;int k=1;menu();c=getchar();while(k)switch(c) case '1':pointjl() ;k=0;break; case '2':linejd()
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 毕业自我评价15篇
- 个人保证书集锦15篇
- 战友聚会致辞(15篇)
- 学生毕业晚会策划书12篇
- 四年级下册语文说课稿锦集六篇
- 客服辞职报告15篇
- 秋季幼儿园中班工作计划
- 出纳的实习报告范文锦集10篇
- 晶状体病-教学课件
- 健康检测设备代理销售合同(2篇)
- GB/T 42449-2023系统与软件工程功能规模测量IFPUG方法
- 酒店装修工程预算表EXCEL模板(推荐)
- NY 5052-2001无公害食品海水养殖用水水质
- 【讲座】2020年福建省高职分类考试招生指导讲座
- 性格决定命运课件
- 学习会计基础工作规范课件
- 双面埋弧焊螺旋钢管公称外公壁厚和每米理论重量
- 富士施乐VC2265打印机使用说明SPO
- 服务态度决定客户满意度试题含答案
- 教科版四年级科学上册全册复习教学设计及知识点整理
- 重庆万科渠道制度管理办法2022
评论
0/150
提交评论