C语言程序设计万历.doc
《C语言程序设计万历.doc》由会员分享,可在线阅读,更多相关《C语言程序设计万历.doc(35页珍藏版)》请在三一办公上搜索。
1、综合性程序设计报告设计题目: 万年历 指导教师: 班 级: 学 号: _ 设 计 者: 成 绩: 设计时间: 2012年 6 月 8 日题目描述用于利用计算机实现万年历功能,包括日期对星期的转换,根据指定日期对N天后是什么日期的计算。和显示当前日期,纪念日提醒等功能。主要功能:1. 日期推算2. 日期显示3. 纪念日提醒功能模块分解及说明根据题目要求,可以用结构体实现,这个系统可以分为:年历显示、月历查询、日期查询和日期推算四个部分。其中在日期查询中包括纪念日提醒。(1) 主函数main()主函数利用while(1)循环使得执行完每个部分之后还能回到主菜单,并利用switch函数当输入不同的值
2、时调用不同的模块。主函数如下:void main() /*主函数*/ int year,month,day,select; while(1) dushijian(); printf(n); getmenu(); printf( 请输入相应数字:); /*菜单选择 */ scanf(%d,&select); system(cls); switch(select) case 1: /*当选择为1时显示年历*/ printf( 年历显示:输入年(如2011):); scanf(%d,&year); if(year0&year0&year=1&month0&year=1&month=1&day=max
3、Day(year,month) display3(year,month,day); printf( 提示 按PageUp:前一天 按PageDown:后一天 按其他键:返回菜单nn); setDay3( year,month, day); else system(cls); printf( 输入无效,重新输入!n); break; case 4: /*当选择4时为日期推算*/ riqituisuan(); break; case 5: exit(0); default: /*当输入其他数字时,输入无效,重新输入*/ system(cls); printf( 输入无效,重新输入!n); (2)
4、年历显示 用来显示某一年的日历。void display1(int year) /*输出年历*/ int i; printf(n); for(i=1;i=12;i+) printf(%d 年 %d 月nn ,year,i); display(year,i); 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 %4sn,Sun,Mon,Tue,Wed,
5、Thu,Fri,sat); for(i=0;inumber;i+) printf( ); /*1号前的星期补空格*/ while(j=max) printf(%6d,j); if (i%7=6) printf(n); /* 每7格换一行*/ i+; j+; printf(nn);(3) 输出月历 void display2(int year,int month) /*输出月历*/ printf(n%d 年 %d 月n ,year,month); display(year,month); void display(int year ,int month) /*输出年月*/ int max,num
6、ber,i,j=1; max=maxDay(year,month); number=week(year,month,1); printf( %4s %4s %4s %4s %4s %4s %4sn,Sun,Mon,Tue,Wed, Thu,Fri,sat); for(i=0;inumber;i+) printf( ); /*1号前的星期补空格*/ while(jtm_year) ; month1=(1+p-tm_mon) ; day1=(p-tm_mday); /*获取系统时间year1、month1、day1分别为年、月、日*/ days0=(year-1)*365+(year-1)/4-(
7、year-1)/100+(year-1)/400+eachyeartotal(year,month,day); days1=(year1-1)*365+(year1-1)/4-(year1-1)/100+(year1-1)/400+eachyeartotal(year1,month1,day1); days=days0-days1; /*计算出两个日期之间的时间差*/ printf(n 今天距%d年%d月%d日还有%d天nn,year,month,day,days); return days; void whatweek(int year,int month,int day) /*判断是星期几
8、*/ int number; number=(year-1)+(year-1)/4-(year-1)/100+(year-1)/400+eachyeartotal(year,month,day); number=number%7 ; switch( number) case 0: printf( n %d年%d月%d日是星期日,year,month,day);break; case 1: printf( n %d年%d月%d日是星期一,year,month,day);break; case 2: printf( n %d年%d月%d日是星期二,year,month,day);break; ca
9、se 3: printf( n %d年%d月%d日是星期三,year,month,day);break; case 4: printf( n %d年%d月%d日是星期四,year,month,day);break; case 5: printf( n %d年%d月%d日是星期五,year,month,day);break; case 6: printf( n %d年%d月%d日是星期六,year,month,day);break; default: system(cls); printf( 出现错误!n ); void jieri(int month,int day) /*判断是否公历节日*/
10、 if(month=1) switch(day) case 1: printf(,这天是元旦); if(month=2) switch(day) case 14: printf(,这天是情人节); if(month=3) switch(day) case 8: printf(,这天是妇女节); break; case 12: printf(,这天是植树节); if(month=4) switch(day) case 1: printf(,这天是愚人节); if(month=5) switch(day) case 1: printf(,这天是劳动节); break; case 4: printf
11、(,这天是青年节); if(month=6) switch(day) case 1: printf(,这天是儿童节); if(month=7) switch(day) case 1: printf(,这天是建党节); if(month=8) switch(day) case 1: printf(,这天是建军节); if(month=9) switch(day) case 10: printf(,这天是教师节); if(month=10) switch(day) case 1: printf(,这天是国庆节); (5) 日期推算 if (info/10000000)0) xyear = info
12、/10000;xmonth = (info - xyear*10000)/100;xday = info - xyear*10000 - xmonth*100;printf(您要查询的是%d年%d月%d日。n,xyear, xmonth, xday);counter = getwDay(xyear,xmonth,xday);printf(%d年%d月%d日是星期,xyear, xmonth, xday);if (counter = 0)counter = 7;printf(%dn, counter);day_differ = The_day(xyear,xmonth,xday);printf(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 万历
链接地址:https://www.31ppt.com/p-2384715.html