《c程序设计语言课程设计之简单图形处理系统说明书附源代码1.pdf》由会员分享,可在线阅读,更多相关《c程序设计语言课程设计之简单图形处理系统说明书附源代码1.pdf(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、中南大学中南大学本科生课程设计(实践)任务书、设计报告(C/C+C/C+语言程序设计)语言程序设计)题目学生姓名指导教师学院专业班级学生学号简单图形处理系统计算机基础教学实验中心2010 年 9月 13 日一、设计题目简单图形处理系统二、主要内容设某图形处理程序只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程 ax+by+c0 的三个系数 a,b,c;对于圆,给出圆心坐标和半径。试说明图形的几何形状类型,并编写输入和输出图形数据、求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线等函数。三、具体要求模块化程序设计;锯齿型书写格式;必须上机调试通过。写
2、出设计的报告。设计报告格式:1、设计目的2、总体设计(程序设计组成框图、流程图)3、详细设计(模块功能说明(如函数功能、入口及出口参数说明,函数调用关系描述等)4、调试与测试:调试方法,测试结果的分析与讨论,测试过程中遇到的主要问题及采取的解决措施5、源程序清单和执行结果:清单中应有足够的注释四、主要技术路线提示图形的输出。五、进度安排2 周完成。1 天进行分析,6 天编写软件,3 天写出课程设计报告并上交。六、完成后应上交的材料设计报告纸质文档和电子文档各一份,软件一套。摘要本次我的课程设计题目是“简单的图形处理”,此管理系统的主要目的是能很好地输入输出简单的图形,并能处理线性关系。这个管理
3、系统需要实现的功能包括:设某图形处理程序只考虑点、直线、圆三种基本图形。对于点,给出点的横纵坐标;对于直线,给出直线方程ax+by+c0 的三个系数 a,b,c;对于圆,给出圆心坐标和半径。试说明图形的几何形状类型,并编写输入和输出图形数据、求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线等函数。关键词关键词:图形处理直线圆1 1 引引言言1.11.1 问题的提出问题的提出在现今的程序语言高速发展的时代,图形的处理变得越来越重要。但运用的语言工具来实现图形的处理成为最基本的技能。1.21.2 任务与分析任务与分析简单的图形处理系统就是通过程序对一般的图形进行处理,并对简单的图形进
4、行输入输出,这样就比较方便的应用程序对图形进行处理,使得人们对如图形的了解更形象化。这个系统主要需要实现对求两点矩离、求两直线交点、已知点和半径形成圆、已知两点形成直线。通过这个处理系统,学生可以自由地对图形进行输入输出。1.31.3 系统分析系统分析就这次课程设计的题目“简单的图形处理”而言,我先进行了系列分析。因为在 VC+6.0 的环境下进行处理的比较麻烦,所以就选择 TC2.0 下进行处理。首先,先构建一个主函数,然后一次插入不同的功能函数。在实现功能函数的过程中又通过菜单函数进行各功能函数的调用,在运用图形处理函数的时候要用到图形文件。在实现了以上功能之后,又通过数码相机对数据进行记
5、录并保存。2.设计方案2.12.1 功能需求功能需求我所编写的系统设计,主要需要实现:(1)求两点矩离(2)求两直线交点(3)已知点和半径形成圆(4)已知两点形成直线等函数-1-2.22.2 总体要求总体要求我做了以下的模块:(1)输入两点,求出之间的距离。(2)输入圆心和半径输出一般的圆。(3)输入两直线表达式 X,Y 的系数,求出两直线的交点。(4)输入两点,输出通过该两点的直线。(5)退出。3.3.程序的设计程序的设计3.1.3.1.主要函数主要函数1.pointjl()(求两点之间的距离)2.linejd();(求两直线的交点)3.yuan();(已知圆心和半径形成圆)4.line1(
6、);(已知两点形成直线)3.2运行软件环境:软件环境:开始 TC 2.0进入选择菜单3.33.3 主要模块图主要模块图输入数字 040退出系统1两点之间的距离2两直线的交点3形成圆4形成直线-2-图 3.3 程序主要流程图3.43.4 设计思路设计思路3.4.13.4.1 简单的程序代码简单的程序代码:#include graphics.h#include stdio.h#include math.h#include stdlib.h#include conio.hint linejd()float a1,a2,b1,b2,c1,c2,x,y;/*请输入直线的系数*/printf(*n);pr
7、intf(qing shu ru zhi xian a1x+b1y+c10 de xi shu a1,b1,c1 he zhi xian2 a2x+b2y+c20 de xi shu a2,b2,c1:n);printf(*n);scanf(%f,%f,%f,%f,%f,%f,&a1,&b1,&c1,&a2,&b2,&c2);-3-x=(c2/b2-c1/b1)/(a1/b1-a2/b2);y=(c2/a2-c1/a1)/(b1/a1-b2/a2);printf(liang zhi xian jiao dian shi x=%f,y=%f.n,x,y);getchar();int pointj
8、l()/*求两点之间的距离*/int x1,y1,x2,y2;float jl;printf(*n);printf(qing shu ru liang dian,x1,y1,x2,y2:n);printf(*n);scanf(%d,%d,%d,%d,&x1,&y1,&x2,&y2);jl=sqrt(pow(x1-x2,2)+pow(y1-y2,2);printf(zhe shi liang dian x1=%d,y1=%d he x2=%d,y2=%d zhi jiande ju li shin jl=%fn,x1,y1,x2,y2,jl);getchar();void line1()/*输出
9、输入已知数据的直线的函数*/int x1,y1,x2,y2;int gdriver,gmode,i;printf(*n);printf(qing shu ru liang dian,x1,y1,x2,y2:n);printf(*-4-*n);void yuan()/*输出输入了已知数据的圆*/int x1,y1,r;int gdriver,gmode,i;printf(*scanf(%d,%d,%d,%d,&x1,&y1,&x2,&y2);gdriver=DETECT;initgraph(&gdriver,&gmode,c:caicbgi);setbkcolor(BLUE);cleardevi
10、ce();setcolor(GREEN);setlinestyle(0,0,3);setcolor(2);setcolor(WHITE);setlinestyle(4,0 xaaaa,1);line(x1,y1,x2,y2);getch();closegraph();*n);printf(qing shu ru yuan xin x1,y1 yuan de ban jing r:n);printf(*n);scanf(%d,%d,%d,&x1,&y1,&r);gdriver=DETECT;initgraph(&gdriver,&gmode,c:caicbgi);setbkcolor(BLUE)
11、;-5-cleardevice();setcolor(GREEN);circle(x1,y1,r);setlinestyle(0,0,3);setcolor(2);setcolor(WHITE);setlinestyle(4,0 xaaaa,1);getch();closegraph();void menu()/*菜单函数*/printf(*n);printf(huan ying jin rujian dan de tuxing chu lixi tong!n);printf(*n);printf(*n);printf(qing shu ru 1,2,3,4:n);/*请输入数字 1,2,3,
12、4*/printf(1.liang dian zhi jian de ju lin);/*两点之间的距离*/printf(2.liang zhi xian de jiao dian n);/*两直线的交点*/printf(3.yi zhi dian he ban jing xing cheng yuann);/*已知点和半径形成圆*/printf(4.yi zhi liang dian xing cheng ban jing n);/*已知两点形成直线*/printf(*n);-6-int choice()/*选择函数的定义*/char c;int k=1;menu();c=getchar()
13、;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(*n);printf(huan ying shi yong gai xi tongn);printf(*n);int main()int gdriver,gmode,i;/*在进入主菜单之前先形成一个已知图形*/gdriver=DETECT;return 1;-7-initgr
14、aph(&gdriver,&gmode,c:caicbgi);setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(320,240,98);setlinestyle(0,0,3);setcolor(2);rectangle(220,140,420,340);setcolor(WHITE);setlinestyle(4,0 xaaaa,1);line(220,240,420,240);line(320,140,320,340);getch();closegraph();choice();getchar();return 1;3.4.23.4.
15、2 实现结果实现结果程序在运行的情况下,进入到程序系统,如图 3.4.1 所示:-8-图 3.4.1 系统首页进入到程序系统菜单时,如图 3.4.2 所示:图 3.4.2输入数字 1 进入求两点之间的距离:如果输入如图 3.4.2 所示:-9-图 3.4.2则会输出如图 3.4.3 所示:图 3.4.3输入数字 2 进入求两直线的交点如果输入如图 3.4.4 所示:-10-图 3.4.4则会输出如图 3.4.5 所示:图 3.4.5输入数字 3 进入输出圆的程序:如果输入如图 3.4.6 所示::图 3.4.6则会输出如图图 3.4.7 所示:-11-图 3.4.7输入数字 4 进入输出直线的
16、程序:如果输入如图 3.4.8 所示:图 3.4.8则会输出如图图 3.4.9 所示:图 3.4.9-12-输入数字 0 则退出程序,如图 3.4.10:欢迎使用!图 3.4.10-13-总总结结在本次的课程设计当中,我受益匪浅,就简单的图行的输入输出系统这个课题,我实现了图形的输入和输出,能够直接通过写的程序进行简单操作,当中需要借用 TC2.0 下的图形输出函数,经过多方面的学习,我终于掌握了相关函数的运用,这对以后的学习时非常有用的,尽管在次之前,自己对程序设计的总体思想,思路都还不清楚,但是就调试运行过程中遇到的问题,通过自己的努力和老师的帮助,终于解决了。参考文献参考文献1 谭浩强.
17、C 语言程序设计M.北京:清华大学出版社.20062 张高煜.C 语言程序设计实训.北京:中国水利出版社.20013 王晓东.C 语言设计简明教程.北京:中国水利出版社.2006附带源代码#include graphics.h#include stdio.h#include math.h#include stdlib.h#include conio.hint linejd()float a1,a2,b1,b2,c1,c2,x,y;printf(*n);printf(qing shu ru zhi xiana1x+b1y+c10 de xi shu a1,b1,c1 he zhi xian2a2
18、x+b2y+c20 de xi shu a2,b2,c1:n);-14-printf(*n);scanf(%f,%f,%f,%f,%f,%f,&a1,&b1,&c1,&a2,&b2,&c2);x=(c2/b2-c1/b1)/(a1/b1-a2/b2);y=(c2/a2-c1/a1)/(b1/a1-b2/a2);printf(liang zhi xian jiao dian shi x=%f,y=%f.n,x,y);getchar();int pointjl()int x1,y1,x2,y2;float jl;printf(*n);printf(qing shu ru liang dian,x1
19、,y1,x2,y2:n);printf(*n);scanf(%d,%d,%d,%d,&x1,&y1,&x2,&y2);jl=sqrt(pow(x1-x2,2)+pow(y1-y2,2);printf(zhe shi liang dianx1=%d,y1=%d he x2=%d,y2=%d zhi jian de ju li shinjl=%fn,x1,y1,x2,y2,jl);getchar();void line1()int x1,y1,x2,y2;int gdriver,gmode,i;printf(*n);printf(qing shu ruliang dian,x1,y1,x2,y2:
20、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(WHITE);-15-setlinestyle(4,0 xaaaa,1);line(x1,y1,x2,y2);getch();closegraph();void yuan()int x1,y1,r;int gdriver,
21、gmode,i;printf(*n);printf(qing shu ru yuan xin x1,y1yuan de ban jing r:n);printf(*n);scanf(%d,%d,%d,&x1,&y1,&r);gdriver=DETECT;initgraph(&gdriver,&gmode,c:caicbgi);setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(x1,y1,r);setlinestyle(0,0,3);setcolor(2);setcolor(WHITE);setlinestyle(4,0 xaaaa,1)
22、;getch();closegraph();void menu()printf(*n);printf(huan ying jin ru jian dan de tu xing chu li xi tong!n);printf(*n);printf(*n);printf(qing shu ru 1,2,3,4:n);printf(1.liang dian zhi jian de ju lin);printf(2.liang zhi xian de jiao dian n);-16-printf(3.yi zhi dian he ban jing xing cheng yuann);printf(
23、4.yi zhi liang dian xing cheng ban jing 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();k=0;break;case3:yuan();k=0;break;case 4:line1();k=0;break;case 0:k=0;break;printf(*n);printf(huan ying shi yong gai xi tongn);printf(*n);ret
24、urn 1;int main()int gdriver,gmode,i;gdriver=DETECT;initgraph(&gdriver,&gmode,c:caicbgi);setbkcolor(BLUE);cleardevice();setcolor(GREEN);circle(320,240,98);setlinestyle(0,0,3);setcolor(2);rectangle(220,140,420,340);setcolor(WHITE);setlinestyle(4,0 xaaaa,1);line(220,240,420,240);line(320,140,320,340);getch();-17-closegraph();choice();getchar();return 1;-18-