电子表课程设计

来源:互联网 发布:c语言有趣小程序代码 编辑:程序博客网 时间:2024/05/01 18:48

课 程 设 计 说 明 书

 

 

 

课程名称:      高级语言程序设计     

设计题目:        电子表设计          

院    部:  计算机科学与信息工程学院  

学生姓名:               

学    号:              

专业班级:      计科信息15-1          

指导教师:                  

 

 

 

 2016年 6月

 

 

 

课 程 设 计 任 务 书

设计题目

电子表设计

学生姓名


所在院部

计算机科学与信息工程学院

专业、班级

计科信息15-1

设计要求:

完成一个电子表系统的设计。

具体要求如下:

  1. 用电子表形式显示当前系统时间。

2. 根据用户操作,实时设置当前电子表的显示时间。

3. 友好的操作帮助。

4. 系统退出。

学生应完成的工作:

1. 学生应认真学习参考程序,理解每个文件、每个函数以及各个变量的作用和意义。在此基础上进一步改进程序,最后正确地运行程序。

2. 对程序进行测试,设计详细的测试计划,然后根据测试计划设计测试用例,对程序进行测试。测试时应注意对各种边缘情况进行测试。

3. 完成课程设计报告。

参考文献:

1. 梁旭等 C程序设计课程设计  电子工业出版社 2011

2. 谭浩强  C程序设计(第四版) 清华大学出版社2010

工作计划:

1. 小组审题,查阅资料,进行设计前的必要资料准备(3天)。

    2. 把程序完整运行出来(4天)。

    3. 增加改进程序(3天)。

    4. 写课程设计报告(3天)。

    5. 提交课程设计报告及答辩(1天)

任务下达日期:2016  年 6  月   6 日     

任务完成日期:2016  年 6  月  17 日

 

指导教师(签名):              学生(签名):

目   录

 

前言..............................................................................................4

需求分析.......................................................................................4

概要设计.......................................................................................5

详细设计..............................................................................................5

改进或增加功能模块说明.............................................................9

程序测试.......................................................................................9

课程设计总结..............................................................................10

  .......................................................................................10

参考文献.....................................................................................10

源程序.........................................................................................10

 

 

 

 

 

 

 

 

 

 

 

电子表设计

一 前言

   电子表是以数字的形式显示时间,并能准确的自动的显示时间的变化。计算机上面的电子既可以显示当前系统时间,又可以认为设定时间。其中时间包括小时、分钟、秒。

二 需求分析

1要求

(1)用C语言实现程序设计;

(2)定义各个函数分别完成不同功能,如获取系统时间,自定义时间等;

(3)画出查询模块的流程图;

(4)系统的各个功能用函数调用的形式实现;

(5)界面友好(良好的人机互交),程序要有注释。

2 任务

(1)定义各类头文件,变量;

(2)设定实用这操作模块;

(3)画出部分模块的流程图;

(4)编写代码;

(5)程序分析与调试。

3运行环境

(1)windows7系统

(2)C与C++程序设计学习与实验系统

4开发工具

C语言

 

 

 

 

 

 

三 概要设计

    整个程序分为主要有三个功能模块组成,即获取系统时间,将获取到的系统时间按小时、分钟、秒分开存储,自定义时间并正常计时。功能模块图如下:

                         3-1功能模块图

四 详细设计

   在程序的开头定义要用的头文件,以及全局变量。如存放小时、分钟、秒的字符型数组。代码如下:

 

 

 

 

 

 

 

 

 

 

 

主函数mian()中声明三个函数即获取系统时间,将系统时间各部分分开,自定义时间。并用一个循环体连续调用三个函数实现显示系统时间与自定义界面的切换,代码如下:

 

 

 

 

 

 

 

 

 

 

 

 

获取系统时间函数模块式通过time获取时间函数sleep延时函数和system("cls")清屏函数相结合实现的。在一个循环中先用time函数获取系统时间,再用sleep函数延时一秒,最后用system("cls")刷新屏幕,同时用全局变量c控制循环的结束,而c的值有线程hThread1控制。代码如下:

    将系统时间分开并存储的函数模块。一直time函数获取到的系统时间是以字符串的形式出现的并且格式为:小时:分:秒例如( 18 25 54 )。将分开的时间信息分别存放到全局字符型数组中,一遍之后利用。代码如下:

 

 

自定义时间函数模块。将定义的时间按顺序存对应存放在全局字符型数组中,接着进入一个由全局变量c的值控制的循环从秒开始自加同时用if语句的嵌套来实现进位,这样就可以从秒一次有序的进位到年。同时用printf输出函数sleep延迟函数和system("cls")清屏函数来实现没一秒的时间变化。部分主要代码如下:

 

 

 

五 改进或增加功能模块说明

为了随时都能通过按键切换功能,在此引入了多线程来改变以上程序中两大循环的循环条件。在此线程中可以同过输入改变全局变量c的值,从而来决定void xi(struct tm *tblock);函数和void fen(char str[100]);函数中循环的始终。代码如下:

六 程序测试

1运行程序,首先进入的是显示系统时间的界面,界面中既显示的有系统时间,又显示有操作提示文字。界面如图6-1:

6-1系统时间显示界面

2根据提示按2键进入自定义时间界面。界面如图6-2:

6-2自定义界面

3输入自定义时间信息后程序重新开始计时,界面如图6-3

6-3输入自定义时间信息后界面

4根据提示按1键再次进入显示系统时间界面,界面如图6-4:

6-4再次进入系统时间界面

5多次运行程序输入不同的时间信息程序均无错误出现,测试边缘数据如输入(23点59分55秒)过四秒,便回归到0点0分0秒继续计时。如此输入边缘情况测试,程序没有出现错误。(由于此为动态过程无法附图)

七 课程设计总结

在这次课程设计中,通过查资料,上网搜问题我学到了不少新知识。比如认识了新的头文件#include <conio.h> #include <iostream.h>  #include<windows.h> #include<dos.h> #include <time.h>。也掌握了好几个新的有用的库函数的实用例如sleep延时函数和system("cls");清屏函数,了解到了一些多线程的知识,可谓是收获颇多。自己动手,自己发现和解决问题。发现了自己的许多不足。平时没有掌握好的知识在这次实验中都用到了,经过不断思考,不断查阅资料,上网搜索和上机运行,解决了大部分问题,当然还存在一些问题没有解决。在以后的学习提升能够解决好它们。

八 致   谢   

经过两个多星期的努力,终于把本电子表程序改写出来,在这期间要感谢各同学对我帮助和支持,同时也感谢程序老师对我的教导。

九 参考文献

[1]. 梁旭等 C程序设计课程设计 电子工业出版社 2011

[2]. 谭浩强 C程序设计(第四版) 清华大学出版社2010

十 源程序

#include<time.h>      //包含time等获取系统时间的函数

#include<stdio.h>     //标准输入输出函数

#include<dos.h>       //包含延时函数sleep

#include<string.h>     //包含strlenstrcmpstrcpy等函数

#include<windows.h>    //sleep函数准备

#include<iostream.h>  //为多线程准备

#include<conio.h>     //为调用刷屏函数system("cls")准备

DWORDWINAPI GetChar(LPVOID lpParameter);  //多线程的声明

char c=-1,d=-1;

char hour[2],min[2],sec[2];

int main()

{

      void xi(struct tm *tblock);   //显示系统时间的函数模块

   void fen(char str[100]);       //将系统时间各部分分别存放的函数模块

   void shu();//自定义函数模块

 

   time_t timer;

   struct tm*tblock;

      charstr[100];

   timer=time(NULL);

   tblock=localtime(&timer);   //通过time函数获取系统时间

      strcpy(str,asctime(tblock)); //将获取的系统时间复制给数组str     

   for(;;)             

   {

      xi(tblock);

      shu();

   }

   return 0;

}

void fen(charstr[100])

{

      int i,h=0,m=0,s=0;

   for(i=0;str[i]!=' '&&str[i]!=':';i++)

   {

          hour[h]=str[i];

         h++;

      }

   for(i=i+1;str[i]!=' '&&str[i]!=':';i++)

   {

          min[m]=str[i];

         m++;

      }

   for(i=i+1;str[i]!='\0';i++)

   {

          sec[s]=str[i];

         s++;

      }

   hour[h]='\0';

   min[m]='\0';

   sec[s]='\0';

}

void shu()

{

      HANDLE hThread1;//创建线程

   hThread1=CreateThread(NULL,0,GetChar,NULL,0,NULL);

   printf("请输入设定时间:(格式例如18 25 54)\n");     

   printf("小时分钟\n");

   scanf("%s%s%s",&hour,&min,&sec);

   for(;;)

      {

             if(c=='1')

       {

           system("cls");

           break;

       }

         sec[1]++;

       if(sec[1]==':')

         {

               sec[1]='0';

             sec[0]++;

             if(sec[0]=='6')

             {

                   sec[0]='0';

                  min[1]++;

                  if(min[1]==':')

                  {

                         min[1]='0';

                      min[0]++;

                      if(min[0]=='6')

                      {

                             min[0]='0';

                         hour[1]++;

                         if(hour[0]<'2'&&hour[1]==':')

                         {

                                hour[1]='0';

                             hour[0]++;

                         }

                         elseif(hour[0]=='2'&&hour[1]=='4')

                         {

                                hour[0]='0';

                             hour[1]='0';

                         }

                      }

                  }

             }

         }

       _sleep(1000);

         system("cls");

       printf("自定义时间为:%s:%s:%s\n\n",hour,min,sec);

       printf("需要获取系统时间请按1\n");

       }

}

void xi(struct tm*tblock)

{

      HANDLE hThread1;

   hThread1=CreateThread(NULL,0,GetChar,NULL,0,NULL);

   for(;;)

   {

          if(c=='2')

       {

              system("cls");

           break;

       }

         time_t timer;

         timer=time(NULL);

       tblock=localtime(&timer);

         printf("系统时间为:%s\n",asctime(tblock));

         printf("需要自定义时间请按2\n"

         _sleep(1000);

       system("cls");

   }

}

DWORDWINAPI GetChar(LPVOID lpParameter)

{

   while(1)

   c=getch();

}

 

原创粉丝点击