万年历程序设计.doc

上传人:飞****9 文档编号:136799234 上传时间:2020-07-02 格式:DOC 页数:18 大小:112KB
返回 下载 相关 举报
万年历程序设计.doc_第1页
第1页 / 共18页
万年历程序设计.doc_第2页
第2页 / 共18页
万年历程序设计.doc_第3页
第3页 / 共18页
万年历程序设计.doc_第4页
第4页 / 共18页
万年历程序设计.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

《万年历程序设计.doc》由会员分享,可在线阅读,更多相关《万年历程序设计.doc(18页珍藏版)》请在金锄头文库上搜索。

1、高级语言程序设计高级语言程序设计 课程设计说明书课程设计说明书 设计题目:编写万年历系统设计题目:编写万年历系统 目目 录录 第第 1 1 章章 需求分析需求分析.3 3 第第 2 2 章章 概要设计概要设计.3 3 第第 3 3 章章 详细设计详细设计.6 6 第第 4 4 章章 运行结果及分析运行结果及分析.1313 第第 5 5 章章 课程设计心得课程设计心得.1818 参考文献参考文献.1818 第 1 章需求分析 (1)程序运行时,首先给出六个菜单选项和输入提示: 图图 1 (2)用户可以通过主菜单选择不同选项。输入 1,通过输入具体日期 可显示该日的星期;输入 2,通过输入年份可判

2、断是否是闰年;若输入 3,打印某年的年历;输入 4,打印某年某月的日历;输入 5,查询某月 的最大天数;输入 6,退出。 第 2 章 概要设计 1闰年的判断:闰年的判断: 计算所输入的年份是否可被 4 整除,若不能被整除,为平年。若可 被 4 整除,计算此年份能否被 100 整除,不能被 100 整除则为闰年。既 能被 4 整除,也能被 100 整除的年份,若也能被 400 整除,则为闰年, 否则为平年。闰年 366 天,平年 365 天 图图 2 代码:代码: int runnian(int year) if(year%4=0 else return 0; 2 判断某月的天数;判断某月的天数

3、; 通过函数:通过函数: int day1(int year,int month) int a12=31,28,31,30,31,30,31,31,30,31,30,31; 若为闰,则二月为 29 天。 图图 2-1 代码:代码: if(runnian(year) a1=29; 3.打印年历打印年历 第 3 章详细设计 #include #include bool isLeapyear( int nowYear ); int calcuWeek( int totalDays ); int calcuDays( int nowYear,int nowMonth,int nowDay ); boo

4、l checkValid( int nowYear,int nowMonth,int nowDay ); void nowMonthprint( int nowYear,int nowMonth,int nowDay ); void weekDayPrint( int nowYear,int nowMonth,int nowDay ); void nowYearprint( int nowYear ); void menuPrint(); const int leapDay12=31,29,31,30,31,30,31,31,30,31,30,31;/存储闰年每月天数 const int no

5、leapDay12=31,28,31,30,31,30,31,31,30,31,30,31;/存储非闰年每月天 数 int main() int year,month,day; while( true ) menuPrint(); int op; scanf(%d, switch( op ) case 1: printf(请输入年月日(格式为 YYYY-MM-DD):); scanf(%d-%d-%d, if ( checkValid(year,month,day) ) weekDayPrint(year,month,day); else printf(输入错误!退出操作n); break;

6、break; case 2: printf(请输入需要查询的年份:); scanf(%d, if( year 9999 | year 9999 | year 9999 | year 12 | month 0 ) printf(年份及月份输入错误!退出操作nn); break; if ( isLeapyear(year) maxdays = leapDaymonth-1; else maxdays = noleapDaymonth-1; printf(%d 年%d 月最大天数为%dnn,year,month,maxdays); break; case 6: printf(退出系统,谢谢使用nn)

7、; return 0; break; return 0; bool isLeapyear( int nowYear ) / 判断是否闰年 if( nowYear%4 = 0 else return false; bool checkValid( int nowYear,int nowMonth,int nowDay )/ 输入合法性检查 if ( nowYear = 0 ) printf( 输入年份不合法!); return false; if ( nowMonth 12 ) printf(输入月份不合法!); return false; if ( nowDay 31 return false

8、; if ( nowDay 30 return false; return true; int calcuDays( int nowYear,int nowMonth,int nowDay )/ 计算总天数 int days = 0; int mon = 0; for ( int i = 1;i nowYear;i+ ) if( isLeapyear( i ) ) days += 366; else days += 365; for ( int j = 1;j nowMonth;j+ ) if ( isLeapyear(nowYear) ) mon = mon + leapDayj-1; el

9、se mon = mon + noleapDayj-1; days = days + mon + nowDay; return days; int calcuWeek( int totalDays ) / 计算星期几 int weekNo = totalDays%7; return weekNo; void weekDayPrint( int nowYear,int nowMonth,int nowDay ) /打印某年某日星期几 int days = calcuDays(nowYear,nowMonth,nowDay); int weekNo = calcuWeek( days ); swi

10、tch ( weekNo ) case 0: printf( %-4d 年%-2d 月%-2d 日是星期天!,nowYear,nowMonth,nowDay); break; case 1: printf( %-4d 年%-2d 月%-2d 日是星期一!,nowYear,nowMonth,nowDay); break; case 2: printf( %-4d 年%-2d 月%-2d 日是星期二!,nowYear,nowMonth,nowDay); break; case 3: printf( %-4d 年%-2d 月%-2d 日是星期三!,nowYear,nowMonth,nowDay);

11、break; case 4: printf( %-4d 年%-2d 月%-2d 日是星期四!,nowYear,nowMonth,nowDay); break; case 5: printf( %-4d 年%-2d 月%-2d 日是星期五!,nowYear,nowMonth,nowDay); break; case 6: printf( %-4d 年%-2d 月%-2d 日是星期六!,nowYear,nowMonth,nowDay); break; printf(nn); void nowMonthprint( int nowYear,int nowMonth,int nowDay ) / 打印

12、月历 int monthDay; int days = calcuDays(nowYear,nowMonth,1); int weekNo = calcuWeek(days); if ( isLeapyear(nowYear) ) monthDay = leapDaynowMonth-1; else monthDay = noleapDaynowMonth-1; printf( -%4d 年%02d 月-n,nowYear,nowMonth ); printf( %-5s%-5s%-5s%-5s%-5s%-5s%-5sn,天,一,二,三,四,五,六 ); for ( int j = 1; j

13、= monthDay; j+ ) if ( j = 1) for ( int k = 0;k weekNo;k+ ) printf(%-5s, ); if ( nowDay = j ) printf(*%-4d,j ); else printf( %-5d,j); if ( weekNo%7 = 6 ) printf(n); weekNo = calcuWeek(days+j) ; printf(n); void nowYearprint( int nowYear ) / 打印年历 int monthDay; for ( int i = 0; i 12; i+ ) int days = calcuDays(nowYear,i+1,1); int weekNo = calcuWeek(days); if ( isLeapyear(nowYe

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 学术论文 > 管理论文

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号