模拟时钟转动程序.doc_第1页
模拟时钟转动程序.doc_第2页
模拟时钟转动程序.doc_第3页
模拟时钟转动程序.doc_第4页
模拟时钟转动程序.doc_第5页
免费预览已结束,剩余2页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言集中上机实验报告题目五: 模拟时钟转动程序 院 系: 班 级: 姓 名: 学 号: 指导教师: 2011 年 12 月 08日目录一 课程设计的地位、作用与目的2二 课程的基本要求2三 课程设计的主要设计思路与流程图2 1设计思路 2流程图 3使用的主要函数 4程序各功能模块四 程序的运行结果5 1调试过程出现的问题 2运行结果五 心得体会6一 课程设计的地位、作用与目的为综合应用C语言程序设计理论知识、进一步提高学生综合解决问题、协调工作的能力和良好的软件开发习惯,特安排本实验内容。希望通过该实习能够进一步激发学生的学习热情,培养学生初步编程的能力,为后续的学习和发展奠定基础。二 课程的基本要求能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。三 课程设计的主要设计思路与流程图设计思路:在绘图窗口中先画出表盘后获取系统的时间,利用得到的系统时间计算表针的位置,并将时间在屏幕上输出。每隔一秒读取一次时间,直到键盘有输入为止。流程图开始初始化绘图窗口画表盘 检测是否有键盘输入是否获取系统时间将得到的整数型时间变量转换成字符型并输出计算表针的位置画表针结束使用的主要函数:setlinestyle 设置画线setcolor 设置颜色line(int x1,int y1,int x2,int y2) 画直线circle(int x,int y,int r) 画圆outtextxy(int x,int y,char *textstring) 在指定位置输出字符initgraph(int x, int y); 初始化绘图窗口setwritemode( ); 设置绘图模式kbhit() 检查是否有键盘输入GetLocalTime(&ti); 获取当前时间sleep() 程序暂停若干时间程序各功能模块:1.计算表针的位置并画出表针void Drawzhizhen(int hour, int minute, int second) double a_hour, a_min, a_sec; / 时、分、秒针的弧度值 int x_hour, y_hour, x_min, y_min, x_sec, y_sec; / 时、分、秒针的位置 a_sec = second * 2 * PI / 60; / 计算时、分、秒针的弧度值 a_min = minute * 2 * PI / 60 + a_sec / 60; a_hour= hour * 2 * PI / 12 + a_min / 12; x_sec = int(120 * sin(a_sec); y_sec = int(120 * cos(a_sec); /计算 时、分、秒针的位置 x_min = int(100 * sin(a_min); y_min = int(100 * cos(a_min); x_hour= int(70 * sin(a_hour); y_hour= int(70 * cos(a_hour); setlinestyle(PS_SOLID, NULL, 10); / 画时针 setcolor(WHITE); line(300 + x_hour, 240 - y_hour, 300 - x_hour / 7, 240 + y_hour / 7); setlinestyle(PS_SOLID, NULL, 5);/ 画分针 setcolor(YELLOW); line(300 + x_min, 240 - y_min, 300 - x_min / 5, 240 + y_min / 5); setlinestyle(PS_SOLID, NULL, 2); / 画秒针 setcolor(RED); line(300 + x_sec, 240 - y_sec, 300 - x_sec / 3, 240 + y_sec / 3);2.画表盘void Drawbiaopan() int i,l,x1,x2,y1,y2; setbkcolor(1); circle(300,240,180); circle(300,240,185); circle(300,240,20); for(i=0;i60;i+) /*划钟点上的短线*/ if(i%5=0) l=15; else l=5; x1=180*sin(i*6*PI/180)+300; y1=180*cos(i*6*PI/180)+240; x2=(180-l)*sin(i*6*PI/180)+300; y2=(180-l)*cos(i*6*PI/180)+240; line(x1,y1,x2,y2); outtextxy(300,80,12) ; outtextxy(300,390,6); outtextxy(140,230,9); outtextxy(460,230,3); outtextxy(380,100,1); outtextxy(220,100,11); outtextxy(430,160,2); outtextxy(430,310,4); outtextxy(380,370,5); outtextxy(220,370,7); outtextxy(160,160,10); outtextxy(160,310,8);3.将获取的整数型时间变量转换成字符型void ch1(int a,int x) /将年转换成字符型并输出char b,c,d,e;b=(char)(a/1000+48);c=(char)(a%1000)/100+48);d=(char)(a%100)/10+48);e=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);outtextxy(x+20,10,d);outtextxy(x+30,10,e);void ch2(int a,int x) /其他时间转换成字符型并输出char b,c;b=(char)(a/10+48);c=(char)(a%10+48);outtextxy(x,10,b);outtextxy(x+10,10,c);主函数:void main() initgraph(640, 480); / 初始化绘图窗口 Drawbiaopan(); / 绘制表盘 setwritemode(R2_XORPEN); / 设置绘图模式 SYSTEMTIME ti; / 定义ti保存当前时间 while(!kbhit() / 按任意键退出钟表程序 GetLocalTime(&ti); / 获取当前时间 ch1(ti.wYear,10); outtextxy(50,10,年); /输出时间 ch2(ti.wMonth,65); outtextxy(85,10,月); ch2(ti.wDay,100); outtextxy(120,10,日); ch2(ti.wHour,135); outtextxy(155,10,:); ch2(ti.wMinute,165); outtextxy(185,10,:); ch2(ti.wSecond,195); Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); / 画表针 Sleep(1000); / 延时 1 秒 Drawzhizhen(ti.wHour, ti.wMinute, ti.wSecond); / 画表针 closegraph(); / 关闭绘图窗口四 程序的调试与运行结果调试过程出现的问题:1.Vc+6.0中没有“graphics.h”解决办法:安装turboc.2.0中的函数库EasyX2.无法获取系统时间 解决办法:使用函数GetLocalTime(

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论