




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
c语言课程设计实践报告课题: 时钟 队名: 主旋律 口号: 我们的比赛,我们主导! 学院: 机械工程学院 班级: 2009级工业工程1班 1、实践目的1)明确课程设计的目的,能根据课程设计的要求,查阅相关文献、资料,为完成设计准备必要的知识;2)提高学生们用高级语言进行程序设计的能力;3)初步了解软件开发的一般方法和步骤;4)提高撰写技术文档的能力 5)培养和提高ie专业本科生应用程序设计语言解决实际问题的素质和能力;6)培养团队协作的精神,培养创新意识,提高自学能力和实践动手能力。2、课程设计报告21 问题描述时钟的形状是一个圆形表盘,由时针、分针和秒针组成。按照每天时间从0:00(12:00)到12:00的循环,将圆形表盘等分成12等份,又按每小时60分种(每分钟60秒 )将表盘等分成60等份,用实心圆点标注。为了便于人清晰的读出时间,从表盘的正北位置起每隔30度的那一个圆点用较大圆点进行区分,并标以1至12的数字。 将时针、分针和秒针的旋转中心固定在表盘的中心位置,并用真的颜色和长短进行区分,秒针最长,其次分针,最后时针。秒针走一圈分针走一小格,分针走一圈时针走5格。为了表盘的美观,将表盘赋予颜色的变化。最后编译相应的程序获取当前时间。2.2 设计步骤1)准备工作,实例出各种颜色的变换,画笔等,用于绘图工作;2)绘制圆形表盘,将坐标原点定在表盘中心;3)绘制时钟表盘,各个针,等工作;4)将时钟表盘按每分钟60秒分60等份,绘制60个小圆,用来区分秒钟时间间隔;5)将时钟表盘按每天时间从0:00(12:00)到12:00的循环分12等份,绘制12个较大圆,用来区时针时间间隔;6)绘制时钟的表盘数字,从1至12,实现数字化表盘;7)获取当前时间,并将时间转换成时间字符串,分别索引时,分,秒的值,并分别存储至字符串中;8)获取当前秒钟数,并按其定位秒针所指方向,并绘制从原点至其方向的一条线,用以表示秒针的转动;9) 获取当前分钟数,并按其定位分针所指方向,并绘制从原点至其方向的一条线,用以表示分针的转动;10)获取当前时钟数,并按其定位时针所指方向,并绘制从原点至其方向的一条线,用以表示时针的转动;11)最后设计一个程序来报告当前时间。2.3程序流程图3、源程序代码using system;using system.collections.generic;using system.componentmodel;using system.data;using system.drawing;using system.text;using system.windows.forms;namespace 时钟 public partial class form1 : form public graphics g; public form1() initializecomponent(); timer1.start(); timer1.interval = 1000; /就是说每隔一秒执行一次time事件 1000是一秒=一毫秒 private void form1_paint(object sender, painteventargs e) /图像平铺形状程序 /*以下代码为 准备工作,实例出各种颜色的变换,画笔等,用于下面的绘图工作*/ g = e.graphics; random r = new random(); int random = r.next(); color c = color.fromargb(random + 50) % 255, (random + 30) % 255, (random - 100) % 255); int random1 = r.next(); color k = color.fromargb(random1 + 50) % 255, (random1 + 30) % 255, (random1 - 100) % 255); pen p = new pen(c, 3); pen p1 = new pen(color.black, 8); pen p2 = new pen(color.deepskyblue, 3); pen p3 = new pen(color.deeppink, 3); pen p4 = new pen(color.brown, 3); solidbrush sbrush = new solidbrush(c); solidbrush sbrush1 = new solidbrush(k); solidbrush sbrush2 = new solidbrush(color.black);/*以下代码为 重绘图形坐标,将坐标原点改至,窗体的中心。*/ int x = this.width / 2; int y = this.height / 2; g.translatetransform(x, y); /*以下代码为 获取当前时间,并将时间转换成时间字符串,分别索引时,分,秒的值,并分别存储至字符串中*/ datetime datetime = datetime.now; string time = datetime.tolongtimestring(); int i1 = time.indexof(:); string hour = time.substring(0, i1); time = time.substring(i1 + 1); int i2 = time.indexof(:); string minute = time.substring(0, i2); string second = time.substring(i2 + 1);/*以下代码为 绘图工作,绘制时钟表盘,各个针,等工作*/ g.drawellipse(p1, -162, -163, 325, 325); /绘制表盘/*下列循环将时钟表盘按秒钟分60等份,绘制60个园,用来区分秒钟时间间隔*/ for (int i = 0; i 60; i+) int x_position = convert.toint32(150 * (math.sin(math.pi * i / 30); int y_position = convert.toint32(150 * (math.cos(math.pi * i / 30); g.fillellipse(sbrush, x_position - 5, y_position - 5, 10, 10); /*下列循环将时钟表盘按分钟分12等份,绘制12个较大园,用来区分分钟时间间隔*/ for (int i = 0; i 12; i+) int x_position = convert.toint32(150 * (math.sin(math.pi * i / 6); int y_position = convert.toint32(150 * (math.cos(math.pi * i / 6); g.fillellipse(sbrush1, x_position - 7, y_position - 8, 15, 15); /*下列循环绘制时钟的表盘数字,从1至12,实现数字化表盘*/ for (int i = 0; i 12; i+) font font = new font(arial , 15); brush fontbrush = systembrushes.controldarkdark; string s = null; int x_position = convert.toint32(135 * (math.sin(math.pi * (i + 1) / 6); int y_position = convert.toint32(135 * (math.cos(math.pi * (i + 1) / 6); s = (i + 1).tostring(); g.drawstring(s, font, fontbrush, x_position - 8, -y_position - 11); /*以下代码为 获取当前秒钟数,并按其定位秒针所指方向,并绘制从原点至其方向的一条线,用以表示秒针的转动*/ float second_position_x = convert.tosingle(120 * math.sin(convert.todouble(second) / 30 * math.pi); float second_position_y = -convert.tosingle(120 * math.cos(convert.todouble(second) / 30 * math.pi); g.drawline(p2, 0, 0, second_position_x, second_position_y);/*以下代码为 获取当前分钟数,并按其定位分针所指方向,并绘制从原点至其方向的一条线,用以表示分针的转动*/ float minute_position_x = convert.tosingle(90 * math.sin(convert.todouble(minute) / 30 * math.pi); float minute_position_y = -convert.tosingle(90 * math.cos(convert.todouble(minute) / 30 * math.pi); g.drawline(p3, 0, 0, minute_position_x, minute_position_y);/*以下代码为 获取当前时钟数,并按其定位时针所指方向,并绘制从原点至其方向的一条线,用以表示时针的转动*/ int new_hour = convert.toint32(hour) % 12; float hour_position_x = convert.tosingle(60 * math.sin(convert.todouble(new_hour) / 12 + convert.todouble(minute) / 720) * math.pi * 2); float hour_position_y = -convert.tosingle(60 * math.cos(convert.todouble(new_hour) / 12 + convert.todouble(minute) / 720) * math.pi * 2); g.drawline(p4, 0, 0, hour_position_x, hour_position_y);/*以下代码为 在表盘正中央的一个填充圆,代码放置最后是因为:这个圆不能被时针,分针,秒针所覆盖。美化作用*/ g.fillellipse(sbrush2, -8, -8, 16, 16); private void timer1_tick(object sender, eventargs e) invalidate(); private void form1_load(object sender, eventargs e) private void button1_click(object sender, eventargs e) /*一个button,用来报告当前,数字化时钟的时间。*/ messagebox.show(现在时刻: + datetime.now.tolongtimestring(); 4、实践心得学完了c语言理论课,接下来就是要学以致用,否则个人认为学什么都没有意义。在进行课程设计之前几天,不知从何入手,一脸茫然。为什么呢?因为我们想自己做出来而不参考任何资料,以为这样才可体现我们的智慧和能力,其实这是大错特错的。当然也不是一味强调自己动脑自己做出来不好,从开发方面角度来说是可以的,有些东西也并不是一味的照搬照抄。抱着这样的态度迷茫了三四天只想出了一丁点大至结构。最后决定上网找资料,不查不知道,一查大吃一惊,不但自己的想法网上比比皆是,比自己的想法更完美更合理的多得看都看不完。此时真是自愧不如,如早从网上借鉴,集大家之所成,加上自己的修改完善,早已做出了更好的系统结构和想法了。现在才知道,几个人的智慧敌不过千万人智慧的集成,能借鉴的尽量借鉴,然后再修改完善,增加自己所需的功能,做出自己的特色。伟大的物理学家牛顿不也说过他之所以成功是站在伟人的肩上吗? 完成设计后,我们觉得收获不少,首先是自己首次应用所学知识做出了这个时钟系统,以前从未做过这样大(这是对我们自己而言,在专业人仕看来是小菜一碟)的程序,多少心里有点甜美的感觉;而收获更大的是让我们学到了怎样和他人合作完成一件任务,以及在完成的过程中如何沟通。完成设计是在一定时间内完成的,在完成这个设计时,我们做得显然有一些紧迫,我想是没合理安排
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 江西传媒职业学院《比较行政法》2023-2024学年第二学期期末试卷
- 吉林省长春二道区七校联考2025届初三1月第一次中考模拟考试英语试题试卷含答案
- 湛江市高一上学期期末调研考试物理试题
- 首届学生会成立大会流程
- 2025建筑工程混凝土浇筑施工合同
- 2025家具供货合同模板
- 2025合同中的定金与订金在房屋买卖协议中的法律效果差异
- 2025建筑工程施工劳务分包合同结构工程
- 2025劳动合同变更书模板
- 2025办公室租赁合同协议书范本参考
- 伍光和自然地理学4版知识点总结课后答案
- 《药疹(Drug Eruption)》PPT课件
- 手压式手电筒设计(棘轮机构及电路设计)
- 滇10J6-1住宅厨房、卫生间烟气道及管道井构造图集
- 华中科技大学版五年级信息技术教案
- 600MW超临界锅炉给水控制系统分析
- 固定收益研究报告透过x系统看银行间交易未来发展
- 上海实验学校幼升小测试题(共49页)
- PHC管桩-桩基工程监理质量评估报告
- 上海实验学校幼升小测试题
- 天津市劳动局用工-6号表
评论
0/150
提交评论