Added file headers and updated the readpassword utility functionality

This commit is contained in:
Jissin Mathew
2026-06-11 18:02:09 +05:30
parent dc5da0a7b7
commit 0bef16e82c
19 changed files with 127 additions and 10 deletions
@@ -6,6 +6,7 @@ Description: Implementation file containing the method definitions of the
Author: Trenser
Date:19-May-2026
*/
#include "ComboPackage.h"
#include "Controller.h"
#include "Enums.h"
@@ -1,3 +1,12 @@
/*
File: FileHeader.h
Description: Defines the FileHeader structure used to store
metadata for binary record files, including
record count and capacity.
Author: Trenser
Created: 10-June-2026
*/
#pragma once
#include <cstddef>
@@ -1,3 +1,13 @@
/*
File: MappingInfo.h
Description: Defines the MappingInfo structure used for
managing Windows file mapping operations.
Stores handles, mapped view pointer,
file metadata, and capacity information.
Author: Trenser
Created: 10-June-2026
*/
#pragma once
#include <windows.h>
#include <string>
@@ -1,3 +1,12 @@
/*
File: RecordState.h
Description: Defines the RecordState enumeration used to
represent the state of a record in storage.
States include CLEAN, NEW_RECORD, and MODIFIED.
Author: Trenser
Created: 10-June-2026
*/
#pragma once
enum class RecordState : int
@@ -1,3 +1,15 @@
/*
File: SerializedRecords.h
Description: Defines serialized structures for persistent storage
and retrieval of system entities including User,
Notification, Service, ComboPackage, InventoryItem,
ServiceBooking, JobCard, Invoice, and Observer.
These structures use fixed-size character arrays
and primitive types for binary serialization.
Author: Trenser
Created: 10-June-2026
*/
#pragma once
#include "Utility.h"
#include "Enums.h"
@@ -1,3 +1,14 @@
/*
File: SharedMemory.cpp
Description: Implements shared memory utilities for managing
Windows file mapping operations. Provides functions
to create, open, resize, and close mappings, as well
as access headers, records, and ensure synchronization
across processes.
Author: Trenser
Created: 11-June-2026
*/
#include "SharedMemory.h"
#include "Config.h"
@@ -1,3 +1,14 @@
/*
File: SharedMemory.h
Description: Declares functions for managing Windows file
mapping and shared memory operations. Provides
utilities for creating, resizing, and closing
mappings, as well as accessing headers and
record data.
Author: Trenser
Created: 10-June-2026
*/
#pragma once
#include <cstddef>
#include "MappingInfo.h"
@@ -1,3 +1,13 @@
/*
File: TrackedRecord.h
Description: Defines the TrackedRecord template structure used
to manage objects with associated record state and
slot index. Supports tracking of CLEAN, NEW_RECORD,
and MODIFIED states for persistence and synchronization.
Author: Trenser
Created: 10-June-2026
*/
#pragma once
#include "RecordState.h"
@@ -6,7 +6,6 @@ Author: Trenser
Date: 19-May-2026
*/
#pragma once
#include <string>
#include "Map.h"
@@ -6,6 +6,7 @@ Description: Implementation file containing the method definitions of the
Author: Trenser
Date:19-May-2026
*/
#include <stdexcept>
#include <sstream>
#include "SerializedRecords.h"
@@ -6,6 +6,7 @@ Description: Header file declaring the ServiceBooking class, which represents
Author: Trenser
Date:19-May-2026
*/
#pragma once
#include <string>
#include "Map.h"
@@ -6,6 +6,7 @@ Description: Header file declaring the UserManagementService class, which manage
Author: Trenser
Date:19-May-2026
*/
#pragma once
#include <string>
#include "Map.h"
@@ -10,6 +10,7 @@
#include <limits>
#include <string>
#include <stdexcept>
#include <conio.h>
namespace util
{
@@ -54,6 +55,48 @@ namespace util
value = cleanedValue;
}
/*
* Function: readPassword
* Description: Reads a password from console without echoing characters;
* displays '*' for each character typed, handles backspace,
* and cleans commas from the result.
* Parameters:
* value - reference to a string where the password will be stored
* Returns:
* void - no return value
*/
inline void readPassword(std::string& value)
{
value.clear();
char currentCharacter;
while ((currentCharacter = _getch()) != '\r')
{
if (currentCharacter == '\b')
{
if (!value.empty())
{
value.pop_back();
std::cout << "\b \b";
}
}
else
{
value += currentCharacter;
std::cout << '*';
}
}
std::cout << std::endl;
std::string cleanedValue;
for (int iterator = 0; iterator < value.length(); iterator++)
{
if (value[iterator] != ',')
{
cleanedValue += value[iterator];
}
}
value = cleanedValue;
}
/*
* Function: pressEnter
* Description: Pauses execution until the user presses Enter.
@@ -30,7 +30,6 @@ Description: Displays the customer menu and handles user input until logout is s
Parameter: None
Return type: void
*/
void CustomerMenu::showMenu()
{
while (true)
@@ -914,7 +914,7 @@ inline void changePasswordHelper(Controller& controller)
util::clear();
std::cout << "Change Password\n";
std::cout << "Enter new password: ";
util::read(newPassword);
util::readPassword(newPassword);
if (!util::isPasswordValid(newPassword))
{
std::cout << "Error: Password is not strong enough!\n";
@@ -928,7 +928,7 @@ inline void changePasswordHelper(Controller& controller)
continue;
}
std::cout << "Confirm new password: ";
util::read(confirmedPassword);
util::readPassword(confirmedPassword);
if (confirmedPassword != newPassword)
{
std::cout << "Passwords are different. Try again\n";
@@ -106,7 +106,7 @@ void UserInterface::login()
std::cout << "Enter username: ";
util::read(username);
std::cout << "Enter password: ";
util::read(password);
util::readPassword(password);
if (m_controller.login(username, password))
{
const User* authenticatedUser = m_controller.getAuthenticatedUser();
@@ -167,7 +167,7 @@ void UserInterface::registerCustomer()
return;
}
std::cout << "Enter password: ";
util::read(password);
util::readPassword(password);
if (!util::isPasswordValid(password))
{
std::cout << "Error: Password is invalid!";