电子万年历实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告

电子万年历:

一、需求分析:

电子万年历系统主要实现以下单个查询功能:

1、查询某一年的日历。要求从键盘输入年份,输出该年12个月份的日历

2、查询某一天某一个月的日历。要求从键盘输入年份和月份,输出该月的日历。

3、查询某一天是星期几。要求从键盘输入年、月、日,输出这一天是星期几。

二、总体设计:

1、功能模块图

计算模块:用于计算天数,判断闰年

输出模块:用于菜单输出和日历输出

查询模块:实现查询某一年的日历。查询某一天某一个月的日历。查询某一天是星期几。

三、详细设计:

1、计算模块:

计算模块主要包含3个函数:LeapYear()、CountYearDays()、CountMonthDays

函数

CountYearDays()功能是计算从公元元年1月1日到某年12月31日一共有多少

天。

CountYearDays()功能是几双当年1月1日到输入日期的前一个月的天数

2、输出模块包含2个函数:Menu()和ListMonth()函数。

Menu()函数用来输出系统提供的功能选项。

ListMonth()函数用来按规定格式输出一个月的日历。

3、查询模块针对系统要实现三个查询功能定义了3个函数:Search1()、 Search2()

和 Search3()函数。

函数Search1()用来显示一年12个月的日历,输入年份后,计算该年1月1日是星期几,然后从1月份开始一次输出每个月的日历,其中调用了函数LeapYear

()、CountYearDays()和CountMonthDays()。

函数Search2()用来显示某年某月的日历,输入年份和月份后,计算出该年该月1日是星期几,然后输出这个月的日历,其中调用了函数LeapYear()和

CountYearDays()、CountMonthDays()和ListMonth()。

函数Search3()用来显示某天是星期几,通过调用函数LeapYear()、CountYearDays()和CountMonthDays()计算出从公元元年1月1日到这一天总

共过去了多少天,用这个总天数除以7得到的余数即为答案。

4、调试与测试:

在调试过程中主要的问题就是结果的显示问题,显示易错位。以及函数之间调用问题。对于这些问题,主要是翻书籍和网络上找解决方案,以及自己亲自用找到的方法去测试。最终解决问题。

5、测试结果

菜单界面:

功能一展示:

功能二展示:

功能三展示:

6、附录:

程序代码:

#include

#include

#include

int g_MonthDays [13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; //定义全局数组

//函数声明

int LeapYear(int n);

int CountYearDays(int year);

int CountMonthDays(int month);

void Menu(void);

void ListMonth(int days,int t);

void Search1(void);

void Search2(void);

void Search3(void);

void main() //main函数定义

{

int select;

while(1)

{

Menu(); //调用Menu函数,显示菜单

scanf("%d",&select); //输入想选择的功能

switch(select) //对select进行多分支选择

{

case 1:Search1();break; //select=1时,调用Search1函数

case 2:Search2();break;

case 3:Search3();break;

case 0:printf("\n\t谢谢使用!再见\n");exit(0); //结束程序,退出系统

default:("\n\t按键错误,请重新选择!\n"); //输入错误,应重新输入

} //switch结束} //while结束

}

//================================================================

//功能:判断闰年

//参数:n为需要判断的年份

//返回:是闰年返回1,否则返回0

//主要思路:用if语句判断某一脸是否是闰年

//================================================================

int LeapYear(int n)

{

if((n%4==0&&n%100==0)||n%400==0)

return (1); //是闰年返回1 else return (0); //不是闰年返回0 }

//================================================================ //功能:计算从公元元年到公元(year-1)年的总天数

//参数:year为年份

//返回:返回总天数

//主要思路:用for循环计算天数

//================================================================

int CountYearDays(int year)

{

int i,flag,days=0;

for(i=0;i

{

flag=LeapYear(i); //判断第i年是否为闰年if(flag) days=days+366; //是闰年加366天

else days=days+365; //不是闰年应加365天

}

return (days); //返回总的天数

}

//================================================================ //功能:计算当年前(month-1)个月的天数

//参数:month为月份

//返回:返回前(month-1)个月的总天数

//主要思路:用for循环计算天数

//================================================================

int CountMonthDays(int month)

{

int i,days=0;

for(i=1;i

days=days+g_MonthDays[i];

return (days);

}

//================================================================= //功能:显示系统菜单

相关文档
最新文档