




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C 语言课程 设计报告 题目:编写万年历系统编写万年历系统 年级: 专业: 班级: 姓名: 学号: 目目录录 第 1 章 设计目的 第 2 章 需求分析 第 3 章 概要设计 第 4 章 源程序清单 第 5 章 执行结果 1)登陆界面 2 2)显示当前日月历 3)显示具体日期信息 第 6 章程序问题调试与课程设计心得 第第 1 章设计目的章设计目的 设计目的(实验要求): 1.模仿现实生活中的挂历. 2.当前页以系统当前日期的月份为准显示当前月的每一天(显示 出日及对应的星期几). 3.当系统日期变到下一月时,系统自动翻页到下一月. 第 2 章需求分析 (1)程序运行时,首先给出菜单选项和输入
2、提示: (2)用户可以通过主菜单选择不同选项。输入 1,通过输入当前日期可显 示当前月的日历;输入 2,通过输入具体日期(中间以空格分开)可显示该 日具体信息;输入 3,则退出查询系统。 第 3 章 概要设计 输入具体日期 1菜单选择界面可通过下面所示函数时现; 主要思路: 通过 while 语句与 swichcase 以及 if 条件语句实现菜单的循环功能和不同选 项的功能实现。 闰年与平年的判断: 代码如下: void main() int year,month,day,a,b; while(1) printf(nnnn); printf( *nn); printf( * * n); 开始
3、 输入指令 3.退出出、 、 判断是否为闰年 1.当前日期 月 2.具体日期 信息 输入要查询的当 前日期 printf( Welcome to enter calendar system n); printf( * * nn); printf( *nnn); printf( 1 The month of current date 2 Date 3 Exitn); printf( please import your choose,press Enter to define: ); scanf(%d, switch(b) case 1: printf(n Please import the y
4、ear,month and day which you want to check,the year,month and day separation by blank space: ); scanf(%d%d%d, a=x3(year,month,1); if(a=0) printf(Error!Please import again.n); break; yueli(year,month,day); break; case 2: printf(n Please import the year,month and day which you want to check,the year,mo
5、nth and day separation by blank space: ); scanf(%d%d%d, a=x3(year,month,day); if(a=0) printf(Error!Please import again.n); break; rili(year,month,day); break; case 3: exit(0); default: printf(Error!Please import again.nn); 2.闰年的判断: 计算所输入的年份是否可被 4 整除,若不能被整除,为平年。若可被 4 整除,计算此年份能否被 100 整除,不能被 100 整除则为闰年
6、。既能被 4 整 除,也能被 100 整除的年份,若也能被 400 整除,则为闰年,否则为平年。 闰年 366 天,平年 365 天 代码: int runnian(int year) if(year%4=0 else return 0; 3.判断某月的天数; 通过函数: int day1(int year,int month) int a12=31,28,31,30,31,30,31,31,30,31,30,31; 若为闰,则二月为 29 天。 第 4 章 源程序清单 #include #include/*定义头文件*/ int runnian(int year) if(year%4=0 e
7、lse return 0; int day1(int year,int month) int a12=31,28,31,30,31,30,31,31,30,31,30,31;/*定义数组确定 12 个月每个 月的天数*/ if(runnian(year) /*如果输入年份是闰年*/ a1=29; /*二月 29 天*/ return amonth-1; int day2(int year,int month,int day) int i,sum=0; for(i=1;imonth;i+) sum+=day1(year,i); sum+=day; return sum; int week1(in
8、t year,int month,int day) int number=(year-1)+(year-1)/4-(year-1)/100+(year- 1)/400+day2(year,month,day); number%=7; return number; char *Week2(int number) switch(number) /*分类一周七天*/ case 0:return Sunday; case 1:return Monday; case 2:return Tueaday; case 3:return Wednesday; case 4:return Thurday; cas
9、e 5:return Friday; case 6:return Saturday; default:return Error!please import again.n;/*不符和上面七种情况的报 错提示*/ void x1(int year,int month,int day) int number=week1(year,month,day); if(runnian(year)printf(common year);/*年份为闰年则输出闰年*/ else printf(common year); printf( %d year %d month %d day%10snn,year,mont
10、h,day,Week2(number);/*按年 月 日输出结果*/ void x2(int year,int month) int max,number,i,j=1; max=day1(year,month); number=week1(year,month,1); printf(%2s%2s%2s%2s%2s%2s%2sn, Sunday , Monday , Tueaday, Wednesday , Thurday , Friday ,Saturday );/*按照间隔打印日历*/ for(i=0;inumber;i+) printf( ); while(j=max) printf(%8
11、d,j); if(i%7=6) printf(n); i+; j+; printf(nn); int x3(int year,int month,int day) if(year0|month12|dayday1(year,month) /*当输入值出现 这些情况时*/ return 0; /*返回 0*/ else return 1; /*返回 1*/ void yueli(int year,int month,int day) if(runnian(year) printf(leap year); else printf(common year); printf( %d year %d m
12、onth %d daynn,year,month,day); x2(year,month); void rili(int year,int month,int day) printf(n); x1(year,month,day); void main() int year,month,day,a,b; while(1) printf(nnnn); printf( *nn); printf( * * n); printf( Welcome to enter calendar system n); printf( * * nn); printf( *nnn); printf( 1 The mont
13、h of current date 2 Date 3 Exitn); printf( please import your choose,press Enter to define: ); scanf(%d, switch(b) case 1: /*选择 1 时*/ printf(nPlease import the year,month and day which you want to check,the year,month and day separation by blank space: ); /*给出输入提 示*/ scanf(%d%d%d, /*输入需要查询 的年 月 日*/
14、a=x3(year,month,1); if(a=0) printf(Error!Please import again.n);/*输入值异常 时报错*/ break; yueli(year,month,day); break; case 2: /*选择 2 时*/ printf(nPlease import the year,month and day which you want to check,the year,month and day separation by blank space: ); /*给出输 入提示*/ scanf(%d%d%d,/*输入年 月 日*/ a=x3(ye
15、ar,month,day); if(a=0) printf(Error!Please import again.n);/*输入值 异常时报错*/ break; rili(year,month,day); break; case 3: exit(0); default: printf(Error!Please import again.nn); 第 5 章 执行结果 1)登陆界面 2 2)显示当前日历月 3)显示具体日期信息 第 6 章程序问题调试与课程设计心得 1)程序问题调试 (1) 调用的 week2 函数中,忘记在万年历中一周的第一天是 sunday。 (2)定义的 runnian 语句中没有返回值,无法判断是否为闰年。 (3)定义的 x1 与 x2 函数实现的功能时混淆。 (4)被调用函数 X3 中的返回值要用于主调函数中的判断,但是未在主调函数 中赋值给整型变量。 (5)对于数组,数组的初始化要进行正确的赋值,以及对于数组的使用与变更。 (6)程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年辅导员招聘考试题库-校园文化建设案例设计试题
- 智能化改造对城市污水处理厂智能化升级改造的技术路径研究报告
- 艺术市场数字化交易平台在2025年的艺术品市场数据安全与隐私保护研究报告
- 科技企业孵化器建设资金申请项目资金使用绩效评价报告
- 2025年科技互联网行业企业品牌建设策略研究报告
- 便利店行业新零售战略布局与转型路径分析报告
- 2025年工业互联网平台边缘计算硬件架构优化与智能停车场竞争格局分析报告
- 农产品品牌文化塑造2025年市场推广策略研究报告
- 合同评审注意要点
- 新能源与环保:节能环保建筑材料在绿色建筑中的应用报告
- 2025至2030中国晶圆激光隐形切割机市场发展现状及前景趋势研究报告
- 冶金企业安全月培训课件
- 2025年CSCO胰腺癌诊疗指南解读
- 2025新疆三支一扶真题
- 芭蕾动作损伤预防策略-深度研究
- 2024-2025学年河南省郑州市高一上册第一次月考数学检测试题
- 2025-2030年新能源汽车充电站合作行业深度调研及发展战略咨询报告
- 2025年山东省兖矿集团公司招聘笔试参考题库含答案解析
- 珠宝加工师傅聘用合同样本
- 宫颈癌术后护理常规
- 绿色农业种植技术推广应用
评论
0/150
提交评论