王更生课程设计模板信息工程12C++.docx
《王更生课程设计模板信息工程12C++.docx》由会员分享,可在线阅读,更多相关《王更生课程设计模板信息工程12C++.docx(24页珍藏版)》请在冰豆网上搜索。
王更生课程设计模板信息工程12C++
课程设计(论文)任务书
信息学院专业信息工程班级2011-
一、课程设计(论文)题目电子日历
二、课程设计(论文)工作:
自2011年12月26日起
至2011年12月30日止。
三、课程设计(论文)的内容要求:
1、主界面
2、基本要求
a)编写一个实用日历程序,并且可以多次进行。
b)编写一个2012年1月份日历与农历对照程序。
3、补充自己的设计内容
学生签名:
2011年12月30日
课程设计(论文)评阅意见
等 级
项目
课程设计态度评价
出勤情况评价
设计中创新性评价
论文书写规范化评价
综合评定等级
优秀
好
好
3补充
好
良好
好
好
2补充
好
中等
好
好
1补充
好
及格
好
好
无补充
好
不及格
不好
不好
无补充
不好
评阅人王更生职称教授
2011年12月30日
目 录
一、设计思路
二、功能实现详细设计
三、测试结果分析
四、用户手册
五、设计体会
一、设计思路
二、功能实现详细设计
编译C程序:
主要应用函数调用,循环语句,死循环进行编译。
在编译之后要进行调试
#include
#include
voidmonth_day()//这个函数用来判断这年的月分有多少天的
{
intyear,month;
printf("请输入年月(xxxx,x)");
scanf("%d,%d",&year,&month);
intmon_day[]={31,28,31,30,31,30,31,31,30,31,30,31};
if((year%4==0&&year%100!
=0)||year%400==0&&month==2)/*判断是判断是否是闰年,如果是闰年而且这个月是2月那这个月有29天*/
printf("这一天有29天");
else
printf("这一天有%d天",mon_day[month-1]);
}
voidsearch_lunar(intday)
{
inty=12,nl=7;
nl=nl+day;
if(nl>29)
{
y=1;
nl=nl-29;
}
printf("\t2012年1月%d日是农历",day);
switch(y)
{
case1:
printf("一月");break;
case12:
printf("十二月");break;
}
switch(nl)
{
case1:
printf("初一");break;
case2:
printf("初二");break;
case3:
printf("初三");break;
case4:
printf("初四");break;
case5:
printf("初五");break;
case6:
printf("初六");break;
case7:
printf("初七");break;
case8:
printf("初八");break;
case9:
printf("初九");break;
case10:
printf("初十");break;
case11:
printf("十一");break;
case12:
printf("十二");break;
case13:
printf("十三");break;
case14:
printf("十四");break;
case15:
printf("十五");break;
case16:
printf("十六");break;
case17:
printf("十七");break;
case18:
printf("十八");break;
case19:
printf("十九");break;
case20:
printf("二十");break;
case21:
printf("廿一");break;
case22:
printf("廿二");break;
case23:
printf("廿三");break;
case24:
printf("廿四");break;
case25:
printf("廿五");break;
case26:
printf("廿六");break;
case27:
printf("廿七");break;
case28:
printf("廿八");break;
case29:
printf("廿九");break;
case30:
printf("三十");
}
}
voidfind_lunar()
{
intday;
charch;
printf("\t您正在查询2012年1月农历!
!
\n");
printf("\t请输入您要查询的日期(day):
");
scanf("%d",&day);
while((day<1)||(day>31))
{
printf("\n\t\a\a输入错误!
!
!
!
!
!
!
!
!
!
!
请重新输入!
!
\n");
printf("\t请输入您要查询的日期:
");
scanf("%d",&day);
}
search_lunar(day);
printf("\t是否继续查询?
(y/n)");
ch=getchar();
ch=getchar();
while(!
(ch=='n'||ch=='N'||ch=='y'||ch=='Y'))
{
printf("\n\t\a\a输入错误!
是否继续查询?
(y/n)");
scanf("%c",&ch);
}
if((ch=='y')||(ch=='Y'))
{
find_lunar();
}
}
voidshengxiao(intyear)
{
intp;
if(year>=1960)
p=(year-1960)%12+1;
else
p=12-(1960-year)%12;
switch(p)
{
case1:
printf("这一年是鼠年");break;
case2:
printf("这一年是牛年");break;
case3:
printf("这一年是虎年");break;
case4:
printf("这一年是兔年");break;
case5:
printf("这一年是龙年");break;
case6:
printf("这一年是蛇年");break;
case7:
printf("这一年是马年");break;
case8:
printf("这一年是羊年");break;
case9:
printf("这一年是猴年");break;
case10:
printf("这一年是鸡年");break;
case11:
printf("这一年是狗年");break;
case12:
printf("这一年是猪年");break;
}
}
voidsearshengxiao()
{
intyear;
charch;
printf("请输入年份");
scanf("%d",&year);
shengxiao(year);
printf("\t是否继续查询?
(y/n)");
ch=getchar();
ch=getchar();
while(!
(ch=='n'||ch=='N'||ch=='y'||ch=='Y'))
{
printf("\n\t\a\a输入错误!
是否继续查询?
(y/n)");
scanf("%c",&ch);
}
if((ch=='y')||(ch=='Y'))
{
searshengxiao();
}
}
intcalculatespace(intyear)
{
intk,s=0;
if(year>2000)
{
for(k=2000;kif(k%4==0)s=s+366;
elses=s+365;
return((s+6)%7);
}
elseif(year==2000)return(6);
else
{
for(k=year;k<2000;k++)
if(k%4==0)s=s+366;
elses=s+365;
return(7-(s+1)%7);
}
}
voidrunnian()
{
intyear;
printf("请输入年份(xxx)\n");
scanf("%d",&year);
if((year%4==0&&year%100!
=0)||year%400==0)
printf("%d是闰年",year);
else
printf("%d不是闰年",year);
}
voidshow_simple_calendar()
{
inti,j,k,n,space,year;
inta[2][12]={{31,28,31,30,31,30,31,31,30,31,30,31},
{31,29,31,30,31,30,31,31,30,31,30,31}};
printf("\n\t现在使用的是简单的日历程序!
");
printf("\n\t请从键盘输入年份:
");
scanf("%d",&year);
getchar();
space=calculatespace(year);
if(((year%4==0&&year%100!
=0)||year%400==0))k=1;
elsek=0;
printf("\n\n\t\t\t\t日历的年份为:
%d\n",year);
for(i=0;i<12;i++)
{
printf("\n\n\t\t\t\t月份:
%d\n",i+1);
printf("\n\t星期日星期一星期二星期三星期四星期五星期六\n\n");
for(n=0;nprintf("\t");
for(j=1;j<=a[k][i];j++)
{
printf("%8d",j);
if((space+j)%7==0)
printf("\n\t");
}
space=(space+a[k][i])%7;
}
}
voidsimple_calendar()
{
charch;
do
{
show_simple_calendar();
printf("\n\n\t\t是否要查看其它年份的日历?
?
(y/n)");
ch=getchar();
while(!
(ch=='n'||ch=='N'||ch=='y'||ch=='Y'))
{
printf("\n\t\t\a\a输入错误!
是否要查看其它年份的日历?
?
(y/n)");
scanf("%c",&ch);
}
}while(ch=='y'||ch=='Y');
}
voidquit()
{
printf("\n\t谢谢使用日历程序!
\n");
exit(0);
}
intSelectMenu()
{
intchoice;
printf("\n\t******************************************************************\n");
printf("\n5:
计算某一年的生肖\n");
printf("\n4:
判断某一年是否为闰年\n");
printf("\n3:
计算某一月的天数\n");
printf("\n2:
查看2012年1月份对应的农历\n");
printf("1:
简单的日历程序!
\n");
printf("0:
退出!
\n");
printf("\t******************************************************************\n");
printf("\t请选择菜单号(0---5):
");
while((!
(scanf("%d",&choice)))||(choice<0)||(choice>5))
{
printf("\n\t\t\a\a选择错误!
!
!
!
!
!
!
!
!
!
!
请重新选择:
");
printf("\n\t******************************************************************\n");
printf("\n5:
计算某一年的生肖\n");
printf("\n4:
判断某一年是否为闰年\n");
printf("\n3:
计算某一月的天数\n");
printf("\n2:
查看2012年1月份对应的农历\n");
printf("1:
简单的日历程序!
\n");
printf("0:
退出!
\n");
printf("\t******************************************************************\n");
printf("\t请选择菜单号(0---5):
");
}
returnchoice;
}
voidHandleMenu()
{
printf("\t\t*****************欢迎使用日历程序***************\n");
while
(1)
{
switch(SelectMenu())
{
case0:
quit();
break;
case1:
simple_calendar();
break;
case2:
find_lunar();
break;
case3:
month_day();
break;
case4:
runnian();
break;
case5:
searshengxiao();
break;
}
}
}
voidmain()
{
HandleMenu();
}
三、测试结果分析
“
四、用户手册
程序的名称:
简单的日历程序
程序的主要功能:
一,打印某一年的日历。
二,判断某一年是否为闰年。
三,查询2012年一月份对应的农历。
四,四查询某一年的生肖。
按照提示,例如输入“1988”,就会得到结果。
五,查询某一月的天数。
例如输入“1995,2”就可以得到结果。
程序运行时可以根据提示操作,便可以实现相应的功能。
例如:
我要查看1990年的生肖,选择功能5。
按ENTER键,则出现“请输入年份(XXX)”,输入“1990”,按ENTER键,则出现“这一年是马年”。
五、设计体会
在涉及这个程序时,要考虑的因素很多。
首先要有一个整体的框架,然后设计各个功能,而每一个功能又是由几个函数组成,从而在编译的初始阶段是对一个一个函数进行编译。
而每一个函数体又需要许多知识,有的需要循环结构,有的需要SWITCH语句等。
每一个字母出错就有可能影响功能的实现,总之细节决定成败。
程序做完之后最重要的一点就是上机进行调试,在调试的过程中不可避免会有一些错误出现,这时要静下心来仔细观察,逐个排查错误。
比如说有一次我应用SCANF语句,没有加一个与号导致程序出错,我检查了好几遍,没有找出错误,这时我心急了。
而老师很快帮我找出了错误。
在这个时候必须有一个沉稳的心态,才能快速找出错误。
不管做什么都需要刻苦,没有什么突出的成果可以轻松得到,想要自己的成果与众不同,就要比别人付出更多。
在这设计过程中,我不断地探索,尝试不同的方法,才完成几个功能,我也充分利用网络资源,查看别人的设计思路,从而得到启发,激发我的设计灵感,最中成功完成这一设计。
我得到的最重要的一句话是:
想要得到,就要去尝试。