日期格式实验报告.docx

上传人:b****8 文档编号:10236195 上传时间:2023-02-09 格式:DOCX 页数:18 大小:120.22KB
下载 相关 举报
日期格式实验报告.docx_第1页
第1页 / 共18页
日期格式实验报告.docx_第2页
第2页 / 共18页
日期格式实验报告.docx_第3页
第3页 / 共18页
日期格式实验报告.docx_第4页
第4页 / 共18页
日期格式实验报告.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

日期格式实验报告.docx

《日期格式实验报告.docx》由会员分享,可在线阅读,更多相关《日期格式实验报告.docx(18页珍藏版)》请在冰豆网上搜索。

日期格式实验报告.docx

日期格式实验报告

《程序设计实践》报告

学号;姓名周宇桔;题目来源及序号2010年题6-2;难度等级B

一、题目

第2题日期格式处理

a.程序功能简介:

一个处理日期格式得程序。

b.设计要求:

(1)解决程序运行中会出现非法操作的问题。

(2)在源程序基础上增加一个中文格式,使之能够实现中文日期的处理功能。

(3)增加可以从文件中输入日期的功能。

(4)如有可扩充的好主意,请自行设计到程序中。

二、问题分析及求解基本思路

该题目需要解决的功能较多,所以采用switch语句进行功能选择,每个功能之间不影响。

使用类更加方便。

通过访问类的成员函数来进行基本几项的格式转换。

而从文件输入这个功能,通过输入输出流操作来达到目的;最后的日期计算则采用基本加减计算来达到目的。

三、问题求解的整体框架结构

 

程序流程图如图1所示:

Switch显示可选功能并选择

定义类

输入路径,打开文件失败显示失败,成功则显示其中日期内容

输入日期

输入日期

输入日期

输入今天的年月日

结束

调用类的成员函数来转换成为需要的格式

调用类的成员函数来转换成为需要的格式

关闭文件

开始

是否非法

是否非法

是否非法

是否闰年

是,计算周几

否,计算周几

 

否否否

 

是是是

调用类的成员函数来转换成为需要的格式

 

图1.程序流程图

四、主要算法

算法1:

输入日期;

将日期分别赋值给对应变量yy,mm,dd;

输出yy年mm月dd日。

算法2:

从文件输入日期并显示

打开(“请输入你需要打开的文件的路径:

”);

如果(打开路径失败)输出"文件不能打开。

";

当(打开文件路径成功),获取文件中的日期字符,输出日期字符;

关闭文件。

算法3:

计算某个日期是星期几?

从键盘输入任意日期;

计算输入日期与1972年间的闰年个数d;

计算输入日期与1972年相距天数:

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+本年已过天数;

如果是闰年,2月29天;

如果非闰年,2月28天;

计算周几:

i=(u+5)%7

程序代码:

#include

#include

usingnamespacestd;

classDate//定义日期类Date。

{

private:

intyear,month,day;

public:

voidsetDate(inty=2013,intm=5,intd=16);//声明3个成员函数

voidshowDate1();

voidshowDate2();

};

voidDate:

:

setDate(inty,intm,intd)//获得待转换前的日期

{

year=y;

month=m;

day=d;

}

voidDate:

:

showDate1()//以"年.月.日"形式输出日期

{

cout<

if(month<10)cout<<'0';

cout<

if(day<10)cout<<'0';

cout<

}

voidDate:

:

showDate2()//以*年*月*日的形式输出日期

{

cout<<"转换后的日期格式是:

";

cout<

cout<

cout<

}

 

intmain()

{

Datea,b,c;//定义a,b,c3个以Date定义的对象

intyear,month,day;//人性化界面

intinput;

cout<<"请选择需要的功能:

"<

cout<<"1.将yy-mm-dd格式的日期转换成yy.mm.dd格式"<

cout<<"2.将yy-mm-dd和yy.mm.dd格式的日期转换成为yy年mm月dd日的格式"<

cout<<"3.将yy年mm月dd日格式的日期转换成为yy.mm.dd格式"<

cout<<"4.从文件输入日期并显示"<

cout<<"5.计算一个日期后一个天数是周几:

"<

cout<<"6.退出"<

cin>>input;

loop:

switch(input)//功能选择

{

case1:

cout<<"请输入一个日期,yy-mm-dd格式:

"<

cin>>year>>month>>day;

if(month>=13||day>=32)

{

cout<<"******输入非法******"<

gotoloop;//返回上一步输入操作

}

a.setDate(year,month,day);

cout<<"您输入的日期是:

";

cout<

cout<<"转换后的日期格式是:

";

a.showDate1();

break;

case2:

cout<<"请输入一个日期,yy-mm-dd格式:

"<

cin>>year>>month>>day;

if(month>=13||day>=32)

{

cout<<"******输入非法******"<

gotoloop;

}

b.setDate(year,month,day);

cout<<"您输入的日期是:

";

cout<

cout<<"转换后的日期格式是:

";

b.showDate2();

break;

case3:

cout<<"请输入一个日期,yy年mm月dd日格式:

(yymmdd)"<

cin>>year>>month>>day;

if(month>=13||day>=32)

{

cout<<"******输入非法******"<

gotoloop;

}

c.setDate(year,month,day);

cout<<"您输入的日期是:

";

cout<

cout<<"转换后的格式是:

";

c.showDate1();

cout<

break;

case4:

{

char*j=newchar[10];

cout<<"请输入你需要打开的文件的路径:

"<

cin>>j;

ifstreamin(j);

charch;

if(!

in)

{

cout<<"文件不能打开。

"<

return-1;

}

cout<<"该文件中的日期是:

";

while(in)

{

in.get(ch);

if(in)

cout<

}

in.close();

}

break;

case5:

intw,e,t,i,u;

cout<<"请输入一个日期,起始日期最早是1973.01.01:

"<

intc,v,b;

c=w%4;

v=w%400;

b=w%100;

cin>>w>>e>>t;

switch(e)

{

case1:

{

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t;

}

break;

case2:

{

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+31;

}

break;

case3:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+60;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+59;

}

break;

case4:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+91;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+90;

}

break;

case5:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+121;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+120;

}

break;

case6:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+152;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+151;

}

break;

case7:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+182;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+181;

}

break;

case8:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+213;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+212;

}

break;

case9:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+244;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+243;

}

break;

case10:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+273;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+272;

}

break;

case11:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+304;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+303;

}

break;

case12:

{

if(c=4)

{

if(v=400)

{

if(b=100)

u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+334;

}

}

elseu=u=((w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+333;

}

break;

}

i=(u+5)%7;

cout<

if(i>=1)cout<<"是周"<

else

cout<<"是周日"<

 

case6:

cout<<"********你选择退出*********谢谢使用"<

break;

}

return0;

}

五、测试

程序成功运行,进入选择界面如图所示:

 

退出系统如图8所示:

 

六、总结

操作非法的问题使用了goto语句来返回上一步;

编写程序时必须先用一个大概框架,不然编写的过程中思维很乱;

该程序使用了循环嵌套,类,输入输出流等知识点。

程序中功能只能一个一个的测试~不能连接起来,是严重的不足。

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 职业规划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1