c万年历系统-课程设计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
《高级语言程序课程设计》
课程设计报告
题目: 万年历系统
专业: 网络工程(对口)
班级: 16(3)
姓名: 代应豪
指导教师: 代美丽
成绩:
计算机学院
2017年4月25日
2016-2017学年 第2学期
目录
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 课程设计的内容
设计编写一个C程序—“万年历”。
本程序是一个万年历程序,可以查询1901年到9999年中任意一天是星期几,只要在运行程序时按照要求输入年,月,日,程序就会把这一天是星期几显示在屏幕上;也可以输入一个年份和一个月份,程序就会把该月份的月历显示在屏幕上,使人一目了然。
1.2 课程设计的要求
1:程序的功能多样;
2:输入日期能够判断该日期是星期几;
3:输入一个年份能够显示出该年的全部月历;
4:输入一个年月能够显示该月的月历;
5:输入一个年份能够判断该年是闰年还是平年;
6:能够退出。
2.概要设计
2.1 系统总体设计
通过此次课程设计可以复习巩固C语言的基础知识的同时,进一步加深对C语言的理解和掌握。主要的设计思想是通过不同的函数模块来实现并调用的,将不同的数据结构组成一个整体就是此次设计的系统概要。
2.2功能模块设计
本系统包括4个模块,分别是闰年判断模块、星期计算模块、月历查询模块和打印整年日历模块。
(1)闰年判断模块。该模块用于输入一个年份能够判断该年是闰年还是平年。
(2)星期计算模块。该模块主要是输入日期能够判断该日期是星期几。
(3)月历查询模块。该模块是系统的核心模块,是用来显示指定日期所在月份的月历,包括打印指定个数的空格、打印分隔线。(4)打印整年日历模块。该模块用于输入一个年份能够显示出该年的全部月历
3.设计过程或程序代码
3.1算法提示:
2.闰年的判断:
计算所输入的年份是否可被4整除,若不能被整除,为平年。
若可被4整除,计算此年份能否被100整除,不能被100整除则为闰年。既能被4整除,也能被100整除的年份,若也能被400整除,则为闰年,否则为平年。闰年366天,平年365天
3.2程序源代码
#include
#include
*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;
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;
}
}
return 1;
}
int GetDays (int year,int month,int day)
{
int sum=0;
if (DateCheck(year,month,day)==0)
{
return -1;//日期有误
}
if(year>=1901)
{
int X=(int)(year/100);//世纪数
int Y=X-(int)(X/4);//如果按4年一闰来算,Y指的是比实际上多算的天数,在下面需要减去
if (month<=2&&month>0)
{
year--;//把1月、2月视为上一年的13月、14月(纯粹为了计算需要)
month+=12;
}