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
#define  KEYNUMPageDown            0x51 
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:");
      scanf("%d,%d",&year,&month);
      if(year>0&&year<10000&&month>=1&&month<=12)
c语言错误提示大全      {
        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;
}
int maxDay(int year,int month)  /*每月的天数*/
{
  int a[]={31,28,31,30,31,30,31,31,30,31,30,31};            /*每个月中的天数*/
  if(isleap( year)) 
  a[1]=29;                                    /*闰年2月份有29*/
  return a[month-1];
}
int eachyeartotal(int year,int month,int day)     /*判断某天是一年中的第几天*/
{
  int i,sum=0;
  for(i=1;i<month;i++)
  sum+=maxDay(year,i);
  sum+=day;
  return sum;
  }
int week(int year,int month,int day)          /*对天数进行判断确定是星期几*/
{
  int number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400
  +eachyeartotal(year,month,day);
  number=number%7  ;
  return number;
}
void display(int year ,int month)                          /*输出年月*/
{
  int max,number,i,j=1;
  max=maxDay(year,month);
  number=week(year,month,1);
  printf("  %4s  %4s  %4s  %4s  %4s  %4s  %4s\n","Sun","Mon","Tue","Wed",

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。