您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > C语言课程设计万年历打印
温馨提示程序语言:C、C++、C#、Python(红色字体表示本课设使用的程序设计语言)图形功能选项:Win32控制台程序(黑框、文本界面)、Win32程序、MFC、WinForm、DirectX10(黑体标明表示本课设的程序图形类别,默认为非图形界面Win32控制台程序)数据结构:基础类型、数组、链表、双向链表、搜索树(非平衡二叉树)、平衡二叉树、链表与平衡二叉树相结合、堆栈、队列、串、图(黑体标明表示本课设使用的数据结构)C++语言项:STL库(黑体标明表示使用C++的STL库)编译环境:Windows764位旗舰版(Linux及其他环境请谨慎下载)集成开发环境:VisualC++6.0、DEVC++、CodeBlocks、VisualStudio2015均可通过编译。(若无法通过编译运行,则会用浅蓝色字体表示)分多头文件编译:否(所有代码基本都包含在一个文件内,如需试验头文件功能,请自行参考相关文献)内容说明:1、课设题目及预览内容将在第二页开始展示。2、代码行数:333行3、目录所示内容,本文基本涵盖,如无内容,会在本页进行说明。4、附录绝对包含用户使用手册及程序完整源代码和详细注释。5、如需下载其他头文件(例如DirectX需另行配置),本文会在此进行说明。6、本文撰写内容仅供学习参考,另外,由于本人水平有限,编写之处难免存在错误和纰漏,恳请各位老师或同学批评指正。题目:万年历显示功能要求:(1)输入一个年份,输出是在屏幕上显示该年的日历。假定输入的年份在1940-2040年之间。(2)输入年月,输出该月的日历。(3)输入年月日,输出距今天还有多少天,星期几,是否是公历节日。运行截图:功能(一):功能(二):功能(三):课程设计报告课题:学院:专业:学生姓名:学号:指导老师:20XX年XX月XX日目录摘要......................................................................................................................................................11总体设计...........................................................................................................................................21.1需求分析................................................................................................................................21.2功能流程图............................................................................................................................21.3功能模块图............................................................................................................................32详细设计...........................................................................................................................................42.1数据结构................................................................................................................................42.2函数功能设计........................................................................................................................43调试分析...........................................................................................................................................73.1程序测试................................................................................................................................73.2程序缺陷...............................................................................................................................94总结与体会.....................................................................................................................................10参考文献............................................................................................................................................11附录....................................................................................................................................................121摘要万年历的主要功能是通过C语言编程实现查询某年的日历情况,并且可以查询某年月的日历情况,还可以对某年月日进行计算距今的天数和判断是否为公历节日,其功能和代码满足人性化设计和良好的编程规范要求。关键词:万年历,C语言编程,人性化设计21总体设计1.1需求分析系统将以用户输入的信息进行功能的选择,提供某年日历的输出、某年某月日历的输出和距今天数的输出及节假日的判断这大三功能。1.2功能流程图本程序主要通过获取屏幕输入,然后进行字符串处理,选择相应的功能执行,最后打印输出信息。功能流程图如下:开始输入处理输入信息判断年月年月日运算,计算距今的天数年月运算,准备打印某年某月日历年运算,准备打印某年日历输出结束图1.1功能流程图31.3功能模块图提示信息打印某年日历模块打印某年某月日历模块计算距今天数和判断节日模块图1.2功能模块图42详细设计2.1数据结构建立日历信息结构体,结构体成员变量包括月末、月初星期几、屏幕信息左半边日历是否打印完毕。typedefstructcalendar{intmonth_end;//月末最后一天的数字intfirst_day;//月初星期几0周日1周一......intprintFinished;//打印完毕则为1,没打印完成则为0}Calendar;建立年月日信息结构体,结构体成员变量包括年份、月份、天数。typedefstructdate{intyear;intmonth;intday;}Date;2.2函数功能设计本万年历系统主要分为三大功能,分别是打印某年日历、打印某年某月日历、打印距今天数和判断是否节假日,故分别设计三个函数实现三大功能,如下所示。voidfirstFun(intyear,Calendarcal[]);//第一功能voidsecondFun(intyear,intmonth,Calendarcal[]);//第二功能voidthirdFun(intyear,intmonth,intday);//第三功能各程序流程图如下:5图2.1程序流程图(一)是否firstFun()函数开始判断是否打印了6和12月份打印某月日历结束图2.2程序流程图(二)是否secondFun()函数开始判断是否月末的天数打印某月某日的日历结束6图2.3程序流程图(三)thirdFun()函数开始判断是否节假日打印信息结束计算距今天数73调试分析3.1程序测试运行程序之后,会进入主界面,如图3.1所示。图3.1主界面图随后,可分别通过输入年、年月、年月日实现三个功能的输出,具体如图3.2~3.4所示。图3.2打印某年日历图8图3.3打印某年月日历图图3.4计算距今天数图93.2程序缺陷1、该程序每次运行,只能执行一次,不能重复选择功能,属于设计缺陷。2、对年份的不规范输入,可能出现与预期结果不一致的情况,如图3.5所示,理论应该输出12345年的日历,然而只是输出了12345年5月的日历,属于程序漏洞。图3.5BUG展示图104总结与体会这个课程设计的难度在于打印输出日历,在设计过程中遇到问题,可以说是困难重重,因为毕竟是第一次做的,难免会遇到各种各样的问题,同时在设计过程中我也发现了自己的不足之处,对以前所学过的知识理解的不够深刻,掌握的不够牢固。通过这次课程设计之后,我觉得以前学过的知识要重新温习才能够达到查漏补缺的效果。我会在今后的日子里,努力学好程序设计,成为一名出色的工程师。最后,这次的课程设计终于得以圆满完成。其中,我在设计中也遇到了许许多多的问题,但在老师的指导和同学们的帮助下得到了解决,总的来说还不是这个程序还不是很完善,但我不会放弃继续完善这份程序,我会在课余时间里继续修改完善这份程序。在此,感谢所有帮助过我的同学和指导老师。11参考文献[1]谭浩强著.C程序设计(第四版).北京:清华大学出版社,2010[2]林锐著.高质量C编程指南.北京:电子工业出版社,2001[3]StephenA.Maguire.编程精粹:编写高质量C语言代码.人民邮电出版社,200912附录用户使用手册1、根据屏幕提示,输入即可。2、输入年份,例如2018年,则会打印2018年的日历。3、输入年月,例如201810(也可以尝试其他的分隔符,例如2018,10),则会打印2018年10的日历。4、输入年月日,例如2018101(同上),则会输出距今的天数和输出具体的节假日。程序源代码#includestdio.h#includestdlib.h#includetime.h#includestring.h#defineisPrime(year)((year%4==0&&year%100!=0)||(year%400==0))//宏函数,判断是否为闰年#defineTWELVEMONTH12//数组大小#pragmawarning(disable:4996)//消除VisualStdio编译环境的安全警告,其他编译环境可删除//------------------------------//----------结构体定义区---------//------------------------------typedefstructcalendar{intmonth_end;//月末最后一天的数字intfirst_day;//月初星期几0周日1周一......intprintFinished;//打印完毕则为1,没打印完成则
本文标题:C语言课程设计万年历打印
链接地址:https://www.777doc.com/doc-5607135 .html