C语言几何世界.docx
- 文档编号:10597986
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:21
- 大小:169.06KB
C语言几何世界.docx
《C语言几何世界.docx》由会员分享,可在线阅读,更多相关《C语言几何世界.docx(21页珍藏版)》请在冰豆网上搜索。
C语言几何世界
成绩评定表
学生姓名
李林
班级学号
1203050134
专业
计算机科学与技术
课程设计题目
几何世界
评
语
组长签字:
成绩
日期
201年月日
课程设计任务书
学院
信息科学与工程学院
专业
计算机科学与技术
学生姓名
李林
班级学号
1203050134
课程设计题目
几何世界
实践教学要求与任务:
各种图形随机的出现并上滚,直到按回车键结束。
图形包括矩形,三角形(等腰,直角,一般),梯形,圆,正弦波等等,任你自己发挥。
另外图形的大小,颜色,出现的位置(横向平移),滚动速度均随机变化,形成一幅奇妙的几何世界。
用c++开发。
工作计划与进度安排:
第14周:
问题分析,方案设计,软件编码和调试;
第19周:
软件测试,书写课设报告,答辩。
指导教师:
201年月日
专业负责人:
201年月日
学院教学副院长:
201年月日
一、实训题目和实训任务
1.实训题目
几何世界
2.实训任务
各种图形随机的出现并上滚,直到按回车键结束。
图形包括矩形,三角形(等腰,直角,一般),梯形,圆,正弦波等等,任你自己发挥。
另外图形的大小,颜色,出现的位置(横向平移),滚动速度均随机变化,形成一幅奇妙的几何世界。
用c++开发。
3.题目分析
设计程序时要先定义好各种各样的图形的输出函数,矩形,直角三角形,等腰三角形,一般三角形,梯形,圆,正方形等都要有;然后设计随机函数rand(),使其可以随机调用输出函数,这样就可以让输出界面不断出现新图形,实现上滚操作;图形的大小随机变化,这要在定义其输出函数时,随机它的底和高,长和宽等;颜色随机变化要用到system(“color”)函数,随机color1—color7;出现的位置随机变化,可以在输出时随机在其前面加若干空格;滚动速度可以在每次调用输出函数前多加若干换行符,这样看起来就像输出的速度不一样;难点要使其一直滚动,在输入回车键结束,在网上查资料后发现要做到这个效果需要用到双线程编程,暂未涉及那部分知识,没有做出那种效果。
4.开发工具和环境
开发工具:
VisualStdio2012
环境:
Windows7
二、软件设计
1.关键技术分析
用到了Windows.h下的Sleep()和system()和exit(0)
Sleep()可以将连续输出变为延时输出,可以看出输出时的明显停顿,使看到的滚动的几何世界更加美妙
system()可以是输出界面清屏,也可以改变输出颜色,这种改变是全局的,整个输出界面的颜色都会改变
使程序退出用到了exit(0),if函数判断输入了N,就执行exit(0),使程序直接退出,否则继续执行。
用到了ctime.h下的rand(),可以随机出一个模就是一个正整数
用到了time.h下的srand((unsigned)time(NULL)),将系统时间赋给了随机函数种子。
随机各个图形的大小
比如矩形用for循环:
for(intk=0;k<=(int)(n/2+2);k++)
{
for(inti=0;i<2*m-5;i++)
out<<"";
for(inti=0;i<=n+2;i++)
out<<"*";
out< } n是一个随机数,n/2+2是矩形的行数(宽),n/2让矩形行数不用太多,不然看起来太繁琐。 n/2+2使这个行数至少为2,不至于图形出现空白。 n+2是矩形的长,也m是一个随机数,该for循环是在每一行前面加入若干个空格,让图形出现的位置随机向后移若干位置。 实现图形的位置随机变化。 等腰三角形用for循环: for(i=0;i { for(intj=0;j<2*m-5;j++) out<<""; for(intj=0;j<2*(n-i);j++) out<<""; for(intj=0;j<4*i+1;j++) out<<"*"; out< } 其中n是一个随机数,n是该三角形的行数(高),2*(n-i)让每行比上一行少了两个空格,4*i+1使每行比上一行多出4个*,这样可以三角形显得越来越大,n就决定了一个三角形的大小。 m也是一个随机数,在每一行前面加入了2*m-5个空格,随机出三角形的位置。 等腰梯形用for循环: for(i=0;i { for(intj=0;j<2*m-5;j++) out<<""; for(intj=0;j cout<<""; for(intj=0;j cout<<"*"; cout< } 其中n,是随机数,随机出梯形的上底,x也是随机数,随机了梯形的下底比上底大多少,同时x是梯形的行数(高),x-i实现了梯形从上面输出时,上面没一行比下面多若干个空格,n+2*i每一行比吓一行多2个*,使输出的梯形可以让x和n决定它的大小。 m也是一个随机数,2*m-5让没一行前面加入若干空格,实现梯形位置随机。 2.软件模块设计 开始 随机大小 随机位置 随机图形 取随机数 图1.软件模块图 3.软件界面设计 打开后提示用户输入N退出,输入其它开始运行。 三、软件测试及运行结果 1.测试方案 进入主界面后按“N”退出,其它键继续,显示图形随机滚动变化。 2.测试结果 图2.测试结果图 分析: 经测试图形可以随机调用出现,大小也不相同,颜色也能随即变换,而且不断出现。 结论: 程序编写符合题目要求。 四、收获和体会 1.实习收获 本次上机实习编写的程序所涉及的知识点众多,从最简单的C程序设计到后面运用多处的选择结构,循环结构到我们近期学习的模块化设计等内容。 从中感觉就像是对自己一学期成果的收获,其间的价值远远大于考试的检验。 通过本次实习使我掌握了程序的输入输出操作,也掌握switch语句的特点,学会使用switch语句设计多分支结构程序等等。 这次的上机实习给了我一个锻炼的机会,同时也给了我一面镜子,照出自己的不足之处,相信在以后,我一定会珍惜好每一次的学习机会,不断改进自己。 在程序设计的过程中,让我了解到要设计一个大型程序,查找资料至关重要,在他人基础上,再根据自己所学进行修改与调试,最后设计出自己想要的程序,这过程艰辛,但只要你持之以恒,成功指日可待。 2.实习体会 编程题目要求简单易懂,但实际操作却很难,主要是没有理清条理,通过编程各个函数解决各个问题,题目变得简单易操作。 通过编程解决实际问题,掌握了结构体,数组,文件的使用,函数的各个调用,以及顺序结构、选择结构、循环结构的应用。 通过编程,进一步掌握了C语言的实践操作。 要想学好编程一定要通过实际编写,否则都是纸上谈兵。 要写好程序平时扎实基础也很关键,想象如果你平时学得不怎么样,那你面对一个比较难的程序,你可能会望而却步,看他人的程序都是难点,更别说自己去设计。 在程序设计中,也可认为是一个社会,每个函数就像一个社会成员,他们都有自己不同的想法。 程序写的好坏就要看各个成员在社会中解决问题的能力高低。 所以要编好一个程序,每一个函数都很重要。 总之,这次设计程序让我受益良多,我会好好珍惜这种难得的学习机会。 五、源代码清单 #include #include #include #include #include #include #include usingnamespacestd; classShow// { private: intbig,distance;//大小,距离 intrandomnumber;//随机数 stringname;// public: Show();//构造函数 intRandomNumber();//取随机数 voidBigOrSmall();//图形大小 voidDistance();//图形显示位置离左边框的距离 voidColour();//显示颜色 intRectangle();//矩形 intTriangle();//三角形 intRightTriangle();//直角三角形 intIsoscelesTriangle();//等腰三角形 intIadderShaped();//梯形 intIsoscelesIadderShaped();//等腰梯形 intRhomboid();//平行四边形 voidGraph();//图形调用 voidSelect();//随机选择图形 }; Show: : Show()//构造函数 { big=0;distance=0; randomnumber=0; } intShow: : RandomNumber()//取随机数 { randomnumber=rand()%10; returnrandomnumber; } voidShow: : BigOrSmall()//图形大小 { big=RandomNumber(); while(big>5) { BigOrSmall(); } } voidShow: : Distance()//图形显示位置离左边框的距离 { distance=(RandomNumber()+1)*3; } voidShow: : Colour()//显示颜色 { intx; x=RandomNumber(); switch(x) { case0: system("color1");break; case1: system("color2");break; case2: system("color3");break; case3: system("color4");break; case4: system("color5");break; case5: system("color6");break; case6: system("color7");break; default: Colour(); } } intShow: : Rectangle()//矩形 { BigOrSmall(); Distance(); intn,m; n=big; m=distance; ofstreamout; out.open("rectangle",ios: : out); if(! out) { cout<<"Can'topenfile"< return-1; } for(intk=0;k<=(int)(n/2+2);k++) { for(inti=0;i<2*m-5;i++) out<<""; for(inti=0;i<=n+2;i++) out<<"*"; out< } out.close(); return0; } intShow: : Triangle()//三角形 { BigOrSmall(); Distance(); intn,m,i; n=big+2; m=distance; ofstreamout; out.open("triangle",ios: : out); if(! out) { cout<<"Can'topenfile"< return-1; } for(i=0;i<2*m-8;i++) out<<""; out<<"*"< for(i=1;i<=n;i++) { for(intj=0;j<2*m-8;j++) out<<""; for(intj=0;j out<<""; for(intj=0;j<=i*3;j++) out<<"*"; out< } out.close(); return0; } intShow: : RightTriangle()//直角三角形 { BigOrSmall(); Distance(); intn,m,i; n=big+1; m=distance; ofstreamout; out.open("rightTriangle",ios: : out); if(! out) { cout<<"Can'topenfile"< return-1; } for(i=0;i<2*m-5;i++) out<<""; out<<"*"< for(i=1;i<=n;i++) { for(intj=0;j<2*m-5;j++) out<<""; for(intj=0;j<=i*4;j++) out<<"*"; out< } out.close(); return0; } intShow: : IsoscelesTriangle()//等腰三角形 { BigOrSmall(); Distance(); intn,m,i; n=big+2; m=distance; ofstreamout; out.open("isoscelesTriangle",ios: : out); if(! out) { cout<<"Can'topenfile"< return-1; } for(i=0;i<2*m-5;i++) out<<""; for(intj=0;j<=2*n-1;j++) out<<""; out<<"*"< for(i=1;i<=n;i++) { for(intj=0;j<2*m-5;j++) out<<""; for(intj=0;j<2*(n-i);j++) out<<""; for(intj=0;j<4*i+1;j++) out<<"*"; out< } out.close(); return0; } intShow: : IadderShaped()//梯形 { BigOrSmall(); Distance(); intn,m,x=RandomNumber()+2,i; n=big+2; m=distance; ofstreamout; out.open("iadderShaped",ios: : out); if(! out) { cout<<"Can'topenfile"< return-1; } for(i=0;i<=n;i++) { for(intj=0;j<2*m-5;j++) out<<""; for(intj=0;j<=n+2*i;j++) out<<"*"; out< } out.close(); return0; } intShow: : IsoscelesIadderShaped()//等腰梯形 { BigOrSmall(); Distance(); intn,m,x=RandomNumber()+2,i; n=big+2; m=distance; ofstreamout; out.open("isoscelesIadderShaped",ios: : out); if(! out) { cout<<"Can'topenfile"< return-1; } for(i=0;i { for(intj=0;j<2*m-5;j++) out<<""; for(intj=0;j cout<<""; for(intj=0;j cout<<"*"; cout< } out.close(); return0; } intShow: : Rhomboid()//平行四边形 { BigOrSmall(); Distance(); intn,m,i; n=big+2; m=distance; ofstreamout; out.open("rhomboid",ios: : out); if(! out) { cout<<"Can'topenfile"< return-1; } for(i=0;i<5;i++) { for(intj=0;j<2*m-5;j++) out<<""; for(intj=0;j out<<""; for(intj=0;j<3*n;j++) out<<"*"; out< } out.close(); return0; } voidShow: : Select()//随机选择图形 { intx; x=RandomNumber(); switch(x) { case0: Rectangle();name="rectangle";break; case1: Triangle();name="triangle";break; case2: RightTriangle();name="rightTriangle";break; case3: IsoscelesTriangle();name="isoscelesTriangle";break; case4: IadderShaped();name="iadderShaped";break; case5: IsoscelesIadderShaped();name="isoscelesIadderShaped";break; case6: Rhomboid();name="rhomboid";break; default: Select(); } } voidShow: : Graph()//图形调用 { Select(); fstreamin; in.open(name,ios: : in||ios: : out); if(! in) { cout<<"Cant'nopenfile! "< } charc[1000]; while(! in.eof()) { in.getline(c,sizeof(c)); cout< Colour(); } in.close(); } intmain() { srand((unsigned)time(NULL)); Showgeometry; cout<<"\n\n\n\n\n\n…………………………………………………………………………………………………………"; cout<<"\n\n\t\t\t欢迎进入几何世界\n\n\n"; cout<<"\t几何世界里各种图形随机的出现,图形的大小,颜色,出现的位置随机变化,\n\t形成一幅奇妙的几何世界。 \n\n\n"; cout<<"\t\t\t输入N退出,其它任意键继续…\n\n"; cout<<"…………………………………………………………………………………………………………\n"; chara; cin>>a; while(a=='N'||a=='n') { exit(0); } while (1) { system("cls"); for(inti=0;i<4;i++) { geometry.Graph(); Sleep(600); } cout<<"想要退出输入N,其它键继续..."< charx; cin>>x; if(x=='n'||x=='N') { exit(0); } } return0; } 参考文献 [1]数据挖掘基础教程,K.P.Soman,ShyamDiwakarV.Ajay著,范明,牛常勇译.机械工业出版社.2009.1 [2]数据挖掘导论(英文版),Pang-NingTan,MichaelSteinbach,VipinKumar著.人民邮电出版社.2006.1 [3]数据挖掘概念与技术(英文版,第2版),JiaweiHan,MichelineKamber著.机械工业出版社.2007.12
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 几何 世界
![提示](https://static.bdocx.com/images/bang_tan.gif)