所以这是问题所在: 办公室在8:00:00开始工作,员工可以在17:00:00离开。 编写一个OOP程序,获取员工进入和退出的时间。 如果员工的工作时间晚于8:10:00,程序应该说员工已经延迟,如果超过该员工,应该说员工准时。如果一个人在17:30:00之后退出,该计划应该说该员工已经加班,如果超过该时间,该计划应该说该员工已按时退出。 所以这是代码:
#include <iostream>
using namespace std;
class wTime
{
public:
void get_entime(int, int, int);
void get_extime(int, int, int);
bool calc_en();
bool calc_ex();
void show_result();
private:
int h1, m1, s1;
int h2, m2, s2;
};
void wTime::get_entime(int x=8,int y=0, int z=0)
{
x = h1;
y = m1;
z = s1;
cout << "Enter the entry time in 24 hour format (hh mm ss): " << endl;
cin >> x >> y >> z;
}
void wTime::get_extime(int a=17, int b=0, int c=0)
{
a = h2;
b = m2;
c = s2;
cout << "Enter the exit time in 24 hour format: (hh mm ss) : " << endl;
cin >> a >> b >> c;
}
bool wTime::calc_en()
{
if (h1 > 8)
return true;//takhir dashte;
if (h1 == 8 && m1 > 10 )
return true;//takhir dashte;
if (h1 < 8)
return false;//on time boode;
if (h1 == 8 && m1 < 9)
return false;//on time boode;
}
bool wTime::calc_ex()
{
if (h2 > 17)
return true;//ezafe kari dashte;
if (h2 >= 17 && m2 >= 30)
return true;//ezafe kari nadashte
if (h2 == 17 && m2 < 30)
return false;
}
void wTime::show_result()
{
if (calc_en() == true)
cout << "Employee has delayed." << endl;
if (calc_en() == false)
cout << "Employee was on time" << endl;
if (calc_ex() == true)
cout << "Employee has stayed an overtime" << endl;
if (calc_ex() == false)
cout << "Employee has exited on time." << endl;
}
int main()
{
wTime em;
em.get_entime();
em.calc_en();
em.get_extime();
em.calc_ex();
em.show_result();
cin.ignore();
cin.get();
return 0;
}
问题在于,对于我输入的每一个mm mm ss它只会返回 员工推迟了。 员工已按时退出。 怎么了?
答案 0 :(得分:2)
当您通过cin
获取用户输入时,您将其放入局部变量(特别是函数参数)中,然后立即将其销毁。你实际上并没有将它们存储起来用于后续的计算。
你可能想做这样的事情:
void wTime::get_entime()
{
cout << "Enter the entry time in 24 hour format (hh mm ss): " << endl;
cin >> h1 >> m1 >> s1;
}
(同样适用于get_extime()
)。这将把值存储在成员变量中,以便它们可以在计算方法中使用。
答案 1 :(得分:0)
bool wTime::calc_en()
{
if (h1 > 8)
return true;//takhir dashte;
if (h1 == 8 && m1 > 10 )
return true;//takhir dashte;
if (h1 < 8)
return false;//on time boode;
if (h1 == 8 && m1 < 9)
return false;//on time boode;
}
你应该输入一个默认的返回值
例如8:10或8:09没有得到评估(wTime :: calc_ex中存在同样的问题)
当然还有前面提到的输入问题