日期格式实验报告.doc_第1页
日期格式实验报告.doc_第2页
日期格式实验报告.doc_第3页
日期格式实验报告.doc_第4页
日期格式实验报告.doc_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计实践报告学号 110342245 ;姓名 周宇桔 ;题目来源及序号 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 using namespace std;class Date /定义日期类Date。private:int year,month,day;public:void setDate(int y=2013,int m=5 ,int d=16); /声明3个成员函数void showDate1();void showDate2();void Date:setDate(int y,int m,int d) /获得待转换前的日期year=y;month=m;day=d;void Date:showDate1()/以年.月.日形式输出日期 coutyear.;if (month10) cout0;coutmonth.;if (day10) cout0;coutdayendl;void Date:showDate2()/以*年*月*日的形式输出日期cout转换后的日期格式是:;coutyear年;coutmonth月;coutday日endl; int main()Date a,b,c; /定义a,b,c3个以Date定义的对象int year,month,day; /人性化界面int input;cout请选择需要的功能:endl;cout1.将yy-mm-dd格式的日期转换成yy.mm.dd格式endl;cout2.将yy-mm-dd和yy.mm.dd格式的日期转换成为yy年mm月dd日的格式endl;cout3.将yy年mm月dd日格式的日期转换成为yy.mm.dd格式endl;cout4.从文件输入日期并显示endl;cout5.计算一个日期后一个天数是周几:endl;cout6.退出input;loop:switch(input) /功能选择 case 1:cout请输入一个日期,yy-mm-dd格式:yearmonthday;if(month=13|day=32) cout*输入非法*endl; /输入非法 goto loop; /返回上一步输入操作a.setDate(year,month,day);cout您输入的日期是:;coutyear-month-dayendl;cout转换后的日期格式是:;a.showDate1();break;case 2:cout请输入一个日期,yy-mm-dd格式:yearmonthday;if(month=13|day=32) cout*输入非法*endl; goto loop;b.setDate(year,month,day); cout您输入的日期是:; coutyear-month-dayendl; cout转换后的日期格式是:;b.showDate2();break;case 3:cout请输入一个日期,yy年mm月dd日格式:(yy mm dd)yearmonthday;if(month=13|day=32) cout*输入非法*endl; goto loop;c.setDate(year,month,day);cout您输入的日期是:;coutyear年month月dayendl;cout转换后的格式是:;c.showDate1();coutyear-month-dayendl;break;case 4:char *j=new char10; cout请输入你需要打开的文件的路径:j; ifstream in(j); char ch; if(!in) cout文件不能打开。endl; return -1;cout该文件中的日期是:; while(in) in.get(ch); if(in) coutch; in.close(); break;case 5:int w,e,t,i,u;cout请输入一个日期,起始日期最早是1973.01.01:wet;switch(e) case 1: u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t; break; case 2:u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+31;break; case 3: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+60; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+59; break; case 4: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+91; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+90; break; case 5: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+121; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+120; break; case 6: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+152; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+151; break; case 7: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+182; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+181; break; case 8: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+213; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+212; break; case 9: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+244; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+243; break; case 10: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+273; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+272; break; case 11: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+304; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+303; break; case 12: if(c=4) if(v=400) if(b=100) u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+334; else u=u=(w-1972)*365+(w-1973)%4-(w-1973)/100+(w-1973)/400)+t+333; break;i=(u+5)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论