万年历课程设计 张海强 2DOC

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

华东交通大学
课程设计报告书
所属课程名称C++语言及程序设计题目
院(系)
班级
学号
学生姓名
指导教师宋岚
辅导教师宋岚
2014年6 月27日
课程设计(论文)任务书
电气与电子工程学院电气工程及其自动化专业13-8 班
一、课程设计(论文)题目:万年历
二、课程设计(论文)工作自2014 年 6 月23日起至 2014 年6 月 27日止
三、课程设计(论文) 地点: 8-501
四、课程设计(论文)内容要求:
1. 本课程设计的目的
(1)进一步巩固和加深对“C++程序设计”课程基本知识的理解和掌握,了解C ++语言在项目开发中的应用。

(2)学习程序设计开发的一般方法,了解和掌握项目开发过程及方式,培养正确的设计思想和分析问题、解决问题的能力,特别是项目设计能力。

(3)通过对标准化、规范化文档的掌握并查阅有关技术资料等,培养项目设计开发能力,同时提倡团队合作精神。

2. 课程设计的任务及要求
1) 基本要求:
(1)对系统功能进行需求分析;
(2)使用Visual C++编译器进行程序编译;
(3)提出系统的设计方案;
(4)编写源程序代码并进行调试。

2) 创新要求
在基本要求达到后,可进行创新设计。

3) 课程设计报告撰写及装订要求
课程设计报告的撰写要求表述简明,图表准确。

报告按如下内容和顺序用A4纸进行打印并装订成册。

(1)封面
采用统一的课程设计封面,并按要求填写好封面要求的个人信息和选题。

(2)设计任务书
(3)评阅书
(4)目录
(5)正文
(6)主要参考文献
4) 课程设计评分标准:
每人按指定题目进行设计,严禁抄袭,要求每人自己动手编写程序,采取同一组同时检查程序及运行结果,检查时同组成员每人陈述自己的分工,同一选题不同组如发现代码完全一样,则双方都作不及格处理。

(1)达到课程设计的目的与要求,程序的可读性较好,并调试正确,60分;
(2)能正确回答设计的中老师所提问题,可增加10分;
(3)课程设计报告书写规范整齐,可增加10分;
(4)心得体会认真总结,可增加10分;
(5)程序有创新性,可增加10分;
成绩评定实行优秀、良好、中等、及格和不及格五个等级。

不及格者需重做。

5) 课程设计进度安排
(1)准备阶段(3学时):选择设计题目、了解设计目的要求、查阅相关资料。

(2)程序模块设计分析阶段(4学时):程序总体设计、详细设计。

(3) 代码编写调试阶段(10学时):程序模块代码编写、调试、测试。

(4) 撰写论文阶段(3学时):总结课程设计任务和设计内容,撰写课程设计论文。

6)课程设计题目具体要求:
(1)程序运行时,首先给出3个菜单选项的内容和输入提示:
1 显示一年的日历
2 显示某一天是星期几
3 根据日期查询节日
4 根据节日查询日期
0 退出
(2)用户可以通过主菜单选择不同的选项。

若选择1,则通过输入年份,显示输出该年每个月的日历;若选择2,则通过输入日期,查询这一天是星期几;若选择三,则通过输入日期查询节日;若选择4,则通过输入节日名称代表序号查询其日期;若选择0,则退出。

学生签名:
2014年 6 月27 日
课程设计(论文)评阅意见
评阅人宋岚职称讲师
2014年6月29日
目录
第1章需求分析 (1)
第2章概要设计 (2)
第3章详细设计 (5)
第4章运行结果及分析 (14)
第5章课程设计心得。

(21)
参考文献 (22)
第1章需求分析
目前的计算机日历程序,比较典型的是Windows各版本中的日历程序以及基于该程序所开发的各种应用程序中的日历程序。

然而,这些程序都是千遍一律的局限于一个很短的时间内。

但是,很多情况下,特别是在众多的科学领域中,一个时间跨度较大的程序是有参考价值的。

C++程序设计语言充分发挥了其自身无与伦比的优越性,用极短的程序文本就弥补了这一领域的空白。

万年历作为日常中的一种小工具,它具有多方面的小工能,主要在日期的显示上给人以直观的表达效果,在日期的查询上方便简洁,还有就是在某些节日的提醒上都给我们带来极大的方便,是一种比较实用的小工具。

给人的需求性很大,学生在做此万年历课程设计的同时,能够认识到C++编程给人带来的便捷,也能够清楚万历年表编程的出入。

对培养学生的创新能力和动手能力具有很大的作用。

这次制作万年历对学生以后学习单片机控制制作万年历培养了逻辑思维能力。

让学生对生活中的家电及机器等等的自动化运作充满了热情。

由万年历又能引发学生对时钟,计数器,抢答器等的联想。

第2章概要设计
1设计要求:
(1)程序运行时,首先给出3个菜单选项的内容和输入提示:
1 显示一年的日历
2 显示某一天是星期几
3 根据日期查询节日
4 根据节日查询日期
0 退出
(2)用户可以通过主菜单选择不同的选项。

若选择1,则通过输入年份,显示输出该年每个月的日历;若选择2,则通过输入日期,查询这一天是星期几;若选择三,则通过输入日期查询节日;若选择4,则通过输入节日名称查询其日期;若选择0,则退出。

2总体设计:
(工作流程图)
依据课程设计的要求,需要设计一个菜单功能,进入程序后,有菜单可以提供选择,
选择1,进入日期显示阶段,日期显示完毕,再次进入菜单选择。

选择2,进入日期查询阶段,日期查询完毕,可以再次进入菜单。

选择3,进入通过日期查询节日阶段或者“选择4”知道节日查询日期阶段查询完毕后可以再次进入菜单,选择0,退出程序。

(功能板块)
在菜单要求当中,要求能够按年查询,能够查询某天是星期几。

然而,在程序当中为了实现这两个功能,包括了闰年的判断,日期判断,日期打印和日期的查询。

功能是由它们共同实现的。

第3章详细设计
程序详细源代码:
#include<iostream.h>
#include<iomanip.h>
void f1();
void f2();
void festival1();
void festival2();
int judgeyear(int);
int monthdays(int ,int); //函数原型声明
int judgeyear(int year)
{
if((year%400==0)||(year%4==0&&year%100!=0)) //判断输入的年份是否为闰年模块
return 1;
else
return 0;
}
int monthdays(int year,int month) //计算各个月份的天数
{
if(month==2)
{
if(judgeyear(year)==1) return 29;
else return 28;
}
else if(month==4||month==6||month==9||month==11)
return 30;
else
return 31;
}
void f1()
{
int year,t,i,month;
cout<<"请输入年份:";
cin>>year;
t=((year-1)*1+(year-1)/4-(year-1)/100+(year-1)/400+1)%7; //判断这一年的元旦是星期几
for(int k=1;k<=12;k++)
{
cout<<k<<"月份的日历如下"<<endl;
cout<<setw(6)<<"日"<<setw(6)<<"一"<<setw(6)<<"二"<<setw(6)<<"三"<<setw(6)<<"四"<<setw(6)<<"五"<<setw(6)<<"六"<<endl;
for(int z=1;z<=t;z++)
cout<<setw(6)<<' ';
for(i=1;i<=monthdays(year,k);i++)
{cout<<setw(6)<<i<<setw(6);
if((i+t)%7==0)
cout<<endl;}
t=(t+monthdays(year,k)%7)%7;
cout<<endl;
//日历显示模块
}
}
void f2()
{
int year,month,day;
cout<<"请输入年份:";
cin>>year;
cout<<"请输入月份:";
cin>>month;
cout<<"请输入此年此月相应的日期"<<"<1~31>:";
cin>>day;
int l,n,t,w,date(0);
char *week[]={"星期天","星期一","星期二","星期三","星期四","星期五","星期六"};
n=(year-1);
l=(n-1)/4-(n-1)/100+(n-1)/400;/*如果只要1990-2099,则只需改成
n=(year-1990),l=(n-1)/4*/
n=l+n;
n=n%7;
n=n;
for(int i=1;i<month;i++)
date+=monthdays(year,i);
date+=day;
n=n+date;
n=n%7;
cout<<"\n该天是:"<<week[n];
}//日子查询模块
void festival1()
{
void delay();
int x,y;
cout<<"请输入月份:";
cin>>x;
cout<<"请输入此年此月相应的日期"<<"<1~31>:"; cin>>y;
if(x==1&&y==1)
{
cout<<"元旦"<<endl;
delay();
cout<<"新年快乐"<<endl<<endl;
delay();
cout<<"Happy "<<endl<<endl;
delay();
cout<< " new"<<endl<<endl;
delay();
cout<< " year"<<endl;
}
else if(x==2&&y==14)
{
cout<<"情"<<endl<<endl;
delay();
cout<<"人"<<endl<<endl;
delay();
cout<<"节"<<endl<<endl;
delay();
}
else if(x==3&&y==8)
{
cout<<"妇"<<endl<<endl;
delay();
cout<<"女"<<endl<<endl;
delay();
cout<<"节"<<endl;
}
else if(x==5&&y==1)
{
cout<<"劳"<<endl<<endl;
delay();
cout<<"动"<<endl<<endl;
delay();
cout<<"节"<<endl;
}
else if(x==6&&y==1)
{
cout<<"儿"<<endl<<endl;
delay();
cout<<"童"<<endl<<endl;
delay();
cout<<"节"<<endl;
}
else if(x==7&&y==1)
{
cout<<"建"<<endl<<endl;
delay();
cout<<"党"<<endl<<endl;
delay();
cout<<"节"<<endl<<endl;
delay();
cout<<"☆☆☆☆☆为☆☆☆☆☆"<<endl<<endl;
delay();
cout<<" ☆☆☆☆☆人☆☆☆☆☆"<<endl<<endl;
delay();
cout<<" ☆☆☆☆☆民☆☆☆☆☆"<<endl<<endl;
delay();
cout<<" ☆☆☆☆☆服☆☆☆☆☆"<<endl<<endl; delay();
cout<<" ☆☆☆☆☆务☆☆☆☆☆"<<endl<<endl; delay();
cout<<" ☆☆☆☆☆!☆☆☆☆☆"<<endl<<endl;
}
else if(x==8&&y==1)
{
cout<<"建"<<endl<<endl;
delay();
cout<<"军"<<endl<<endl;
delay();
cout<<"节"<<endl;
}
else if(x==9&&y==10)
{
cout<<"教师节"<<endl<<endl;
cout<<"☆☆☆☆☆老☆☆☆☆☆"<<endl<<endl;
delay();
cout<<" ☆☆☆☆☆师☆☆☆☆☆"<<endl<<endl;
delay();
cout<<" ☆☆☆☆☆您☆☆☆☆☆"<<endl<<endl;
delay();
cout<<" ☆☆☆☆☆辛☆☆☆☆☆"<<endl<<endl;
delay();
cout<<" ☆☆☆☆☆苦☆☆☆☆☆"<<endl<<endl; delay();
cout<<" ☆☆☆☆☆了☆☆☆☆☆"<<endl<<endl; }
else if(x==10&&y==1)
{
cout<<"国"<<endl<<endl;
delay();
cout<<"庆"<<endl<<endl;
delay();
cout<<"节"<<endl<<endl;
delay();
cout<<"☆☆☆☆☆中☆☆☆☆☆"<<endl;
delay();
cout<<" ☆☆☆☆☆华☆☆☆☆☆"<<endl;
delay();
cout<<" ☆☆☆☆☆人☆☆☆☆☆"<<endl;
delay();
cout<<" ☆☆☆☆☆民☆☆☆☆☆"<<endl;
delay();
cout<<" ☆☆☆☆☆共☆☆☆☆☆"<<endl;
delay();
cout<<" ☆☆☆☆☆和☆☆☆☆☆"<<endl; delay();
cout<<" ☆☆☆☆☆国☆☆☆☆☆"<<endl; delay();
cout<<" ☆☆☆☆☆万☆☆☆☆☆"<<endl;
delay();
cout<<" ☆☆☆☆☆岁☆☆☆☆☆"<<endl; }
else if(x==11&&y==11)
{
cout<<"光"<<endl<<endl;
delay();
cout<<"棍"<<endl<<endl;
delay();
cout<<"节"<<endl;
}
else if(x==12&&y==24)
{
cout<<"平"<<endl<<endl;
delay();
cout<<"安"<<endl<<endl;
delay();
cout<<"夜"<<endl<<endl;
delay();
cout<<"愿天下人一生平安"<<endl<<endl;
delay();
}
else if(x==12&&y==25)
{
cout<<"圣"<<endl<<endl;
delay();
cout<<"诞"<<endl<<endl;
delay();
cout<<"节"<<endl<<endl;
delay();
cout<<"圣诞快乐!"<<endl;
}
}
void festival2()
{
int aa;
cout<<"元旦:1 妇女节:2 老动节:3 国庆节:4"<<endl<<endl;
cout<<"菜单提示输入节日代表序号: "<<endl<<endl;
cin>>aa;
if(aa==1)
cout<<"1月1号"<<endl<<endl;
else if(aa==2)
cout<<"3月8号"<<endl;
else if(aa==3)
cout<<"5月1号"<<endl;
else if(aa==4)
cout<<"10月1号"<<endl;
}
void main()
{
int i=1;
cout<<" --------------------------------"<<endl;
cout<<" * *"<<endl;
cout<<" 欢迎进入万年历查询系统"<<endl;
cout<<" * *"<<endl;
cout<<" --------------------------------"<<endl<<endl<<endl;
cout<<"请选择您的查询内容:"<<endl;
cout<<"*********"<<"1.显示一年的日历"<<";"<<endl<<endl;
cout<<"★★★★★★★★"<<"2.显示某一天是星期几"<<";"<<endl<<endl;
cout<<"☆☆☆☆☆☆☆☆☆☆"<<"3.根据日期查询节日"<<";"<<endl<<endl;
cout<<"◇◇◇◇◇◇◇◇◇◇◇◇"<<"4.根据节日查询日期
"<<";"<<endl<<endl;
cout<<"○○○○○○○○○○○○○○"<<"0.退出"<<";"<<endl<<endl;
cout<<"请选择按键"<<"<0-4>:"; //输出主菜单
while(i)
{
cin>>i;
if(i>=0&&i<=4)
{
switch(i)
{
case 1: f1(); break;
case 2: f2(); break;
case 3: festival1(); break;
case 4: festival2(); break;
case 0: cout<<"Thank you for your use!"<<endl<<"Bye!"<<endl;break;
}
}
}
}
void delay()
{
int a,b,c;
for(a=500;a>0;a--)
for(b=500;b>0;b--)
for(c=600;c>0;c--);
}
第4章运行结果及分析
1程序运行测试:
在电脑中打开C++应用程序, 首先进入VC++6.0,将程序代码输入,编译,组建,调试。

观察运行结果,和各个功能情况。

2 进入程序菜单
(图1:菜单页面)
说明:该页面表示进入菜单选项,根据选项进入相应的功能。

2. 1号键功能:
(图2:日历显示页面)
说明:进入按年查询功能,输入想查询的年份,例如2014年,得到2014年各月的日历,图像在此仅展示5-9月日历
3. 2号键功能:
(图3:星期几查询页面)说明:依次输入2014 6 18,得到上图结果。

(图4:星期几查询)
说明:依次输入2014 7 1,得到上图。

4. 3号键功能:
(图5:根据日期查询节日)
说明:选择3号键依次输入9 10则显示教师节相关结果(注释:本来老师您辛苦了六个字是要一个个延时出现的,截图只能等字全出来全截)
(图六:根据日期查询节日)
说明:选择3号键,依次输入10 1显示出国庆节相关内容(注:延时状态没法在报告上演示)
5.4号键功能:
(图七:根据节日查询日期)
说明:进入万年历系统选择4号键,进如根据节日查询日期功能,输入菜单上的节日代表序号即可查询其日期。

例图七,输入国庆节的代表序号4,则显示10月1号
7.5 0号键功能:
说明:选择0号键退出系统,按任意键可以继续
第五章课程设计心得
通过这次课程设计我明白了一个道理,很多看上去完成不了的事,只要有耐心,勤奋,努力,肯付出,都是能完成的挺好的。

就拿这次课程设计来说吧,开始我一直认为自己几乎没写过一段完整的程序,怎么可能做出一个关于万年历的课设。

开始做时,脑子里真是一片空白,无从下手,根本不知道怎么用程序实现我们日常生活中特别常见的万年历。

所以我就去翻输学习些基本的格式,还有去网上搜索资料,看看别人是怎么写出类似的程序的,所以我按照老师出题的基本要求,再加上我对一大堆资料的快速消化,我终于敢确定我是能把万年历做好的。

但不是有了准备,事情就能顺利发展的,在编写程序的过程中,我尽量保证程序不出问题,就一个模块一个模块的编写,接过中途还是出现了一些问题,有符号漏打的,有函数未声明的,有程序不知道应该如何实现的。

但那些格式问题排查起来并不难,难的是有些程序不知道如何编写,例如我应该如何确定某年的元旦是哪天。

但通过仔细推算,我终于找到了推算元旦日期的公式。

后来做完基本要求部分,我还自己有了点创新,加了节日查询功能,及延时程序的自己设置。

所以没有做不到,只有想不到。

这次课程设计激起了我对高级语言学习的激情,前几个月一直认为好难就不去认真学,但这次课设后,我发现只要自己愿意花时间去理解,其实高级语言学起来并不难,所以我毅然决然的去报了计算机二级等级考试,
并打算学习汇编语言及Vb。

因为暑假我要留校在电子创新基地学习关于电子及单片机的知识,这就能很好的把C语言或C++运用于实物上了。

当然,想踏踏实实搞程序,必须要注意细节以及程序的书写规范。


然会对以后造成很大的麻烦。

其实我写过24位花样流水灯的程序,写过摇摇棒的程序,写过led显示屏的程序,研究过单线循迹小车的程序,研究过
无线温度检测及显示程序。

发现程序对于生活科技真是很有作用。

所以在以后的学习中,我会结合实践努力学好几种高级语言,为以后发展多创造出一个机会。

参考文献
[1]谭浩强《C程序设计》(第三版)
[2]谭浩强《C++面对对象程序设计》2007版
[3]谢昕刘觉夫王更生《C++程序设计》2010年12月第二版
[4]张晶高洪涛《C语言编程兵书》2013版
[5]百度文库:/。

相关文档
最新文档