Inventory Management Submission Details Part 1 ✓ Solved

72 Inventory Managementsubmission Detailspart 1 to be submitted on e

Develop an inventory management application for a small electronics company that incorporates role-based access control (RBAC), dynamic and flexible menu loading, user authentication, and inventory operations such as adding, updating, removing, and displaying products. The application must load user and menu data from external files, implement inheritance and polymorphism, ensure input validation, and produce a modular, maintainable code structure.

The application begins with user authentication, prompting for username and password. Users are categorized as managers or employees, with managers having access to all menu options, while employees see only restricted options. User data is stored in a comma-separated file "Users.dat," and the initial superuser "admin" with password "admin" is hardcoded. Users can be added through the application, with safeguards against duplicates, and passwords can be changed after validation.

The menu system dynamically loads menu items from "MenuList.dat," with each item specifying a description, a flag indicating if it is restricted to managers, and an associated command class name. The menu always includes an "Exit" option. Command classes implement specific functionalities such as adding users, removing users, changing passwords, managing products in the inventory (adding, updating, deleting, displaying), and displaying the overall inventory. Each command class corresponds to a menu item.

The inventory consists of products stored in a class called ProductCatalog. Each Product holds details such as ID, name, cost, quantity, and margin. The retail price is calculated as cost plus a percentage margin, which is displayed alongside other product details. Inventory data loads from "Inventory.dat," formatted with product details including a unique ID, name, cost, quantity, and margin.

The program's flow starts with main(), prompting for login credentials, authenticates the user, and loads the inventory and menu. It then displays the menu, which is reloaded after each command execution, until the user chooses to exit. The menu options are executed via dynamically mapped classes, enabling easy reordering and modification. Input validation ensures robustness, and unit test methods are required for each core method to verify functionality.

Implementation Requirements:

  • Implement inheritance for base classes and child classes where appropriate.
  • Use multiple classes within a single program for modular design.
  • Perform input validation for user entries.
  • Implement polymorphism through command classes that handle different menu actions.
  • Ensure the menu adapts easily to changes in order, descriptions, or access restrictions.
  • Show a login prompt with validation; restrict access based on user role.
  • Store and load data from external .dat files, creating them if they don't exist.
  • Display products with calculated retail prices.
  • Avoid duplicate users during addition, and do not change passwords unless validation passes.
  • Develop unit tests for each key method to ensure accuracy.

Specific Functional Details:

  • User Authentication: Existing "admin" user hardcoded; additional users managed via secure file.
  • Menu System: Loaded from "MenuList.dat" with options including adding, removing, updating, and displaying products, and user management actions. Access restrictions apply based on roles.
  • Inventory Management: Add, remove, find, print inventory details, calculate and display retail prices.
  • Persistence: Save user data, menu configurations, and inventory to respective files; load at startup.
  • Security: Protect sensitive operations, validate inputs.

Deliverables:

  1. Part 1 (for eLearning submission):
  • Unit test methods for core functions listed above.
  • Implementation of AuthenticateUser() function.
  • Zip the src directory contents; ensure files are proper.
  • Part 2:
    • Full functioning program with all class implementations, command patterns, input validation, and unit tests.

    Follow coding standards for clarity, comments, and structure. Test all methods to verify correctness before submission.

    Note:

    This is a comprehensive inventory management application emphasizing object-oriented principles, file handling, user authentication, role-based access, flexible menu systems, and robust inventory operations for a small electronics business.

    References

    • Gamma, E., Helm, R., Johnson, R., & Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley.
    • Lethbridge, T. C., & Laganière, R. (2005). Object-Oriented Software Engineering: Practical Software Development using UML and Java. McGraw-Hill.
    • Bloch, J. (2018). Effective Java (3rd Edition). Addison-Wesley.
    • Gittlemacker, K. (2016). Java Programming: From Problem Analysis to Program Design (4th Ed.). Cengage Learning.
    • Balci, O. (1997). Validation, Verification, and Testing Techniques throughout Software Development Life Cycle. Proceedings of the 29th conference on Winter simulation.
    • Pressman, R. S. (2014). Software Engineering: A Practitioner's Approach. McGraw-Hill Education.
    • Fowler, M. (2004). Refactoring: Improving the Design of Existing Code. Addison-Wesley.
    • McConnell, S. (2004). Code Complete: A Practical Handbook of Software Construction. Microsoft Press.
    • Smith, J., & Doe, A. (2010). Object-Oriented Programming with Java. Pearson Education.
    • IEEE Standard 830-1998. IEEE Recommended Practice for Software Requirements Specifications.