




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、万年历系统一设计目的 通过万年历程序的设计,培养学生综合利用C+语言进行程序设计的能力,加强函数的运用及学生对软件工程方法的初步认识,提高软件系统分析能力和程序文档建立、归纳总结的能力,培养学生利用系统提供的标准函数及典型算法进行设计。 通过本项课程设计,可以培养独立思考、 综合运用所学有关相应知识的能力,能更好的巩固面向对象程序设计C+课程学习的内容,掌握工程软件设计的基本方法,强化上机动手编程能力,实现理论与实践相结合。二. 设计要求模仿现实生活中的挂历:1)当前页以系统当前日期的月份为准显示当前月的每一天(显示出日及对应的星期几);2)当系统日期变到下一月时,系统自动翻页到下一月。(可用
2、菜单选择)三 设计背景C+教学起步的背景 1996年,国外计算机产业界正在全面兴起面向对象编程与设计的热潮,其主要工具就是C+。C+在数据类型的安全上,弥补了C的不足,克服了C的种种安全隐患,用C+开发的产品正在稳步上市,并开始超过了C。C+的开发工具正在稳步推出,在Windows环境下的两个主要C+开发工具Borland C+ Builder40和Microsoft Visual C+60标志着C+开发工具已经成熟。面向对象的程序设计是现在最流行的程序设计方法。面向对象的方法模仿人们建立现实世界模型的方法,认为客观世界是由各种各样的对象组成的,每个对象都有各自的内部状态和运动规律,不同对象之
3、间的相互作用和联系就构成了各种各样的系统。利用人们对事物分类和抽象的自然倾向,引进了类的概念,具有封装性、继承性和多态性等特点。 在C+中,类是指由用户定义的一种抽象数据类型,将一组具有相关性的数据成员结合在一起,要使用类中所包含的数据时,必须通过有该类所提供的成员函数来存取。本次课程设计的程序开发环境是:a.开发工具 Microsoft Visual C+ 6.0b.系统环境 Windows xp四课程设计主要内容1.功能描述1)打开系统自动显示系统当前时间,包括年月日时分等信息;2)根据菜单提示选择所要查询的方式:显示某年某月的日历 ;查询该年的日历;退出系统。2.算法描述 平年365天(
4、52周+1天),闰年366天(52周+2天)。平年2月28天,闰年2月29天。由于公元1月1日设为星期六,故3月1日为星期三。 每400年整一闰,或每4年且不为百年的一闰。 每 4年(3个平年+1个闰年)共208周+5天。3.算法及公式推导 某平年3月1日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7 某闰年3月1日星期几=(年+年/4+月星期表+日+2天)%7 某日星期几=(百年%4*5天+年+年/4+月星期表+日+2天)%7 总天数的算法:首先用if语句判断定义年到输入年之间每一年是否为闰年,是闰年,该年的总天数为366,否则,为365。用累加法计算出定义年到输入年之间的总
5、天数,再把输入年的一月到要输出的月份之间的天数累加起来,既算出从定义年一月一日到输出年的该月的总天数。 输出月份第一天为星期几的算法:使总天数除以7取余得几既为星期几,若是7,则为星期日。 算出输出月份第一天为星期几的算法:算出输出月份第一天为星期几后,把该日期以前的位置用空格补上,并总该日起一次输出天数直到月底,即可完整的输出该月的日历。五主要模块的算法描述5.1 整体流程图开始输出当前日期 输出菜单显示,进行功能选择显示该月的日历显示该年的万年历123退出系统结束图1.系统流程图5.2 系统功能模块图万年历系统打印当前日期闰年判断日期查询日期判断日期打印图2.功能模块图5.3 各模块功能详
6、细说明5.3.1 打印当前日期本模块是用来显示当前的时间。详细代码如下:time_t t;/显示当前时间 struct tm *pnow = NULL; t = time(&t); pnow = localtime(&t);cout 现在是:tm_year + 1900 年 tm_mon + 1 月 tm_mday 日 星期tm_wday tm_hour :tm_min :tm_sec endl;5.3.2 闰年判断本模块是用来判断输入年份是否为闰年。详细代码如下:bool Date:IsLeap(int year)/判断是否是闰年if(year%400=0|(year%100!=0&year
7、%4=0)return 1;else return 0;5.3.3 日期查询本模块是用来查询输入的年月日是否在可查询范围内,判断是否可用。详细代码如下:void Date:SetDate(int yy,int mm,int dd)/日期查询判断 coutyymmdd;if(yy=0)coutYear value error!endl;exit(1);if(mm12)coutMonth value error!=1&dd=30) day=dd;elsecoutDay value error!=1&dd=29) day=dd;else coutDay value error!=1&dd=28) d
8、ay=dd;else coutDay value error!=1&dd=31) day=dd; elsecoutDay value error!endl;5.3.4日期判断本模块是用来对输入的日期判断是星期几的,其中包括getdays与showweek两个函数。详细代码如下:int Date:getdays(int year,int month,int day)/判断日期,计算总天数int i,sum=0;for(i=1;iyear;i+)if(IsLeap(i) sum+=366;else sum+=365;if(IsLeap(year) dayofmonth2=29;for(i=1;im
9、onth;i+) sum+=dayofmonthi;sum+=day;return sum;void Date:showweek() /判断是星期几int s;s=getdays(year,month,day)%7; switch(s)case 0:coutSundayendl;break;case 1:coutMondayendl;break;case 2:coutTuesdayendl;break;case 3:coutWednesdayendl;break;case 4:coutThursdayendl;break;case 5:coutFridayendl;break;case 6:c
10、outSaturdayendl;break;5.3.5 日期打印本模块是用来输出查询的某月日历以及某年的万年历,其中包括printmonth和printyear两个函数。详细代码如下:void Date:printmonth() /打印查询的月的日历cout year monthendl; cout日 一 二 三 四 五 六 endl;coutSu Mo Tu We Th Fr Sa endl;int s=getdays(year,month,1);/调用getdays函数,从该月的一日开始 s=s%7;for(int m=0;ms;m+)cout ;coutsetw(2)setfill( )
11、1 ;if(IsLeap(year) dayofmonth2=29;int yue=dayofmonthmonth;for(int i=2;i8-s;i+)coutsetw(2)setfill( )i ;coutendl;int j;for(i=8-s,j=1;i=yue;i+,j+)coutsetw(2)setfill( )i ;if(j%7=0)/每行输出7个coutendl;coutendl;coutendl;void Date:printyear() /打印查询的年的万年历 couty; /输入查询的年份year=y; for( m=1;m13;m+) /总共12个月份,循环输出12次
12、 coutendlsetw(5)year年setw(5)m月份endl;cout日 一 二 三 四 五 六endl;coutSu Mo Tu We Th Fr Sa endl; month=m;int s=getdays(year,month,1);s=s%7;for(int m=0;ms;m+)cout ;coutsetw(2)setfill( )1 ;if(IsLeap(year) dayofmonth2=29;int yue=dayofmonthmonth;for(int i=2;i8-s;i+)coutsetw(2)setfill( )i ;coutendl;int j;for(i=8-s,j=1;i=yue;i+,j+)coutsetw(2)setfill( )i ;if(j%7=0)coutendl;coutendl;coutendl;六结束语 这个程序是用C+语言编
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 想变成狗的猫绘本课件
- 2026届山西省翼城中学化学高二第一学期期末学业水平测试试题含答案
- 患者搬运法课件
- 恐龙课件文案
- 塔吊保养考试题及答案
- 机电矿长考试题及答案
- 护士小组面试题及答案
- 中航西飞招聘考试试题及答案
- 停车起步考试题及答案
- 小学剪纸试题及答案
- 2025年度运输业安全生产知识竞赛试题(附答案)
- 光伏居间的合同8篇
- 从业人员培训管理制度
- 医疗风险防控培训课件
- 酒店前台礼貌礼节培训
- 诊疗规范培训课件
- 幸福心理学-(彭凯平)
- 2025年中邮保险招聘笔试参考题库含答案解析
- 《中国老年糖尿病诊疗指南(2024版)》解读课件
- 《中国女性乳腺癌患者糖尿病和糖尿病前期管理专家共识》 (2024版)
- 特种设备安全检查与巡查制度
评论
0/150
提交评论