首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

如何把一个大程序写成多文件?就以下面程序做例子,如何把它分成多文件的,程序是对的

2013-11-01 
怎么把一个大程序写成多文件?就以下面程序做例子,怎么把它分成多文件的,程序是对的~#include iostream#i

怎么把一个大程序写成多文件?就以下面程序做例子,怎么把它分成多文件的,程序是对的~

#include <iostream>
#include <iomanip>

using namespace std;

class MYTIME{
public:
static bool noonFlag;
static bool IsValid(int, int, int);
MYTIME(int hour = 0, int minute = 0, int second = 0);//默认参数写在声明中(构造函数)
void Set(int);
void Set(int, int);
void Set(int, int, int);
void Get(int&, int&, int&)const;
void Hour(int);
int Hour()const;
void Minute(int);
int Minute()const;
void Second(int);
int Second()const;
void Input();
void Output()const;
private:
int hour, minute, second;
};

bool MYTIME::noonFlag = false;

bool MYTIME::IsValid(int hour, int minute, int second)
{
return (hour >= 0 && hour <= 12)&&(minute >= 0 && minute <= 60)&&(second >= 0 && second <= 60);
}

MYTIME::MYTIME(int hour, int minute, int second)
{
this->hour = hour;
this->minute = minute;
this->second = second;
if(!IsValid(hour, minute, second))
{
cout<<"不正确的参数!"<<endl;
exit(EXIT_FAILURE);
}
}

void MYTIME::Set(int hour)
{
if(hour >= 0 && hour <= 12)
{
this->hour = hour;
}
}

void MYTIME::Set(int hour, int minute)
{
if((hour >= 0 && hour <= 12) && (minute >= 0 && minute <= 60))
{
this->hour = hour;
this->minute = minute;
}
}

void MYTIME::Set(int hour, int minute, int second)
{
if(IsValid(hour, minute, second))
{
this->hour = hour;
this->minute = minute;
this->second = second;
}
else
{
cout<<"参数不正确!"<<endl;
}
}

void MYTIME::Get(int &hour, int &minute, int &second)const
{
hour = this->hour;
minute = this->minute;
second = this->second;
}

void MYTIME::Hour(int hour)
{
if(hour < 0)
{
hour = 0;
}
else if(hour > 12)
{
hour = 12;
}
this->hour = hour;
}

int MYTIME::Hour()const
{
return hour;
}

void MYTIME::Minute(int minute)
{
if(minute < 0)
{
minute = 0;
}
else if(minute > 60)
{
minute = 60;
}
this->minute = minute;
}

int MYTIME::Minute()const
{
return minute;
}

void MYTIME::Second(int second)
{
if(second < 0)
{
second = 0;
}
else if(second > 60)
{
second = 60;
}
this->second = second;
}

int MYTIME::Second()const
{
return second;
}

void MYTIME::Input()
{
char c1, c2;
while(cin>>hour>>c1>>minute>>c2>>second, !cin||!IsValid(hour, minute, second)||c1 != ':'||c1 != c2)
{
cout<<"不正确的时间,请重新输入:";
if(!cin)cin.clear();//清错误标记
cin.sync();//清缓冲区
}
}

void MYTIME::Output()const
{
cout<<setfill('0')<<setw(2)<<hour<<":"<<setfill('0')<<setw(2)<<minute<<":"<<setfill('0')<<setw(2)<<second;
if(noonFlag)
{
cout<<"(下午)";
}
}

/*int main()
{
const MYTIME a(0, 0, 0);//定义常对象时必须进行初始化
cout << "a = "; a.Output(); cout << endl;
const MYTIME b(8);
cout << "b = "; b.Output(); cout << endl;
const MYTIME c(9, 15);
cout << "c = "; c.Output(); cout << endl;
const MYTIME d(10, 30, 45);
cout << "d = "; d.Output(); cout << endl;
return 0;
}

int main()
{
MYTIME a;
cout << "a = ? "; a.Input();
cout << "a = "; a.Output(); cout << endl;
return 0;
}

int main()
{
const MYTIME a(12);
cout << "a = "; a.Output(); cout << endl;
MYTIME::noonFlag = true;
cout << "a = "; a.Output(); cout << endl;
MYTIME::noonFlag = false;
cout << "a = "; a.Output(); cout << endl;
return 0;


}

int main()
{
MYTIME a;
cout << "a = "; a.Output(); cout << endl;
a.Set(8);
cout << "a = "; a.Output(); cout << endl;
a.Set(9, 15);
cout << "a = "; a.Output(); cout << endl;
a.Set(10, 30, 45);
cout << "a = "; a.Output(); cout << endl;
a.Hour(12);
cout << "a = "; a.Output(); cout << endl;
a.Minute(50);
cout << "a = "; a.Output(); cout << endl;
a.Second(59);
cout << "a = "; a.Output(); cout << endl;
return 0;
}*/

int main()
{
const MYTIME a(12);
int hour, minute, second;
a.Get(hour, minute, second);
cout << "时: " << hour << endl;
cout << "分: " << minute << endl;
cout << "秒: " << second << endl;
cout << "时: " << a.Hour() << endl;
cout << "分: " << a.Minute() << endl;
cout << "秒: " << a.Second() << endl;
return 0;
}


最好分出来,给我做个例子,看例子会懂得比较快!感激不尽! 多文件 C++
[解决办法]
类的定义放在一个class.h中
类的构造函数实现和析构函数放在class.cpp文件中,文件包含#include "class.h"
类的其他服务函数放在classserver.cpp文件中,同时也包含#include "class.h"
具体分几个文件可以看实际情况!
[解决办法]
把函数、变量声明提出来放在MYTIME.h头文件中,在MYTIME.cpp文件中包含头文件

其他类似
[解决办法]
头文件MyTime.h

#pragma once
#include?<iostream>
#include?<iomanip>
?
using?namespace?std;
?
class?MYTIME{
public:
????static?bool?noonFlag;
????static?bool?IsValid(int,?int,?int);
????MYTIME(int?hour?=?0,?int?minute?=?0,?int?second?=?0);//默认参数写在声明中(构造函数)
????void?Set(int);
????void?Set(int,?int);
????void?Set(int,?int,?int);
????void?Get(int&,?int&,?int&)const;
????void?Hour(int);
????int?Hour()const;
????void?Minute(int);
????int?Minute()const;
????void?Second(int);
????int?Second()const;
????void?Input();
????void?Output()const;
private:
????int?hour,?minute,?second;
};

源文件MyTime.cpp

#include "MyTime.h"

bool MYTIME::noonFlag = false;
 
bool MYTIME::IsValid(int hour, int minute, int second)
{
    return (hour >= 0 && hour <= 12)&&(minute >= 0 && minute <= 60)&&(second >= 0 && second <= 60);
}
 
MYTIME::MYTIME(int hour, int minute, int second)
{
    this->hour = hour;
    this->minute = minute;
    this->second = second;
    if(!IsValid(hour, minute, second))
    {
        cout<<"不正确的参数!"<<endl;
        exit(EXIT_FAILURE);
    }
}
 
void MYTIME::Set(int hour)
{
    if(hour >= 0 && hour <= 12)
    {
        this->hour = hour;
    }
}
 
void MYTIME::Set(int hour, int minute)
{
    if((hour >= 0 && hour <= 12) && (minute >= 0 && minute <= 60))
    {
        this->hour = hour;
        this->minute = minute;
    }
}
 
void MYTIME::Set(int hour, int minute, int second)
{
    if(IsValid(hour, minute, second))
    {
        this->hour = hour;
        this->minute = minute;
        this->second = second;
    }
    else
    {
        cout<<"参数不正确!"<<endl;


    }
}
 
void MYTIME::Get(int &hour, int &minute, int &second)const
{
    hour = this->hour;
    minute = this->minute;
    second = this->second;
}
 
void MYTIME::Hour(int hour)
{
    if(hour < 0)
    {
        hour = 0;
    }
    else if(hour > 12)
    {
        hour = 12;
    }
    this->hour = hour;
}
 
int MYTIME::Hour()const
{
    return hour;
}
 
void MYTIME::Minute(int minute)
{
    if(minute < 0)
    {
        minute = 0;
    }
    else if(minute > 60)
    {
        minute = 60;
    }
    this->minute = minute;
}
 
int MYTIME::Minute()const
{
    return minute;
}
 
void MYTIME::Second(int second)
{
    if(second < 0)
    {
        second = 0;
    }
    else if(second > 60)
    {
        second = 60;
    }
    this->second = second;
}
 
int MYTIME::Second()const
{
    return second;
}
 
void MYTIME::Input()
{
    char c1, c2;
    while(cin>>hour>>c1>>minute>>c2>>second, !cin
[解决办法]
!IsValid(hour, minute, second)
[解决办法]
c1 != ':'
[解决办法]
c1 != c2)
    {
        cout<<"不正确的时间,请重新输入:";
        if(!cin)cin.clear();//清错误标记
        cin.sync();//清缓冲区
    }
}
 
void MYTIME::Output()const
{
    cout<<setfill('0')<<setw(2)<<hour<<":"<<setfill('0')<<setw(2)<<minute<<":"<<setfill('0')<<setw(2)<<second;
    if(noonFlag)
    {
        cout<<"(下午)";
    }
}


main文件:MyTimeMain.cpp

#include "MyTime.h"

int main()
{
    const MYTIME a(12);
    int hour, minute, second;
    a.Get(hour, minute, second);
    cout << "时: " << hour << endl;
    cout << "分: " << minute << endl;
    cout << "秒: " << second << endl;
    cout << "时: " << a.Hour() << endl;
    cout << "分: " << a.Minute() << endl;
    cout << "秒: " << a.Second() << endl;
    return 0;
}

热点排行