C语言课设倒计时.docx
- 文档编号:8701229
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:12
- 大小:59.43KB
C语言课设倒计时.docx
《C语言课设倒计时.docx》由会员分享,可在线阅读,更多相关《C语言课设倒计时.docx(12页珍藏版)》请在冰豆网上搜索。
C语言课设倒计时
C课程设计(论文)任务书
信息学 院 专 业 班
一、课程设计(论文)题目:
倒计时
二、课程设计(论文)工作自2014年01月06日起至2014年01月12日止
三、课程设计(论文)地点:
8-705
四、课程设计(论文)内容要求:
1.本课程设计的目的
(1)进一步巩固和加深对“C程序设计”课程基本知识的理解和掌握,了解C语言在项目开发中的应用。
(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。
(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发能力,同时提倡创新精神。
2.课程设计的任务及要求
(1)基本要求:
1)输入考试时间。
2)输入今天时间
3)调用函数计算该年天数
4)计算秒差,计算分差,计算时差
5)计算考试倒计时
6)输出倒计时
(2)创新要求
写程序实现算法和画程序流程图。
(3)课程设计论文编写要求
课程设计报告的撰写要求表述简明,图表准确。
报告按如下内容和顺序用A4纸进行打印并装订成册。
(1)封面:
采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。
(2)设计任务书
(3)评阅书
(4)目录
(5)正文
(6)主要参考文献
(4)课程设计评分标准
(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;
(2)能正确回答老师所提问题,可增加10分;
(3)课程设计报告书写规范整齐,可增加10分;
(4)心得体会认真总结,可增加10分;
(5)程序有创新性,可增加10分;
成绩评定实行优秀、良好、中等、及格和不及格五个等级。
不及格者需重做。
(5)课程设计进度安排
(1)准备阶段(6学时):
选择设计题目、了解设计目的要求、查阅相关资料。
(2)程序模块设计分析阶段(8学时):
程序总体设计、详细设计。
(3)代码编写调试阶段(10学时):
程序模块代码编写、调试、测试。
(4)撰写论文阶段(6学时):
总结课程设计任务和设计内容,撰写课程设计论文。
学生签名:
2013年1月6日
课程设计(论文)评审意见
(1)态度评价(20分):
优( )、良( )、中( )、一般( )、差( );
(2)任务难度(20分):
优( )、良( )、中( )、一般( )、差( );
(3)设计分析(20分):
优( )、良( )、中( )、一般( )、差( );
(4)创新性评价(20分):
优( )、良( )、中( )、一般( )、差( );
(5)回答问题(20分):
优( )、良( )、中( )、一般( )、差( );
(6)论文格式规范性及考勤是否降等级:
是( )、否( )
评阅人:
职称:
副教授
2013年1月12日
目 录
第1章系统概要
求两段时间的时间差
基本思路是通过循环对当前时间进行1秒1秒的叠加,统计叠加的秒,直到当前时间与考试时间相等,停止循环,并把统计的秒换算成天、时、分、秒的组合并输出。
最后程序使用者还可以选择是否对输出的时间进行倒数。
设计中可能要考虑的问题:
1.闰年非闰年的处理
2.大小月的处理
3.数据输入错误的处理
4.时间换算的处理
5.如何对最后的时间进行倒数
6.如何在输入出错后重新循环
第2章设计思路与算法
关键算法
(1)判断时间是否正确
用if条件句进行判断,当输入的时间年月日时分秒都在各自的范围之内时,则正确,否则错误。
(2)计算两段时间的时间差
用到for循环if条件句,对当前时间进行+1秒,然后判断秒数是否达到60,达到则分钟进1,依此类推,如果加到月数,利用闰年判断函数和大小月的天数标准进行月数的判断,最后得出两端时间之间的总秒数,循环停止。
接下来利用求余和整除把总秒数换算成天、时、分、秒的格式,接着输出。
(3)对输出时间进行倒数
用到for循环if条件句,先把输出的时间换算成时分秒的格式,接着从小时开始判断,如果小时为0,判断分钟是否为0,如果分钟为0,再判断秒是否为0,秒为0则倒数结束,如果秒数不为0,对秒数减一,如果分钟不为0,再判断秒钟是否为0,如果秒钟为0,则分钟减一,否则秒钟减一,依此类推,每循环一次睡眠一秒,然后调用库函数清屏重新显示时分秒,就这样知直到倒数完,程序结束。
第3章源程序代码
#include
#include
voidprint_time(inthour,intmin,intsec)//用于倒数时的输出
{
printf("%2d",hour);printf(":
");
printf("%2d",min);printf(":
");
printf("%2d",sec);
}
intfunc(inty);//函数声明,计算是否闰年
intmain()
{
inty,m,d,h,f,s,x;//考试时间
intyy,mm,dd,hh,ff,ss;//当前时间
longi;//秒合
inta,b,c;
printf("请输入您的考试时间(yyyy/mm/dd/hh/ff/ss):
\n");
for(;;)
{
scanf("%d%d%d%d%d%d",&y,&m,&d,&h,&f,&s);
if(y>0)//检查输入的考试时间是否正确
if(
((m==1||m==3||m==5||m==7||m==8||m==10||m==12)&&(d<=31&&d>=1))
||((m==4||m==6||m==9||m==11)&&(d<=30&&d>=1))
||((m==2&&func(y)==1)&&(d<=29&&d>=1))
||((m==2&&func(y)==0)&&(d<=28&&d>=1))
)
if((h>=0&&h<24)||(f>=0&&f<=59)||(s>=0&&s<=59))
{printf("\n");break;}
else
{
printf("您输入的时间存在错误,请重新输入:
\n");
continue;
}
else
{
printf("您输入的时间存在错误,请重新输入:
\n");
continue;
}
else
{
printf("您输入的时间存在错误,请重新输入:
\n");
continue;
}
}
for(;;)//检查今天的时间是否正确
{
printf("请输入今天的时间(yyyy/mm/dd/hh/ff/ss):
\n");
scanf("%d%d%d%d%d%d",&yy,&mm,&dd,&hh,&ff,&ss);
if(yy>0)
if(((mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12)&&(dd<=31&&dd>=1))
||((mm==4||mm==6||mm==9||mm==11)&&(dd<=30&&dd>=1))
||((mm==2&&func(yy)==true)&&(dd<=29&&dd>=1))
||((mm==2&&func(yy)==false)&&(dd<=28&&dd>=1)))
if((hh>=0&&hh<24)||(ff>=0&&ff<=59)||(ss>=0&&ss<=59))
{
printf("\n");break;
}
else
{
printf("您输入的时间存在错误,请重新输入:
\n");
continue;
}
else
{
printf("您输入的时间存在错误,请重新输入:
\n");
continue;
}
else
{
printf("您输入的时间存在错误,请重新输入:
\n");
continue;
}
}
for(i=0;;i++)//对总秒数进行累加
{
if(y==yy&&m==mm&&d==dd&&h==hh&&f==ff&&s==ss)break;
ss++;
if(ss>59)
{
ss=0;
ff++;
if(ff>59)
{
ff=0;
hh++;
if(hh>23)
{
hh=0;
dd++;
intflag=0;
if((mm==1||mm==3||mm==5||mm==7||mm==8||mm==10||mm==12)&&(dd>31))flag=1;
if((mm==4||mm==6||mm==9||mm==11)&&(dd>30))flag=1;
if((mm==2&&func(yy)==1)&&(dd>29))flag=1;
if((mm==2&&func(yy)==0)&&(dd>28))flag=1;
if(flag)
{
dd=1;
mm++;
if(mm>12)
{
mm=1;yy++;
}
}
}
}
}
}
a=(i-i%86400)/86400;//1天有86400秒
i-=a*86400;
b=(i-i%3600)/3600;
i-=b*3600;
c=(i-i%60)/60;
i-=c*60;
printf("距离考试还有:
%d天%d小时%d分%d秒\n",a,b,c,i);//计算结束
b+=a*24;
printf("若开始倒计时,请按1,不倒请按0\n");
scanf("%d",&x);
if(x==1)
{
while
(1)
{
system("cls");//清屏,重新显示以下时间
print_time(b,c,i);//输出时间
if(b==0)
{
if(c==0)
if(i==0)
break;
else
i--;
else
{
if(i==0)
{
c--;i=59;
}elsei--;
}
}
else//当hour不等于0时
if(c==0)
if(i==0)
{
b--;c=59;i=59;
}
else
i--;
else
if(i==0)
{
b--;i=59;
}
elsei--;
Sleep(1000);//频率为1秒,函数滞留一秒
}
}else
printf("\n**********谢谢使用***********\n");
printf("\n**********谢谢使用***********\n");
return0;
}
intfunc(inty)
{
if((y%4==0&&y%100!
=0)||y%400==0)return1;
else
return0;
}
第四章运行结果及分析
图4-1
图4-2
图4-3
选择倒数的过程要过一段时间,所以倒数结束时并不是真正的考试开始,此程序不能循环倒计时,也是一个缺陷。
第五章心得体会
本学期的第一次课设让我对C语言理解得更加深入,为了做好课设,我把重要的知识点都复习了一遍,对顺序结构、选择结构、循环结构理解得更加透彻,但是毕竟没经验,所以一开始还是有点手忙脚乱,最后捋清楚头绪,在草稿纸上写出了大概的过程,心中有了点底,然后就敢开始写代码。
把大体框架打出来后,我开始思考核心代码,也就是怎么计算两段时间的时间差,最后想到用累加秒数算出总秒数、换算出时间的方法,期间我又被闰年非闰年和大小月的问题所困扰,都是硬着头皮解决了,在解决了闰年非闰年和大小月的问题后,我对顺序结构、选择结构、循环结构的复合利用有了更深的了解,也让我大体熟悉了课程设计的设计。
从大的方面来看,这次课设培养了我综合所学知识,发现,提出,分析,和解决问题的能力,特别是锻炼了我的分析解决问题的能力,也让我理解到独立学习的重要性。
一次课程设计,让我深入学习了C语言,同时我掌握了一种学习知识的方法,真是受益匪浅,以后一定还要多多进行这种训练,提高能力。
参考文献
[1]谭浩强.C程序设计[M].北京:
清华大学出版社,2010.6
[2]
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 倒计时
![提示](https://static.bdocx.com/images/bang_tan.gif)