模拟时钟转动程序

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

东南大学

C语言课程设计报告

课程名称:计算机综合课程设计

学院:土木工程学院

设计题目:模拟时钟转动程序级别: B级

学生姓名:***

学号: ******** 同组学生:

学号:

指导教师:***

2015年 9 月 1 日

C语言课程设计任务书

模拟时钟转动程序

一、课程设计的内容

1、能模拟机械钟表行走

2、还要准确利用数字显示日期和时间

3、在屏幕上显示一个活动时钟

4、按任意键时程序退出。

二、课程设计应完成的工作

1、编写完成相应题目的程序

2、编写课程设计报告,课程设计报告应该包含以下6部分

1)需求分析:包括设计题目、设计要求以及系统功能需求分析

2)总体设计:包括系统总体设计框架和系统功能模块图

3)详细设计:包括主要功能模块的算法设计思路以及对应的工作流程图

4)调试分析过程描述:包括测试数据、测试输出结果以及对程序测试过程中存在问题进行思考(主要问题的出错现象、出错原因、

解决方法及其效果等,相应效果截图)

5)总结:课程设计完成了哪些主要功能,是否有扩展功能?还有哪些地方需要改进?课程设计的学习与体会?有哪些合理化建

议?

6)附录:主要原程序代码含必要的注释

3、答辩:在实验室建立程序运行环境,并在指导教师的监督下,独立解决问题,运行程序和回答教师的提问。

四、应收集的资料及其主要参考文献

[1]谭浩强.C程序设计(第四版),北京:清华大学出版社,2010年6月[2]陈清华朱红 . C语言课程设计案例精选与编程指导(第一版),南京:东南大学出版社,2003年6月

[3]顾小晶 . 实用C语言简明教程(第一版),北京:中国电力出版社,2003年9月

目录

1.设计目的与要求 (4)

2.总体设计 (5)

3.详细设计 (6)

3.1画出钟表的轮廓

3.2获取系统时间

4.调试分析 (7)

5.总结 (10)

6.附录(程序) (11)

7.答辩记录(正文处留出适当空白) (15)

8.指导教师意见(正文处留出适当空白) (16)

1.目的与要求

要求:

1、能模拟机械钟表行走

2、还要准确利用数字显示日期和时间

3、在屏幕上显示一个活动时钟

4、按任意键时程序退出。

设计总体要求:

➢采用模块化程序设计;

➢鼓励可视化编程;

➢源程序中应有足够的注释;

➢学生可自行增加新功能模块(视情况可另外加分);

➢必须上机调试通过;

➢注重算法运用,优化存储效率与运算效率;

➢需提交源程序(含有注释)及相关文件(数据或数据库文件);

(cpp文件、txt或dat文件等)

➢提交设计报告书,具体要求见以下说明。

课程设计报告要求:

①需求和规格说明:问题描述:题目要解决的问题是什么?

②设计

⊕设计思路:主要算法思想。

⊕总体设计:程序设计组成框图、N-S流程图。

⊕详细设计:模块功能说明(如函数功能、入口及出口参数说明,函数

调用关系描述等)。

③调试与测试:调试过程中遇到的主要问题,是如何解决的;对设计和编码

的回顾讨论和分析;改进设想;经验和体会等。

④附录:源程序清单和结果。如果题目规定了测试数据,则结果要包含这些

测试数据和运行输出,当然还可以含其他测试数据和运行输出;清

单中应有足够的注释。

2. 总体设计

首先,先画出个钟的大致轮廓。从输出数字到画出外轮廓,到标出短线到画出时针、分针、秒针。这个轮廓就已经完成了。

然后,为了更加这个钟的实用性。就通过获取系统时间来结合实际意义,这是最简单,最好的方法。从应用上,它显示的是实际的时间,增强了可用性;从编程上,不用再复杂地再编一个更新时间的函数,减少程序的篇幅、复杂性和编程者的工作量。接着顺带利用时间的变量名来画时针,分针,秒针。

最后,为了让时针,分针,秒针让观察者看起来是连续的变化,即形象地模拟真实的机械钟表那样运动,就用函数让时针,分针,秒针跟着时间一齐走动。

画出钟表

模拟时钟转

动程序

让时针,分

针,秒针

随着系统的

时间动起来

获取系统时间并画出时针,分针,秒针

3.详细设计1. 画出钟表的轮廓:

1)钟表的外轮廓

circle(320,240,189);

circle(320,240,180);

2)画出钟内的短线

x1=180*sin(i*6*pi/180)+320;

y1=180*cos(i*6*pi/180)+240;

x2=(180-l)*sin(i*6*pi/180)+320;

y2=(180-l)*cos(i*6*pi/180)+240;

line(x1,y1,x2,y2);

3)画出时针、分针、秒针

i=now.sec;

j=now.min;

k=now.hour;

dx3=l3*sin(i*6*pi/180);

dy3=l3*cos(i*6*pi/180);

dx2=l2*sin(j*6*pi/180+i*6*pi/180/60);

dy2=l2*cos(j*6*pi/180+i*6*pi/180/60);

dx1=l1*sin(k*pi/6+j*pi/360);

dy1=l1*cos(k*pi/6+j*pi/360);

line(x1,y1,x1+dx3,y1-dy3);

line(x1,y1,x1+dx2,y1-dy2);

line(x1,y1,x1+dx1,y1-dy1);

2. 获取系统时间:

time(&rawtime);

t=localtime(&rawtime);

now.sec=t->tm_sec;

now.min=t->tm_min;

now.hour=t->tm_hour;

now.year=t->tm_year;

now.mon=t->tm_mon;

now.day=t->tm_mday;

now.week=t->tm_wday;

相关文档
最新文档