修正后的“模拟windows 日期/时间 的C程序

2016-02-19 15:55 5 1 收藏

下面这个修正后的“模拟windows 日期/时间 的C程序教程由图老师小编精心推荐选出,过程简单易学超容易上手,喜欢就要赶紧get起来哦!

【 tulaoshi.com - 编程语言 】

上次传的那个我传完之后才发现是我先前没做好的版本,漏洞百出。这次上传的的是我修正后的版本。主要修正了万年历的诸多错误!还有连按按键屏幕出错的问题。还有时针的错误。反正是错误百出!!嘻嘻嘻,不好意思:)本人在此声明:此程序为本人原创,由于是本人的课设作业,如有北工大的同学,请勿抄袭,发表此程序完全为了交流经验,互相学习、探讨之用。如有问题可以给我发邮件,谢谢。
  非常希望大家给我能提出宝贵意见。 #includegraphics.h
   #includestdio.h
   #includemath.h
   #includedos.h
   #define PI 3.1415926
   #define UP 0x4800
   #define DOWN 0x5000
   #define ESC 0x11b
   #define TAB 0xf09
   clock();
   date(int,int);
   int digitsec(double s)/*digital clock second*/
   {int i;
    for(i=0;i=59;i++) if(s==i) return i;
    }
   int digithour(double h)/*digital clock hour*/
   {int i;
    for(i=0;i=23;i++) if(h==i) return i;
    }
   int digitmin(double m)/*digital clock minute*/
   {int i;
    for(i=0;i=59;i++) if(m==i) return i;
    }
   digitclock(int x,int y,int clock)/*整个digital clock*/
   {char buffer1[10];
    setfillstyle(0,2);
    bar(x,y,x+15,328);
    if(clock==60) clock=0;
    sprintf(buffer1,"%d",clock);
    outtextxy(x,y,buffer1);
    }
   cursor(int count)    /*画一个光标函数*/
   {switch(count)
    {case 1:line(156,108,156,118);break;
     case 2:line(280,108,280,118);break;
     case 3:line(424,315,424,325);break;
     case 4:line(465,315,465,325);break;
     case 5:line(505,315,505,325);break;
     }
    }
   clear(int count)    /*清除光标函数*/
   {switch(count)
    {case 2:line(156,108,156,118);break;
     case 3:line(280,108,280,118);break;
     case 4:line(424,315,424,325);break;
     case 5:line(465,315,465,325);break;
     case 1:line(505,315,505,325);break;
     }
    }
   int key(int,int);
   int dateupchange(int);
   int datedownchange(int);
   int timeupchange(int);
   int timedownchange(int);
   double h,m,s;
   double x,x1,x2,y,y1,y2;
   char buffer[80];
   strUCt time t[1];
   struct date da[1];
   main()
   {int driver, mode=0,i,j;
    int year,mon;
    char *month[]={"SUN","MON","TUE","WEN","THU","FRI","SAT"};
    driver=DETECT;
    initgraph(&driver, &mode, "");
    setlinestyle(0,0,3);
    setbkcolor(0);
  
   setcolor(7);
    line(82,430,558,430);
    line(70,62,70,418);
    line(82,50,558,50);
    line(570,62,570,418);
    line(70,62,570,62);
    line(76,56,297,56);
    line(340,56,564,56);  /*画主体框架*/
    setlinestyle(0,0,3);
    arc(82,62,90,180,12);
    setlinestyle(0,0,3);
    arc(558,62,0,90,12);
    setlinestyle(0,0,3);
    arc(82,418,180,279,12);
    setlinestyle(0,0,3);
    arc(558,418,270,360,12);   /*画边角*/
    setcolor(15);
    outtextxy(300,53,"CLOCK"); /*总标题*/
    setcolor(7);
    rectangle(80,72,332,360);  /*月历的框架*/
    rectangle(342,72,560,360); /*时钟的框架*/
    for(j=78;j=84;j+=6)
    line(80,j,332,j);
    setwritemode(1);
    line(190,78,225,78);
    setwritemode(0);
    setcolor(15);
    outtextxy(193,75,"DATE");
    setcolor(7);
    rectangle(90,106,160,120);
    outtextxy(163,110,"(M)");  /*打印月份标题*/
    rectangle(190,106,290,120);
    outtextxy(293,110,"(Y)");  /*打印年标题*/
    for(i=0,j=90;i7;i++,j+=35)
    outtextxy(j,145,month[i]);/*打印周一至周日*/
    rectangle(88,140,323,330);
    line(88,158,323,158);/*月份的框架*/
    for(j=78;j=84;j+=6)
    line(342,j,560,j);
    setwritemode(1);
    line(431,78,465,78);
    setwritemode(0);
    setcolor(15);
    outtextxy(433,75,"TIME");/*时钟的标题*/
    setcolor(7);
    line(392,310,510,310);
    line(392,330,510,330);
    arc(392,320,90,270,10);
    arc(510,320,270,90,10);
    for(i=431;i=470;i+=39)
    for(j=317;j=324;j+=7){
     setlinestyle(0,0,3);
     circle(i,j,1);
     }                  /*DIG99vAL CLOCK*/
    setcolor(15);
    line(156,108,156,118);     /*在运行起始先画一个光标*/
    for(i=0,m=0,h=0;i=11;i++,h++){                                   /*hour points*/
       x=100*sin((h*60+m)/360*PI)+451;
       y=200-100*cos((h*60+m)/360*PI);
       setlinestyle(0,0,3);
       circle(x,y,1);
       }
    for(i=0,m=0;i=59;m++,i++){                                       /*minute points*/
  
         x=100*sin(m/30*PI)+451;
          y=200-100*cos(m/30*PI);
          setlinestyle(0,0,1);
          circle(x,y,1);
          }
    setcolor(9);
    outtextxy(83,380,"COLLEGE OF COMPUTER SCIENCE BEIJING UNIVERS99vY OF TECHNOLOGY");
    outtextxy(400,400,"DESIGNED BY flowers");
    outtextxy(500,410,"2003.6");
    setcolor(15);
    outtextxy(81,380,"COLLEGE OF COMPUTER SCIENCE BEIJING UNIVERS99vY OF TECHNOLOGY");
    outtextxy(398,400,"DESIGNED BY flowers");
    outtextxy(498,410,"2003.6");
    outtextxy(81,410,"Control:TAB,UP,DOWN,ESC");
    getdate(da);
    mon=da[0].da_mon;
    year=da[0].da_year;
    date(year,mon);
    clock();
    closegraph();
    return 0;
    }
   clock(){
    int k=0,count;
    setcolor(15);
    gettime(t);
    h=t[0].ti_hour;
    m=t[0].ti_min;
    x=50*sin((h*60+m)/360*PI)+451;
    y=200-50*cos((h*60+m)/360*PI);
    line(451,200,x,y);
    x1=80*sin(m/30*PI)+451;
    y1=200-80*cos(m/30*PI);
    line(451,200,x1,y1);
    digitclock(408,318,digithour(h));
    digitclock(446,318,digitmin(m));
    setwritemode(1);
    for(count=2;k!=ESC;){                            /*second hand*/
      setcolor(12);
      soun

来源:http://www.tulaoshi.com/n/20160219/1610718.html

延伸阅读
ChUCk Allison 是盐湖城圣 Latter Day 教堂总部下耶稣教堂家族历史研究处的软件体系设计师。他拥有数学学士和数学硕士学位。他从1975年起开始编程,从1984年起他开始从事c语言的教学和开发。他目前的爱好是面向对象的技术及其教育。他是X3J16,ANSI C ++标准化委员会的一员。 大部分的操作系统有办法得到当前的日期和时间。通过定义在t...
学习c++有一段时间了,前两天有个朋友要我帮她做个模拟ATM自动取款机的程序,于是花了一个晚上写了出来,其实这个程序也很简单,但是我觉得它对于刚学c++的人来说比较有用处,因为它可以帮助你更加深刻的理解面向对象程序设计的真谛-------以现实世界为模型编写程序。 !-- frame contents -- !-- /frame contents -- 学习c++的真正...
Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文件。最后,你可以用所学知识编写自己的 Windows 服务。 当初我写第一个NT 服务时,...
WINDOWS应用程序是靠消息驱动的,在VC中我们通过CLASSWIZARD可以为某窗口类添加消息处理函数,CLASSWIZARD将为你添加消息映射,对于WINDOWS消息,生成的消息处理函数重载了基类的虚拟方法。而在C#中如何处理消息呢?本文针对VS.NET BETA1环境下的C#简单地介绍WINDOWS消息以及自定义消息的处理方法。 示例代码下载 17K 一、生成一个名为MSGAppl...
信使服务是Windows 2000/XP下面的一种通信服务,通过它我们可以在网上象QQ一样进行实时的交流,但和QQ不同的是信使服务不需要拥有一个号码,它只要知道对方的IP地址--如果在局域网中,只要知道对方的计算机名就可以了。我们可以利用"net send"在命令行下面发送消息,也可以通过"控制面板-管理工具-计算机管理"中的"操作"菜单里面的"所有任...

经验教程

916

收藏

91
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部