1、 程序设计基础程序设计基础 课程设计课程设计报告报告 题题 目目 万年历系统设计万年历系统设计 专业班级专业班级 学学 号号 姓姓 名名 指导老师指导老师 完成时间完成时间 目 录 1 设计要求 3 2 系统设计 3 2.1 设计思路. 3 2.2 系统功能模块 3 2.3 系统流程图 . 4 2.4 算法设计与描述 5 3 关键程序代码 . 6 4 程序运行结果 . 6 5 总结 . 17 参考文献 17 格式:格式: 一级标题:宋体四号,加粗,单倍行距 二级标题:宋体小四,加粗,单倍行距 正文: 宋体五号,首行缩进 2 个字符, “两端对齐”的对齐方式, 行距 20 磅 1 设计设计要求要
2、求 1) 分析问题并确定解决方案; 2) 确定算法流程,进行功能模块的代码设计; 3) 调试程序,实现系统功能; 4) 完成课程设计报告。 2 系统设系统设计计 2.1 设计思路设计思路 先从系统调用时间, 判断是否是闰年, 再返回当月的天数以及当月的第一天是星期几最 后输出当月的月历 2.2 系统功能模块系统功能模块 万年历系统设计 查 询 某 年 的 年 历 查 询 某 年 的 月 历 查 询 某 日 为 周 几 2.3 系统流程图系统流程图 计算闰年,第一 周 计算闰年,月份 数 计算星期数 输入所查询的年 份 输入所查询年月 输入所查询年月 日 输出该年年历 输出该年月月历 输出该日星
3、期 按键 4 开 始 按键 1 按键 2 按键 3 2 返回上一层 是否继续 返回选择按键界面 返回按键 2 选择功能 返回按键 3 退出,结束程序 是 否 1 继续查询 2.4 算法设计与描述算法设计与描述 2 关键程关键程序序代码代码 #include #include void main(); int JudgeLeapYear(int);/判断闰年 int MonthDay(int m,int y);/计算所输入月份有多少天 int FirstWeek(int m,int y);/计算该月第一周有几天 void printHeader(void);/打印标题 void printMon
4、th(int m);/打印月份 int main1() /输出函数 int year,month,i,test,week; printf(“输入所查询的年份:n“); scanf(“%d“, /system(“cls“); for (month=1; month2006) min=2006; max=year; else min=year+1; max=2006; for(j=min;j=2006) static int t12=31,0,31,30,31,30,31,31,30,31,30,31;/*112 月的每月天数*/ j=month-1; if(leap_year(year) t1=
5、29; else t1=28; for(i=0;ij;i+) sum=sum+ti; else static int t112=31,30,31,30,31,31,30,31,30,31,0,31; /*121 月的每月天数*/ j=12-month; if(leap_year(year) t110=29; else t110=28; for(i=0;i2006) days=(year-2006)*365+count_leap(year)+monthdays(month,year); weekday=days%7; else if(year2006) days=(2005-year)*365+count_leap(year)+monthdays(month,year); weekday=7-days%7; else days=monthdays(month,year); weekday=days%7; for (i=1;i=weekday+2;i+) /*由于上一行打印星期的时候空 2 个制表位, 所以 weekday 要加 2*/ printf (“t“); for (i=1;i=y;i+) if (i+weekday-1)%7=0) printf (“nntt%3dt“,i); else p