版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、中国海洋大学青岛学院c语言课程设计报告书题 目日历显示学生姓名指导教师学 院专业班级组内分工姓名主要任务占系统比例日期判断,日期调整 50%日期查询,闰年判断,主函数 50%目 录1 前言12 需求分析23 模块设计图及组内分工34 ns流程图清单55 存储结构及函数说明86 课程设计结果97 实践心得体会14iiiiiic语言课程设计报告前言设计目的:1 加深对c语言程序设计课程所学知识的理解,进一步巩固c语言语法规则。学会编制结构清晰、风格良好、数据结构适当的c语言程序,从而具备解决综合性实际问题的能力。2 对题目的理解:1. 本程序设计了一个比较完整的有一定功能的日历显示系统。2. 该题
2、目要求熟练的掌握c语言的基本知识。中包括数据类型(int、char);运算类型(算术运算、逻辑运算、自增运算、赋值运算等);程序结构(顺序结构、判断选择结构、循环结构),进一步掌握各种函数的应用,包括时间函数等。2 需求分析该系统共有四个大部分:日历显示功能、日历查询和闰年判断功能、参数检查功能、选做(通过键盘操作选择各个菜单)。本系统通过对某天的查询、闰年的判断,日期的合法性判断,日期的调整等各部分进行了有效的计划,组织和控制,得到了一个功能比较完整并能实现一定功能的日历显示系统。日历显示功能:判断星期,根据公式有年月日判断星期:打印时,通过第一天星期的判断,得到后面的日期,通过定长度输出。
3、对于初始输入当前日历,可通过函数取出系统时间进行初始化。日历查询和闰年判断功能: 闰年的判断,日期的查询,就是直接打印该天所在月份的日历。参数检查功能: 判断日期是否合法,如果合法,再判断闰年,之后判断二月份是否满足要求。如果输入不合法或者不满足输入要求,则要求重新输入。选做(通过键盘操作选择各个菜单): 捕获键盘的输入,再判断哪个键的输入,根据某键的输入,则设置相应的年或月或日的值,再属性输出,则可以实现日期的调整。3 模块设计图及组内分工模块一:日历显示功能判断星期,根据蔡勒公式,有年月日判断星期:nday=year-1+(year-1)/4+(year-1)/400+ndayw=nday
4、%7;其中year:要查询的年份,nday:从该年的一月一日起到该天的天数,w:得出的星期数,w=0代表星期天打印月历时,通过第一天星期的判断,依次得到后面的日期,通过定长度输出,遇到星期六就换行输出,因此可以按照月历的格式输出。对于初始输入当前日历,可以通过中的time和localtime函数取出系统时间进行初始化。time_t timer;struct tm *gmt;time(timer);gmt=localtime(&timer); gmt就是一个时间结构体,可以从中取出年月日。模块二:日历查询和闰年判断功能 闰年的判断,能被4整除但不能被100整除,或者能被400整除的年份为闰年,否
5、则为平年。日期的查询,就是直接打印该天所在月份的日历。模块三:参数检查功能 判断日期是否合法,可以先判断年月日是否有小于0的值,月和日是有超出最大值12和31,如果通过此判断合法,再判断是否是闰年,如果是闰年,则判断二月份是否满足要求,闰年二月不能超过29天,平年二月不能超过28天。再查询过程中,如果发现输入不合法或者不满足输入要求,则要求重新输入。模块四:选做(通过键盘操作选择各个菜单) 通过两个getch();捕获键盘的输入,将后一个getch()的返回值付给整型或字符型k, k为相应键的assci值,判断assci 值,就可以知道是那个键的输入(包括对上一年,下一年,上一月,下一月,昨天
6、,明天等日期的调整)。若捕获到某键的输入,则设置相应的年或月或日的值,再进行属性输出,就可以实现日期的调整。 4 ns流程图清单模块一用到的ns图: 模块二用到的ns图:模块三用到的ns图:模块四对应的ns图:5 存储结构及函数说明主要函数:int runyear(int year) ;该函数判断某年是否是闰年,参数year表示要判断的年份,返回值1表示该年,为闰年,0表示该年为平年。struct tm *gmt=getday();该函数用以取得系统的时间。该函数没有参数,返回值类型为struct tm *,是一个包含时间的结构体,int dayexame(int year,int month
7、,int day)该函数用以判断输入的年份是否合法,参数为要判断的年月日,返回值为1表示日期合法,为0表示不合法。int getwday(int year,int month,int day)该函数用以根据一个日期推断星期,参数为要判断的年月日。返回值为整型,123456分别表示星期一到星期六,0表示星期天。void setday(int &year,int &month,int &day)该函数调整当前日期,参数为引用类型,分别为当前日期的年月日,没有返回值。void checkcalender()该函数用以显示要查询的日期的月历,无参数和返回值。void inline backmenu()
8、改函数为内联函数,用以实现完成某项功能后按任意字符键返回主菜单,无参数和返回值。void mainmenu(int &year,int &month,int &day)该函数参数为系统日期,无返回值,用户在该函数执行时可以选择功能。6 课程设计结果 1进入程序后显示2按任意字符键返回主菜单3进入主菜单后,按1.,显示当前时间4在主菜单界面按2,进行日立的查询,并经行日期的合法性判断和闰年的判断。例1输入2009 11 6,由于输入合法,会显示月历例2输入2009 11 31,由于输入不合法,会进行报错,要求重新输入此情况下,当输入正确的日期后,就可以显示当前的月历,然返回主菜单5在主菜单输入3,进行日期调整界面,可以通过方向键以及pageup和pagedown进行日期的调整;按上下键后出现以下结果:6在主菜单中输入4,进入帮助界面7在主界面中输入5,程序退出7 实践心得体会 此程序是我们所写的第一个功能比较完整的能实现一定的实际功能的程序,代码比较短,不到250行,实现的功能有显示当前日历,进行某天的查询,闰年的判断,日
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 户外广告牌制作与安装合同
- 建筑分包合同实务操作
- 青岛市地产开发商合同
- 音乐作品著作权的转让协议范例
- 建筑行业劳务派遣合同模板
- 2024年电器附件真空断路器项目成效分析报告
- 2024年辣条项目成效分析报告
- 二年级数学(上)计算题专项练习汇编
- 消防工程服务招投标模板
- 家居产业授权经营的管理办法
- 轻医美技术合作项目协议书范本
- 课件:《中华民族共同体概论》第十五讲:新时代与中华民族共同体建设
- 法律顾问服务投标方案(技术方案)
- 软件系统测试与验收方案
- 中职英语基础模块1课件-U5-Celebrations-1
- 2024年中煤鄂尔多斯能源化工有限公司招聘笔试参考题库含答案解析
- 30题工程造价岗位常见面试问题含HR问题考察点及参考回答
- 2024继续教育《医学科研诚信与医学了研究伦理》答案
- 污水处理药剂采购投标方案(技术方案)
- 特种设备日管控、周排查、月调度模板
- GB/T 5014-2003弹性柱销联轴器
评论
0/150
提交评论