课程设计实验报告万年历Word格式.docx
《课程设计实验报告万年历Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计实验报告万年历Word格式.docx(45页珍藏版)》请在冰豆网上搜索。
用户多次进行输入,知道用户满意为止。
本程序中,因为要用到万年历的时间校对系统,所以,在设计的时候,我定义了一个时间类:
clock类;
由于系统要同步到本地的时间〔即为运行时电脑上显示的时间〕,这里用到了structtime结构体,接下来就是万年历的查询系统功能里面的函数,这些函数要实现的有指导用户进行操作的选项的界面,有计算该月的1号是星期几的函数,有输出每周即每月的表头函数、判断是否为闰年、判断每个月有多少天、要查询的那天距今天有多少天、判断所要查询的年份有多少天、计算指定日期距今天有多少天等函数。
其中,共含一个主函数文件、三个功能文件、一个功能函数头文件、界面文件以及时钟类文件。
其中,功能函数是主要的函数实现部分,时钟类则主要是实现万年历时间系统。
在此只涉及部分函数的实现细节,其他函数详看程序源代码:
本程序中,我只设计了一个clock类,类里面有实现时间系统校对功能的私有量,在进行时间校对的过程中,我选择了重载的方法,以到达自己想要的结果。
函数部分的实现则是比较普通的,没有什么特殊的地方。
其中有如下函数需要实现:
intweek(inty,intm);
//计算该月一号是星期几
voidprintweek();
//输出每周表头
voidprintmonth(intm);
//输出每月表头
intleep(inty);
//判断该年是否闰年
intmd(inty,intm);
//判断该月有多少天
voidother(intyear);
intdays1(inty,intm,intd);
//计算该天时这一年的第几天
intdays2(inty);
//判断该年有多少天
intdays3(inty);
//计算从元年到该之年前总天数
inttotaldays(inty,intm,intd);
//计算指定日期距今天的天数
intyi();
//实现万年历的时间校对功能
inter();
//进入万年历的系统功能
intfirst();
//实现第一个功能
intsecond();
//实现第二个功能
voidthird();
//实现第三功能
//inttiangandizhi();
intjiemian1();
//界面1
intjiemian2();
在jiemian(),intmd()及voidthird()的实现过程中,我选用了switch-case套用switch-case语句;
在intweek()函数中,我采用了蔡勒公式用于计算每个月的星期一是多少,其他函数的实现详看源代码。
在这个程序设计中,有好多知识是我以前没有接触过得,这一点还是比较欣慰的吧,例如,system〔“pause”〕有着清屏作用,还有就是计算每个月的1号是星期几的问题以及程序运行后背景与字体颜色的变换要用到system〔“color”,9b〕
#include<
iostream>
fstream>
//文件输出
stdlib.h>
//清屏
iomanip>
//控制宽度
#include<
time.h>
//这两个头文件是为了调用系统时间的
stdio.h>
conio.h>
sstream>
usingnamespacestd;
//以下六个函数是第三个功能里的
intjiemian()
{
system("
cls"
);
color9d"
//控制程序背景和字体的颜色,均为16进制,9背景颜色,d字体颜色
cout<
<
setw(6)<
"
"
====================================================================="
endl;
==========★=======================================★================"
╬---★★★★★★★★--------╬"
╬╬"
╬★欢送进入万年历的页面★╬"
╬★★★★╬"
╬★★╬"
╬*****----该万年历有以下功能供您选择----*****╬"
╬*★*....1.万年历的时间校对系统....*★*╬"
╬★*....2.万年历的查询系统.........★*╬"
╬*★*..0.退出..................*★*╬"
╬★......................★╬"
========================WvWvW★★★WvWvW============================="
endl<
cout<
请输入您要使用的功能的序号〔回车键确认〕:
;
intn;
cin>
>
n;
switch(n)
{
case1:
yi();
break;
case2:
er();
case0:
exit(0);
}
pause"
return0;
}
classClock{
public:
Clock(inta=0,intb=0,intc=0):
hour(a),minute(b),second(c){}
voidsettime(inta=0,intb=0,intc=0){
hour=a;
minute=b;
second=c;
voidshowtime(){
现在时间为"
hour<
:
minute<
second<
}
voidoperator++(int){
second++;
if(second==60){
second=0;
minute++;
if(minute==60){
minute=0;
hour++;
if(hour==24)
hour=0;
voidoperator--(int){
second--;
if(second==-1){
second=59;
minute--;
if(minute==-1){
minute=59;
hour--;
if(hour==-1)
hour=23;
private:
inthour,minute,second;
};
intyi(){
chara,i,temp[30];
intb,c,d,shi,fen,miao;
time_tt;
time(&
t);
structtm*now;
//tm结构体,得到本地时间
now=localtime(&
strftime(temp,30,"
%H"
now);
istringstreaminput3(temp);
input3>
shi;
%M"
istringstreaminput4(temp);
input4>
fen;
%S"
istringstreaminput5(temp);
input5>
miao;
Clockmyclock;
myclock.settime(shi,fen,miao);
myclock.showtime();
是否要调整时间,如果是请按y,按其他键继续返回主菜单"
a=getch();
if(a=='
y'
){
请问是要将现在的时间调大还是调小,如果调大请按m,否者按n"
do{
i=getch();
if(i=='
m'
请输入要增加小时的个数:
b;
b*=3600;
while(b--)
myclock++;
请输入要增加分钟的个数:
c;
c*=60;
while(c--)
请输入要增加的秒数:
d;
while(d--)
elseif(i=='
n'
请输入要减少小时的个数:
myclock--;
请输入要减少分钟的个数:
请输入要减少的秒数:
elsecout<
输入有误,请重新输入"
}while(i!
='
&
i!
jiemian();
inter(){
jiemian1()<
jiemian2()<
intmain(){
jiemian()<
//调用jiemian函数,到达页面
yi()<
intjiemian1()
{
=============================================================="
╬***********************************************************╬"
╬╬"
╬〔二〕现在进入万年历查询系系统╬"
╬该系统有以下功能可供您选择╬"
jiemian2();
intjiemian2()
╬系统功能╬"
╬1、查询某年的日历╬"
╬2、查询某年某月的日历╬"
╬3、查询某年某月某日的信息╬"
╬4、返回╬"
first();
second();
case3:
third();
case4:
jiemian();
default:
cout<
}}while(n<
1||n>
4);
点任意键返回主菜单"
intfirst()//第一个功能,查询某年的日历
ofstreamoutfile("
第一个功能.txt"
ios:
out);
//定义一个文件输出流对象outfile
inty,m,w,d,i,day;
请输入你要查询的年份:
y;
您所查询的内容如下:
y<
年日历"
other(y);
outfile<
//输出到文件
for(m=1;
m<
=12;
m++)
intm1,y1;
//m1是指月份,y1是指年份
m1=m;
y1=y;
if(m1<
3)
{
m1+=12;
y1--;
}//在蔡勒公式中,某年的1,2月份要看作是上一年的13,14月份
w=week(y1,m1);
//调用week函数,计算该月一号是星期几
day=md(y,m);
//调用md函数,判断该月有多少天
printmonth(m);
//调用printmonth函数,输出月份表头
outfile<
月份"
printweek();
setw(8)<
Sun"
Mon"
Tues"
Wed"
Thurs"
Fri"
Sat"
//输出到文件
for(i=0;
i<
w;
i++)//假设每个月前面有空的,将其空出,w是指每个月的1号是星期几
cout<
outfile<
}
for(d=1;
d<
=day;
d++,w++)//输出该月的日历,day是指每个月的天数
if(w%7==6)
{
cout<
outfile<
}
outfile.close();
//关闭文件
intsecond()//第二个功能查询某年某月的日历
第二个功能.txt"
请输入你要查询的年月:
y>
m;
w=week(y,m);
day=md(y,m);
年"
月"
printweek();
for(i=0;
i++)
for(d=1;
d++,w++)
if(w%7==6)//w%7是判断换行不行的,星期日在第一位,星期六在最后一位
voidthird()//第三个功能,查询某年某月某日的信息
//cout<
tiangandizhi()<
第三个功能.txt"
inty,m,d,n;
请输入您要查询的年月日:
m>
n=totaldays(y,m,d);
距离今天还有"
n<
天"
intmonth,day;
month=(y+y/4+5-42+26*(m+1)/10+d)%7;
//蔡勒公式,用于计算星期几
switch(m)
switch(d)
这天是元旦!
break;
b