我正在尝试在程序的主要部分使用switch语句,这是我的...
main()
int userOption;
while (userOption=!0)
{
cout<<"BUSINESS MANAGEMENT system <16102868>"<<endl;
cout<<"-------------------------------------"<<endl;
cout<<"EMPLOYEE OPTIONS"<<endl;
cout<<"1. Add Employee"<<endl;
cout<<"2. Edit Employee"<<endl;
cout<<"3. Layoff Employee"<<endl;
cout<<"4. View Employee List"<<endl;
cout<<"----------------------------------"<<endl;
cout<<"SCHEDULING OPTIONS"<<endl;
cout<<"5. Update Schedule"<<endl;
cout<<"6. Cancel Schedule"<<endl;
cout<<"7. View Schedule"<<endl;
cout<<"8. Export Schedule to CSV"<<endl;
cout<<"9. Export Schedule to HTML"<<endl;
cout<<"---------------------------------"<<endl;
cout<<"0. Quit"<<endl;
cout<<"----------------------------------"<<endl;
cout<<"Please enter an option:"
cin>>userOption
switch (userOption)
{
case 1:
AddEmployee()
break;
case 2:
EditEmployee()
break;
case 3:
LayoffEmployee()
break;
case 4:
DisplayEmployeeList()
break;
case 5:
AddSchedule()
break;
case 6:
CancelSchedule()
break;
case 7:
DisplaySchedule()
break;
case 8:
ExportScheduleCSV()
break;
case 9:
ExportScheduleHTML()
break;
default:
cout<<"Enter a number between 1 and 9:"<<endl;
}
我无法弄清楚我在哪里出错了。这是我在其中调用的大部分上述函数的代码......
class EmployeeHandler
{
public:
void AddEmployee()
{
std::string firstName;
std::string lastName;
float payRate;
std::cout<<"NEW EMPLOYEE"<<std::endl;
std::cout<<"First Name:"<<std::endl;
std::cin>>firstName;
std::cout<<"Last Name:"<<std::endl;
std::cin>>lastName;
std::cout<<"Pay Rate:"<<std::endl;
std::cin>>payRate;
employees_.push_back( Employee( firstName,lastName,payRate ) );
std::cout<<"**Employee m_employeeCount added"<<std::endl;
}
void EditEmployee()
{
std::string newFirst;
std::string newLast;
float newPay;
std::cout<<"Which employee would you like to edit"<<std::endl;
int indexEdit = GetSelection();
Employee& employee = employees_[indexEdit];
std::cout << employee << std::endl;
std::cout<<"Employee new first name:"<<std::endl;
std::cin>>newFirst;
std::cout<<"Employee new last name:"<<std::endl;
std::cin>>newLast;
std::cout<<"Employee new pay rate:"<<std::endl;
std::cin>>newPay;
employee = Employee( newFirst, newLast, newPay );
std::cout<<"** Employee index updated"<<std::endl;
}
void LayoffEmployee()
{
int index = GetSelection();
if( employees_[index].GetIsActive() )
{
std::cout << "Laying off employee:\n" << employees_[index] << std::endl;
employees_[index].LayOff();
}
else
{
std::cerr << "Already layed off employee:" << employees_[index] << std::endl;
}
}
void DisplayEmployeeList()
{
std::copy( employees_.begin(), employees_.end(), std::ostream_iterator<Employee>( std::cout, "\n" ) );
}
int GetSelection()
{
std::size_t indexNumber;
std::cout << "Select an employee from the list below by specifying its number:" << std::endl;
DisplayEmployeeList();
do{
while( !std::cin >> indexNumber )
{
std::cerr << "Select a number..." << std::endl;
}
if( indexNumber >= employees_.size() )
{
std::cerr << "Select a number within range of list below:" << std::endl;
DisplayEmployeeList();
}
}
while( indexNumber >= employees_.size() );
return indexNumber;
}
Employee& operator[]( std::size_t index )
{
return employees_[index];
}
const Employee& operator[]( std::size_t index ) const
{
return employees_[index];
}
std::size_t EmployeeCount() const
{
return employees_.size();
}
private:
std::vector<Employee> employees_;
};
答案 0 :(得分:3)
您的问题是您正在调用类的成员(函数),并且您没有该类的对象。
更改您的代码:
main()
int userOption;
EmployeeHandler e;
// ....
switch (userOption)
{
case 1:
e.AddEmployee();
break;
//...
答案 1 :(得分:2)
似乎有很多错误,但也许它们只是错别字(当然你应该说你的错误是什么,'它不起作用'永远不够好)。但是有一个错误就是这个
int userOption;
while (userOption!=0)
{
...
cout<<"Please enter an option:";
cin>>userOption;
switch (userOption)
{
看到问题?您的while循环在给出值之前测试userOption
的值。
简单的解决方法是将while循环更改为do ... while循环。
int userOption;
do
{
...
cout<<"Please enter an option:";
cin>>userOption;
switch (userOption)
{
...
}
}
while (userOption != 0);