毕业论文论文范文课程设计实践报告法律论文英语论文教学论文医学论文农学论文艺术论文行政论文管理论文计算机安全
您现在的位置: 毕业论文 >> 课程设计 >> 正文

c语言万年历设计

更新时间:2010-7-14:  来源:毕业论文

c语言万年历设计
 经过这几天的突击,我的课程设计终于落下帷幕了,我编写了一个万年历,在这几天的设计中我深深的体会到了c语言的魅力,它深不可测,虽然我们已经学习了一个学期的c语言,但是我们几乎没有学到什么东西。

  感慨就不抒发了,下面把我这几天来的成果,发布上来,有兴趣的同学,朋友,路人,都可以粘贴下去运行一下看看呵呵,当然我这个没有百度里搜到的好,但是毕竟是自己的心血。

  说明:把下面这些源代码复制到vc6.0下就可以运行,tc下不能运行。

  程序源代码如下:

  #include<stdio.h>

  #include <stdlib.h>

  #include <windows.h>

  #include<time.h>

  #include <process.h>

  #include<conio.h>

  #include <ctype.h>

  #define CURU 72

  #define CURD 80

  #define CURL 75

  #define CURR 77

  #define ESC 27

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

  int runyear(int year);

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

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

  void gettime(int *py,int *pm,int *pr);

  void chaxun(int*pb);

  void cxshuom(int *pc);

  void about(int *pc);

  void logo(int*pc);

  void entrance();

  void changet(int*pb);

  void today(int*pb);

  void main() /*主函数*/

  {int year,month, day,b,c;

  b=0;

  c=0;

  logo(&c);

  entrance();

  gettime(&year,&month,&day);

  printf(" *******以下是系统显示的今日日期********\n\n");

  shuchu(year,month,day);

  system("cls");

  while(b==0)

  {printf("本程序支持以下功能:\n(1)万年历查询。(支持输入日期格式检查,不合法日期自动报错,\n 闰年会在左上角给出提示。)\n(2)修改系统日期和时间。\n(3)回到今日。\n(4)退出。\n请您选择入口,(输入相应的数字后按enter键即可)。");

  scanf("%d",&b);

  system("cls");

  while(!(b==1||b==2||b==3||b==4))

  {printf("您的指令有误请重新输入:\n\n");

  printf("本程序支持以下功能:\n\n(1)万年历查询。(支持输入日期格式检查,不合法日期自动报错,\n 闰年会在左上角给出提示。)\n\n(2)修改系统日期和时间。\n\n(3)回到今日。\n\n(4)退出。\n\n请您选择入口,(输入相应的数字后按enter键即可)。");

  scanf("%d",&b);

  system("cls");

  }

  while(b==1)

  chaxun(&b);

  while(b==2)

  changet(&b);

  while(b==3)

  today(&b);

  if(b==4)

  break;

  }

  }

  void chaxun(int*pb) /*此函数用于查询日期*/

  {int year,month,day,a;

  printf("请输入您要查询的日期:例如2008 8 8\n");

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

  system("cls");

  printf("正在进行合法性检查请稍后。。。。\n");

  Sleep (1000);

  system("cls");

  a=pd(year,month,day);

  while(a==1)

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

  system("cls");

  printf("正在进行合法性检查请稍后。。。。");

  Sleep (1000);

  system("cls");

  a=pd(year,month,day);

  }

  printf("查询结果如下:\n\n\n");

  shuchu(year,month,day);

  printf("您还想继续查询吗?是的话请按数字1,否则请按0.\n");

  scanf("%d",pb);

  system("cls");

  while(!(*pb==1||*pb==0))

  {printf("您的指令有误请重新输入:\n\n");

  printf("您还想继续查询吗?是的话请按数字1,否则请按0.\n");

  scanf("%d",pb);

  system("cls");}

  }

  int getWeek(int year,int month,int day) /*此函数用于获取给定日期的星期*/

  {

  int b;

  int week;

  int i ;

  int a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31};

  int count=0 ;

  b=runyear(year);

  if(b==1)

  a[2]++;

  for(i=1;i<month;i++)

  {

  count+=a;

  }

  count+=day;

  week=(year-1+(year-1)/4-(year-1)/100+(year-1)/400+count)%7 ;

  return week ;

  }

  int runyear(int year) /*此函数用于判断闰年*/

  {

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

  return 1 ;

  else

  return 0 ;

  }

  void shuchu(int year,int month,int day)/*此函数用于输出月历*/

  {int tian ,b,i,week,week1,j;

  char ch;

  i=1;

  j=1;

  b=runyear(year) ;

  if(month==1||month==3||month==5||month==7||month==8||month==10||month==12)

  tian=31;

  if(month==4||month==6||month==9||month==11)

  tian=30;

  if(b==1&&month==2)

  tian=29;

  if(b==0&&month==2)

  tian=28;

  week=getWeek(year,month,1);

  week1=getWeek(year,month,day);

  if(b==1)

  printf(" %d年%d月%d日(闰年) ",year,month,day);

  else printf(" %d年%d月%d日 ",year,month,day);

  if(week1==0) printf("星期日\n");

  if(week1==1) printf("星期一\n");

  if(week1==2) printf("星期二\n");

  if(week1==3) printf("星期三\n");

  if(week1==4) printf("星期四\n");

  if(week1==5) printf("星期五\n");

  if(week1==6) printf("星期辣\n");

  printf("------------------------------------------------------\n");

  printf("星期日 星期一 星期二 星期三 星期四 星期五 星期辣 \n");

  for(i=1;i<week+1;i++)

  printf(" ");

  printf(" ");

  for(;i<week+tian+1;i++,j++)

  { if((j>day-1)&&(j<=day))

  break;

  printf("%-8d",j);

  if(i%7==0) {printf("\n\n");

  printf(" ");}

  }

  printf("[%-2d] ",day);

  i=i+1;

  j=j+1;

  if((i-1)%7==0) {printf("\n\n");

  printf(" ");}

  for(;i<week+tian+1;i++,j++)

  { printf("%-8d",j);

  if(i%7==0) {printf("\n\n");

  printf(" ");}

  }

  printf("\n");

  printf("您已经进入了快捷模式,\n温馨提示:【←】减年【→】加年【↑】加月【↓】减月【ESC】退出快捷模式\n");

  ch = getch();

  if(ch !=ESC)

  {ch = getch();

  if(ch==CURU)

  { month++;

  if(month==13)

  {month=1;

  year++;

  }

  system("cls");

  printf("请稍后。。。。。\n\n");

  Sleep(1000);

  system("cls");

  printf("查询结果如下:\n\n");

  shuchu(year,month,day);

  }

  if(ch==CURD)

  { month--;

  if(month==0)

  {month=12;

  year--;

  }

  system("cls");

  printf("请稍后。。。。。\n\n");

  Sleep(1000);

  system("cls");

  printf("查询结果如下:\n\n");

  shuchu(year,month,day);

  }

  if(ch==CURL)

  { year--;

  if(year==0)

  printf("error\n");

  else

  system("cls");

  printf("请稍后。。。。。\n\n");

  Sleep(1000);

  system("cls");

  printf("查询结果如下:\n\n");

  shuchu(year,month,day);

  }

  if(ch==CURR)

  {year++;

  system("cls");

  printf("请稍后。。。。。\n\n");

  Sleep(1000);

  system("cls");

  printf("查询结果如下:\n\n");

  shuchu(year,month,day);

  }

  }

  }

  int pd(int year,int month,int day) /*此函数用于检查输入日期的合法性*/

  { int a,b,c;

  a=0;

  c=0;

  b=month;

  if(year<1)

  {printf("error,您输入的日期的年份不能为负数,请重新输入:\n例如2008 8 8\n");

  c=1;}

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

  a=1;

  if(b==1||b==3||b==5||b==7||b==8||b==10||b==12)

  if(day<1||day>31)

  {printf("error,您输入的日期的天数不能为负数或者大于31,请重新输入:\n例如2008 8 8\n");

  c=1;}

  if(b==4||b==6||b==9||b==11)

  if(day<1||day>30)

  {printf("error,您输入的日期天数不能为负数或者大于30,请重新输入:\n例如2008 8 8\n");

  c=1;}

  if(a==0&&b==2)

  if(day<1||day>28)

  { printf("error,您输入的日期是平年二月,天数不能为负数或者大于28,请重新输入:\n例如2008 8 8\n");

  c=1;}

  if(a==1&&b==2)

  if(day<1||day>29)

  { printf("error,您输入的日期是闰年二月,天数不能为负数或者大于29,请重新输入:\n例如2008 8 8\n");

  c=1;}

  if(b<1||b>12)

  {printf("error,您输入的月份不能为负数或者大于12,请重新输入:\n例如2008 8 8\n");

  c=1;}

  return c;

  }

  void gettime(int *py,int *pm,int *pr) /*次函数用于获取系统日期*/

  { struct tm *date;

  time_t now;

  now =time(NULL);

  date =localtime(&now);

  *py=date->tm_year+1900;

  *pm=date->tm_mon+1;

  *pr=date->tm_mday;

  }

  void logo(int *pc) /*主界面*/

  { printf("\t ***********课程设计**********\n\n");

  Sleep(500);

  printf("\t电0905-6\t\t\t\t张宝杰(boy杰)\n\n");

  Sleep(500);

  printf("------------------------------------------------------------------------------");

  Sleep(250);

  printf(" ");

  Sleep(250);

  printf(" ");

  printf("\n\n");

  printf("\t\t\t(1)程序说明;\n\n");

  printf("\t\t\t(2)关于作者;\n\n");

  printf("\t\t\t(3)进入程序;\n\n");

  printf("\t请您选择入口(输入相应的数字后按enter键即可)。\n\n");

  scanf("%d",pc);

  system("cls");

  while(!(*pc==1||*pc==2||*pc==3))

  {printf("您的指令有误请重新输入:\n");

  printf("\t\t\t(1)程序说明;\n\n");

  printf("\t\t\t(2)关于作者;\n\n");

  printf("\t\t\t(3)进入程序;\n\n");

  printf("\t请您选择入口(输入相应的数字后按enter键即可)。\n\n");

  scanf("%d",pc);

  system("cls");

  }

  while(*pc!=3)

  {if(*pc==1)

  cxshuom(pc);

  if(*pc==2)

  about(pc);}

  if(*pc==3);

  }

  void cxshuom(int *pc) /*程序说明*/

  {char *shm="本程序由张宝杰编写,由于时间仓促且能力有限,本软件只能在dos窗口下完成,应课程设计的要求本程序支持以下功能:\n\n1.日历显示功能。该日历能够根据系统日期进行初始化,如果没有任何的输入,则会显示系统日期所在月份的月历,并能突出显示当前日期(会用括号把当天日期括起来)。\n\n2.日期查询、闰年判断功能。输入日期进行查询,查询后将显示查询日期所在月份的月历,并突出显示查询日期。如果是闰年,则给出提示。并支持【←】减年【→】加年【↑】加月【↓】减月【ESC】退出快捷模式。\n\n3.日期合法性检查功能。程序还设置有对输入的日期进行合法性检查功能,如果年份、月份或者天数不合法,查询将被拒绝,并显示提示信息。\n\n4.修改系统日期和时间。\n\n";

  printf("\t\t\t(1)程序说明;\n\n");

  while (*shm!= '\0')

  {

  printf("%c",*shm);

  shm++;

  Sleep(30);

  }

  printf("\t\t\t(2)关于作者;\n\n");

  printf("\t\t\t(3)进入程序;\n\n");

  printf("\t请您选择入口(输入相应的数字后按enter键即可)。\n\n");

  scanf("%d",pc);

  system("cls");

  while(!(*pc==2||*pc==3))

  {printf("您的指令有误请重新输入:\n");

  printf("\t\t\t(2)关于作者;\n\n");

  printf("\t\t\t(3)进入程序;\n\n");

  printf("\t请您选择入口(输入相应的数字后按enter键即可)。\n\n");

  scanf("%d",pc);

  system("cls");

  }

  }

  void about(int *pc) /*关于作者*/

  {char *zuozhe="作者姓名:张宝杰\n\n作者职业:学生\n\n作者就读学校:石家庄铁道大学\n\n作者邮箱:zhangboyjie@163.com\n\n(欢迎大家使用并提交bug.)\n\n";

  printf("\t\t\t(2)关于作者;\n\n");

  while (*zuozhe!= '\0')

  { printf("%c",*zuozhe);

  zuozhe++;

  Sleep(30);}

  printf("\t\t\t(1)程序说明;\n\n");

  printf("\t\t\t(3)进入程序;\n\n");

  printf("\t请您选择入口(输入相应的数字后按enter键即可)。\n\n");

  scanf("%d",pc);

  system("cls");

  while(!(*pc==1||*pc==3))

  {printf("您的指令有误请重新输入:\n");

  printf("\t\t\t(1)程序说明;\n\n");

  printf("\t\t\t(3)进入程序;\n\n");

  printf("\t请您选择入口(输入相应的数字后按enter键即可)。\n\n");

  scanf("%d",pc);

  system("cls");

  }

  }

  void entrance() /*欢迎界面*/

  {int i=1,k,j,m;

  for(i=1;i<20;i++)

  { printf("本程序由:\n\n");

  for(k=9;k<i;k++)

  printf("\n");

  if(i>=9)

  printf("-----| | / | | \n");

  if(i>=8)

  printf(" | | / |-------------| | \n");

  if(i>=7)

  printf("_____| | / __________ _______|________ ");

  if(i>=6)

  printf("| |/ | / | \\ \n");

  if(i>=5)

  printf("| ---|----- _____|____ / | \\ \n");

  if(i>=4)

  printf("|----| | \\ | / | \\ \n");

  if(i>=3)

  printf(" | | /\\ | \\ / | \\ \n");

  if(i>=2)

  printf(" \\| |/ \\ _____|______ | | | | 编写!\n\n\n");

  for(j=1;j<=i;j++)

  printf(" "); 毕业论文http://www.751com.cn

  printf("***欢迎使用***\n");

  for(m=19;m>i;m--)

  printf(" ");

  printf(" ***欢迎使用***\n");

  Sleep(300);

  system("cls");

  }

  }

  void changet(int*pb) /*修改系统日期和时间*/

  { struct tm *date;

  time_t curr;

  printf("请您输入您要修改为的日期,例如:2008-8-8(如果不想修改的话请按enter键跳过)\n");

  system("date");

  printf("\n\n请您输入您要修改为的时间,例如:8:8:8(如果不想修改的话请按enter键跳过)\n");

  system("time");

  printf("\n\n操作成功,当前您计算机的日期和时间为:") ;

  curr =time(NULL);

  date =localtime(&curr);

  printf("%d/%d/%d %d:%d:%d\n",date->tm_year+1900,date->tm_mon+1,date->tm_mday,date->tm_hour,date->tm_min,date->tm_sec);

  printf("\n您还想继续修改吗?是的话请按数字2,否则请按0.\n");

  scanf("%d",pb);

  system("cls");

  while(!(*pb==2||*pb==0))

  { printf("您的指令有误请重新输入:\n\n");

  printf("您还想继续修改吗?是的话请按数字2,否则请按0.\n");

  scanf("%d",pb);

  system("cls");

  }

  }

  void today(int*pb)

  {int year,month,day; 毕业论文http://www.751com.cn

  gettime(&year,&month,&day);

  printf(" *******以下是系统显示的今日日期********\n\n");

  shuchu(year,month,day);

  printf("友情提示:请输入数字0后按enter键回到主菜单。\n");

  scanf("%d",pb);

  system("cls");

  while(*pb!=0)

  {printf("您输入的指令有误请重新输入:\n友情提示:请输入数字0后按enter键回到主菜单。\n");

  scanf("%d",pb);

  system("cls");   }   }

c语言万年历设计下载如图片无法显示或论文不完整,请联系qq752018766
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©751com.cn 辣文论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。