最近学习了c++,深夜11点,保哥过来给了我这么一道题。
深夜叨扰,拒绝不好意思,而且刚好学到静态,可以拿来试水练习。我就答应了。
代码和注释安排:
#include <iostream>
#include <Windows.h>
#include <time.h>
using namespace std;//--------------------设置一个新的Date类-----------------------------
class Date {public:
void Chinese();//中国格式时间
void American();//美国格式时间
void Europe();//欧洲格式时间
void static set_yy ( int ) ;//年份识别函数
void static set_mm ( int ) ;
void static set_dd ( int ) ;
void static markchange(int);
private:
static char mark;
static int yy;//年份静态变量
static int mm;//月份静态变量
static int dd;//日期静态变量
};
int numb=1;
int Date::yy = 1000;//设置初始年份
int Date::mm = 3;//设置初始月份
int Date::dd = 19;//设置初始日期
char Date::mark = '.';//样式分隔符
//--------------------分隔符号的选择-----------------------------
void Date::markchange (int numa){
switch (numa) {
case 1 :mark = '.';break;
case 2 :mark = '/';break;
case 3 :mark = '-';break; }}
//--------------------主函数部分-----------------------------
void main(){
system("mode 58,30");
SetConsoleTitle("Date");//系统标题
time_t t;
struct tm * lt;
time (&t);//获取Unix时间戳
lt = localtime (&t);//转为时间结构
while(1){
for(int i=0;i<4;i++){//超过4次输入进行清屏处理
cout << "=========================================================\n";
cout << "请输入1-3选择您需要使用的显示格式(1:'.'||2:'/'||3:'-'):";
cin>>numb;
cout << "---------------------------------------------------------\n";
Date today;
Date::set_dd(lt->tm_mday); //日期赋系统所得值,超过31将引发警示
Date::set_yy(lt->tm_year+1900); //年份赋系统所得值
Date::set_mm(lt->tm_mon+1); //月份赋系统所得值
Date::markchange(numb); //改变中间分隔符样式
today.Chinese(); //显示中国格式的时间
today.Europe(); //显示欧洲格式的时间
today.American(); //显示美国格式的时间
cout << "=========================================================\n";
Sleep(500); }system("cls"); }}
//-----------------------时间防错处理-----------------------------
void Date::set_dd ( int val ){
if ( val >=1 && val <= 31 ) dd = val;
else cout << "日期信息错误!\n";}
void Date::set_mm ( int val ){
if ( val >=1 && val <= 12 ) mm = val;
else cout << "月份信息错误!\n";}
void Date::set_yy ( int val ){yy = val;}
//-----------------------时间显示-----------------------------
void Date::Chinese (){ cout << "中国当前日期为:" <<yy << mark << mm << mark << dd << endl;}
void Date::American (){ cout << "美国当前日期为:" << mm << mark << dd << mark << yy << endl;}
void Date::Europe (){ cout << "欧洲当前日期为:" << dd << mark << mm << mark << yy << endl;}
图片由于网速原因上传不了,有兴趣的码农兄弟可以试试,如有改良版本,请私聊或评论,多谢指教。