C++课程设计报告(2013--2014年度第二学期)日历管理器的开发系统的设计专业学生姓名班级学号指导教师完成日期2014年7月3日日历管理器系统的设计目录目录......................................................................................................................21概述...................................................................................................................11.1课程设计目的....................................................................................................11.2课程设计内容....................................................................................................12系统需求分析.........................................................................................................12.1系统目标............................................................................................................12.2主体功能............................................................................................................12.3开发环境............................................................................................................23系统概要设计.........................................................................................................23.1系统的功能模块划分........................................................................................23.2系统流程图.........................................................................................................44系统详细设计.........................................................................................................54.1系统主页面设置.................................................................................................54.2更改模块设计.....................................................................................................54.3判断模块设计.....................................................................................................6试结5测试................................................................................................................75.1测试方案............................................................................................................75.2测果....................................................................................................................76小结.........................................................................................................................9参考文献..................................................................................................................11附录....................................................................................................................12附录1源程序清单..................................................................................................12C++课程设计报告(2011)1日历管理器系统的设计1概述1.1课程设计目的1、巩固并加深学生对C++语言程序设计知识的理解;2、培养我面向对象的程序设计思想,使我们认识面向过程和面向对象两种设计方法的区别;3、进一步掌握和应用VC++6.0集成开发环境;4、提高运用C++语言解决实际问题的能力;5、初步掌握开发小型实用软件的基本方法,能独立设计、实现具有实际功能的小系统;6、掌握书写程序设计开发文档的能力。1.2课程设计内容仿现实生活中的挂历,显示日历。当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几);当系统日期变到下一月时,系统自动翻页到下一月。根据用户输入的年份,自动产生每个月的日期列表。自定义显示日历的形式。2系统需求分析2.1系统目标建立电子日历,显示当前月的每一天,当日期变更时,可以自主生成新的日历表!2.2主体功能1)当前页以系统当前日期的月份为准,显示当前月的每一天(显示出日及对应的星期几),当系统日期变到下一月时,系统自动翻页到下一月。2)可以实现日期的加法运算,即在日期相加的菜单选项中增加日期加天数,结果为新日期。3)根据用户输入的年份,自动产生每个月的日期列表。包括输入非法数据(如负数、日期超过31天等情况)的识别显示功能。日历管理器系统的设计22.3开发环境VC++6.03系统概要设计3.1系统的功能模块划分日历系统设计的主要模块分为:查询年份月份模块、查询平年闰年模块、判断星期几模块、计算总天数模块、计算月份第一天为星期几模块等模块。日历功能模块划分查询年份月份模块查询平年闰年模块判断星期几模块输入年月输入年月日输入年查询某年输入年输出该月的月历输出该年各个月的月历输出该年是闰年或平年输出是星期几选择C++课程设计报告(2011)3图3-1系统模块划分图3-2判断是否为平年闰年模块图3-2系统流程开始结束载入程序通过日期和时间函数返回并显示当前日期手动设置需要查看的日期通过系统日期函数返回日期开始结束输入年份闰年不是闰年Y/N是否要继续操作Y返回日历管理器系统的设计43.2系统流程图否C++课程设计报告(2011)54系统详细设计4.1系统主页面设置设计思路:首先判断某一年是否为闰年,若是,则二月输出为二十九天,如果不是,二月输出为二十八天。再判断系统当前月份是一个大月还是小月,如果是大月,则输出三十一天;如果是小月,则输出三十天。通过定义一个结构体,用对对象指针的访问来实现从系统自动获取时间为程序所用。再利用一个函数计算出每月的第一天是星期几。根据判断的大月和小月,通过控制符控制输出流格式(设置字段)宽度,把该日期以前的位置用空格补上,并从改日起依次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以七得零换行,即可完整的输出该月的日历。C++中一般会使用cout和cin时的默认格式。但有时人们在输入输出时有一些特殊的要求,如在输出实数时,要规定字段宽度,只需要保留两位小数,数据向左或向右对齐等。C++提供了在输入输出流中使用的控制符。需要注意的是:如果使用了控制符,在程序单位的开头,除了要加iostream头文件外,还要另外加iomanip头文件。4.2显示模块设计显示日历输出格式和界面。Year显示年份Month显示月份;Day显示日期4.3更改模块设计判断年份,当年份小于你输入值时,则报错。判断年份,当年份小于或大于你输入值时,则报错。首先判断输入的年份是否为闰年,在根据输入的月份判断输入的日期是否正确加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。日历管理器系统的设计64.4判断模块设计用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。判断年份,当年份小于你输入值时,则报错。判断年份,当年份小于或大于你输入值时,则报错。首先判断输入的年份是否为闰年,在根据输入的月份判断输入的日期是否正确加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为355。然后判断输入的年是否为定义年,若是,令总天数S=1,否则,用累加法计算出定义年到输入年之间的总天数,再把输入年的一月到要输出的月份之间的天数累加起来,若该月是闰年中的月份并且该月还大于二月,再使总天数加1,否则,不加,既算出从定义年一月一日到输出年的该月一日的总天数。4.5自定义模块设计当按下q时,退出程序while((key=_getch())!='q')用W键时日期向前推移天if(day7)day-=7;用s键时日期向后推移天if(day=((Wether_RN())?month_days_R[month-1]:month_days_NR[month-1])-7)day+=7;用a键时日期向前推移天if(day1)day-=1;用d键时日期向后推移天if(day=((Wether_RN())?month_days_R[month-1]:month_days_NR[month-1])-1)day+=1;调用Seatch_date函数,对年月日进行重置Search_date(y,m,d)C++课程设计报告(2011)7试结5测试5.1测试方案1.执行代码;2.按功能要求,调试程序;5.2测果1.输入界面5-12.执行程序:输入年份,显示每一个月的日期表日历