文档介绍:《程序设计实践》报告
学号110342245 :姓名 周宇桔 :题目来源及序号2010
年题6-2 ;难度等级—B_
一、 题目
第2题日期格式处理
程序功能简介:一个处理日期格式得程序。
设计要求:
解决程序运行中会出现非法操作的问题。
在源程序基础上增加一个中文格式,使之能够实现中文日期的处理功能。
增加可以从文件中输入日期的功能。
⑷如有可扩充的好主意,请自彳丁设计到程序中。
二、 问题分析及求解基本思路
该题目需要解决的功能较多,所以采用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<iostream>
include <fstream>
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 showDatel();
void showDate2();
};
void Date::setDate(int y,int m,int d) 〃获得待转换前的日期
{
year=y;
month=m;
day=d;
}
void Date::showDate 1 ()//LU1 •日"形式输出日期
cout«year«".n;
if (month<10) cout«,0,; cout«month«". ”; if (day<10) coutvv'O'; cout«day«endl;
}
void Date::showDate2()//以*年*月*日的形式输出日期 {
cout«"转换后的日期格式是:”; coutvvyearvv”年”;
cout«month«"月”; cout«day«"日"«endl;
} int main()
{
Date a,b,c; 〃定义 a,b,c3 个以 Date
定义的对象
int year,month,day; 〃人性化界面
int input;
cout«n请选择需要的功能vvendl;
cout«"-mm-"«endl;
cout«-mm- H的 格式"«endl;
cout«"«endl; cout«"«endl;
cout«":"«endl;
cout«""«endl; cin»input;
loop: switch(input) 〃功能选择
{
case 1:cout«n请输入一个日期,yy-mm-dd 格式:"vvendl; cin»year»month»day;
if(month>= 13 Ilday>=32)
{ coutvv”****** 输入非法 ****** "vvendl; 〃输入非法
goto loop; 〃返回上一步输入操作
}
setDate(year,month,day); cout«n您输入的日期是:”;
cout«year«"-',«month«,'-n«day«endl;
cout«"转换后的日期格式是:”;
showDatel();
break;
case 2:cout«n请输入一个日期,yy-mm-dd 格式:”vv