Any assistance would be welcomed Your assignment is to implement a singly linked
ID: 3725339 • Letter: A
Question
Any assistance would be welcomed
Your assignment is to implement a singly linked pointer based list using an employee class. The employee class should contain the employee information listed in the “input” section below. The program should contain all functions listed in the functionality section below.
Input
Data about current employees should be on the file "Employee.txt". You will need to create your own employee file and submit it with the final project.
Each employee should have the following attributes:
Employee_Number Integer
Employee_Last_Name String
Employee_First_Name String
Employee_Years_of_Service Integer
3 employees must be loaded from the Employee.txt file on program start up.
Functionality
Command
Processing
ADD
Allows the user to “Add” an employee to the list
REMOVE
Allows the user to “Remove” an employee from the list
COUNT
Returns the number of employees in the list
Prints the employee information in the list to the console
QUIT
Stops processing
Output
All output should be on the console.
Data Structures
This program should utilize a singly linked pointer based list.
Command
Processing
ADD
Allows the user to “Add” an employee to the list
REMOVE
Allows the user to “Remove” an employee from the list
COUNT
Returns the number of employees in the list
Prints the employee information in the list to the console
QUIT
Stops processing
Explanation / Answer
// COPY THE BELOW CODE AND RUN IT ON C++ COMPILER
//make a txt file to read data initially named as "Employee.txt"
#include<iostream>
#include<stdlib.h>
#include<string>
#include<sstream>
#include<fstream>
using namespace std;
// Node class
class Node {
int emp_number;
string emp_last_name;
string emp_first_name;
int emp_year_of_service;
Node* next;
public:
//constructor
Node() {};
//function for assigning employees details
void SetData(int e_no,string first_name,string last_name,int year_of_service){
emp_number=e_no;
emp_first_name=first_name;
emp_last_name=last_name;
emp_year_of_service=year_of_service;
};
//for setting the next node
void SetNext(Node* aNext){
next = aNext;
};
//for returning the data of the node
int return_emp_no() { return emp_number; };
string return_first_name() { return emp_first_name; };
string return_last_name() { return emp_last_name; };
int year_of_service() { return emp_year_of_service; };
Node* Next() { return next; };
};
// List class
class List {
Node *head;
public:
List() { head = NULL; };
void Print();
int Count();
void Append(int emp_number,string first_name,string last_name,int emp_year_of_service);
void Delete(int emp_number,string first_name,string last_name,int emp_year_of_service);
};
/**
* function for PRINT command
*/
void List::Print() {
// Temp pointer
Node *tmp = head;
// No nodes
if ( tmp == NULL ) {
cout << "EMPTY" << endl;
return;
}
// One node in the list
if ( tmp->Next() == NULL ) {
cout << "EMPLOYEE NO IS:"<<tmp->return_emp_no()<<", FIRST NAME: "<<tmp->return_first_name()<<", LAST NAME: "<<tmp->return_last_name()<<", EMPLOYEE year_of_service: "<<tmp->year_of_service();
cout <<endl;
cout <<"---->";
cout << "NULL" << endl;
}
else {
// Parse and print the list
do {
cout << "EMPLOYEE NO IS:"<<tmp->return_emp_no()<<", FIRST NAME: "<<tmp->return_first_name()<<", LAST NAME: "<<tmp->return_last_name()<<", EMPLOYEE year_of_service: "<<tmp->year_of_service();
cout << endl;
cout <<"---->";
tmp = tmp->Next();
}
while ( tmp != NULL );
cout << "NULL" << endl;
}
}
//function for COUNT command
int List::Count() {
// Temp pointer
Node *tmp = head;
int i=0;
// No nodes
if ( tmp == NULL ) {
cout << "EMPTY" << endl;
return i;
}
// One node in the list
if ( tmp->Next() == NULL ) {
return 1;
}
else {
// Parse and print the list
do {
i++;
tmp=tmp->Next();
}
while ( tmp != NULL );
return i;
}
}
/**
* Append a node to the linked list
*/
void List::Append(int emp_number,string first_name,string last_name,int year_of_service) {
// Create a new node
Node* newNode = new Node();
newNode->SetData(emp_number,first_name,last_name,year_of_service);
newNode->SetNext(NULL);
// Create a temp pointer
Node *tmp = head;
if ( tmp != NULL ) {
// Nodes already present in the list
// Parse to end of list
while ( tmp->Next() != NULL ) {
tmp = tmp->Next();
}
// Point the last node to the new node
tmp->SetNext(newNode);
}
else {
// First node in the list
head = newNode;
}
}
/**
* Delete a node from the list
*/
void List::Delete(int emp_number,string first_name,string last_name,int emp_year_of_service) {
// Create a temp pointer
Node *tmp = head;
// No nodes
if ( tmp == NULL )
return;
// first node of the list
if (tmp->return_emp_no()==emp_number && first_name.compare(tmp->return_first_name())==0 && last_name.compare(tmp->return_last_name())==0 && tmp->year_of_service()==emp_year_of_service ){
head=tmp->Next();
delete tmp;
}
else {
// Parse thru the nodes
Node *prev=NULL;
do {
if (tmp->return_emp_no()==emp_number && first_name.compare(tmp->return_first_name())==0 && last_name.compare(tmp->return_last_name())==0 && tmp->year_of_service()==emp_year_of_service ) break;
prev = tmp;
tmp = tmp->Next();
} while ( tmp != NULL );
// Adjust the pointers
prev->SetNext(tmp->Next());
// Delete the current node
delete tmp;
}
}
int main()
{
// New list
List list;
// Append nodes to the list
string line;
ifstream fin;
//for reading the data from file Employee.txt
fin.open("Employee.txt");
if(fin.is_open()){
while(getline(fin,line)){
stringstream ss(line);
int emp_number,emp_year_of_service;
string first_name,last_name;
ss>>emp_number;
ss>>first_name;
ss>>last_name;
ss>>emp_year_of_service;
//entering atleast three records from the file employee.txt to the list
list.Append(emp_number,first_name,last_name,emp_year_of_service);
}
}
//here is the command utility
string command;
cout<<"Enter the command:";
cin>>command;
while(command!="QUIT"){
//PRINT COMMAND ACTION
if(command=="PRINT")list.Print();
//ADD COMMAND ACTION
if(command=="ADD"){
int emp_number,emp_year_of_service;
string first_name,last_name;
cout<<"Enter Employee Number: ";
cin>>emp_number;
cout<<"Enter First Name: ";
cin>>first_name;
cout<<"Enter Last Name: ";
cin>>last_name;
cout<<"Enter Year of Service: ";
cin>>emp_year_of_service;
list.Append(emp_number,first_name,last_name,emp_year_of_service);
}
//REMOVE COMMAND ACTION
if(command=="REMOVE"){
int emp_number,emp_year_of_service;
string first_name,last_name;
cout<<"Enter Employee Number: ";
cin>>emp_number;
cout<<"Enter First Name: ";
cin>>first_name;
cout<<"Enter Last Name: ";
cin>>last_name;
cout<<"Enter Year of Service: ";
cin>>emp_year_of_service;
list.Delete(emp_number,first_name,last_name,emp_year_of_service);
}
//COUNT COMMAND ACTION
if(command=="COUNT")cout<<"No of employees in the list is: "<<list.Count();
//AGAIN ENTER THE COMMAND
cout<<"Enter the command:";
cin>>command;
}
}
Related Questions
drjack9650@gmail.com
Navigate
Integrity-first tutoring: explanations and feedback only — we do not complete graded work. Learn more.