计时器和倒计时器的设计与实现

摘 要
时间的观念在现在的时代越来越重要,考试要定时完成,炒菜做饭要计时完成,甚至连煮包泡面都要计时才能更加美味。制作计时器对我们越来越重要。

本计时器中的倒计时使用的for函数输出把时间用00:00:00这种格式输出,使用Sleep来让整个程序暂停一秒,来完成计时一秒的功能,然后用/r覆盖掉上一行输出一秒后的剩余倒计时,在倒计时变为00:00:00时,输出时间到并用/a响铃。计时器采用类似的计时方法,不一样的是这次使用system(“cls”)清屏,然后重新输出下一次时间,用函数kbhit确定是否有键盘敲击,如果有将其录入,当这个值和所确定的停止值相同时,将退出for函数,停止计时,并输出时间。

本程序的编写环境是VC++6.0,目前此程序实现了计时器和倒计时器的功能。每次只能执行一个功能。
关键词: vc6.0,C语言,函数,计时器,倒计时器。

1 引言

1.1关于工程实践

在我看来,整个工程实践中是让我们了解程序设计的整个流程,以及怎么实现这项功能,如何利用所学的c语言知识,来完成一个属于自己的小程序,小软件,在其中遇到的问题将其总结,最后将成为很好的学习笔记。

1.2 课题背景

经过一个学期的C语言课程学习,我们已经掌握了基本的C语言编程,而如何使用这些编程知识,让其变得有用十分重要。于是我们想到了开发一个计时倒计时的小程序。

在人们生活中,时间是很重要的一种东西。无论什么都离不开时间。倒计时和计时更是如此。通过倒计时计算考试时间,计算煮饭煮菜的时间,通过计时计算跑步时间,计算做题讲课的时间。时间观念对我们来说越来越重要,制作计时器对我们也越来越重要,所以让我们来看看如何制作一个计时装置,即一个计时器和一个倒计时器。

2 需求分析

2.1程序目标

完成一个简单的计时器和倒计时器,要求实现最基本的计时和倒计时程序,当用户打开程序后通过提示输入数字1 2 3进行三种操作。

(1)输入数字1进行倒计时操作,通过输入00:00:00这种格式的时间倒计时,在时间到的时候提示“时间到!”,同时响铃。
(2)输入数字2进行计时器操作,通过提示进入计时程序,并通过按Esc键停止计时,并输出计时时间。

2.2 开发环境及工具

2.2.1 运行环境

Windows10
也可以在一台内存大于800k内存的位系统电脑运行。

2.2.2 编程软件介绍

Microsoft Visual C++60.:调用系统文件#include <stdio.h>实现输入输出、#include <stdlib.h>使用退出exit函数、#include <time.h>读取系统时间通过结构体time_t实现、#include <Windows.h>

3 系统总体结构设计

3.1 基本简介

本程序分为四个模块,除了程序的main函数以外,分别分为面板,计时和倒计时三部分。其中面板模块就是呈现给用户的主界面,计时模块负责实现记录在给定时间之间的时间长度,以及开始计时和结束计时的输入输出,而倒计时则是专门负责在倒计时的时间录入和时间到时的提示以及响铃。
下面是程序流程图:

3.2 系统功能模块及设计

3.2.1 数据结构设计

主体程序中设计除了选择以外,输出“输入错误”的程序后可以重新输入选择。

3.2.2 面板模式介绍

进入程序后,输出:

“计时器&&倒计时器
本程序是由网络空间安全学院学生工程实践研发
==== 计时方式 ====
1. 倒计时器
2. 计时器
请输入你选择的代号:”

几行字样。

通过用户输入1 或 2来控制进入计时器还是倒计时器,如果用户不小心输入错误将提示“不好意思选错咯~”并在此进行选择,面板模块只是起到将其他模块链接起来的作用,在后期需要追加更多功能时也可以由面板模块连接。

3.2.3 倒计时器模块介绍

倒计时器将承担输入时间并进行倒计时的功能,用户将在此模块界面直接输入格式为“00:01:09”的时间进行倒计时,输入正确时间正确,将输出“倒计时开始!”,当时间变成“00:00:00”时,输出“时间到!”并响铃,之后按任意键退出程序。

3.2.4 计时器模块介绍

计时器将承担计算从用户输入开始标记到用户输入结束标记之间的时间的功能,用“计时时长为:00:00:05”的格式输出所计的时间。

4 系统详细设计与实现

4.1界面模块设计与实现

作为最简单的计时和倒计时程序,使用vc6.0的默认程序窗口。

4.2 模块设计与实现

4.2.1主体模块设计与实现

在主体之前定义其他模块的函数。通过while函数实现如果输入错误那么便接受用户的重新输入选择,通过switch函数选择进入计时器功能的函数还是倒计时器功能的函数。作为main函数,在之后追加函数或修改时更加容易。

4.2.2 面板模块设计与实现

进入程序后,由面板模块的函数通过printf函数输出边界图形字符以及欢迎界面,并介绍该程序选择方法(输入数字1 or 2)具体如下图。提示用户进行输入,之后通过while函数和switch函数进行选择。(while函数用于当输入错误时可以重新输入)

4.2.3 倒计时器模块的设计与实现

倒计时器的代码在面部模式的函数中,通过printf输出提示输入倒计时时间(格式:00:01:08),当输入正确后,输出“倒计时开始”并输出“00:01:08”格式一秒一秒减少的时间,当时间变为“00:00:00”时,响铃并输出“时间到!”三字。

4.2.4 计时器模块设计与实现

模块分为两部分,一部分在主体函数里通过输入选择计时模式开始计时,然后进入计时器函数,用Sleep和system(”cls”)和while循环通过(00:00:00)格式下秒数分钟数,进行计时,通过函数kbhit、if、getch停止计时跳出循环,完成计时。

5 系统测试与分析

5.1 测试

根据电脑所给的提示出现语法错误,缺少变量的定义大多的语法错误在通过书本或网络的参考下能够修改。主要是平时看书不仔细、不太注意而产生的。如没有注意具体数据使用。

5.2 调试过程中遇到的主要问题

if,while,switch三个循环中容易缺少括号,进行修改后括号更加容易出错。这直接导致在vc中编译时出现很多错误。
time_t结构体出现在#include <time.h>头文件里。
<conio.h>头文件用来 kbhit getch
<Windows.h>头文件用来 sleep

结论

经过了四个星期的c语言程序设计终于在老师的细心指导和同学的热情帮助下基本完成了计时器和倒计时器的设计修改任务。
程序设计期间,学习到很多课堂上没有的知识,还积累了很多实践经验,增强了动手能力和解决实际问题的能力。我通过网上查找到很多成功的关于计时器倒计时器的程序,通过对那些已经成功的程序进行分析找到自己的设计思路,制定设计流程。通过对网现存的计时器倒计时器的比对,我发现我自己做的程序显得十分简陋,但是这个程序也是我通过完整的设计流程设计出的程序。
限于作者知识水平和经验有限,此程序还有许多有待完善和改正的地方,恳请各位老师和读者批评指正。

参考文献

[1] 黄明等.21世纪进阶辅导 C语言程序设计.大连理工大学出版社,2005
[2] 马靖善等.C语言程序设计.清华大学出版社,2005

附录:

程序下载:

程序下载地址(exe)

代码

#include <stdio.h>#include <stdlib.h>#include <time.h>#include<conio.h>//kbhit getch#include <Windows.h>//用于sleepint daojishi();int jishiqi();int main ()
{  int c;printf("╔╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╠     计时器&&倒计时器     ╣\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n");printf("本程序是由网络空间安全学院学生工程实践研发\n");printf("====计时方式====\n");  printf("1. 倒计时器\n");  printf("2. 计时器\n");  printf("请输入你选择的代号:");  scanf("%d", &c);  while(c!=1&&c!=2){printf("不好意思选错咯~\n");printf("====计时方式====\n");  printf("1. 倒计时器\n");  printf("2. 计时器\n"); printf("请输入你选择的代号:");scanf("%d", &c);}switch(c)  {  case 1: daojishi();break;case 2: jishiqi();break; }return 0;  }int daojishi(){int i,j,k;int hour=0,min=0,sec=0;printf("请输入倒计时时间(例如:01:26:30):");scanf("%d:%d:%d", &hour, &min, &sec);if(hour>24 || hour<0 || min>60 || min<0 || sec>60 || sec<0){printf("输入有误!\n");return 0;}   printf("倒计时开始!\n");for(i=hour; i>=0; i--){for(j=min; j>=0; j--){for(k=sec; k>=0; k--){printf("\r%02d:%02d:%02d", i, j, k);Sleep(1000);}sec = 59;}    min = 59;}printf("\a\n时间到!\n");//倒计时结束后响铃exit(0);}int jishiqi()
{int hour = 0, min = 0, sec = 0,n;    while (n!=32){if(kbhit()){//键盘敲击 检查当前是否有键盘输入,如果有则赋值给nn=getch();while(n==32){exit(0);    }}Sleep(1000);//暂停1s        system("cls");//清屏printf("╔╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╦╗\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╠     计时器&&倒计时器     ╣\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╠                          ╣\n");printf("╚╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╩╝\n");printf("本程序是由网络空间安全学院学生工程实践研发\n");printf("====计时方式====\n");  printf("1. 倒计时器");printf("\n");printf("2. 计时器");  printf("\n");printf("请输入你选择的代号:2");printf("\n");printf("按空格停止计时");printf("\n");sec++;      if (sec == 60){            min++;            sec = 0;       }        if (min == 60){            hour++;            min = 0;        }        if (hour == 24){            hour = 0;        }        printf("%02d:%02d:%02d\n", hour, min, sec); //%02d输出长度为2,不足2前面补0    if(kbhit()){//键盘敲击 检查当前是否有键盘输入,如果有则赋值给nn=getch();while(n==32){exit(0); }}}return 0;
}

自己制作一个计时器、倒计时器相关推荐

  1. python 倒计时_Excel制作竞答倒计时器

    微信号: Excel-Python 微信名: 实用办公编程技能 前几天,单位搞年庆,中间有一个环节是有奖竞答,当时会务组长让我来负责控制竞答计时,当时我就自己用Excel做了一个竞答倒计时器. 那么, ...

  2. 用Python制作一个简易的计时器

    前言 今天又带来个小玩意 - 用Python制作一个简易的计时器 这个其实也能自定义一些东西的 就比如名字 颜色啥的 自己看着改就行 有想法的朋友也能自己再写写改改出其他的小功能 效果展示 实现代码 ...

  3. 用java制作的简易倒计时器(主要可用于考试系统中考试剩余时间显示)

    import java.awt.BorderLayout; import java.awt.Font; import java.text.SimpleDateFormat; import java.u ...

  4. js倒计时天时分秒php,JS制作分秒倒计时器

    这篇文章主要介绍了JavaScript分秒倒计时器实现方法,可实现按照毫秒倒计时的效果,具有一定参考借鉴价值,需要的朋友可以参考下 本文实例讲述了JavaScript分秒倒计时器实现方法.分享给大家供 ...

  5. JAVA 制作给定时间倒计时器

    Java 制作给定时间的倒计时器 首先创建倒计时器类 public class NSTimer {private int hh; //小时private int mm; //分钟private int ...

  6. javascript毫秒计时器_JavaScript分秒倒计时器实现方法

    本文实例讲述了JavaScript分秒倒计时器实现方法.分享给大家供大家参考.具体分析如下: 一.基本目标 在JavaScript设计一个分秒倒计时器,一旦时间完成使按钮变成不可点击状态 具体效果如下 ...

  7. STC8H8K系列汇编和C51实战——秒倒计时器(可自行设定初值)(51版)

    秒倒计时器(可自行设定初值)(51版) 一.题目 二.代码 总结 系列文章--STC8H8K系列汇编51实战 一.题目 在实验箱上利用单片机定时器/计数器(工作于中断方式)设计一个秒倒计时器,用数码管 ...

  8. STC8H8K系列汇编和C51实战——秒倒计时器(51版)

    秒倒计时器(51版) 一.题目 二.代码 总结 系列文章--STC8H8K系列汇编51实战 一.题目 在实验箱上利用单片机定时器/计数器(工作于中断方式)设计一个秒倒计时器,用数码管显示秒数,从100 ...

  9. ppt倒计时器制作方法

    有很多使用PPT的人都想自己的PPT文件能有个倒计时器: 第一:可以在百度上搜索一下ppt倒计时器,很多相应的软件,这里就不多说了,下面介绍怎么在PPT里制作PPT倒计时器! 第二:自己在PPT中应用 ...

  10. JavaScript制作页面倒计时器

    制作页面倒计时器,选定一个未来时间,得到几天几时几分几秒的倒计时. 在这里选择使用两个时间相差的毫秒数来计算相对应的天数.小时数.分钟数和秒数.为了使代码看起来简洁,进行了封装函数. 1.setInt ...

最新文章

  1. CentOS 编译 openjdk
  2. POJ-1122 FDNY to the Rescue!---Dijkstra+反向建图
  3. 《Linux From Scratch》第三部分:构建LFS系统 第六章:安装基本的系统软件- 6.12. File-5.22...
  4. 网站用户修改密码源码(邮箱版)
  5. python 程序运行计时 动态,在python中运行计时器几分钟
  6. 关于一个跨域的小问题
  7. vue ---- 组件
  8. docker搭建私有registry
  9. 网络协议分析(Network Protocol Analysis)之点到链路控制协议LCP
  10. redis linux工具安装,linux 安装redis缓存工具
  11. mysql中主键数据类型_MySQL系列-详解mysql数据类型
  12. QTreeWidget样式qss
  13. pcsx2运行ps1_PS2模拟器PSX2设置及使用教程.doc
  14. 如何下载redhat enterprise版本
  15. 代理服务器CCProxy基本设置
  16. 55、nginx rewrite
  17. Excel单元格插入图片,并自适应宽高——保姆级教程
  18. 简述存储器的分级策略
  19. ubuntu插件配置
  20. To the Greatness of Small

热门文章

  1. 算法竞赛资料整理分享
  2. 为你的企业建立竞争情报系统
  3. 记一次springboot应用偶发502错误的排查过程
  4. android自动签约续费功能,微信代扣 Android 开发流程
  5. 如何在POWER BI中翻转90度显示标题?
  6. POJ 1265 Area (皮克公式+多边形面积)
  7. 张宇高数 第二讲 一元函数微分学(思维导图)
  8. 优麒麟使用教程第三期:Windows 平台 U 盘启动盘制作(建议收藏)
  9. 使用 乐吾乐topology 遇到的问题解决方法汇总
  10. Mac没有winnt格式_Mac磁盘到底要不要分区?