《日历C 课程设计报告》由会员分享,可在线阅读,更多相关《日历C 课程设计报告(21页珍藏版)》请在金锄头文库上搜索。
1、C+课程设计-日历的设计(良好组)专 业:计算机科学与技术完成时间:2014年4月15日目录前言3正文32.1设计程序的目的和思想32.1.1设计程序的目的:32.1.2设计程序的思想: 32. 2设计环境32.3设计目的42. 4设计流程42. 5设计内容和设计思想 42. 5. 1大月和小月的定义52. 5.2闰年与非闰年二月的定义62. 5. 3日历表的输出 错误!未定义书签。2. 6关键技术10总结10效果图10致谢11参考文献12附录A错误!未定义书签。刖sC+是美国AT&T贝尔实验室的本贾尼.斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪 80年代初期发明并实现
2、了 C+ (最初这种语言被称作“C with Classes” )。一开始C+是作为C 语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function). 运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、 异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。LI历在古代是为皇历。LI历在廿常生活中有着非常重要的作用。有了它,我们的生活更有节 奏,有规律。认这个高级动物与低级动物的最大差别在于,认识会思考,会计划的。他们有着有规 律的计划
3、。而廿历无疑是他们规律计划的媒介。现全也界都在用廿历。而在中国,乂分为国历和农 历。我国始有历法大约在四千多年以前。根据甲骨文中的一页甲骨历,证明殷代的历法已具有相当 的水平,这一页甲骨。历是全人类最古老的历书实物,这页甲骨历也就叫日历。但真正的日历产生,大约在一千一百多年前的唐顺宗永贞元年,皇宫中就已经使用皇历。最初一天 一页,记载国家、宫廷大事和皇帝的言行。皇历分为十二册,每册的页数和每月的天数一样,每一 页都注明了天数和LI期。发展到后来,就把月廿、于支、节令等内容事先写在上面,下部空白处留 待记事,和现在的“台历”相似。那时,服侍皇帝的太监在I I历空白处记下皇帝的言行,到了月终, 皇
4、帝审查证明无误后,送交史官存档,这在当时叫LI历,这些廿历以后就作为史官编写国史 的依据。后来,朝廷大臣们纷纷仿效,编制自家使用的II历。至于月历以后又发展成挂历、台历 等各种形式,只是近一个世纪的事。随着时代的发展,尽管口历的品种增多、花样也不断翻新, 但仍旧保持着古老日历的格局。日历在当今社会的影响也是毋庸置疑的!正文2. 1设计程序的目的和思想2.1.1设计程序的目的:(1) 加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。(2) 熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。(3) 学会上机调试程序。2.1.2设计程序的思想:程序设计语言类课
5、程的指导思想是:既能使学生通过学习高级编程语言的知识、编程技术和基 本算法,又能掌握程序设计的思想和方法,更具备利用计算机求解实际问题的能力,能灵活运用高 级语言进行程序设计。其实认真学习一门语言并不困难,关键要所追求的学习的方法和途径。一条好的途径便于快速 掌握,熟悉运用语言。学习的目的在于应用,理论来源于实践,如果在学习中能够通过有效的途径 如自己动手设计一个功能比较前大的开发系统,借鉴于各种工具书,善于总结。定可以很好的效果。 正是如此,使我们在这几年中对语言学习有了很大提高。通过实践的学习,我认到学好计算机要重 视实践操作,不仅仅是学习C+,还是其它的语言,以及其它的计算机方面的知识都
6、要重在实践, 所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。2.2设计环境 对于木次设计的软硬件要求如下:操作系统 Win9x/Me/NT/2000/XP/2003内存容量512MB显卡要求集成MX200以上交互工具鼠标CPU 要求 AMD2200+ (赛扬 2. 4GHz)以上硬盘空间40GB显示器 VGA以上显示器开发软件 Microsoft Visual C+ 6. 02. 3设计目的掌握一种编程工具和面1何对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进 行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学生充分利 用计算机的功
7、能和特点分析实际问题及解决实际问题的能力。为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程 实践能力,并培养和锻炼我们学生的自学创新能力。为了能更好地了解C+语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独 的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。一方面,在课程设计过程中,可以 明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数 的川法,从而不在对编程序感到茫然,经过设计,可以让我们熟悉简单程序的设计方法和编写,对程 序设计及该门课程设计语言的应用得到理解。2. 4设计流程2.5设计内容2.
8、5.1大月和小月的定义 int monthday(int i)if(i= 1 |i=3lli=5lli=7lli=8lli= 1 Olli= 12) I,3,5,7,810,12 有 31 天为大月,4, 6, 9, 11 为4、 月30天,2月要判断是否为闰年return 31;else if (i=2)(if(isle apyear() 判断闰年return 29; 是的话返回29天else return 28/不是闰年返回28天else return 30;运用简单的if语句来设定大小月。If语句是C+中常用且简单的判断语句,用途相当广泛,使用起来简单易懂,易操作。2.5.2闰年与非闰年
9、二月的定义int isleapyear()if(year%4=0&year%100!=0llyear%400=0)return 1;elsereturn 0;构造闰月的判断函数,用返回值1和0来表示是否为闰年,对于后来的函数调用起来简单不容易出 错,如果出现bug,修改起来也简单。2.5.3两种不同的输出方法1.居中输出void display2()(总共12个月份int n=judgeweek();for(int i= l;i= 12;i+)( int t=l;coutendlsetw(40)n Msetw(5)yearr,年”vvsetw(5)vvivv月份nendl;coutsetw(3
10、0)n vv*vvendl;coutsetw(30)for(int j=0;j7;j+)coutsetw(5)vveekdayj;coutvvendlvvsetw(30)vv vv*vvendlcoutsetw(30) M;for(int k= 1 ;kvn;k+,t+)coutsetw(5)H输入每月第一天的起始位置,即该天为星期儿,用空格补充for(int d=l ;d=monthday(i);d+,t+)( coutsetw(5)d;if(t=7)coutvvendlvvsetw(30)vv” ”; 控制每行只输出7个数字t=0;控制一行输出到星期日,如果到星期日则重新计数n=t%7;i
11、f(n=O) 输出完一个月后,记录这个月的最后一天在哪里,寻找下个月第一天的起始位置 n=7;coutendlsetw(30)n vv*vvendl设计这种输出方法主要运用for语句,多重循环,以每个月为单位循环,将一个月划分为7列,控 制每行不超过7个数字,月头和月尾分别用空格补齐,如此循环而得。2.横向输出方法void display 1()(coutvvsetw(35)vv” vvyearvv”年日历”;print (1 );print (2);print (3);print (4);横向输出相对居中输出有难度,所以在设计横向输出时将其划分为两个函数,displayl为横向总 的输出函数
12、,它的作用主要是输出日历的头和调用下面的print函数。void print (int x) (char *a,*b,*c;int fm,sm,tm,modf,mods,modt,dof,dos,dot,i,j;int total=0;total=(year-2000)*365+(year-2001 )/4-(year-2001)/100+(year-2()01 )/400;swtich(x)(case 1: a=一 月,b=” 二月,c=三月 fm=31 ,tm=31;if(islearpyear()sm=29;elsesm=28;modf=total%7;mods=(modf+31)%7;
13、fm和tm和sm分别代表一组中三个 月依次的天数,modf等代表每个月 依次的第一天的位置,dof等分别用 来表示每个月从第一天到最后一 天.if(islearpyear()modt=(mods4-29)%7;elsemodt= (mods+28)%7;break;case 2:a=”四月”毕”五月”,c=”六月”;fm=30,sm=31 ,tm=30;if(islearpyear() modf=(total+91)%7;elsemodf=(total+90)%7;mods=( modf+30)%7;modt=(mods+31)%7;break;case3:a=七月,b=八月”,c=” 九月”
14、;fm=3 l,sm=3 l,tm=30;if(islearpyear() modf=(total+l 82)%7;elsemodf=(total+181)%7;mods=(modf+31)%7;modt=(mods+31)%7;break;case 4:a=十月,b=H-一月,c=”十二月;fm=31 ,sm=30,tm=31;if(islearpyear()modf=(total+274)%7;elsemodf=(total+273)%7;mods=(modf+31)%7;modt=(mods+30)%7;break;default: coutvv数据溢出”;break;coutsetw(12) asetw( 17) bsetw( 18) vvcvvendlvvendl;cout setw(3)日 ” setw(3) setw(3) vv”二”;cout setvv(3) vv三” setw(3) vv四” vv setw(3) vv”五”;cout setvv(3) vv六;cout setw(3) HU setw(3) * setw(3) vv”二