C语言课程设计实验报告(万年历)

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

C语言课程设计

一、题目及功能描述

题目:万年历的设计

利用C语言设计出万年历,使其实现如下要求

1、输入一个年份,在屏幕上输出该年的年历(包括每月的天数和所对应的星期几),并且在每月的左上角或右上角打印出相应的年份和月份,要求输出界面尽可能整齐、美观,符合年历显示规范。假定输入的年份在1-9999年之间。

2、输入年月,输出该月的月历。

3、输入年月日,输出距今天还有多少天,是星期几,是否是公历节日。:

4、指定键盘的某些键,用于控制变换不同年、月、日的显示。即:当前若正在显示2011年的年历,按下键盘“←”方向键后,年历变为2010年的。

二、使用的所有变量的说明

变量说明:(以下均为整型变量)

year 表示年份的变量

month 表示月份的变量

day 表示日期的变量

select 表示菜单选择的变量

i 表示月份的变量

j 表示一个月中的某一天的变量

sum 判断某天是一年中的第几天的变量

number判断某天离公元1年1月1日还有几天的变量

a[] 表示每月天数的数组变量

year1 系统时间年份的变量

month1 系统时间月份的变量

day1 系统时间日期的变量

三、程序清单及其说明

#include "time.h" /*包含的头文件*/

#include "stdio.h"

#include "math.h"

#include "windows.h"

#include "conio.h"

#define KEYNUMUp 0x48 /*宏定义*/

#define KEYNUMDown 0x50

#define KEYNUMLeft 0x4b

#define KEYNUMRight 0x4d

#define KEYNUMPageUp 0x49

int eachyeartotal(int year,int month,int day); /*函数声明*/

int counterdays(int year,int month,int day);

int nowtime(int year,int month,int day);

int week(int year,int month,int day);

int maxDay(int year,int month);

int isleap(int year);

void whatweek(int year,int month,int day);

void display(int year ,int month);

void display2(int year,int month);

void display3(int year,int month,int day) ;

void setDay1(int year,int month,int day);

void setDay2(int year,int month,int day);

void setDay3(int year,int month,int day);

void jieri(int month,int day);

void display1(int year);

void getmenu();

void main() /*主函数*/

{

int year,month,day,select;

while(1)

{

getmenu();

printf(" 请输入相应数字:"); /*菜单选择*/

scanf("%d",&select);

system("cls");

switch(select)

{

case 1: /*当选择为1时显示年历*/

printf(" 年历显示:输入年(如2011):");

scanf("%d",&year);

if(year>0&&year<10000) /*显示年份从0-10000 */

{

display1(year); /*调用函数*/

printf(" 提示按↑:上一年按↓:下一年按其他键:返回菜单\n\n");

setDay1( year,month, day);

}

else

system("cls");

printf(" 输入无效,重新输入!\n");

break;

case 2: /*当选择为2显示月历*/

printf(" 月历显示:输入年月(如2011,6):");

if(year>0&&year<10000&&month>=1&&month<=12)

{

display2(year,month);

printf(" 提示按←:上个月按→:下个月按其他键:返回菜单\n\n");

setDay2( year,month, day);

}

else

system("cls");

printf(" 输入无效,重新输入!\n");

break;

case 3: /*当选择为3时显示日期*/

printf(" 日期显示:输入年月日(比如2011,6,23):");

scanf("%d,%d,%d",&year,&month,&day);

if(year>0&&year<10000&&month>=1&&month<=12&&day>=1&&day<=maxDay(year,month) )

{

display3(year,month,day);

printf(" 提示按PageUp:前一天按PageDown:后一天按其他键:返回菜单\n\n");

setDay3( year,month, day);

}

else

system("cls");

printf(" 输入无效,重新输入!\n");

break;

case 4:

exit(0);

default: /*当输入其他数字时,输入无效,重新输入*/

system("cls");

printf(" 输入无效,重新输入!\n");

}

}

}

int isleap(int year) /*判断是否为闰年*/

{

if(year%4==0&&year%100!=0||year%400==0)

return 1;

else

return 0;

相关文档
最新文档