c万年历系统-课程设计报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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;

}

相关文档
最新文档