《C++_电子万年历设计—课程设计论文.doc》由会员分享,可在线阅读,更多相关《C++_电子万年历设计—课程设计论文.doc(14页珍藏版)》请在金锄头文库上搜索。
1、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 设计目的将理论教学中涉及到的知识点贯穿起来,对不同的数据类型、程序控制结构、数据结构作一比较和总结,结合设计题目进行综合性应用,对所学知识达到融会贯通的程度。通过课程设计,学生在下述各方面的
2、能力应该得到锻炼:(1)进一步巩固、加深学生所学专业课程C+语言教程的基本理论知识,理论联系实际,进一步培养学生综合分析问题,解决问题的能力。(2)全面考核学生所掌握的基本理论知识及其实际业务能力,从而达到提高学生素质的最终目的。(3)利用所学知识,开发小型应用系统,掌握运用C+语言编写调试应用系统程序,训练独立开发应用系统,进行数据处理的综合能力。(4)对于给定的设计题目,如何进行分析,理清思路,并给出相应的数学模型。(5)掌握面向对象程序设计的方法。(6)熟练掌握C+语言的基本语法,灵活运用各种数据类型。(7)进一步掌握在集成环境下如何调试程序和修改程序。1.2实验环境硬件要求能运行Win
3、dows 操作系统的微机系统。C+语言应用程序开发软件使用:VC+ 系统,或其他C+语言应用程序开发软件。1.3预备知识熟悉C+语言程序设计的基本知识及VC+编辑器的使用方法。1.4设计要求1.仔细分析设计题目,画出程序流程图,编写程序源代码。2.积极上机调试源程序,增强编程技巧与调程能力。3.认真书写课程设计预习报告,课程设计说明书。4.遵守课程设计要求和机房管理制度,服从指导教师的安排,确保课程设计的顺利完成课程设计内容。第2章 课程设计内容2.1 课题描述目前的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基于该程序所开发的各种应用程序中的日历程序。然而,这些程序都千篇
4、一律的局限在一个很短的时间范围内。但是,很多情况下,特别是在众多的科学研究领域中,一个时间跨度教大的日历程序是很有参考价值的。C+程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就填补了这一领域的空白。2.2 系统设计2.2.1功能分析首先判断某一年是否为闰年,若是,则2月输出为29天,若不是,2月输出为28天。再判断系统当前月份是大月还是小月,若为大月,则输出31天;若为小月,则输出30天。通过定义一个struct结构体,用对对象指针的访问来实现从系统自动获取时间为程序所用。再利用一个函数计算出每月的第一天是星期几。根据所判断的大月、小月,通过控制符setw控制输出流格式(设置
5、字段宽度),把该日期以前的位置用空格补上,并从该日起依次输出天数直到月底,该月中的天数加上该月一日为星期几的数字再除以7得0换行,即可完整的输出该月的日历。程序中定义了一个结构体。结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,也叫结构4。在C语言中,可以定义结构体类型,将多个相关的变量包装成为一个整体使用。在结构体中的变量,可以是相同、部分相同,或完全不同的数据类型。在C语言中,结构体不能包含函数。在面向对象的程序设计中,对象具有状态(属性)和行为,状态保存在成员变量中,行为通过成员方法(函数)来实现。C语言中的结构体只能描述一个对象的状态,不能描述一个对象的行为
6、。在C+中,考虑到C语言到C+语言过渡的连续性,对结构体进行了扩展,C+的结构体可以包含函数。C+中一般使用cout和cin时的默认格式.但有时人们在输入输出时有一些特殊的要求,如在输出实数时规定字段宽度,只保留两位小数,数据向左或向右对齐等。C+提供了在输入输出流中使用的控制符。需要注意的是:如果使用了控制符,在程序单位的开头除了要加iostream头文件外,还要加iomanip头文件5。本课程设计主要是编写一个电子万年历系统。模仿现实生活中的挂历,以系统当前日期的月份为准显示当前月份的每一天(显示出日期及对应的星期几),当系统日期变到下一个月时,系统自动翻页到下一月。在课程设计中,程序设计
7、设计语言采用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所
8、示表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)用一个逻辑表达式包含
9、所有的闰年条件的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 names
10、pace 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天换行,到输出本月全部日期为止。i
11、f(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 y
12、ear,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);brea