已阅读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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 蒸汽发电机市场前景分析及投资策略与风险管理研究报告(2024-2030)
- 隔音玻璃市场发展现状调查及供需格局分析预测报告
- 衬衫产业市场发展分析及竞争格局与投资机会研究报告
- 航海仪行业市场深度分析及发展策略研究报告
- 空中探险旅游行业发展分析及投资战略研究报告
- 2024届四川省成都西蜀实验中考适应性考试历史试题含解析
- 四川省成都市温江区踏水校2024年中考历史模试卷含解析
- 河南省郑州市第四中学2024届中考一模历史试题含解析
- 2024年江苏省淮安市钦工中学高考语文必刷试卷含解析
- 江苏省东台市实验初中达标名校2024届中考历史全真模拟试卷含解析
- 高中数学必修二4.3.1空间直角坐标系
- 重庆市户外招牌设置备案申请表
- 齿轮齿条传动设计计算完整版(共5页)
- 水果英语单词大全.ppt
- 杨公二十四山救贫水法
- 热工基础第三版思考题及习题答案详解
- 污水处理厂的污水处理毕业设计
- 血脑屏障对ICU常用抗生素的通透性
- (完整版)地下连续墙超声波检测方案
- 铁路路基边坡拱型骨架施工方案技术经济比选
- 防汛安全隐患检查记录表
评论
0/150
提交评论