A simple Java desktop application that simulates managing computer applications, including games, social apps, and utility apps.
The project demonstrates OOP concepts, inheritance, serialization, and basic data persistence using Java.
- User login system
- App installation and uninstallation
- Multiple app types:
- Game applications
- Social applications
- Utility applications
- App information display
- Persistent data storage using serialization (
.serfiles)
ComputerSim/
├── .idea/
├── out/
├── src/
│ ├── Controller/
│ │ ├── Apps/
│ │ │ ├── AppFactory.java
│ │ │ └── Apps.java
│ │ └── Data/
│ │ └── DataHandler.java
│ │
│ ├── Models/
│ │ ├── ComputerApp.java
│ │ ├── GameApp.java
│ │ ├── SocialApp.java
│ │ ├── UtilityApp.java
│ │ └── UserProfile.java
│ │
│ ├── View/
│ │ ├── Menus/
│ │ │ ├── LoginMenuGUI.java
│ │ │ └── MainMenuGUI.java
│ │ └── SideMenu/
│ │ ├── DisplayInstalledAppsGUI.java
│ │ ├── InstallAppMenuGUI.java
│ │ ├── LoginAndRegister.java
│ │ └── UninstallAppMenuGUI.java
│ │
│ └── Main.java
│
├── apps.ser
└── userdata.ser
-
Models
Core data classes representing applications and users. -
Controller
Apps→ application management logicAppFactory→ app object creationDataHandler→ serialization & persistence
-
View
Menus→ login & main menu UISideMenu→ install, uninstall, and app display UI
-
Persistence
apps.ser→ stored application datauserdata.ser→ stored user credentials
ComputerAppis the base class- Specialized apps extend it:
GameAppSocialAppUtilityApp
- Each app stores:
- Name
- Size
- Installation status
- Type-specific data
- User credentials are stored in
UserProfile - Supports:
- User registration
- Login validation
- Credentials are saved locally using serialization
- Uses Java Object Serialization
- Saved files:
userdata.ser→ user accountsapps.ser→ installed applications
- Data is automatically loaded on program startup
- Open the project in an IDE (IntelliJ IDEA recommended)
- Run
Main.java - Log in or create a new user
- Manage applications via the GUI
- Language: Java
- Paradigm: Object-Oriented Programming
- Data Storage: Serialization (
ObjectInputStream / ObjectOutputStream) - UI: Java GUI (Swing/AWT based)
This project demonstrates:
- Inheritance and polymorphism
- Encapsulation and abstraction
- Java serialization
- Basic MVC-style separation
- GUI-driven application flow
This project is intended for educational purposes.
Feel free to modify or extend it for learning and practice.