C++_电子万年历设计—课程设计论文.doc

上传人:good****022 文档编号:116536796 上传时间:2022-07-05 格式:DOC 页数:14 大小:142.02KB
返回 下载 相关 举报
C++_电子万年历设计—课程设计论文.doc_第1页
第1页 / 共14页
C++_电子万年历设计—课程设计论文.doc_第2页
第2页 / 共14页
C++_电子万年历设计—课程设计论文.doc_第3页
第3页 / 共14页
点击查看更多>>
资源描述
xxxx 大 学 课 程 设 计 说 明 书(论 文) 目 录第1章 课程设计目的与要求11.1 设计目的11.2实验环境11.3预备知识11.4设计要求1第2章 课程设计内容22.1 课题描述22.2 系统设计22.2.1功能分析22.2.2面向对象设计32.2.3 类成员描述42.3程序实现42.3.1源码分析42.3.2运行结果11第3章 课程设计总结12参考文献13第1章 课程设计目的与要求1.1 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Windows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述目前的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇一律的局限在一个很短的时间范围内。但是,很多情况下,特别是在众多的科学研究领域中,一个时间跨度教大的日历程序是很有参考价值的。C+程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就填补了这一领域的空白。2.2 系统设计2.2.1功能分析首先判断某一年是否为闰年,若是,则2月输出为29天,若不是,2月输出为28天。再判断系统当前月份是大月还是小月,若为大月,则输出31天;若为小月,则输出30天。通过定义一个struct结构体,用对对象指针的访问来实现从系统自动获取时间为程序所用。再利用一个函数计算出每月的第一天是星期几。根据所判断的大月、小月,通过控制符setw控制输出流格式(设置字段宽度),把该日期以前的位置用空格补上,并从该日起依次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。程序中定义了一个结构体。结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构4。在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为。在C+中,考虑到C语言到C+语言过渡的连续性,对结构体进行了扩展,C+的结构体可以包含函数。C+中一般使用cout和cin时的默认格式.但有时人们在输入输出时有一些特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C+提供了在输入输出流中使用的控制符。需要注意的是:如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件5。本课程设计主要是编写一个电子万年历系统。模仿现实生活中的挂历,以系统当前日期的月份为准显示当前月份的每一天(显示出日期及对应的星期几),当系统日期变到下一个月时,系统自动翻页到下一月。在课程设计中,程序设计设计语言采用Visual C+6.0,程序运行平台为Windows XP。为了显示当月的每一天,采取算出当月第一天是星期几的方法,通过判断大月、小月,依次排出当月的每一天。程序通过调试运行,实现了设计目标。2.2.2面向对象设计从系统获取时间判断该年是否为闰年输出31天判断该月是大月还是小月输出30天输出29天输出28天图2.1 输出天数判断从系统获取年月日之后,判断该年是否为闰年,若是闰年,且当月为2月,则输出29天;若不是闰年,则2月输出28天。判断该月为大月还是小月,大月输出31天,小月输出30天。如图2.1。2.2.3类成员描述输入、输出流类库函数的数量非常多,程序中用到的如表2-2所示表2-2程序中用到的输入、输出流类库函数函数声明功能声明int leap (int year) ;判断是否为闰年。int days_month (int year,int month);判断当月有多少天,值以数值型数据返回。Int firstday(int year,int month);判断每月的第一天是星期几,值以数值型数据返回。time( &nowtime );获取时间函数。int main();主函数,输出万年历的日期几对应的星期。2.3程序实现2.3.1源码分析(1)判断年份是否是闰年的语句:if(year%4=0&year%100!=0|year%400=0)用一个逻辑表达式包含所有的闰年条件的if语句。能被4整除,但不能被100整除,为闰年,或能被400整除,为闰年。编写完整闰年判断的程序,进行调试,输出结果如图2.3所示。#includeusing namespace std;int main()int year;bool leap;cinyear;if(year%4=0&year%100!=0|year%400=0)leap=true;else leap=false;if (leap)cout是闰年endl;elsecout不是闰年endl;return 0;图2.3判断年份是否是闰年(2)输出系统时间的程序(如图2.4):#includeusing namespace std;int main() cout_DATE_tm_year + 1900;month = timeinfo-tm_mon + 1;(4)函数w=(1+2*month+3*(month+1)/5+year+year/4+year/400-year/100)%7+1计算出每月第一天是星期几。(5)输出格式的实现如果该月第一天是星期日,输出日期,每两个日期间用setw控制符设置字段宽度为4,当排满7天换行,到输出本月全部日期为止。如果该月第一天不是星期日,空出前面几天,输出日期,每两个日期间用setw控制符设置字段宽度为4,排满第一行后换行,再排满7天换行,到输出本月全部日期为止。if(a=7) for(i=1;i=b;i+) coutsetw(4)i; if(i%7=0) coutendl; if(a!=7) while (j=4*a) cout ; j+; for(i=1;i=b;i+) coutsetw(4)i; if(i=7*k-a) coutendl; k+; / 程序名称:d.cpp/ 程序功能:从系统自动获取日期,显示当月日历/ 最后修改日期:2010-12-26#include#includeint fn1(int year,int month,int day);int monthday(int year,int month);void fn2(int year,int month);void fn3(int year);void main() int year,month,day,i,x;coutendlendl;cout -endl;cout * *endl;cout 欢迎进入万年历查询系统 endl;cout * *endl;cout -endl;coutendlendl;cout 程序员: endlendl;cout 辽宁工业大学endl;loop:coutendlendl;cout 请您选择查询内容;endlendl;cout 1.显示一年的日历:endl;cout 2.显示一个月的日历:endl;cout 3.显示某一天是周几:endl;cout 0.退出:endl;coutendl;cout请输入(0-3)中的数字选择您要查询的内容i;switch(i)case 0: return;case 1:cout请输入年份,输入格式为*year;fn3(year);break;case 2:cout请输入您要查询的日期,输入格式为* *endl如2009 11yearmonth;fn2(year,month); break;case 3:cout请输入您要查询的日期,输入格式为* * *endl如2009 11 23yearmonthday;coutyear年month月day日是星期fn1(year,month,day)endl;break;default:cout输入错误endl;cout继续查询请输 1 endl退出查询请输 0 x;if(x=1)goto loop;int fn1(int year,int month,int day)int yearjs,monthjs,monthday=0;int permonthday12=31,28,31,30,31,30,31,31,30,31,30,31;for(int i=0;i2)monthjs=(monthday+1)%7;elsemonthjs=monthday%7;elseyearjs=1;monthjs=monthday%7;return (year+year/4+year/400-year/100-yearjs+monthjs+day)%7)=0?7:(year+year/4+year/400-year/100-yearjs+monthjs+day)%7);int monthday(int year,int month)int permonthday12=31,28,31,30,31,30,31,31,30,31,30,31;if(month!=2)return permonthdaymonth-1;elseif(year%4=0&year%100=0|year%400=0)return 29;elsereturn 28;void fn2(int year,int month)coutendlendl;coutsetw(6)一setw(6)二setw(6)三setw(6)四setw(6)五setw(6)六setw(6)日endl;for(int i=1;i=monthday(year,month);i+)if(i=1) for(int j=1;jfn1(year,month,1);j+)cout.width(6);coutsetw(6) ;coutsetw(6)i;else if(i+fn1(year,month,1)-2)%7=0)coutendl;coutsetw(6)i;coutendlendl;void fn3(int year)for(int i=1;i=12;i+)couti 月endl;fn2(year,i);coutendlendl;2.3.2运行结果本程序按照设计要求,模仿现实生活中的日历的形式,从计算机中获取当前系统的日期并输出,同时,输出当月所有日期及对应的星期几。该程序实现了设计目标。运行结果如图2.5所示。图2.5 运行结果第3章 课程设计总结经过一个学期对C+程序设计的学习,我学习到了基本的理论知识,了解到了C+语言程序设计的思想,这些知识都为我的课程实践和进一步的学习打下了坚实的基础。此次对C+语言编写电子万年历的设计进一步的巩固了用C+语言编写程序,并且有利于更好的掌握C+语言。通过本课程设计也培养了我独立思考、综合运用所学有关相应知识的能力,掌握工程软件设计的基本方法,强化上机动手编程能力,闯过理论与实际相结合的难关。通过C+课程设计,一方面是为了检查这一个学期来计算机语言的学习成果,另一方面也是能让我们进一步掌握和熟练地运用它,与此同时,也能够让我们认清自己在C+学习方面的不足之处和薄弱环节,并加以弥补和巩固。通过对教学管理系统的程序设计,进一步的巩固了用C+语言编写程序的能力,并且利于更好的掌握C+语言!总之这次课程设计,使我收获颇丰,相信会为自己以后的学习和工作带来很大的好处。最重要的还是激发了我编程的兴趣和热情,让我从一个只懂理论变成了能做一些小型程序。整体地评价这次课程设计,我认为收获很大,正如上面所说的那样,通过课程设计,既复习了以前的旧知识,又学到了一些新的知识。像教学管理系统这样的应用程序的设计和创建,经历了平时在课堂和考试中不会出现的难题和考验。而这些问题,又都是课本上很少提到的、更深一层的实践与知识相结合的问题,这并不是我们平时只靠课本,就可以轻易解决的。所以,锻炼了我们面对难题,学会用已掌握的知识去解决具体问题的能力,进一步培养了独立思考问题和解决问题的能力。特别是学会了在Visual C+中如何调试程序的方法。当然,老师的指导和同学的帮助也是不可忽视的,他们给了我许多提示和帮助,教会了我编译复杂程序的方法。在这里也要表示对他们的感谢!参考文献1.郑莉、董渊 编着 C+语言程序设计 北京:清华大学出版社2.黄迪明 主编 C+语言程序设计基础 北京:电子工业出版社3.钱能 主编 C+程序设计教程 北京:清华大学出版社4.徐孝凯 编着 C+语言程序设计 北京:清华大学出版社5.吴访升 编着 C+程序设计 北京: 机械工业出版社6.Decoder 主编 C/C+程序设计 北京:中国铁道出版社13
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 机械制造 > 机械制造


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!