学号
2016-2017 学年 第 2 学期
《高级语言程序课程设计》
课程设计报告
题 目 :
万年历系统
专 业 :
班 级 :
姓 名 :
指导教师:
成 绩 :
计算机学院
2017 年 4 月 25 日
计算机学院 《高级语言课程设计》课程设计报告
目 录
1.设计内容及要求..................................................................2
1.1 课程设计的内容.......................................................2
1.2 课程设计的要求.......................................................2
2.概要设计..............................................................................3
2.1 系统总体设计.............................................................3
2.2 功能模块设计..............................................................3
3.设计过程或程序代码..........................................................4
3.1 算法提示:..................................................................4
3.2 程序源代码..................................................................5
4.设计结果与分析................................................................15
4.1 设计结果....................................................................15
4.2 程序分析...................................................................18
1
计算机学院 《高级语言课程名称》课程设计报告
1.设计内容及要求
1.1 课程设计的内容
设计编写一个 C 程序—“万年历”。
本程序是一个万年历程序,可以查询 1901 年到 9999 年中任
意一天是星期几,只要在运行程序时按照要求输入年,月,日,
程序就会把这一天是星期几显示在屏幕上;也可以输入一个年份
和一个月份,程序就会把该月份的月历显示在屏幕上,使人一目
了然。
1.2 课程设计的要求
1:程序的功能多样;
2:输入日期能够判断该日期是星期几;
3:输入一个年份能够显示出该年的全部月历;
4:输入一个年月能够显示该月的月历;
5:输入一个年份能够判断该年是闰年还是平年;
6:能够退出。
2
计算机学院 《高级语言课程名称》课程设计报告
2.概要设计
2.1 系统总体设计
通过此次课程设计可以复习巩固 C 语言的基础知识的同时,
进一步加深对 C 语言的理解和掌握。主要的设计思想是通过不同
的函数模块来实现并调用的,将不同的数据结构组成一个整体就
是此次设计的系统概要。
2.2 功能模块设计
本系统包括 4 个模块,分别是闰年判断模块、星期计算模块、
月历查询模块和打印整年日历模块。
(1) 闰年判断模块。该模块用于输入一个年份能够判断该年是闰年
还是平年。
(2) 星期计算模块。该模块主要是输入日期能够判断该日期是星期
几。
(3) 月历查询模块。该模块是系统的核心模块,是用来显示指定日
期所在月份的月历,包括打印指定个数的空格、打印分隔线。
(4) 打印整年日历模块。该模块用于输入一个年份能够显示出该年
的全部月历
3
计算机学院 《高级语言课程名称》课程设计报告
3.设计过程或程序代码
3.1 算法提示:
1.功能结构框图:
开始
输入指令
闰年判断
星期查询
月历查询
显示整年年历
2.闰年的判断:
计算所输入的年份是否可被 4 整除,若不能被整除,为平年。
若可被 4 整除,计算此年份能否被 100 整除,不能被 100 整除则
为闰年。既能被 4 整除,也能被 100 整除的年份,若也能被 400
整除,则为闰年,否则为平年。闰年 366 天,平年 365 天
4
计算机学院 《高级语言课程名称》课程设计报告
3.2 程序源代码
#include
#include
5
计算机学院 《高级语言课程名称》课程设计报告
char
*NameOfMonth[12]={"January","February","March","April","May","Ju
ne","July","August","September","October","November","December"};
char *WeekDay[7]={"星期日","星期一","星期二","星期三","星期四","
星期五","星期六"};
int IsLeapYear (int year)
{
if(year%4==0&&year%100!=0||year%400==0)
{
return 1;//闰年返回 1
}else
return 0;//平年返回 0
{
}
}
int DateCheck(int uYear,int uMonth,int uDay)//合法返回 true,非法或超
出范围返回 false
{
if
(uYear<1901||uYear>9999||uMonth<1||uMonth>12||uDay<1||uDay>31)
{
return 0;
6
计算机学院 《高级语言课程名称》课程设计报告
}
if (uMonth==4||uMonth==6||uMonth==9||uMonth==11)
{
if (uDay>30)
{
}
return 0;
}else if (uMonth==2)
{
if (IsLeapYear(uYear))
{
if (uDay>29)
{
}
return 0;
}else
{
if (uDay>28)
return 0;
{
}
}
7