您的当前位置:首页正文

万年历C++课程设计

2023-01-01 来源:汇智旅游网
塔里木大学信息工程学院课程设计

塔里木大学信息工程学院 计算机科学与技术12-3班

陈浩 整理

目录

前言 .................................................................... 2 正文 .................................................................... 2 2.1 设计程序的目的和思想 ................................................ 2 2.1.1 设计程序的目的:................................................... 2 2.1.2 设计程序的思想:................................................... 2 2.2 设计环境 ............................................................ 3 2.3 设计目的 ............................................................ 3 2.4 设计流程 ............................................................ 3 2.5设计内容 ............................................................. 4 2.5.1大月和小月的定义 ................................................... 4 2.5.2 闰年与非闰年二月的定义............................................. 4 2.5.3日历表的输出 ....................................................... 5 2.6关键技术 ............................................................. 6 总结 .................................................................... 6 效果图 .................................................................. 6 致谢 .................................................................... 8 参考文献 ................................................................ 8 附录A ................................................................... 9

第 1 页 共 12 页

塔里木大学信息工程学院课程设计

前言

C++是美国AT&T贝尔实验室的本贾尼·斯特劳斯特卢普(Bjarne Stroustrup)博士在20世纪80年代初期发明并实现了C++(最初这种语言被称作“C with Classes”)。一开始C++是作为C语言的增强版出现的,从给C语言增加类开始,不断的增加新特性。虚函数(virtual function)、运算符重载(operator overloading)、多重继承(multiple inheritance)、模板(template)、异常(exception)、RTTI、名字空间(name space)逐渐被加入标准。

日历在古代是为皇历。日历在日常生活中有着非常重要的作用。有了它,我们的生活更有节奏,有规律。认这个高级动物与低级动物的最大差别在于,认识会思考,会计划的。他们有着有规律的计划。而日历无疑是他们规律计划的媒介。现全世界都在用日历。而在中国,又分为国历和农历。

我国始有历法大约在四千多年以前。根据甲骨文中的一页甲骨历,证明殷代的历法已具有相当的水平,这一页甲骨。历是全人类最古老的历书实物,这页甲骨历也就叫日历。

但真正的日历产生,大约在一千一百多年前的唐顺宗永贞元年,皇宫中就已经使用皇历。最初一天一页,记载国家、宫廷大事和皇帝的言行。皇历分为十二册,每册的页数和每月的天数一样,每一页都注明了天数和日期。发展到后来,就把月日、于支、节令等内容事先写在上面,下部空白处留待记事,和现在的“台历”相似。那时,服侍皇帝的太监在日历空白处记下皇帝的言行,到了月终,皇帝审查证明无误后,送交史官存档,这在当时叫日历,这些日.历以后就作为史官编写《国史》的依据。 后来,朝廷大臣们纷纷仿效,编制自家使用的日历。 至于月历以后又发展成挂历、台历等各种形式,只是近一个世纪的事。 随着时代的发展,尽管日历的品种增多、花样也不断翻新,但仍旧保持着古老日历的格局。日历在当今社会的影响也是毋庸置疑的!

正文

2.1 设计程序的目的和思想

2.1.1 设计程序的目的:

(1)加深对讲授内容的理解,尤其是一些语法规定。通过课程设计,自然地、熟练地掌握。 (2)熟悉所用的计算机系统的操作方法,也就是熟悉语言程序开发的环境。 (3)学会上机调试程序。 2.1.2 设计程序的思想:

程序设计语言类课程的指导思想是:既能使学生通过学习高级编程语言的知识、编程技术和基本算法,又能掌握程序设计的思想和方法,更具备利用计算机求解实际问题的能力,能灵活运用高级语言进行程序设计。

其实认真学习一门语言并不困难,关键要所追求的学习的方法和途径。一条好的途径便于快速掌握,熟悉运用语言。学习的目的在于应用,理论来源于实践,如果在学习中能够通过有效的途径如自己动手设计一个功能比较前大的开发系统,借鉴于各种工具书,善于总结。定可以很好的效果。正是如此,使我们在这几年中对语言学习有了很大提高。通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C++,还是其它的语言,以及其它的计算机方面的知识都要重在实践,

第 2 页 共 12 页

塔里木大学信息工程学院课程设计

所以后在学习过程中,我会更加注视实践操作,使自己便 好地学好计算机。

2.2 设计环境

对于本次设计的软硬件要求如下: 操作系统 Win9x/Me/NT/2000/XP/2003 内存容量 512MB

显卡要求 集成MX200以上 交互工具 鼠标

CPU要求 AMD2200+(赛扬2.4GHz)以上 硬盘空间 40GB

显示器 VGA以上显示器

开发软件 Microsoft Visual C++ 6.0

2.3 设计目的

掌握一种编程工具和面向对象程序设计的基本思想和方法,培养我们学生综合利用某种语言进行程序设计的能力,培养我们学生利用系统提供的功能进行创新设计的能力,培养我们学生充分利用计算机的功能和特点分析实际问题及解决实际问题的能力。

为我们提供一个综合运用所学知识解决实际问题的机会,增强我们学生的实践动手能力和工程实践能力,并培养和锻炼我们学生的自学创新能力。

为了能更好地了解C++语言,因此开设了此次课程设计,程序设计教学课程的目的不是为了单独的课堂学习,而是要让我们学生掌握程序设计的基本思想及方法。一方面,在课程设计过程中,可以明确的指导为什么而学,还能对所学知识得到应用,更重要的是可以让我们学生掌握一些基本函数的用法,从而不在对编程序感到茫然,经过设计,可以让我们熟悉简单程序的设计方法和编写,对程序设计及该门课程设计语言的应用得到理解。

2.4 设计流程 主要设计流程

第 3 页 共 12 页

塔里木大学信息工程学院课程设计

打印一年日历 Void f Void q 主函数 大月 小月 闰年二月 非闰年二月 输出日历表 一月的定义 闰二月的定义 非闰二月的定义 三月 四月 五月 六月 七月 八月 九月 十月 十一月 十二月 2.5设计内容

2.5.1大月和小月的定义

void f1(int x) //大月 {

for( i=0;i<50;i++) a[i]=33;

for(i=k-1;i>=0;i--)

a[i]='\\000'; //1号前均为空格 for(i=k;i<31+k;i++) a[i]=a[i-1]+1; }

主要运用了数组的循环语句进行对大月的定义。 void f2(int x) //小月 {

for( i=0;i<50;i++) a[i]=33;

for(i=k-1;i>=0;i--) a[i]='\\000'; for(i=k;i<30+k;i++) a[i]=a[i-1]+1; }

依然用数组的循环语句进行对小月的定义。

数组的循环语句是C++中一个很重要的知识,数组可以节省很多的定义,一个句子就可以就可以输出很多的数,这样大大减少了计算机的存储空间。这正是一个很打的进步。 2.5.2 闰年与非闰年二月的定义

void f3(int x) //闰年二月 {

for( i=0;i<50;i++) a[i]=33;

第 4 页 共 12 页

塔里木大学信息工程学院课程设计

for(i=k-1;i>=0;i--) a[i]='\\000'; for(i=k;i<29+k;i++) a[i]=a[i-1]+1; }

void f4(int x) //非闰年二月 {

for( i=0;i<50;i++) a[i]=33;

for(i=k-1;i>=0;i--) a[i]='\\000'; for(i=k;i<28+k;i++) a[i]=a[i-1]+1; }

用两个函数定义了在闰年与非闰年时,二月的不同定义。这主要运用到变量的不同定义。从而分辨出它们的不同,使可打印出任一年的日历。 2.5.3日历表的输出 int s,count=0;

cout<<\"请输入年份:\"; cin>>year; cout<for(s=1;s<=year;s++)

if(((s-1)%4==0&&(s-1)%100!=0)||(s-1)%400==0) count++;

day=365*c+count; //相差天数

cout<<\"*********************\"<在此运用了C++中函数的运算,计算出该年的每月每日的不同。还有一年的输入和输出。在C++语言中,函数的运算又分为很多种,此次用的是 在输出时,闰年与非闰年二月的输出法的定义

if((year%4==0&&year%100!=0)||year%400==0) //闰年二月 {

k=((day+31)%7+6)%7+1;

cout<<\"二月\"<else //非闰年二月 {

第 5 页 共 12 页

塔里木大学信息工程学院课程设计

k=((day+31)%7+6)%7+1;

cout<<\"二月\"<此处主要运用了if语句来对闰年与非闰年的二月的不同定义的输出。if语句一种可跳过不符合条件的语句,继续下面的语句的执行。它具有很强的实用性。在实际的操作中经常会用到的,是一个很重要的知识。

2.6关键技术

就本程序使用的技术有方面。都是使用的是简单的如if语句,循环语句, 输入和输出,变量的定义,数组的输出。

总结

通过实践的学习,我认到学好计算机要重视实践操作,不仅仅是学习C++,还是其它的语言,以及其它的计算机方面的知识都要重在实践,所以后在学习过程中,我会更加注视实践操作,使自己便好地学好计算机。

效果图

刚运行时如:图 1

图 1

输入2009时,如:图 2

第 6 页 共 12 页

塔里木大学信息工程学院课程设计

图 2

运行后如:图3 ,图4

图3

图4

第 7 页 共 12 页

塔里木大学信息工程学院课程设计

致谢

经过两周的不懈努力,很高兴能完成一个C++编程,紧张的心终于可以平静了。从中体会到以及学习到很多关于C++的很大方面的只是,是我更加了解了C++,并更加熟练了C++。

在此次设计中我也遇到了很多的问题,都是经过查看老师所给的关于课程设计书和图书馆借的书才明白所用函数的用法,更重要的是上课时老师的细心教学,使我们学会了许多关于C++的基础知识,为本次的课程设计打好了很好的基础。从而使我能够顺利完成这次课程设计。

在本次做课程设计过程中,要感谢张晓刚老师的悉心关照,一直陪伴我们,并为大家讲解不懂的地方,很是辛苦,也很是忙碌。还要感谢学院为我们此次课程设计提供机房,让我们有了良好的学习环境可以利用所学做课程设计,从很大的程度上增强了我们对于C++学习的兴趣。和小组成员一块讨论,多听听别人的想法,想办法改进自己,这是我受益匪浅。只有比较才知道自己的不足。我们一定要好好的改正自己的不足之处,完善自己。不做最好,只做更好!努力在老师规定的时间内完成老师所规定的任务。

结束课设的时侯,心里就有一种很渴望但又很害怕的感觉,明白了自己与实际所需的距离,因为现在毕业求职难,特别是对于像自己一般的人,更多的时侯是社会,职业选择自己,而不是更多的自己去选择职业,所以更应该把所学的知识灵活地用于实践,这次课设就是对自己一个很好的锻炼机会,无论任何的偿试,都是自己以后很宝贵的经验,更是对自己的一种充实。

参考文献

[1]谭浩强 著.《C++面向程序程序设计》.北京:清华大学出版社,2006.7

[2]吴乃陵,况迎辉,李海文 著.《VC++程序设计》.北京:高等教育出版社,2003.8

[3]邓宗明,张睿哲,张晓竞,等编著.《Visual C++ 6.0 编程实用技术与案例》.北京:清华大学出版社,2001.5

[4]李海文,吴乃陵 等编《C++程序设计及实践教程》北京:高等教育出版社,2003.9

第 8 页 共 12 页

塔里木大学信息工程学院课程设计

附录A

//打印任意年日历

//已知2000 年1 月1 日为星期六,输入任一年的年份后,打印该年的年历。 #include #include using namespace std;

int i,c,day,year,k,a[50];

void f1(int x) //大月 {

for( i=0;i<50;i++) a[i]=33;

for(i=k-1;i>=0;i--)

a[i]='\\000'; //1号前均为空格 for(i=k;i<31+k;i++) a[i]=a[i-1]+1; }

void f2(int x) //小月 {

for( i=0;i<50;i++) a[i]=33;

for(i=k-1;i>=0;i--) a[i]='\\000';

for(i=k;i<30+k;i++) a[i]=a[i-1]+1; }

void f3(int x) //闰年二月 {

for( i=0;i<50;i++) a[i]=33;

for(i=k-1;i>=0;i--) a[i]='\\000';

for(i=k;i<29+k;i++) a[i]=a[i-1]+1; }

第 9 页 共 12 页

塔里木大学信息工程学院课程设计

void f4(int x) //非闰年二月 {

for( i=0;i<50;i++) a[i]=33;

for(i=k-1;i>=0;i--) a[i]='\\000';

for(i=k;i<28+k;i++) a[i]=a[i-1]+1; }

void g(int y[],int z) // 输出日历表

{

cout<<\"日\"<<'\'<<\"一\"<<'\'<<\"二\"<<'\'<<\"三\"<<'\'<<\"四\"<<'\'<<\"五\"<<'\'<<\"六\"<for(i=0;i<50;i++)

{

if(a[i]==0)

cout<<(char)a[i]<<'\'; if(a[i]!=0&&a[i]!=33) cout<cout<int main() {

int s,count=0; cout<<\"请输入年份:\"; cin>>year; cout<for(s=1;s<=year;s++)

if(((s-1)%4==0&&(s-1)%100!=0)||(s-1)%400==0)

count++;

day=365*c+count; //相差天数

cout<<\"*********************\"<k=(day%7+6)%7+1;

cout<<\"一月\"<第 10 页 共 12 页

塔里木大学信息工程学院课程设计

if((year%4==0&&year%100!=0)||year%400==0) //闰年二月 {

k=((day+31)%7+6)%7+1;

cout<<\"二月\"<g(a,50); day=day+31+29;

}

else //非闰年二月 {

k=((day+31)%7+6)%7+1;

cout<<\"二月\"<g(a,50);

day=day+31+28; }

k=(day%7+6)%7+1;

cout<<\"三月\"<k=((day+31)%7+6)%7+1;

cout<<\"四月\"<g(a,50);

k=((day+31+30)%7+6)%7+1; cout<<\"五月\"<k=((day+31+30+31)%7+6)%7+1; cout<<\"六月\"<g(a,50);

k=((day+31+30+31+30)%7+6)%7+1; cout<<\"七月\"<k=((day+31+30+31+30+31)%7+6)%7+1; cout<<\"八月\"<第 11 页 共 12 页

塔里木大学信息工程学院课程设计

k=((day+31+30+31+30+31+31)%7+6)%7+1; cout<<\"九月\"<k=((day+31+30+31+30+31+31+30)%7+6)%7+1; cout<<\"十月\"<g(a,50);

k=((day+31+30+31+30+31+31+30+31)%7+6)%7+1; cout<<\"十一月\"<k=((day+31+30+31+30+31+31+30+31+30)%7+6)%7+1; cout<<\"十二月\"<return 0; }

第 12 页 共 12 页

因篇幅问题不能全部显示,请点此查看更多更全内容