1、王更生课程设计模板信息工程12C+课 程 设 计( 论 文 )任 务 书 信息学院 专 业 信息工程 班 级 2011- 一、课程设计(论文)题目 电子日历 二、课程设计(论文)工作:自 2011年 12 月 26 日起至 2011年 12 月 30 日止。三、课程设计(论文)的内容要求:1、 主界面 2、基本要求 a) 编写一个实用日历程序,并且可以多次进行。b) 编写一个2012年1月份日历与农历对照程序。3、补充自己的设计内容 学生签名: 2011年 12 月 30 日课程设计(论文)评阅意见等级项 目课程设计态度评价出勤情况评价设计中创新性评价论文书写规范化评价综合评定等级优秀好好3补
2、充好良好好好2补充好中等好好1补充好及格好好无补充好不及格不好不好无补充不好评阅人 王更生 职称 教 授 2011年 12 月 30 日 目录一、设计思路二、功能实现详细设计三、测试结果分析四、用户手册五、设计体会一、设计思路二、功能实现详细设计编译C程序:主要应用函数调用,循环语句,死循环进行编译。在编译之后要进行调试#include#includevoid month_day() /这个函数用来判断这年的月分有多少天的 int year,month;printf(请输入年月(xxxx,x);scanf(%d,%d,&year,&month);int mon_day=31,28,31,30,
3、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_daymonth-1); void search_lunar(int day) int y=12,nl=7; nl=nl+day; if (nl29) y=1; nl=nl-29; printf(t2012年1月%d日是农历,day); switch(y) case 1:printf(一月);break
4、; case 12:printf(十二月);break; switch(nl) case 1:printf(初一);break; case 2:printf(初二);break; case 3:printf(初三);break; case 4:printf(初四);break; case 5:printf(初五);break; case 6:printf(初六);break; case 7:printf(初七);break; case 8:printf(初八);break; case 9:printf(初九);break; case 10:printf(初十);break; case 11:p
5、rintf(十一);break; case 12:printf(十二);break; case 13:printf(十三);break; case 14:printf(十四);break; case 15:printf(十五);break; case 16:printf(十六);break; case 17:printf(十七);break; case 18:printf(十八);break; case 19:printf(十九);break; case 20:printf(二十);break; case 21:printf(廿一);break; case 22:printf(廿二);brea
6、k; case 23:printf(廿三);break; case 24:printf(廿四);break; case 25:printf(廿五);break; case 26:printf(廿六);break; case 27:printf(廿七);break; case 28:printf(廿八);break; case 29:printf(廿九);break; case 30:printf(三十); void find_lunar() int day; char ch; printf(t您正在查询2012年1月农历!n); printf(t请输入您要查询的日期(day):); scanf
7、(%d,&day); while (day31) printf(ntaa输入错误!请重新输入!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(ntaa输入错误!是否继续查询?(y/n); scanf(%c,&ch); if (ch=y)|(ch=Y) find_lunar(); void shengxiao(int year) int p; if(ye
8、ar=1960) p=(year-1960)%12+1; else p=12-(1960-year)%12; switch(p) case 1:printf(这一年是鼠年);break;case 2:printf(这一年是牛年);break;case 3:printf(这一年是虎年);break;case 4:printf(这一年是兔年);break;case 5:printf(这一年是龙年);break;case 6:printf(这一年是蛇年);break;case 7:printf(这一年是马年);break;case 8:printf(这一年是羊年);break;case 9:prin
9、tf(这一年是猴年);break;case 10:printf(这一年是鸡年);break;case 11:printf(这一年是狗年);break;case 12:printf(这一年是猪年);break; void searshengxiao() int year; char ch; printf(请输入年份); scanf(%d,&year); shengxiao(year); printf(t是否继续查询?(y/n); ch=getchar(); ch=getchar(); while(!(ch=n|ch=N|ch=y|ch=Y) printf(ntaa输入错误!是否继续查询?(y/n
10、); scanf(%c,&ch); if (ch=y)|(ch=Y) searshengxiao();int calculatespace(int year) int k,s=0; if(year2000) for(k=2000;kyear;k+) if(k%4=0) s=s+366; else s=s+365; return(s+6)%7); else if(year=2000) return(6); else for(k=year;k2000;k+) if(k%4=0)s=s+366; else s=s+365; return(7-(s+1)%7); void runnian() int
11、year; printf(请输入年份(xxx)n); scanf(%d,&year); if(year%4=0&year%100!=0)|year%400=0) printf(%d 是闰年,year); else printf(%d 不是闰年,year);void show_simple_calendar() int i,j,k,n,space,year; int a212=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(nt现在使用的是简单的日历程序!); printf(nt请从
12、键盘输入年份: ); scanf(%d,&year); getchar(); space=calculatespace(year); if(year%4=0&year%100!=0)|year%400=0)k=1; else k=0; printf(nntttt日历的年份为:%dn,year); for(i=0;i12;i+) printf(nntttt 月份: %dn,i+1); printf(nt 星期日 星期一 星期二 星期三 星期四 星期五 星期六nn); for(n=0;nspace+1;n+) printf(t); for(j=1;j=aki;j+) printf(%8d,j);
13、if(space+j)%7=0) printf(nt); space=(space+aki)%7; void simple_calendar() char ch; do show_simple_calendar(); printf(nntt是否要查看其它年份的日历? (y/n); ch=getchar(); while(!(ch=n|ch=N|ch=y|ch=Y) printf(nttaa输入错误!是否要查看其它年份的日历?(y/n); scanf(%c,&ch); while(ch=y|ch=Y);void quit() printf(nt谢谢使用日历程序!n); exit(0);int S
14、electMenu() int choice; printf(nt*n); printf(n 5:计算某一年的生肖n); printf(n 4:判断某一年是否为闰年n); printf(n 3:计算某一月的天数n); printf(n 2:查看2012年1月份对应的农历n); printf( 1:简单的日历程序!n); printf( 0:退出!n); printf(t*n); printf(t请选择菜单号(0-5):); while( (!(scanf(%d,&choice)| (choice5) printf(nttaa选择错误!请重新选择:); printf(nt*n); printf(
15、n 5:计算某一年的生肖n); printf(n 4:判断某一年是否为闰年n); printf(n 3:计算某一月的天数n); printf(n 2:查看2012年1月份对应的农历n); printf( 1:简单的日历程序!n); printf( 0:退出!n); printf(t*n); printf(t请选择菜单号(0-5):); return choice;void HandleMenu() printf(tt*欢迎使用日历程序*n); while(1) switch(SelectMenu() case 0:quit(); break; case 1:simple_calendar();
16、 break; case 2:find_lunar(); break; case 3: month_day(); break; case 4:runnian(); break; case 5:searshengxiao(); break; void main() HandleMenu();三、测试结果分析 “四、用户手册程序的名称:简单的日历程序程序的主要功能:一, 打印某一年的日历。二, 判断某一年是否为闰年。三, 查询2012年一月份对应的农历。四, 四查询某一年的生肖。按照提示,例如输入“1988”,就会得到结果。五, 查询某一月的天数。例如输入“1995,2”就可以得到结果。程序运行时
17、可以根据提示操作,便可以实现相应的功能。例如:我要查看1990年的生肖,选择功能5。按ENTER键,则出现“请输入年份(XXX)”,输入“1990”, 按ENTER键,则出现“这一年是马年”。五、设计体会在涉及这个程序时,要考虑的因素很多。首先要有一个整体的框架,然后设计各个功能,而每一个功能又是由几个函数组成,从而在编译的初始阶段是对一个一个函数进行编译。而每一个函数体又需要许多知识,有的需要循环结构,有的需要SWITCH语句等。每一个字母出错就有可能影响功能的实现,总之细节决定成败。程序做完之后最重要的一点就是上机进行调试,在调试的过程中不可避免会有一些错误出现,这时要静下心来仔细观察,逐个排查错误。 比如说有一次我应用SCANF语句,没有加一个与号导致程序出错,我检查了好几遍,没有找出错误,这时我心急了。而老师很快帮我找出了错误。在这个时候必须有一个沉稳的心态,才能快速找出错误。 不管做什么都需要刻苦,没有什么突出的成果可以轻松得到,想要自己的成果与众不同,就要比别人付出更多。在这设计过程中,我不断地探索,尝试不同的方法,才完成几个功能,我也充分利用网络资源,查看别人的设计思路,从而得到启发,激发我的设计灵感,最中成功完成这一设计。我得到的最重要的一句话是:想要得到,就要去尝试。
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1