従業員クラスに問題があります。プログラム自体にはサンプルの従業員があり、ユーザーはさらに多くの従業員をプログラムに入力できます。私が抱えている問題は、1 人の新しい従業員を追加して、サンプル従業員と新しく追加された従業員の両方のリストを印刷できることですが、2 番目の従業員を追加して印刷しようとすると、2 番目の従業員が最初の従業員を上書きします。従業員を追加しました。
問題が使用している配列 (数字、名、姓、部門の 4 つの要素) にあるのか、それとも呼び出されている関数に問題があるのか、コードの下で実行されているかどうかはわかりません。
ヘッダファイル:
#include <iostream>
using namespace std;
class employee
{
public :
employee();
employee(int, char*, char*, char*); // employee works number, name, department
void Set( int, char*, char*, char*); // set the number, name and dept
void Print();
void printmenu();
~employee(); //destructor
private:
int e_num; // employee number
char e_fname[30];
char e_lname [30];
char e_dept[30];
};
CPP ファイル:
#include <iostream>
#include "employee.h"
using namespace std;
employee::employee()
{
}
employee::employee(int num, char* fname, char* lname, char* dept)
{
Set(num, fname, lname, dept);
}
void employee::Set( int num, char* fname, char* lname, char* dept)
{
if (num < 0 )
{
return ; // add in code here to give error message if works is less than 0
}
e_num = num;
strcpy (e_fname, fname);
strcpy (e_lname, lname);
strcpy (e_dept, dept);
}
void employee::Print()
{
cout << e_num <<" \t " << e_fname <<" "<< e_lname <<" \t " << e_dept << " \n";
}
void employee::printmenu()
{
cout << "EMPLOYEE MENU\n"
<< "~~~~~~~~~~~~~\n"
<< "1. Add New Employee\n"
<< "2. Edit Employee\n"
<< "3. Delete Employee\n"
<< "4. Print Employee List\n"
<< "5. Exit\n";
}
employee::~employee()
{
}
主要:
#include <iostream>
#include "employee.h"
using namespace std;
void main (void)
{
char input;
bool done = false;
employee emp1(1, "Joe", "Bloggs", "Customer Service");// sample employee
int empcount = 1;
employee empnew[20];
int num, j=0, k=0; // num is employee number
char* fname = new char [20]; // employee first name
char* lname = new char [20]; // employee last name
char* dept = new char [30]; // employee department
while(!done)
{
employee pmenu;
pmenu.printmenu();
cout <<"Please make your selection:";
cin >> input;
switch (input)
{
case '1': // add new employee
cout<<"\nEnter Employee Number:";
cin >> num;
cout<<"\nEnter first name:";
cin >> fname;
cout<<"\nEnter Last name:";
cin >> lname;
cout << "\nEnter Department:";
cin >> dept;
cout << "\n";
empnew[j].Set(num, fname, lname, dept);
empcount++;
cout << "New employee added:"<< fname <<" "<<lname << "\n";
cout<< "New Number of Employees:" << empcount<< "\n\n";
break;
case '2': //Edit Employee
// enter stuff here
break;
case '3': //Delete Employee
// enter stuff here
break;
case '4': // print employee list
cout <<"Total number of Employees:"<<empcount<<endl;
cout <<"Number \t Employee Name \t Department \n" ;
if (empcount == 1)
{
emp1.Print();
}
else
{
emp1.Print();
empnew[j].Print();//print input
}
cout <<"\n";
break;
case '5':
cout << "Program closing\n";
done = true;
break;
}
}
getchar();
return ;
}
(すべてのコードを投稿して申し訳ありませんが、重要なものを残したくありませんでした)
2番目(および後続の従業員)を印刷するためにいくつかの異なる方法を試しましたが、配列または関数を変更しようとするとエラーが発生し、コードがコンパイルされません。
新入社員が使うと思った
empnew[j]= new employee (num ,fname,lname,dept);
しかし、それは私に「エラー:演算子「=はこれらのオペランドと一致しません」」を与えます
どちらも機能しない他の多くのバリエーションと一緒に。
ご想像のとおり、ive は c++ を使い始めたばかりなので、どんな助けも大いに役に立ちます。