图形模拟时钟C语言课程设计分析
C语言课程设计报告-模拟时钟转动程序
课程设计报告课程名称结构化程序设计课程设计院部名称专业班级学生姓名王蕾学号课程设计地点课程设计学时指导教师金陵科技学院教务处制目录第一章课程设计的目的和要求.............................................1.1 C语言课程设计的目的............................................1.2 C语言课程设计实现的要求........................................ 第二章课程设计的任务内容............................................... 第三章详细设计说明.....................................................3.1 程序系统的结构..................................................3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述........................................................3.2.1 指针式时钟................................................3.2.2 数字式时钟................................................3.3 输出项..........................................................3.4 算法............................................................3.5 流程图..........................................................3.6 函数说明........................................................3.7 接口............................................................3.8 调试结果........................................................ 第四章软件使用说明.....................................................4.1 软件使用说明及出现的问题........................................4.2 运行结果........................................................ 第五章课程设计心得与体会............................................... 附录1:参考文献......................................................... 附录2:修改后的源代码……………………………………………………………………模拟时钟转动程序第一章课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
c模拟时钟课程设计
c 模拟时钟课程设计一、教学目标本课程的学习目标主要包括知识目标、技能目标和情感态度价值观目标。
知识目标要求学生掌握C语言的基本语法、数据类型、运算符、控制结构等,了解模拟时钟的基本原理和设计方法。
技能目标要求学生能够运用C语言编写简单的模拟时钟程序,培养学生的编程能力和问题解决能力。
情感态度价值观目标培养学生的团队合作意识、创新精神和对计算机科学的兴趣。
二、教学内容教学内容主要包括C语言基础知识、模拟时钟的设计与实现。
详细的教学大纲如下:1.C语言基础知识:介绍C语言的基本语法、数据类型、运算符、控制结构等,为学生编写模拟时钟程序打下基础。
2.模拟时钟的设计与实现:讲解模拟时钟的基本原理,引导学生运用C语言编写模拟时钟程序,培养学生的编程能力和问题解决能力。
三、教学方法本课程采用讲授法、讨论法、案例分析法和实验法等多种教学方法,以激发学生的学习兴趣和主动性。
1.讲授法:通过讲解C语言基础知识和模拟时钟的设计原理,使学生掌握相关知识。
2.讨论法:学生进行小组讨论,分享学习心得和编程经验,提高学生的团队合作能力。
3.案例分析法:分析典型的模拟时钟程序案例,引导学生学会分析问题、解决问题。
4.实验法:让学生动手编写模拟时钟程序,培养学生的实际编程能力和操作技能。
四、教学资源本课程所需教学资源包括教材、参考书、多媒体资料和实验设备。
1.教材:选用权威、实用的C语言教材,为学生提供系统的学习资料。
2.参考书:提供相关的C语言编程参考书籍,丰富学生的知识储备。
3.多媒体资料:制作精美的PPT、教学视频等,增强课堂教学的趣味性和生动性。
4.实验设备:为学生提供充足的计算机设备,确保每位学生都能动手实践。
五、教学评估为了全面、客观地评估学生的学习成果,本课程采用多元化的评估方式。
评估内容包括平时表现、作业、考试等。
1.平时表现:通过观察学生在课堂上的参与程度、提问回答等情况,了解学生的学习态度和知识掌握程度。
vc钟表课课程设计
vc 钟表课课程设计一、教学目标本课程旨在通过学习vc钟表的相关知识,让学生掌握钟表的基本结构、功能和工作原理,能够运用所学的知识进行简单的钟表设计和制作。
具体的学习目标如下:1.了解钟表的基本结构,包括时针、分针、秒针等。
2.掌握钟表的工作原理,包括时间的计算、指针的移动等。
3.了解不同类型的钟表,如机械钟表、电子钟表等。
4.能够使用工具进行钟表的拆卸和组装。
5.能够根据需求设计简单的钟表。
6.能够进行钟表的故障排除和维修。
情感态度价值观目标:1.培养学生的动手能力和实践能力,提高学生对钟表制作和维修的兴趣。
2.培养学生的团队合作意识,学会与他人合作完成任务。
3.培养学生的创新思维,鼓励学生进行钟表设计的创新。
二、教学内容本课程的教学内容主要包括钟表的基本结构、工作原理和设计制作方法。
具体的教学大纲如下:1.钟表的基本结构:介绍时针、分针、秒针等的基本概念和作用。
2.钟表的工作原理:讲解时间的计算方法、指针的移动原理等。
3.不同类型的钟表:介绍机械钟表、电子钟表等的特点和区别。
4.钟表的设计制作:学习钟表的设计方法,进行钟表的拆卸和组装实践。
5.钟表的故障排除和维修:学习钟表的常见故障和解决方法。
三、教学方法为了激发学生的学习兴趣和主动性,本课程将采用多种教学方法相结合的方式进行教学。
包括:1.讲授法:教师讲解钟表的基本结构、工作原理和设计制作方法。
2.讨论法:学生分组讨论钟表的特点和区别,分享自己的设计和制作经验。
3.案例分析法:分析具体的钟表设计案例,引导学生进行创新设计。
4.实验法:学生动手进行钟表的拆卸和组装实践,提高学生的动手能力。
四、教学资源为了支持教学内容和教学方法的实施,丰富学生的学习体验,我们将选择和准备以下教学资源:1.教材:选择一本与vc钟表相关的教材,作为学生学习的主要参考资料。
2.参考书:提供一些相关的参考书籍,供学生进一步深入学习和研究。
3.多媒体资料:制作多媒体课件,通过图片、视频等形式展示钟表的设计和制作过程。
C语言模拟时钟转动课程设计报告
《C语言程序设计》课程设计报告题目:模拟时钟转动程序班级:组别:组员:指导教师:目录第一章课程设计的题目 (2)1.1 C语言课程设计的题目 (2)第二章课程设计的要求 (2)2.1 C语言课程设计的要求 (2)第三章课程设计的目的 (2)3.1 C语言课程设计的目的 (2)第四章课程设计的内容 (3)4.1 C语言课程设计的程序清单和注释 (3)第五章课程设计的运行结果 (7)5.1 C语言课程设计的运行结果 (7)第六章课程设计的结果分析 (8)6.1 C语言课程设计的结果分析 (8)第七章课程设计的心得体会 (9)7.1 C语言课程设计的心得体会 (9)模拟时钟转动程序第一章课程设计的题目1.1 C语言课程设计的题目本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。
第二章课程设计的要求2.1 C语言课程设计的要求能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。
第三章课程设计的目的3.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
通过课程设计,自然地、熟练地掌握。
熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。
学会上机调试程序。
第四章课程设计的内容4.1 C语言课程设计的程序清单和注释模拟时钟转动程序清单+注释#include<windows.h> //包含窗口头文件#include<math.h> //头文件,包含了一些数学计算的函数#define TWOPI (2*3.14159)#define IDTIMER 1 //计时器ID#define ANGLE TWOPI/360 //2PILRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); //回调函数Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow ) // 应用启动函数mian {TCHAR szClassName[] = TEXT("analogCloc");MSG msg; //定义消息HWND hwnd; //窗口句柄WNDCLASS wndclass; //系统支持结构,定义并初始化窗口结构 wndclass.cbClsExtra = 0; //窗口类无扩展wndclass.cbWndExtra = 0; //窗口势力无扩展wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//窗口背景为白色wndclass.hCursor = NULL;wndclass.hIcon = NULL;wndclass.hInstance = hInstance; //当前实例句柄 wndclass.lpfnWndProc = WindowProc; //关联到消息回调函数wndclass.lpszClassName = szClassName;wndclass.lpszMenuName = NULL; //窗口中无菜单wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口重绘风格RegisterClass(&wndclass);hwndCreateWindow(szClassName,TEXT("Clock"),WS_OVERLAPPEDWINDOW, CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL, NULL, hInstance, NULL); //创建窗口ShowWindow(hwnd,nCmdShow); //显示窗口UpdateWindow(hwnd); //更新窗口,强制显示while(GetMessage(&msg,NULL,0,0)) //函数GetMessage 是从调用线程的消息队列里取得一个消息并将其放于指定的结构{TranslateMessage(&msg); //消息处理DispatchMessage(&msg); //消息派遣}return msg.wParam; //windows应用程序的消息循环形式}void setISOTROPIC(HDC hdc,int cxClient,int cyClient)//设置映射模式,使之成为笛卡尔坐标系的映射模式{SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL); // 逻辑单位与设备单位比1/2SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); //竖坐标向上为正,下为负}void drawClock(HDC hdc) // 画时钟圆盘{int x, y, radius; //以逻辑单位表示的窗口原点坐标SelectObject(hdc,CreateSolidBrush(RGB(1,148,138)));//设置整个窗口线条颜色for(int i=0;i<360;i+=6){x = (int)(cos(TWOPI/360*i)*900); //cos函数,包含在math.h头文件利的函数y = (int)(sin(TWOPI/360*i)*900);radius = !(i%5)?40:10;Ellipse(hdc,x-radius,y-radius,x+radius,y+radius);// 把弧度制转换成坐标形式,Ellipse函数用来画圆}}void drawHands(HDC hdc,SYSTEMTIME *pst,BOOL hChange)// draw hands函数负责绘制时钟的时针、分针和秒针的轮廓{int radius[3] = {500,700,850};int angle[3];angle[0] = pst->wHour*30+pst->wMinute/12*6;angle[1] = pst->wMinute*6;angle[2] = pst->wSecond*6;for(int i=hChange?0:2;i<3;i++){MoveToEx(hdc,0,0,NULL);LineTo(hdc,(int)(radius[i]*cos(ANGLE*(90-angle[i]))),(int)(radius[i]*sin(ANGLE*(90-angle[i]))));}}LRESULT CALLBACK WindowProc(HWND hwnd,UINT message, // 消息标识符,标识某个特定的消息WPARAM wParam,LPARAM lParam) //消息处理函数{TCHAR time[40];PAINTSTRUCT ps;HDC hdc;static int cxClient, cyClient;SYSTEMTIME st; //定义结构体变量static SYSTEMTIME preSt;BOOL hChange;switch(message) //switch 语句一个case代表一种情况 {case WM_CREATE: // 窗口创建事件SetTimer(hwnd,IDTIMER,1000,NULL); //创建一个1000ms定时器GetLocalTime(&st); //得到当前系统时间wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); // 设置当前时间为窗口titlepreSt = st;return 0;case WM_SIZE:cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);return 0;case WM_TIMER: //定时器到时,即是每隔一秒要重画下界面GetLocalTime(&st); //每次都要获取当前时间hChange = st.wHour!=preSt.wHour||st.wMinute!=preSt.wMinute;hdc = GetDC(hwnd);setISOTROPIC(hdc,cxClient,cyClient);SelectObject(hdc,GetStockObject(WHITE_PEN));drawHands(hdc,&preSt,hChange);SelectObject(hdc,GetStockObject(BLACK_PEN));drawHands(hdc,&st,TRUE);ReleaseDC(hwnd,hdc);wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); //setwindowText函数:系统里的函数preSt = st; // 更新完毕后记录前一次的状态return 0;case WM_KEYDOWN:case WM_CHAR:DestroyWindow(hwnd); // 关闭窗口return 0;case WM_PAINT: //窗口绘制消息hdc = BeginPaint(hwnd,&ps); //开始绘制setISOTROPIC(hdc,cxClient,cyClient);drawClock(hdc);drawHands(hdc,&preSt,TRUE);EndPaint(hwnd,&ps); //结束绘制 return 0;case WM_DESTROY: //程序退出消息PostQuitMessage(0);return 0;}returnDefWindowProc(hwnd,message,wParam,lParam);//其他消息有系统默认处理}第五章课程设计的运行结果5.1 C语言课程设计的运行结果第六章课程设计的结果分析6.1 C语言课程设计的结果分析运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。
c语言课程设计钟表
c语言课程设计钟表一、教学目标本节课的学习目标为:知识目标:使学生掌握C语言中指针、函数、结构体等基本概念;理解并掌握钟表的运行原理及其在C语言中的实现方式。
技能目标:培养学生具备运用C语言进行钟表程序设计的能力;提高学生的编程思维和问题解决能力。
情感态度价值观目标:激发学生对计算机科学的兴趣,培养学生的创新精神和团队合作意识。
二、教学内容本节课的教学内容主要包括:1.C语言基础知识:指针、函数、结构体等基本概念。
2.钟表运行原理:时钟、分针、秒针的运动规律及其表示方法。
3.钟表程序设计:利用C语言实现钟表的运行,包括时钟、分针、秒针的动态显示。
三、教学方法本节课采用以下教学方法:1.讲授法:讲解C语言基础知识,引导学生理解并掌握基本概念。
2.案例分析法:分析钟表运行原理,让学生通过实际案例理解并掌握钟表的实现方法。
3.实验法:学生动手编写钟表程序,培养学生的实际编程能力和问题解决能力。
四、教学资源本节课所需教学资源包括:1.教材:《C语言程序设计》等相关教材,用于引导学生学习基础知识。
2.多媒体资料:钟表运行原理PPT、编程实例等,用于辅助讲解和展示。
3.实验设备:计算机、编程环境等,用于学生动手实践。
4.在线资源:相关编程教程、讨论区等,用于学生课后自学和交流。
五、教学评估本节课的评估方式包括:1.平时表现:评估学生在课堂上的参与程度、提问回答等情况,占总评的30%。
2.作业:评估学生完成的编程练习质量和进度,占总评的40%。
3.考试:进行一次钟表程序设计考试,评估学生的综合编程能力,占总评的30%。
评估方式应客观、公正,全面反映学生的学习成果。
教师应及时给予反馈,指导学生改进学习方法和策略。
六、教学安排本节课的教学安排如下:1.进度:按照教材和教学大纲,合理安排每个阶段的教学内容,确保在有限的时间内完成教学任务。
2.时间:根据学生的作息时间,选择合适的时间段进行授课,保证学生的学习效果。
3.地点:选择安静、设施齐全的教室作为教学地点,创造良好的学习环境。
图形模拟时钟C语言课程设计
2014-2015学年第二学期《高级语言程序设计》课程设计报告题目:图形模拟时钟专业:计算机科学与技术班级:13计科2班姓名:指导教师:陈广宏成绩:计算机学院2015 年4月30 日目录1 设计内容及要求 (1)1.1 设计内容 (1)1.2 设计目的及意义 (1)2 概要设计 (1)2.1功能简介 (1)2.2功能说明: (1)2.3 总体程序框图 (2)3 设计过程 (3)3.1各个模块程序流程图 (3)3.2运行界面及关键代码 (4)4设计结果与分析 (6)4.1设计结果 (6)4.2分析 (6)5 总结 (7)6 参考文献 (7)附程序清单及源程序 (8)1 设计内容及要求1.1 设计内容通过编程最终使电脑屏幕显示模拟时钟,并正常运行显示表针时间,电脑上呈现一个图种的模型表示电脑上的时间,并可以模拟时钟走动。
1.2 设计目的及意义设计目的及意义:熟悉Visual c++ 6.0软件的应用,C语言相关函数,语句的学习,查找资料代码等,编程、调试、运行、效果显示调整,完成上传,熟悉编程语言,了解程序运行以及图像显示等C语言的应用,通过编程实现既定功能。
培养自学能力,独立思考能力,将理论形成实际运用,同时可以掌握下列运算符的使用:1 .数据类型(整形、实型、字符型、指针、数组、结构等)。
2 .运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等)。
3 .程序结构(顺序结构、判断选择结构、循环结构)5 .复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。
6 .学会编制结构清晰、风格良好、数据结构适当的C语言程序。
2 概要设计2.1功能简介实现功能如下:(1)在屏幕上最终显示一个图形时钟(用程序绘制一个与时钟样式相似即可),能模拟机械钟表行走。
(2)数字式显示时间与指针式显示时间一致,且各指针运动规律正确。
(3)能准确的利用数字显示时间和日期。
(4)按ESC可以退出程序。
2.2功能说明:内容:指针式时钟模块完成在屏幕上显示一个活动时钟,模拟机械钟表行走,时针,分针,秒针不同颜色且顺时针旋转,获取系统时间;数字式时钟模块完成显示时间格式年月日时分秒,小时为24小时制,分和秒为60进制与指针式的时钟显示时间同步并获取系统时间。
C语言图形时钟课程设计实验报告.
目录1.系统功能要求。
2. 数据结构设计及说明。
3.程序结构(画流程图)。
4.各模块的功能。
5.试验结果(包括输入数据和输出结果)。
6.体会。
7.参考文献。
8.附录:程序清单及源程序。
●系统功能要求:在屏幕上显示一个图形时钟(用程序绘制一个与时钟样式相似即可),时间与系统时间一致,且要随着时间的走动准确的走动。
●数据结构设计及说明(1)图形时钟要用TC来编译,学C语言时主要用VC,用TC对我有一定的挑战性,不熟悉编译,对图形函数也没有太多接触,做这个有一定难度。
(2)先画出时钟基本组成,(时针分针秒针,中心点,表盘及其分隔点)。
(3)时钟表设计思想:第一步,确定秒钟的走时。
将圆等分成60份每过一秒,秒钟要转1/60个圆,亦即一等份。
第二步,确定分钟的走时。
将圆等分成60份每过一分,分钟要转1/60个圆,亦即一等份。
分钟自己走的再加秒钟的,才是分钟此时的位置。
第三步,确定时钟的走时。
将圆等分成12等分。
每过一时,时钟走一等份。
和分钟一样,得加上分钟,秒钟的走时,才是此刻时钟的位置。
(4)时钟走动与系统时间联系:每过一秒画出秒针,并除去前一秒的秒针,分针秒针同样可用。
画线函数与时间联系使用变量。
(5) 设置横纵坐标x=a*cos(b*c*pi/180-pi/2)+300;y=a*sin(b*c*pi/180-pi/2)+240;设置表针的动态坐标点x1=200*sin(i*6*pi/180)+300;y1=200*cos(i*6*pi/180)+240;x2=(200-l)*sin(i*6*pi/180)+300;y2=(200-l)*cos(i*6*pi/180)+240;程序结构(画流程图)总流程图:指针转动流程图:●各模块的功能●试验结果(包括输入数据和输出结果)体会:刚开始做时基本上什么都不懂,用TC做,我更不会。
不过参考了很多资料,到网上查,泡了几天图书馆,差不多能写出基本程序,虽然很多是借鉴别人的,不过能写成这样,我心里还是挺高兴的。
c时钟课程设计
c 时钟课程设计一、教学目标本课程旨在让学生掌握C时钟的基本知识和技能,包括时钟的构造、工作原理以及如何正确使用和维护时钟。
同时,通过实践操作和问题解决,培养学生的动手能力和团队协作精神,提升他们对时间的认识和珍惜时间的意识。
具体来说,知识目标包括:1.了解时钟的历史发展和主要类型。
2.掌握时钟的构造要素,如机芯、表盘、指针等。
3.理解时钟的工作原理,包括机械钟表和电子钟表的运作方式。
4.学会正确设置和校准各种类型的时钟。
技能目标涉及:1.能够识别不同的时钟类型和品牌,并了解其特点。
2.掌握基本的时钟维修和保养技巧。
3.学会使用相关的工具和仪器进行时钟的安装和调试。
4.具备分析时钟故障的能力,并能提出解决方案。
情感态度价值观目标则包括:1.培养学生对时钟艺术的欣赏能力和对时间文化的尊重。
2.增强学生对时间的敏感性和管理能力,形成良好的时间观念。
3.培养学生细致观察、耐心等待和负责守时的品质。
4.通过团队合作,培养学生的沟通协作和互助精神。
二、教学内容本课程的教学内容将依据课程目标进行,主要包括以下几个方面:1.时钟的起源与发展:介绍时钟的历史背景,重点讲解古代、现代以及电子时钟的发展历程。
2.时钟的构造与工作原理:详细解析时钟的各个组成部分,如齿轮系统、发条、摆轮等,并通过图示和实物展示来讲解其工作原理。
3.时钟的类型与特点:对比讲解机械钟表、石英钟表和数字电子钟表的构造、功能和适用场合。
4.时钟的使用与维护:教授如何正确使用各种类型的时钟,并传授日常维护和保养的知识与技巧。
5.时钟故障分析与维修:通过案例分析,讲解常见的时钟故障及其原因,介绍故障排除的方法和步骤。
三、教学方法为了提高教学效果,我们将采用多样化的教学方法,包括:1.讲授法:用于讲解时钟的发展史、工作原理等理论性内容。
2.案例分析法:通过分析具体的时钟故障案例,让学生学会诊断和解决问题。
3.实验操作法:学生亲自动手,进行时钟的组装、调试和维护,增强实践能力。
c语言绘制钟表课程设计
c语言绘制钟表课程设计一、课程目标知识目标:1. 让学生掌握C语言中结构体和指针的使用方法,并能运用其定义钟表的各个参数。
2. 让学生理解C语言中定时器功能,学会使用定时器进行动画效果的实现。
3. 让学生掌握C语言图形库的基本使用方法,能够绘制基本的钟表图形。
技能目标:1. 培养学生运用C语言解决实际问题的能力,能够独立完成钟表绘制程序的设计与实现。
2. 提高学生编程实践能力,熟练使用C语言编写具有动画效果的程序。
3. 培养学生调试程序、解决问题的能力,能够在遇到问题时进行有效分析和调整。
情感态度价值观目标:1. 激发学生对计算机编程的兴趣,培养学生主动学习和探究的精神。
2. 培养学生团队协作意识,能够在小组合作中发挥个人优势,共同完成项目任务。
3. 引导学生关注科技发展,认识到计算机编程在现实生活中的应用价值。
本课程针对高年级学生,课程性质为实践性较强的学科拓展课程。
结合学生特点和教学要求,课程目标旨在使学生在掌握C语言基础知识的基础上,进一步提高编程实践能力,培养解决实际问题的综合素质。
通过本课程的学习,学生将能够独立完成钟表绘制程序的设计与实现,提升自身编程技能,并培养良好的团队协作意识和价值观。
二、教学内容1. C语言基础知识回顾:结构体和指针的使用,重点复习结构体在表示复杂数据结构中的应用,指针在动态数据管理中的应用。
教材章节:第二章 数据类型与表达式,第三章 控制结构,第四章 函数与指针。
2. 定时器功能介绍:定时器的工作原理,如何在C语言中使用定时器实现动画效果。
教材章节:第十五章 实时时钟与定时器。
3. 图形库的使用:C语言图形库的基本函数介绍,如何绘制基本图形和时钟表盘。
教材章节:第十七章 图形编程基础。
4. 钟表程序设计:结合结构体、指针和图形库,设计并实现一个简单的钟表程序。
教学安排:分阶段进行,包括需求分析、设计、编码、调试和优化。
5. 课程实践:学生分组进行项目实践,每组完成一个具有动画效果的钟表程序。
《C#程序设计(第2版)》电子教案 项目十 绘制模拟时钟
任务一 自定义用户控件的设计
新建项目,为窗体设置背景图 片并在相应事件中写入代码。
ቤተ መጻሕፍቲ ባይዱ
任务一 自定义用户控件设计步骤:
1. 创建 ClockDesign控件库 2. 创建 ClockControl控件 3. 创建clockTimer控件,拖放Timer控
件 4. 自定义OnPaint事件处理程序 5. 定时(1秒)重绘控件
自定义用户控件设计的相关理论知识
一、c# 如何重写控件的OnPaint事件 二、C# 图形绘制——指定线条端部形状
1、使用预定义形状 2、使用自定义形状
任务二 自定义用户控件的使用
在同一个解决方案中,新建工程窗体,使用昨天大家创 建的用户自定义控件。最终效果图如下:
项目十 绘制模拟时钟 小结
通过本项目,学生能绘制出模 拟时钟。在此过程中,学生掌握了 如何自定义用户控件,也掌握测试 与使用用户控件的基本方法。
C#程序设计
项目十 绘制模拟时钟
项目十 绘制模拟时钟
游戏公司最近请软件工程师小李绘制模拟时钟用于 显示当前系统时间,小李在分析了网络上现有的代 码后,再考虑到代码的重用性,决定先自定义一个 时钟控件,然后用拖放的方式使用。效果图如下:
项目十 绘制模拟时钟分析
绘制模拟时钟主要的步骤: 1.自定义用户控件的设计 2.自定义用户控件的使用
C语言课程设计报告-模拟时钟转动程序
课程设计报告课程名称结构化程序设计课程设计院部名称专业班级学生姓名王蕾学号课程设计地点课程设计学时指导教师金陵科技学院教务处制目录第一章课程设计的目的和要求.............................................1.1 C语言课程设计的目的............................................1.2 C语言课程设计实现的要求........................................ 第二章课程设计的任务内容............................................... 第三章详细设计说明.....................................................3.1 程序系统的结构..................................................3.1.1 实验设备及环境:(软、硬件环境)3.2 模块描述........................................................3.2.1 指针式时钟................................................3.2.2 数字式时钟................................................3.3 输出项..........................................................3.4 算法............................................................3.5 流程图..........................................................3.6 函数说明........................................................3.7 接口............................................................3.8 调试结果........................................................ 第四章软件使用说明.....................................................4.1 软件使用说明及出现的问题........................................4.2 运行结果........................................................ 第五章课程设计心得与体会............................................... 附录1:参考文献......................................................... 附录2:修改后的源代码……………………………………………………………………模拟时钟转动程序第一章课程设计的目的和要求1.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
C语言模拟时钟转动课程设计报告
《C语言程序设计》课程设计报告题目:模拟时钟转动程序班级:组别:页脚内容- 0 -组员:指导教师:目录第一章课程设计的题目 (2)1.1C语言课程设计的题目 (2)第二章课程设计的要求 (2)2.1C语言课程设计的要求 (2)第三章课程设计的目的 (2)3.1C语言课程设计的目的 (2)第四章课程设计的内容 (3)4.1C语言课程设计的程序清单和注释 (3)第五章课程设计的运行结果 (7)5.1C语言课程设计的运行结果 (7)第六章课程设计的结果分析 (8)页脚内容- 1 -6.1C语言课程设计的结果分析 (8)第七章课程设计的心得体会 (9)7.1C语言课程设计的心得体会 (9)模拟时钟转动程序第一章课程设计的题目1.1 C语言课程设计的题目本次为期两周的课程设计的题目为设计一个模拟时钟转动的程序。
第二章课程设计的要求2.1 C语言课程设计的要求页脚内容- 2 -能模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。
第三章课程设计的目的3.1 C语言课程设计的目的加深对讲授内容的理解,尤其是一些语法规定。
通过课程设计,自然地、熟练地掌握。
熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。
学会上机调试程序。
第四章课程设计的内容4.1 C语言课程设计的程序清单和注释模拟时钟转动程序清单+注释#include<windows.h> //包含窗口头文件#include<math.h> //头文件,包含了一些数学计算的函数#define TWOPI (2*3.14159)#define IDTIMER 1 //计时器ID#define ANGLE TWOPI/360 //2PI页脚内容- 3 -LRESULT CALLBACK WindowProc(HWND hwnd, UINT uMsg, WPARAM wParam,LPARAM lParam ); //回调函数Int WINAPI WinMain(HINSTANCE hInstance,HINSTANCE hPrevInstance, LPSTR lpCmdLine,int nCmdShow ) // 应用启动函数mian{TCHAR szClassName[] = TEXT("analogCloc");MSG msg; //定义消息HWND hwnd; //窗口句柄WNDCLASS wndclass; //系统支持结构,定义并初始化窗口结构wndclass.cbClsExtra = 0; //窗口类无扩展wndclass.cbWndExtra = 0; //窗口势力无扩展wndclass.hbrBackground = (HBRUSH)::GetStockObject(WHITE_BRUSH);//窗口背景为白色wndclass.hCursor = NULL;wndclass.hIcon = NULL;wndclass.hInstance = hInstance; //当前实例句柄wndclass.lpfnWndProc = WindowProc; //关联到消息回调函数wndclass.lpszClassName = szClassName;页脚内容- 4 -wndclass.lpszMenuName = NULL; //窗口中无菜单wndclass.style = CS_HREDRAW | CS_VREDRAW ; //窗口重绘风格RegisterClass(&wndclass);hwnd CreateWindow(szClassName,TEXT("Clock"),WS_OVERLAPPEDWINDOW,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,CW_USEDEFAULT,NULL, NULL, hInstance, NULL); //创建窗口ShowWindow(hwnd,nCmdShow); //显示窗口UpdateWindow(hwnd); //更新窗口,强制显示while(GetMessage(&msg,NULL,0,0)) //函数GetMessage 是从调用线程的消息队列里取得一个消息并将其放于指定的结构{TranslateMessage(&msg); //消息处理DispatchMessage(&msg); //消息派遣}return msg.wParam; //windows应用程序的消息循环形式}页脚内容- 5 -void setISOTROPIC(HDC hdc,int cxClient,int cyClient)//设置映射模式,使之成为笛卡尔坐标系的映射模式{SetMapMode(hdc,MM_ISOTROPIC);SetWindowExtEx(hdc,1000,1000,NULL); // 逻辑单位与设备单位比1/2 SetViewportExtEx(hdc,cxClient/2,-cyClient/2,NULL);SetViewportOrgEx(hdc,cxClient/2,cyClient/2,NULL); //竖坐标向上为正,下为负}void drawClock(HDC hdc) // 画时钟圆盘{int x, y, radius; //以逻辑单位表示的窗口原点坐标SelectObject(hdc,CreateSolidBrush(RGB(1,148,138)));//设置整个窗口线条颜色for(int i=0;i<360;i+=6){x = (int)(cos(TWOPI/360*i)*900); //cos函数,包含在math.h头文件利的函数y = (int)(sin(TWOPI/360*i)*900);radius = !(i%5)?40:10;页脚内容- 6 -Ellipse(hdc,x-radius,y-radius,x+radius,y+radius);// 把弧度制转换成坐标形式,Ellipse函数用来画圆}}void drawHands(HDC hdc,SYSTEMTIME *pst,BOOL hChange)// draw hands函数负责绘制时钟的时针、分针和秒针的轮廓{int radius[3] = {500,700,850};int angle[3];angle[0] = pst->wHour*30+pst->wMinute/12*6;angle[1] = pst->wMinute*6;angle[2] = pst->wSecond*6;for(int i=hChange?0:2;i<3;i++){MoveToEx(hdc,0,0,NULL);LineTo(hdc,(int)(radius[i]*cos(ANGLE*(90-angle[i]))),(int)(radius[i]*sin(ANGLE*(90-angle[i]))));页脚内容- 7 -}}LRESULT CALLBACK WindowProc(HWND hwnd,UINT message, // 消息标识符,标识某个特定的消息WPARAM wParam,LPARAM lParam) //消息处理函数{TCHAR time[40];PAINTSTRUCT ps;HDC hdc;static int cxClient, cyClient;SYSTEMTIME st; //定义结构体变量static SYSTEMTIME preSt;BOOL hChange;switch(message) //switch 语句一个case代表一种情况页脚内容- 8 -{case WM_CREATE: // 窗口创建事件SetTimer(hwnd,IDTIMER,1000,NULL); //创建一个1000ms定时器GetLocalTime(&st); //得到当前系统时间wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); // 设置当前时间为窗口titlepreSt = st;return 0;case WM_SIZE:页脚内容- 9 -cxClient = LOWORD(lParam);cyClient = HIWORD(lParam);return 0;case WM_TIMER: //定时器到时,即是每隔一秒要重画下界面GetLocalTime(&st); //每次都要获取当前时间hChange = st.wHour!=preSt.wHour||st.wMinute!=preSt.wMinute;hdc = GetDC(hwnd);setISOTROPIC(hdc,cxClient,cyClient);SelectObject(hdc,GetStockObject(WHITE_PEN));drawHands(hdc,&preSt,hChange);SelectObject(hdc,GetStockObject(BLACK_PEN));drawHands(hdc,&st,TRUE);ReleaseDC(hwnd,hdc);wsprintf(time,TEXT("%d年%d月%d日%d时%d分%d秒"),//记录系统时间,包括年、月、日、时、分、秒st.wYear,st.wMonth,页脚内容- 10 -st.wDay,st.wHour,st.wMinute,st.wSecond);SetWindowText(hwnd,time); //setwindowText函数:系统里的函数preSt = st; // 更新完毕后记录前一次的状态return 0;case WM_KEYDOWN:case WM_CHAR:DestroyWindow(hwnd); // 关闭窗口return 0;case WM_PAINT: //窗口绘制消息hdc = BeginPaint(hwnd,&ps); //开始绘制setISOTROPIC(hdc,cxClient,cyClient);drawClock(hdc);drawHands(hdc,&preSt,TRUE);页脚内容- 11 -EndPaint(hwnd,&ps); //结束绘制return 0;case WM_DESTROY: //程序退出消息PostQuitMessage(0);return 0;}returnDefWindowProc(hwnd,message,wParam,lParam);//其他消息有系统默认处理}第五章课程设计的运行结果5.1 C语言课程设计的运行结果页脚内容- 12 -第六章课程设计的结果分析6.1 C语言课程设计的结果分析页脚内容- 13 -运行结果分析问题一:程序清单中某个符号添加错误,导致编译时出现错误,执行不出结果。
c课程设计时钟
c 课程设计时钟一、教学目标本课程的教学目标是让学生掌握时钟的基本概念、结构和功能,能够理解和运用时钟的相关知识。
具体分为以下三个维度:1.知识目标:学生能够说出时钟的基本组成部分,如时针、分针、秒针等,以及它们的运行原理;了解不同类型的时钟,如机械时钟、电子时钟等;掌握时钟的基本功能,如显示时间、设置闹钟等。
2.技能目标:学生能够正确读取和设置时钟;通过实际操作,学会修理和维护时钟;能够运用时钟知识解决实际问题,如判断时间、安排日程等。
3.情感态度价值观目标:培养学生对时钟技术的兴趣和好奇心,激发他们探索时钟奥秘的欲望;培养学生珍惜时间、合理安排生活的良好习惯;培养学生爱护时钟、珍惜物品的价值观。
二、教学内容本课程的教学内容主要包括以下几个部分:1.时钟的基本概念:介绍时钟的定义、发展历程和各类时钟的特点。
2.时钟的结构与原理:讲解时钟的各个组成部分,如齿轮、发条、摆轮等,以及它们的运行原理。
3.时钟的功能与应用:介绍时钟的各种功能,如时间显示、闹钟、计时等,以及时钟在生活中的应用。
4.时钟的维修与保养:教授如何修理和维护时钟,以及如何进行日常保养。
5.时钟与生活:探讨时钟在生活中的重要性,以及如何合理安排时间、提高生活质量。
三、教学方法为了提高教学效果,本课程将采用以下几种教学方法:1.讲授法:教师通过讲解时钟的基本概念、结构和功能,使学生掌握相关知识。
2.讨论法:教师引导学生探讨时钟在生活中的应用,培养学生珍惜时间、合理安排生活的意识。
3.案例分析法:教师通过分析具体的时钟维修案例,使学生掌握维修技巧和方法。
4.实验法:学生动手操作,进行时钟的组装、维修和保养,提高学生的实践能力。
四、教学资源为了支持教学内容和教学方法的实施,我们将准备以下教学资源:1.教材:选择内容丰富、结构清晰的时钟教材,为学生提供系统的学习资料。
2.参考书:提供相关的参考书籍,拓展学生的知识视野。
3.多媒体资料:制作精美的PPT、视频等多媒体资料,提高学生的学习兴趣。
C课程设计模拟时钟转动程序
高级语言程序设计设计题目:模拟时钟转动程序目录源程序 (3)题目与要求 (9)功能设计说明 (10)详细设计分析 (11)主函数分析 (12)时间输出 (13)小结 (14)源程序:#include"graphics.h"#include"math.h"#include"dos.h"#define pi 3.1415926#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300 #define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240 #define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) void init(){int i,l,x1,x2,y1,y2;setbkcolor(3);circle(300,240,200);circle(300,240,205);circle(300,240,100);circle(300,240,2);for(i=0;i<60;i++){if(i%5==0)l=15;elsel=5;x1=200*sin(i*6*pi/180)+300;y1=200*cos(i*6*pi/180)+240;x2=(200-l)*sin(i*6*pi/180)+300;y2=(200-l)*cos(i*6*pi/180)+240;line(x1,y1,x2,y2);}}main(){int x,y,i,k=1;int gdriver=9,gmode=2;unsigned char h,m,s;float n;struct time t[1];struct date d[1];initgraph(&gdriver,&gmode,"c:\\win-tc");initgraph(&gdriver,&gmode,"c:\\win-tc");for(i=0;i<=6;i++){settextstyle(TRIPLEX_FONT,HORIZ_DIR,i);cleardevice();settextjustify(1,1);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");}init();setwritemode(1);if(k!=0){gettime(t);h=t[0].ti_hour;m=t[0].ti_min;s=t[0].ti_sec;}setcolor(9);n=(float)h+(float)m/60;d(140,n,30);setcolor(14);d(160,m,6);setcolor(4);d(180,s,6);while(!kbhit()){while(t[0].ti_sec==s)gettime(t);gotoxy(44,18);printf("\b\b\b\b\b\b\b\b\b"); delay(70);delay(30);setcolor(4);d(180,s,6);s=t[0].ti_sec;d(180,s,6);if(t[0].ti_min!=m){setcolor(14);d(160,m,6);m=t[0].ti_min;d(160,m,6);}if(t[0].ti_hour!=h){setcolor(7);d(140,h,30);h=t[0].ti_hour;d(140,h,30);delay(240);delay(140);delay(240);}if(s<10){ if(m<10)printf("%u:0%u:0%u",h,m,s);elseprintf("%u:%u:0%u",h,m,s);}else{ if(m<10)printf("%u:0%u:%u",h,m,s);elseprintf("%u:%u:%u",h,m,s);}printf("\b\b\b\b\b\b\b\b\b");}getch();closegraph();}1、题目与要求1、1设计任务:能模拟机械钟表行走,还要准确地利用数字显示日期和时间,在屏幕上显示一个活动时钟,按任意键时程序退出。
【图形时钟c语言vc6.0】c语言,,,,,图形模拟时钟
【图形时钟c语言vc6.0】c语言,,,,,图形模拟时钟《图形时钟语言语言,,,,,图形模拟时钟》是一篇好的范文,好的范文应该跟大家分享,希望对网友有用。
语言图形模拟时钟-学年第二学期《高级语言程序设计》课程设计报告题目:图形模拟时钟专业:计算机科学与技术班级:级()班姓名:王欣指导教师:陈广宏成绩:计算机学院年月日目录设计内容及要求设计要求程序结构流程图概要设计概要分析数据结构设计(:百度)用法说明实验结果要求设计结果与分析实验结果实验结果与分析小结致谢文献源代码设计内容及要求设计要求模拟机械钟表行走;要准确地利用数字显示日期和时间;在屏幕上显示一个活动时钟;程序界面设计合理,色彩得体大方,显示正确;各指针运动规律正确;数字式时钟的时间显示与指针式时钟显示一致;按任意键时程序退出。
在屏幕上显示一个图形时钟(用程序绘制一个班于时钟样式相似即可),时间与系统时间一致,且要随着时间的走到准确的走动。
程序结构流程图图:总程序流程图:指针转动流程图概要设计概要分析()函数(,,){=;;();(,,);(,,);}范文作用:画表盘(为表盘的半径,,为圆心的坐标。
)()函数(,,,,){,;=+*();=-*();();(,,,);}作用:画指针:直线起点的横坐标:直线起点的纵坐标:直线终点的横坐标:直线终点的纵坐标()()函数①:=,;;类型和最高分辨率_,_,_;(&,&,"");下页语言图形模拟时钟---配适器---显示模式②:();背景色③:(!()){(,,);函数(转载于:百度)(&);得到当前系统时间(,);定位输出位置④:(()_)是程序的编写。
由于该程序所涉及的信息内容比较广泛,所以程序的编写也有些复杂。
程序的编写是一项困难的任务,完成此程序必须运用书中的大部分知识,而且要有清晰的思路和较强的语言组织能力。
)是程序的检查和系统的调用。
当程序运行后,显示出一个时钟。
C语言时钟图形输出系统设计报告
大红鹰学院信息工程学院课程设计报告项目名称:时钟图形输出项目组长:王树康项目成员:何洁,昇琳班级名称:10信管4专业名称:信息管理与信息系统完成时间: 2011年6月24日信息工程学院制一、案例描述1.、总体描述制作一个简单的钟面图形,方便我们看时间。
时间与系统时间相一致,并且时针,分针,秒针会根据时间的变化而移动。
2、模块描述1)钟面模块:钟面是圆形的,用一个for循环在圆侧画上均匀的时间刻度,在3点,6点,9点,12 点的刻度位置各有一个小长方形,使钟面更加方便看时间。
2)时间模块:从电脑上获取时间后,与保存的时间数据作对比,如果不一样就画一条与底色相同的直线将该直线覆盖,再根据当前时间转化成时钟,分钟,秒钟,的移动来显示时间。
3)动画模块:用任意变换各种颜色的圆圈,增加界面的美感。
二、界面设计模拟家庭钟表,利用时针,分针,秒针进行时间显示。
本软件界面友好,打开后便运行,看时间很方便,一目了然,也很人性化的显示出数字时间。
三、模块化设计方案1、系统主要函数及功能1)drawclock函数:功能为绘制时钟图形绘制时钟圆盘,及时间刻度,方便使用者观看。
2)showtime函数:功能为显示时间通过时针,分针,秒针的移动来显示时间。
还有显示数字化的时钟,在整点时会报时提示。
3)flash函数:显示动画增加界面的美观度。
2、主函数调用各功能函数流程图四、算法设计1,显示时间在电脑上获取时间后,时,分,秒分别利用弧度转化成win-tc能识别的信息,再通过时钟,分钟,秒钟的移动来显示时间。
2.时钟设计钟盘为圆形,钟盘有12条均匀的时间刻度,其中在12点,3点,6点,9点的地方分别有一个小方格为,为看时间提供方便。
拓展功能介绍1)秒钟每走一秒都会发出声音,用sound(2000)和nosound()来实现,使得每走一秒都会停顿下声音。
2)整点报时,当秒针和分针都指向0时,发出蜂鸣声提示。
3)在钟盘上能同时显示数字化的时钟。
用vc时钟课课程设计
用vc时钟课课程设计一、教学目标本节课的教学目标是让 students to understand the basic concept ofvc时钟, learn how to read and writevc时钟 code, and master the use of basic data types, control structures, and input/output functions. In addition, the students should be able to usevc时钟 to create a simple clock program that can display the current time.二、教学内容本节课的教学内容主要包括以下几个部分:1.vc时钟的基本概念和环境搭建2.基本数据类型的使用和运算符3.控制结构:条件语句和循环语句4.输入/输出函数的使用5.创建一个简单的时钟程序三、教学方法为了达到本节课的教学目标,我将采用以下几种教学方法:1.讲授法:通过讲解vc时钟的基本概念和使用方法,让学生了解和掌握vc时钟的基本知识。
2.案例分析法:通过分析一个简单的时钟程序案例,让学生了解如何使用vc时钟创建一个时钟程序。
3.实验法:让学生动手实践,通过编写代码和调试程序来巩固所学的知识。
四、教学资源为了支持本节课的教学内容和教学方法的实施,我将准备以下教学资源:1.教材:vc时钟编程入门2.参考书:vc时钟编程进阶3.多媒体资料:讲解vc时钟的视频教程4.实验设备:计算机和vc时钟编程环境五、教学评估本节课的评估方式将包括以下几个方面:1.平时表现:通过学生在课堂上的参与程度、提问回答、团队合作等表现来评估学生的学习情况。
2.作业:布置相关的编程练习题,要求学生在规定时间内完成,通过作业的完成情况来评估学生的掌握程度。
3.考试:在课程结束后,安排一次考试来评估学生对vc时钟知识的掌握情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高级语言程序设计》课程设计报告题目:图形模拟时钟专业:计算机科学与技术班级:计算机科学与技术2班姓名:学号:指导教师:陈广宏成绩:计算机与信息工程系2014年6月20日目录1 设计内容及要求 (1)1.1 设计内容 (1)1.2 设计目的及意义 (1)2 概要设计 (1)2.1功能简介 (1)2.2功能说明: (1)2.3 总体程序框图 (2)3 设计过程 (3)3.1各个模块程序流程图 (3)3.2运行界面及关键代码 (4)4设计结果与分析 (6)4.1设计结果 (6)4.2分析 (6)5 总结 (7)6 参考文献 (7)附程序清单及源程序 (8)1 设计内容及要求1.1 设计内容通过编程最终使电脑屏幕显示模拟时钟,并正常运行显示表针时间,电脑上呈现一个图种的模型表示电脑上的时间,并可以模拟时钟走动。
1.2 设计目的及意义设计目的及意义:熟悉Visual c++ 6.0软件的应用,C语言相关函数,语句的学习,查找资料代码等,编程、调试、运行、效果显示调整,完成上传,熟悉编程语言,了解程序运行以及图像显示等C语言的应用,通过编程实现既定功能。
培养自学能力,独立思考能力,将理论形成实际运用,同时可以掌握下列运算符的使用:1 .数据类型(整形、实型、字符型、指针、数组、结构等)。
2 .运算类型(算术运算、逻辑运算、自增自减运算、赋值运算等)。
3 .程序结构(顺序结构、判断选择结构、循环结构)5 .复杂任务功能分解方法(自顶向下逐步求精、模块化设计、信息隐藏等)。
6 .学会编制结构清晰、风格良好、数据结构适当的C语言程序。
2 概要设计2.1功能简介实现功能如下:(1)在屏幕上最终显示一个图形时钟(用程序绘制一个与时钟样式相似即可),能模拟机械钟表行走。
(2)数字式显示时间与指针式显示时间一致,且各指针运动规律正确。
(3)能准确的利用数字显示时间和日期。
(4)按ESC可以退出程序。
2.2功能说明:内容:指针式时钟模块完成在屏幕上显示一个活动时钟,模拟机械钟表行走,时针,分针,秒针不同颜色且顺时针旋转,获取系统时间;数字式时钟模块完成显示时间格式年月日时分秒,小时为24小时制,分和秒为60进制与指针式的时钟显示时间同步并获取系统时间。
说明:指针顺时针旋转;指针式的时钟表盘为圆形;圆周上分布均匀的12个刻度;有3个长度不同的指针,即时针,分针,秒针的运动具有规律性;数字钟显示时间格式年月日时分秒,小时为24进制,分和秒为60进制;指针式的时钟与数字式的时钟显示时间同步;其主要的设计思想如下:1 . 确定秒针的走时,将圆分成60份每过一秒,秒重要转过1/60个园,即一等份。
2 . 确定分针真的走时,将圆分成60份每过一分,分针要转过1/60个圆,即一等份分针自己走过的再加秒针的,才是此四分钟的位置。
3 . 时钟走动与系统时间联系:每过一秒画出秒针,并且除去前一秒的秒针,分针和秒针一样,画线函数与时间联系使用变量。
4 . 设置横纵坐标及表针:X =a*cos(b*pi/180)+300;Y=a*sin(b*pi/180)+240;2.3 总体程序框图(系统模块图)首先,先画出个钟的大致轮廓。
从输出数字到画出外轮廓,到标出短线到画出时针、分针、秒针。
这个轮廓就已经完成了。
然后,为了更加这个钟的实用性。
就通过获取系统时间来结合实际意义,这是最简单,最好的方法。
从应用上,它显示的是实际的时间,增强了可用性;从编程上,不用再复杂地再编一个更时间一样的函数来,减少程序的篇幅、复杂性和编程者的工作量。
接着顺带利用时间的变量名来画时针,分针,秒针。
最后,为了让时针,分针,秒针让观察者看起来是连续的变化,即形象地模拟真实的机械钟表那样运动。
3 设计过程3.1各个模块程序流程图Start初始化图形系统设置窗体的背景色、前景色及画笔画出主体框架的边直线、边角弧线画出时钟的框架、标题及时分秒的刻度;绘制数字式时钟下的数字时钟调用时钟处理程序获取当前时间并显示调用消息处理函数刷新窗口显示(1秒)创建数字钟字对数字钟进行输判断修改是增加还是减少Esc(任意键)调出digitalClockEnd3.2运行界面及关键代码3.2.1运行结果在桌面显示一个模拟的时钟,时钟的秒针、分针与时针随着时间的推移而不断移动就像我们经常看见的圆形电子时钟一样。
我们可以通过程序随意改动时钟的背景颜色以及指针的颜色和表盘大小等问题,同时还能在桌面显示一些简单的英文以及图案等。
3.2.2关键代码分析及说明(1)本系统中主要的数据结构就是time结构体struct time{unsigned char m;/*分钟*/unsigned char h/*小时*/unsigned char s/*秒*/}time结构体定义在dos.h文件中,可用来保存系统的当前时间,其中各字段的值的含义如下。
·unsigned char m:保存分钟值。
·unsigned char h:保存小时值。
·unsigned char s:保存秒数。
(2)全局变量下面对程序用到的全局变量及数组进行说明。
·int h,m,s:此3个全局变量分别用来保存小时、分钟、秒数。
·int x,x1,x2,y,y1,y2:保存数字时钟中小时、分、秒在屏幕中显示的坐标值。
·struct time t[1]:定义一个time结构类型的数组,此数组只有t[0]一个元素。
(3)程序流程系统的执行应从运行开始,显示界面正常运行,直到用户选择退出系统为止。
(4)流程图功能描述①画圆模板:#inlude “graphics.h”#inlude ”math.h ”Void init()Circle(300,240,200);②画时间刻线模块:For(i=0;i<=60;i++){If(i%5==0)L=15;elseL=5;X1=200*sin()+300;Y1=200*cos()+240;}③时间模块:Gettime(d)4设计结果与分析4.1设计结果运行程序后在屏幕上显示出一时钟,钟上的时间与电脑上的时间完全一样,并且在秒针运行的同时伴随声音如同下图一样的图案:4.2分析在桌面会显示一个模拟的时钟,时钟的秒针、分针与时针随着时间的推移而不断移动就像我们经常看见的圆形电子时钟一样。
我们可以通过程序随意改动时钟的背景颜色以及指针的颜色和表盘大小等问题,同时还能在桌面显示一些简单的英文以及图案等。
因为是程序控制时钟的,所以起始时间是通过程序控制的,要想改动还是需要通过改变程序获得,并不是随系统时间而确定起始时间的。
5 总结通过本次的课程设计,我深刻的体会到了C语言的强大。
虽然本次的课程设计对我来说有一定的难度,但是在朋友的帮助下我还是很好地完成了(自我感觉)。
从而也认识到了程序的内涵,使我对编程产生了很大的兴趣。
其实编程很好玩的,在编程中不但可以完成一些现实中从在的东西,还可以制作出很多意想不到东西。
还有对于此次课程设计让我深刻的认识到自己学得的远远还太少,需要我们自发的去学习知识才可以成长的更快!其次,对于此次设计我得坦诚一件事,那就是我一开始选的TC程序,运行的时候总是要我输入参数,由于自己的知识局限,总是敲不出结果,所以我又去百度文库搜了一个vc程序,虽然最终使运行出来了,可是这次事件让我认识自身知识的不足,所以,这次过后会更加认真的学习一些书面没有的知识,充实自己。
6 参考文献《C语言程序设计》(第二版)[M].北京:清华大学出版社谭浩强 1999 《数据结构》(C语言版)[M].北京:清华大学出版社严魏敏,吴伟民 1997 《C语言程序设计》[M]. 黄明等.大连理工大学出版社,2005《C语言课程设计案例精编》. 郭翠英 . 中国水利水电出版 . 2004年3月《C语言程序设计教程》曾春平,朱小谷,晏海华.北京希望电子出版社 . 2005年3月《C语言课程设计案例精编》清华大学出版社﹒姜灵芝、余健﹒ 2008.1《C语言程序设计》西安电子科技大学出版社﹒田祥宏主编﹒2007.12附程序清单及源程序(1)TC2.0上的源程序#include"graphics.h"#include"math.h"#include"dos.h"#define pi 3.1415926#define X(a,b,c) x=a*cos(b*c*pi/180-pi/2)+300#define Y(a,b,c) y=a*sin(b*c*pi/180-pi/2)+240#define d(a,b,c) X(a,b,c);Y(a,b,c);line(300,240,x,y) void init() /*划时钟边框函数*/{int i,l,x1,x2,y1,y2;setbkcolor(1);circle(300,240,200);circle(300,240,205);circle(300,240,5);for(i=0;i<60;i++) /*划钟点上的短线*/{if(i%5==0)l=15;elsel=5;x1=200*sin(i*6*pi/180)+300;y1=200*cos(i*6*pi/180)+240;x2=(200-l)*sin(i*6*pi/180)+300;y2=(200-l)*cos(i*6*pi/180)+240;line(x1,y1,x2,y2);}}main(){int x,y,i,k=1;int gdriver=9,gmode=2;unsigned char h,m,s;int o,p,q;float n;struct time t[1];struct date d[1];initgraph(&gdriver,&gmode,"c:\\tc");initgraph(&gdriver,&gmode,"c:\\tc");for(i=0;i<=6;i++){settextstyle(TRIPLEX_FONT,HORIZ_DIR,i); /*控制输出字符的字体,方向,大小*/cleardevice();settextjustify(1,1); /*在指定坐标上输出字符串*/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");}init();setwritemode(1); /*设置画线的输出模式*/if(k!=0){getdate(d); /*获得系统日期函数*/o=d[0].da_year;p=d[0].da_mon;q=d[0].da_day;gettime(t); /*获得系统时间函数*/h=t[0].ti_hour;m=t[0].ti_min;s=t[0].ti_sec;}setcolor(7); /*设置时针颜色*/n=(float)h+(float)m/60;d(150,n,30); /*画出时针*/setcolor(14); /*设置分针颜色*/d(170,m,6); /*画出分针*/setcolor(4); /*设置秒针颜色*/d(190,s,6); /*画出秒针*/while(!kbhit()) /*控制程序按下任意键退出*/{while(t[0].ti_sec==s)gettime(t);gotoxy(44,18); /*使光标移动到指定坐标*/printf("\b\b\b\b\b\b\b\b\b"); /*退格,使表示时间的字符串不断变化*/ sound(400); /*按给定的频率打开PC扬声器*/delay(70); /*中断程序的执行,时间为70毫秒*/sound(200);delay(30);nosound(); /*按给定的频率关闭PC扬声器*/ setcolor(4);d(190,s,6);s=t[0].ti_sec;d(190,s,6);if(t[0].ti_min!=m){setcolor(14);d(170,m,6);m=t[0].ti_min;d(170,m,6);}if(t[0].ti_hour!=h){setcolor(7);d(150,h,30);h=t[0].ti_hour;d(150,h,30);sound(1000);delay(240);nosound();delay(140);sound(2000);delay(240);nosound();}if(s<10) /*用字符的形式输出时间*/{ if(m<10)printf("%u:0%u:0%u",h,m,s);elseprintf("%u:%u:0%u",h,m,s);}else{ if(m<10)printf("%u:0%u:%u",h,m,s);elseprintf("%u:%u:%u",h,m,s);}gotoxy(34,19); /*在指定坐标上输出日期*/printf("%d年%d月%d日",o,p,q);printf("\b\b\b\b\b\b\b\b\b");}getch();closegraph();}(2)visual c++ 6.0上运行的源程序#define _CRT_SECURE_NO_WARNINGS#include <windows.h>#include <math.h>#include <time.h>#pragma comment(lib, "user32.lib")#pragma comment(lib, "gdi32.lib")#pragma comment(linker, "/SUBSYSTEM:Windows")void GetPos(double degree, int len, int* x, int* y){*x = len * sin(degree);*y = len * cos(degree);}void DrawClock(HWND hw, HDC h, int hour, int minute, int second) {HDC bufdc = CreateCompatibleDC(h);HBITMAP buf = CreateCompatibleBitmap(bufdc, 200, 200);RECT cr;HBRUSH bBg = CreateSolidBrush(RGB(255, 255, 255));GetClientRect(hw, &cr);SelectObject(bufdc, bBg);SelectObject(bufdc, buf);FillRect(bufdc, &cr, bBg);{int sx, sy, ex, ey;int i;for(i = 0; i < 12; ++i) {GetPos(2*3.14159/12*i, 85, &sx, &sy);GetPos(2*3.14159/12*i, 95, &ex, &ey);MoveToEx(bufdc, 100+sx, 100-sy, 0);LineTo(bufdc, 100+ex, 100-ey);}}{int hx, hy, mx, my, sx, sy;GetPos(2*3.14159 / 24 * (hour + (double)minute / 60 + (double)second / 3600), 50, &hx, &hy);GetPos(2*3.14159 / 60 * (minute + (double)second / 60), 65, &mx, &my);GetPos(2*3.14159 / 60 * second, 80, &sx, &sy);MoveToEx(bufdc, 100, 100, NULL);LineTo(bufdc, 100+hx, 100-hy);MoveToEx(bufdc, 100, 100, NULL);LineTo(bufdc, 100+mx, 100-my);MoveToEx(bufdc, 100, 100, NULL);LineTo(bufdc, 100+sx, 100-sy);}BitBlt(h, 0, 0, 200, 200, bufdc, 0, 0, SRCCOPY);DeleteDC(bufdc);DeleteObject(bBg);DeleteObject(buf);}LRESULT CALLBACK WndProc(HWND h, UINT m, WPARAM w, LPARAM l){switch(m) {case WM_CREATE:SetTimer(h, 1, 1000, 0);return 0;case WM_ERASEBKGND:return 1;case WM_TIMER:InvalidateRect(h, 0, FALSE);return 0;case WM_PAINT: {PAINTSTRUCT ps;HDC dc = BeginPaint(h, &ps);{time_t t;struct tm* pst;time(&t);pst = localtime(&t);DrawClock(h, dc, pst->tm_hour, pst->tm_min, pst->tm_sec);}EndPaint(h, &ps);return 0;}case WM_DESTROY:KillTimer(h, 1);PostQuitMessage(0);return 0;default:return DefWindowProc(h, m, w, l);}}int APIENTRY WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmd, INT nShow){WNDCLASS wc;ZeroMemory(&wc, sizeof(wc));wc.style = CS_HREDRAW | CS_VREDRAW;wc.lpfnWndProc = WndProc;wc.hInstance = hInst;wc.hbrBackground = (HBRUSH) COLOR_WINDOW;wc.lpszClassName = TEXT("MYCLOCK");if (RegisterClass(&wc) != 0) {MSG m;HWND hw = CreateWindow(TEXT("MYCLOCK"), TEXT("Clock"), WS_OVERLAPPEDWINDOW,CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, CW_USEDEFAULT, NULL, NULL, hInst, 0);if (hw != NULL) {RECT r;GetWindowRect(hw, &r);r.right = r.left + 200;r.bottom = r.top + 200;AdjustWindowRect(&r, WS_OVERLAPPEDWINDOW, FALSE);MoveWindow(hw, r.left, r.top, r.right - r.left, r.bottom - r.top, FALSE);ShowWindow(hw, SW_SHOWNORMAL);UpdateWindow(hw);while( GetMessage(&m, 0, 0, 0) > 0) {TranslateMessage(&m);DispatchMessage(&m);}return 0; }return 1;} elsereturn 1;}。