C语言课程设计实践报告

上传人:M****1 文档编号:469344610 上传时间:2023-12-26 格式:DOC 页数:8 大小:97KB
返回 下载 相关 举报
C语言课程设计实践报告_第1页
第1页 / 共8页
C语言课程设计实践报告_第2页
第2页 / 共8页
C语言课程设计实践报告_第3页
第3页 / 共8页
C语言课程设计实践报告_第4页
第4页 / 共8页
C语言课程设计实践报告_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《C语言课程设计实践报告》由会员分享,可在线阅读,更多相关《C语言课程设计实践报告(8页珍藏版)》请在金锄头文库上搜索。

1、C语言课程设计实践报告课题: 时钟 队名: 主旋律 口号: 我们的比赛,我们主导! 学院: 机械工程学院 班级: 2009级工业工程1班 1、实践目的1)明确课程设计的目的,能根据课程设计的要求,查阅相关文献、资料,为完成设计准备必要的知识;2)提高学生们用高级语言进行程序设计的能力;3)初步了解软件开发的一般方法和步骤;4)提高撰写技术文档的能力 5)培养和提高IE专业本科生应用程序设计语言解决实际问题的素质和能力;6)培养团队协作的精神,培养创新意识,提高自学能力和实践动手能力。2、课程设计报告21 问题描述时钟的形状是一个圆形表盘,由时针、分针和秒针组成。按照每天时间从0:00(12:0

2、0)到12:00的循环,将圆形表盘等分成12等份,又按每小时60分种(每分钟60秒 )将表盘等分成60等份,用实心圆点标注。为了便于人清晰的读出时间,从表盘的正北位置起每隔30度的那一个圆点用较大圆点进行区分,并标以1至12的数字。 将时针、分针和秒针的旋转中心固定在表盘的中心位置,并用真的颜色和长短进行区分,秒针最长,其次分针,最后时针。秒针走一圈分针走一小格,分针走一圈时针走5格。为了表盘的美观,将表盘赋予颜色的变化。最后编译相应的程序获取当前时间。2.2 设计步骤1)准备工作,实例出各种颜色的变换,画笔等,用于绘图工作;2)绘制圆形表盘,将坐标原点定在表盘中心;3)绘制时钟表盘,各个针,

3、等工作;4)将时钟表盘按每分钟60秒分60等份,绘制60个小圆,用来区分秒钟时间间隔;5)将时钟表盘按每天时间从0:00(12:00)到12:00的循环分12等份,绘制12个较大圆,用来区时针时间间隔;6)绘制时钟的表盘数字,从1至12,实现数字化表盘;7)获取当前时间,并将时间转换成时间字符串,分别索引时,分,秒的值,并分别存储至字符串中;8)获取当前秒钟数,并按其定位秒针所指方向,并绘制从原点至其方向的一条线,用以表示秒针的转动;9) 获取当前分钟数,并按其定位分针所指方向,并绘制从原点至其方向的一条线,用以表示分针的转动;10)获取当前时钟数,并按其定位时针所指方向,并绘制从原点至其方向

4、的一条线,用以表示时针的转动;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() InitializeCo

5、mponent(); 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, (

6、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

7、= 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); /*以下代码为 获取当前时间,并将时间转换成时间字符串,分别索引时,分,

8、秒的值,并分别存储至字符串中*/ 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);/*以下代码为

9、绘图工作,绘制时钟表盘,各个针,等工作*/ 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_positi

10、on - 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); /

11、*下列循环绘制时钟的表盘数字,从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

12、); 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

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号