山东交通学院
面向对象课程设计
万年历系统
目 录
1 课程设计概述 .................................................................................................................. 5
1.1 1.2
万年历系统功能概述..................................................................................................... 5 开发环境概述................................................................................................................. 5
2 万年历系统总体设计 ................................................................................................... 6
2.1 2.2
问题分析......................................................................................................................... 6 总体设计流程图............................................................................................................. 7
3 万年历系统详细设计 ................................................................................................... 8 4 程序测试 ............................................................................................................................... 9
4.1 4.2 4.3 4.4
进入程序界面................................................................................................................. 9 主菜单界面..................................................................................................................... 9 显示当前时间界面....................................................................................................... 10 查询时间界面 ............................................................................................................. 10
4.5 4.6 4.7
查询时间出错界面....................................................................................................... 11 退出程序界面............................................................................................................... 12
主菜单选择出错界面 ..................................................................... 错误!未定义书签。2
5 程序源代码 ...................................................................................................................... 13 设计体会及今后的改进意见 .......................................................................................... 21
参考文献 .................................................................................................................................. 21
1 课程设计概述
1.1 字符统计软件功能概述
模仿Windwos的日历.
1)
日历显示功能。能根据系统日期进行初始化,如果没有任何输入,
则显示系统日期所在月份的月历。
2)
日历查询、闰年判断功能。输入日期进行查询,显示查询日期所
在月份的月历,还将显示所在年份是否为闰年。
3)
参数检查功能。如果输入日期不合法,查询将被拒绝,并显示提
示信息。
1.2 开发环境概述
在实验室一人一台微机。
2 课程设计概述
2.1 问题分析
2.1.1 难点在于判断星期,但根据蔡勒公式,可以很容易地有年月日推断出星期:nDay=year-1+(year-1)/4-(year-1)/100+(year-1)/400+nday;
2.1.2 在打印月历时,只要知道第一天的星期,就可以依次输入后面的日期,通过定长度输出日期,在遇到某天时星期六时,就换行输出,因此可以按照月历的格式输出。对于初始输入当前月历,可以通过
time_t timer; struct tm* gmt; time(&timer);
gmt=localtime(&timer);
gmt就是一个时间结构体,可以从中取出年月日。 w=nDay%7;
nday:从该年的一月一日起到该天的天数 w:得出的星期数,w==0表其中year:要查询的年份 示星期天。
2.1.3 闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否则为平年。日期的查询,就是直接打印该天所在月份的月历。
2.1.4 判断日期是否合法,可以先判断年月日是否有小于0的值,月和日是否有超出最大值12和31 ,如果通过此判断合法,再判断是否时闰年,如果时闰年,则判断二月份是否满足要求,闰年二月份不能超过29天,平年二月份不能超过28天。在查询过程中,如果发现输入不合法或者不满足输入要求,则要求重新输入。
2.2 总体设计流图
2.2.1
程序开始 按提示输入数字 是 再次输入数字执行相应的功能 输入的数字是否是0 退出
C语言课程设计万年历系统



