user.h (second update)
user_2508819
plain_text
2 years ago
3.4 kB
21
Indexable
#pragma once
#include <iostream>
#include <string>
using namespace std;
// Set Data Structure
struct UserInfo
{
// User Information - Attributes
int userID;
string firstName;
string lastName;
string fullName;
string email;
string gender;
int age;
string phoneNumber;
string address;
string state;
string nationality;
string martialStatus;
string bloodType;
string occupation;
UserInfo(int id, const string &first, const string &last, const string &full, const string &mail, const string &gen, int a,
const string &phone, const string &addr, const string &st, const string &nation,
const string &martial, const string &blood, const string &occ)
: userID(id), firstName(first), lastName(last), fullName(full), email(mail), gender(gen), age(a),
phoneNumber(phone), address(addr), state(st), nationality(nation), martialStatus(martial),
bloodType(blood), occupation(occ) {}
};
// Set Data Structure - Singly Linked List
struct UserNode
{
UserInfo info;
UserNode *next;
UserNode(const UserInfo &userData) : info(userData), next(nullptr) {}
};
// User Class
class User
{
private:
UserNode *head;
public:
User() : head(nullptr) {}
// Insert a new user at the front of the linked list
void insertFront(const UserInfo &userData)
{
UserNode *newNode = new UserNode(userData);
newNode->next = head;
head = newNode;
}
// Delete a user with a specific userID
bool deleteUser(int userID)
{
UserNode *current = head;
UserNode *prev = nullptr;
while (current)
{
if (current->info.userID == userID)
{
if (prev)
{
prev->next = current->next;
}
else
{
head = current->next;
}
delete current;
return true; // User found and deleted
}
prev = current;
current = current->next;
}
return false; // User with userID not found
}
// Search for a user by userID and return the UserData
UserInfo *searchUser(int userID)
{
UserNode *current = head;
while (current)
{
if (current->info.userID == userID)
{
return ¤t->info; // User found
}
current = current->next;
}
return nullptr; // User with userID not found
}
// Display all users in the linked list
void displayUsers()
{
UserNode *current = head;
while (current)
{
cout << "User ID: " << current->info.userID << endl;
cout << "Name: " << current->info.firstName << " " << current->info.lastName << endl;
// Display other user attributes as needed
cout << "-----------------------" << endl;
current = current->next;
}
}
// Destructor to free memory
~User()
{
UserNode *current = head;
while (current)
{
UserNode *temp = current;
current = current->next;
delete temp;
}
}
};
Editor is loading...