用c语言写成电脑计时小程序

开头

光速完成博客,因为最近忙到爆,一直没写博客,所以来写一篇凑凑数。
~
这是我之前刚学c语言时,写的一个小的电脑小程序,就是用c,所以没有任何的面向对象,也没有类。不过想法感觉很有意思。
~
光速完成,最近太忙,打比赛,做答辩QAQ
~

介绍

~
是一个大一时候写的用于计时的小软件,极为的小,只能拿来看看,并没有过大的实用价值的exe.
主要用于记录,你的电脑时间,然后记下来,存在txt文档中。

背景

~
现当代程序员,用电脑总是过量使用,以及熬夜,所以,写了这么一个框框程序。一个框框,显示你的电脑使用时间,并记录下来。
~
首先,平台运行在codeblocks上:
~
在这里插入图片描述
vs系列可能很难运行c语言的程序,因为c的很多函数不安全,容易溢出。
所以建议在codebocks或者vc 6.0上运行。

各模块功能介绍

首先将代码生成exe,代码就在最下面。

在这里插入图片描述
当然。icon图标并不自带,请自己去改~
~
然后记得在D盘加入一个“计时器数据.txt”.由于是大一写成的,所以存储数据用了很奇怪的方式,就是存在文本文件中。现在学了链表,数据库等明显就不一样了。
~
在这里插入图片描述
~
然后点击exe,生成计时框:
在这里插入图片描述
点击窗口会暂停,因为当时自学了c语言,唯一的暂停方式就是点一下就能停住,再键盘按一下就继续,然后保存呢就是把鼠标移到左上角然后就保存了:
在这里插入图片描述
看,就是当x=0,y=0时就暂停并保存,存进d盘的文本文件。x和y你会发现,鼠标移动,x,y会跟着变,x,y是鼠标在屏幕的位置。
~
为什么用这么复杂的方法呢?是因为我当时不知道怎么将函数内的while()循环弄停,所以,就调用了windows.h中的鼠标事件,来随时检测鼠标的位置。通过特定的位置来控制函数的暂停和保存:
在这里插入图片描述
~
但是,到了现在,发现,我刚刚还在练习c#.我直接加个按钮(button)不就什么都解决了吗?然而当时没有那么多知识。果然知识学多了,做东西会方便很多,确信。
~
然后去D盘看看保存的文件:
在这里插入图片描述
这样每天可以查看电脑使用时间.最重要的是这个:
但电脑运行时间每达到40分钟就会提醒你活动一下,然后也可以让电脑响一声,提醒语句10分钟就会消失,每过40分钟就会提醒一次。鼓励程序员多去运动QAQ~~
(过于贴心.jpg)

在这里插入图片描述
然后还有就是,窗体颜色会随着时间的增加,主要是小时的增加,会渐渐加深,也是起提醒作用,不要用电脑用的太晚:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
每小时有不同的提示语。
ps:要是觉得开启的过程太复杂建议在代码中把多余的话删除QAQ。
~
就是这么一回事,代码比较简单,由于主要是dos窗口型的,放在现在看就是几十年前的小东西,现在UI界面甚至都有点小落伍。主要做个纪念,用c语言,即使没有面向对象和类也能做出让人觉得有意思,乃至能玩一玩的小程序。
~
下次要把他做成C#的那种UI界面的,能用到数据库更好。这是算黑历史喽~~
~
记得一点点进步。

程序代码

代码很简单,但都用了一些基本c语言知识:

#include<stdlib.h>
#include<stdio.h>
#include<windows.h>
#include<conio.h>
#include<string.h>
#include<time.h>
enum Color   //这就是枚举法,即enum的应用
{
      black, blue, green, lakeBlue, red, purple, yellow, white, gray,
      lightBlue, lightGreen, lightSimpleGreen, lightRed, lightPurple, lightYellow, brightWhite
};    //定义颜色为整数,还有待了解。


void setColor(unsigned short textColor=0, unsigned short backColor=7)
{
	char command[9]="color 07";		//默认颜色
	command[6]='0'+backColor;		//将backColor变量改为字符型
	command[7]='0'+textColor;		//将textColor变量改为字符型
	system(command);				//调用系统函数
}

int main()
{

int a1 ;

    FILE*fp;   //文件指针

    time_t timep;
    struct tm*p;

system("mode con cols=100 lines=30");


    printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t  for our health.Let's fight!!\n");
	Sleep(1200);

	system("cls");

	Sleep(1200);

	printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t  Thanks for using fight.soft\n");

	Sleep(800);

	system("cls");

	Sleep(800);

    printf("\n\n\n\n\n\n\n\n\n\n\n\n\t写在一切程序运行之前,亲爱的用户,计算机和人一样充满魅力,计算机闪烁着智慧的光芒,但是\n");
    Sleep(1000);
    printf("\n\n\t亲爱的用户,一切对计算机的探索请注意时间,祝您的探索都能有所得,也祝您身体健康,心想事成.\n");

    Sleep(2000);
    system("cls");


    printf("\n\n\n\n\n\n\n\n\n\n\n\t\t\t\t  按ENTER键开始计时");
    printf("\n\n\t\t\t\t版本号(0.0.3.5)个人版\n\n");
    printf("  (使用说明):本程序仍在测试中.点击计时程序中的暂停字样可使计时暂停,再按任意键会继续。若想保存");
    printf("数据,请将鼠标移动至屏幕左上角,即x=0,y=0时,当天数据会自动保存至,D盘'计时器数据1.txt'文件.");
    printf("如果不小心触碰到屏幕左上角,请按继续,之后可以继续计时,请在数据库中删除错误信息.");
    printf("软件可检测您的当天电脑使用时间并记录,期待更多功能.");


      getchar();//输入enter继续。

    system("mode con cols=30 lines=10");//运行到此处,改变控制台窗口大小.


       int a=0,b=0,c=9;int min=0,fmin=0;//输入主要数据变量

      while(a>=0)
      {
      while(a<=59)
        {
        while(b<=59)
        {
         Sleep(1000);                                          //暂停函数,WIN系统下为大写S,必须包含windows.h头文件
         system("cls");
         printf("Fight:以下是您今天电脑使用时长:\n\n         %d时%d分%d秒\n\n",c,a,b);  //输出计时,  (时,分,秒)
         printf("1.点击任意处暂停(按任意键继续)\n");
         printf("2.将鼠标移至屏幕左上角可保存\n");
          switch(c)   // a:分钟   b:秒数   c:小时
             {
            case 0: a1 = 7; break;   //当计时器的小时数发生变化时,color()中的数据改变,
            case 1: a1 = 8;printf("新的探索充斥着希望\n");break;     //进而使命令框的背景颜色随之改变。
            case 2: a1 = 3; break;
            case 3: a1 = 9;printf("休息一会吧\n"); break;
            case 4: a1 = 2; break;      //a1的值可在color()中对应颜色
            case 5: a1 = 1;printf("身体是革命的本钱\n");break;
            case 6: a1 = 6;printf("偶尔要放松一下\n"); break;
            case 7: a1 = 6;printf("注意使用时长\n"); break;
           default: a1 = 4;printf("多活动一下吧\n"); break;
             }
             setColor(0,a1);    //经过改装的函数,整数a1变化则背景颜色变化.



        min=a+60*c;//判断有多少分钟
        fmin = min%40;
        if(fmin>=0&&min>=40&&fmin<10)//每过40分钟,提醒运动10分钟.
        printf("已经坐了40分钟了,快运动10分钟叭!!");


    POINT q={0,0};//point光标指针
    LPPOINT s=&q;
    GetCursorPos(s);//获取当前位置
    printf("x=%d,y=%d",s->x,s->y);//打印出鼠标在屏幕上的位置
    switch(s->x + s->y)//POINT为指针,要对其坐标进行操作,请输入s->y等,其为一个整体
    {
    case 0:
    printf("  保存中,");
    system("pause");//让系统暂停再记录


    fp = fopen("D:/计时器数据.txt","a+");
                      //往D盘的文件写入数据!!!!!
    time(&timep);
    p = gmtime(&timep);

    fprintf(fp,"%d",p->tm_year+1900);
    fputs(".",fp);
    fprintf(fp,"%d",p->tm_mon+1);//获取月份
    fputs(".",fp);
    fprintf(fp,"%d",p->tm_mday);//天数
    fputs(" 截至",fp);
    fprintf(fp,"%d",p->tm_hour+8);//小时
    fputs("时",fp);
    fprintf(fp,"%d",p->tm_min+0);
    fputs("分  .电脑共使用:",fp);
    fprintf(fp,"%d",c);
    fputs("小时",fp);
    fprintf(fp,"%d",a);
    fputs("分钟",fp);
    fprintf(fp,"%d",b);
    fputs("秒\n",fp);


    fclose(fp);//关闭文件
     if(fp==NULL)
        printf("\n\n\t数据存储失败\n");
     else
        printf("\n\n\t数据保存成功\n");

         break;//以上都是switch 中 case(0)的情况。
    }




          b=b+1;//秒数在延时一秒之后会加一,用来模仿秒钟进行

        }
       a=a+1;  //分钟数加1.
       b=0;    //秒数会在运行到60秒时清零。
     }
     c=c+1;
     a=0;
     }

}

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

F1gh4

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值