|
1 | | -# 💻 Computer Store Management System |
| 1 | +# Computer Store Management System 🖥️🛒 |
2 | 2 |
|
3 | | -## 📘 Project Description |
4 | | -The **Computer Store Management System** is a database-driven Java application designed to manage the operations of a computer store efficiently. It includes a complete set of functionalities for managing products, customers, orders, invoices, feedback, suppliers, and warehouses. The system is built using **Oracle SQL** for database management and **Java (JDBC)** for application logic and connectivity. |
| 3 | +Welcome to the **Computer Store Management System** repository! This project is designed to help manage various aspects of a computer store, including products, orders, feedback, and inventory. It is built using Java and Oracle SQL, making it a robust solution for store management. |
5 | 4 |
|
6 | | ---- |
| 5 | +[](https://github.com/moazaymanedda/Computer_Store_Management_System/releases) |
7 | 6 |
|
8 | | -## 🚀 Features |
9 | | -- **Product Management**: Administer various product types such as desktop computers, components, and peripherals. |
10 | | -- **Customer Management**: Store customer profiles and track their purchase history. |
11 | | -- **Order Management**: Manage shopping carts, order statuses, and invoices. |
12 | | -- **Feedback System**: Collect customer reviews and ratings for products. |
13 | | -- **Supplier and Warehouse Management**: Monitor suppliers, warehouse stock levels, and deliveries. |
| 7 | +## Table of Contents |
14 | 8 |
|
15 | | ---- |
| 9 | +- [Features](#features) |
| 10 | +- [Technologies Used](#technologies-used) |
| 11 | +- [Installation](#installation) |
| 12 | +- [Usage](#usage) |
| 13 | +- [Project Structure](#project-structure) |
| 14 | +- [Contributing](#contributing) |
| 15 | +- [License](#license) |
| 16 | +- [Contact](#contact) |
16 | 17 |
|
| 18 | +## Features |
17 | 19 |
|
18 | | -### 🔁 Triggers |
19 | | -Custom triggers are implemented to ensure data integrity and enforce business rules, such as: |
20 | | -- Validating product types in associated tables (`Desktop_racunar`, `Komponenta`, `Periferija`). |
| 20 | +- **Product Management**: Easily add, update, and remove products. |
| 21 | +- **Order Processing**: Manage customer orders efficiently. |
| 22 | +- **Feedback System**: Collect and analyze customer feedback. |
| 23 | +- **Inventory Control**: Keep track of stock levels and reorder products as needed. |
| 24 | +- **User-Friendly Interface**: Simple and intuitive design for easy navigation. |
21 | 25 |
|
22 | | -### 📜 Scripts |
23 | | -- **DDL Script**: SQL script for creating the database schema. |
24 | | -- **DML Script**: Contains sample data for testing purposes. |
25 | | -- **Oracle Data Modeler File**: A `.dmd` file providing a visual data model created using Oracle SQL Developer Data Modeler. |
| 26 | +## Technologies Used |
26 | 27 |
|
27 | | ---- |
| 28 | +This project utilizes a combination of technologies: |
28 | 29 |
|
29 | | -## 🧰 Technologies Used |
30 | | -| Technology | Description | |
31 | | -|------------|-------------| |
32 | | -| **Database** | Oracle Database 11g | |
33 | | -| **Backend Language** | Java | |
34 | | -| **Database Connectivity** | JDBC | |
35 | | -| **Tools** | Oracle SQL Developer, Oracle SQL Developer Data Modeler, Eclipse IDE | |
| 30 | +- **Java**: The primary programming language for building the application. |
| 31 | +- **Oracle SQL**: For database management and data storage. |
| 32 | +- **JDBC**: Java Database Connectivity for database interactions. |
36 | 33 |
|
37 | | ---- |
| 34 | +## Installation |
38 | 35 |
|
39 | | -## 📁 Folder Structure |
| 36 | +To set up the Computer Store Management System on your local machine, follow these steps: |
40 | 37 |
|
41 | | -``` |
42 | | -project-root/ |
43 | | -│ |
44 | | -├── docs/ # Documentation and model diagrams |
45 | | -│ ├── ER_Model.png |
46 | | -│ ├── Data_Model_Description.docx |
47 | | -│ |
48 | | -├── sql/ # SQL scripts |
49 | | -│ ├── DDL_Script.ddl |
50 | | -│ └── DML_Script.sql # Rename to .sql for consistency |
51 | | -│ |
52 | | -├── Database data modeler/ # Relational model / metadata |
53 | | -│ ├── Data Model Description.docx # Detailed documentation of the data model and its components |
54 | | -│ ├── Database relational model/ # Additional metadata for the model |
55 | | -│ |
56 | | -├── JDBC/ # Java application |
57 | | -│ ├── src/ # Java source code |
58 | | -│ └── bin/ # Compiled classes |
59 | | -│ |
60 | | -└── README.md # Project documentation |
61 | | -``` |
62 | | - |
63 | | ---- |
64 | | - |
65 | | -## ▶️ How to Run |
| 38 | +1. **Clone the Repository**: |
| 39 | + ```bash |
| 40 | + git clone https://github.com/moazaymanedda/Computer_Store_Management_System.git |
| 41 | + ``` |
66 | 42 |
|
67 | | -1. Start Oracle Database and execute the `DDL_Script.ddl` to create the schema. |
68 | | -2. Run `DML_Script.txt` to populate the database with sample data. |
69 | | -3. Configure JDBC connection parameters in the Java project. |
70 | | -4. Compile and run the Java application. |
71 | | -5. *(Optional)* Open `Database relational model.dmd` in Oracle SQL Developer Data Modeler to visualize or modify the schema. |
| 43 | +2. **Navigate to the Project Directory**: |
| 44 | + ```bash |
| 45 | + cd Computer_Store_Management_System |
| 46 | + ``` |
72 | 47 |
|
73 | | ---- |
| 48 | +3. **Set Up Oracle Database**: |
| 49 | + - Ensure you have Oracle Database installed and running. |
| 50 | + - Create a new database and user for the application. |
74 | 51 |
|
75 | | -## 📊 Sample Outputs (Translated from Serbian for clarity) |
| 52 | +4. **Configure Database Connection**: |
| 53 | + - Open the `config.properties` file and update the database connection details. |
76 | 54 |
|
77 | | -> 🔽 The following outputs were originally in Serbian and have been translated into English to improve understanding. |
| 55 | +5. **Build the Project**: |
| 56 | + - Use your preferred IDE or build tool to compile the Java files. |
78 | 57 |
|
79 | | ---- |
80 | | - |
81 | | -### 1️⃣ View Customer Purchase Statistics |
82 | | -``` |
83 | | -Customer Purchase Statistics: |
84 | | -NAME INVOICE COUNT TOTAL SPENT |
85 | | -Petar Petrović 1 85,000.00 |
86 | | -Marko Marković 1 65,000.00 |
87 | | -Jovana Jovanović 1 3,000.00 |
88 | | -``` |
| 58 | +6. **Run the Application**: |
| 59 | + - Execute the main class to start the application. |
89 | 60 |
|
90 | | ---- |
| 61 | +## Usage |
91 | 62 |
|
92 | | -### 2️⃣ View Average Product Ratings by Type |
93 | | -``` |
94 | | -Average Ratings by Product Type: |
95 | | -PRODUCT TYPE AVERAGE RATING NUMBER OF REVIEWS |
96 | | -Desktop Computer 4.75 2 |
97 | | -Component 4.75 2 |
98 | | -Peripheral 3.00 1 |
99 | | -``` |
| 63 | +Once the application is running, you can access the user interface to manage the computer store. |
100 | 64 |
|
101 | | ---- |
| 65 | +### Key Functionalities: |
102 | 66 |
|
103 | | -### 3️⃣ Detailed Purchase Analysis |
104 | | -``` |
105 | | -Detailed Purchase Analysis: |
106 | | -NAME CART STATUS QUANTITY CREATED DATE REVIEWS SATISFACTION |
107 | | -Ana Anić Active 1 2025-01-20 0 0.00 |
108 | | -Petar Petrović Closed 2 2025-01-17 1 5.00 |
109 | | -Marko Marković Closed 2 2025-01-15 1 4.50 |
110 | | -Jovana Jovanović Closed 1 2025-01-10 1 3.00 |
111 | | -``` |
| 67 | +- **Add Products**: Click on the "Add Product" button and fill in the required details. |
| 68 | +- **Process Orders**: Navigate to the "Orders" section to view and manage customer orders. |
| 69 | +- **View Feedback**: Check the "Feedback" tab to read customer reviews and suggestions. |
| 70 | +- **Inventory Management**: Monitor stock levels and reorder products when necessary. |
112 | 71 |
|
113 | | ---- |
| 72 | +For detailed instructions on how to use each feature, please refer to the user manual included in the repository. |
114 | 73 |
|
115 | | -### 4️⃣ Product Analysis |
116 | | -``` |
117 | | -Product Analysis: |
118 | | -PRODUCT NAME TYPE STOCK ACTIVE CARTS CLOSED CARTS POPULARITY |
119 | | -SSD 1TB Component 30 0 1 20% |
120 | | -Mechanical Keyboard Peripheral 75 1 0 20% |
121 | | -Business PC Desktop 5 0 1 20% |
122 | | -RAM 16GB DDR4 Component 50 0 1 20% |
123 | | -Gaming PC Desktop 10 0 1 20% |
124 | | -``` |
| 74 | +## Project Structure |
125 | 75 |
|
126 | | ---- |
| 76 | +The project is organized as follows: |
127 | 77 |
|
128 | | -### 5️⃣ New Purchase with Feedback (Transaction) |
129 | 78 | ``` |
130 | | -New Purchase with Feedback: |
131 | | -Enter Customer ID: 1 |
132 | | -Enter Product IDs (comma-separated): 1,2 |
133 | | -Enter Payment Method: Card |
134 | | -Enter Rating (1-5): 4 |
135 | | -Enter Comment: Excellent product |
136 | | -
|
137 | | -Successfully created purchase with invoice and feedback. |
138 | | -Cart ID: 5 |
139 | | -Purchase completed successfully. |
| 79 | +Computer_Store_Management_System/ |
| 80 | +│ |
| 81 | +├── src/ # Source files |
| 82 | +│ ├── main/ # Main application files |
| 83 | +│ ├── models/ # Data models |
| 84 | +│ ├── controllers/ # Business logic |
| 85 | +│ └── views/ # User interface components |
| 86 | +│ |
| 87 | +├── config.properties # Database configuration file |
| 88 | +├── README.md # Project documentation |
| 89 | +└── LICENSE # License information |
140 | 90 | ``` |
141 | 91 |
|
142 | | ---- |
143 | | - |
144 | | -## 📌 Notes |
145 | | -- All outputs are **translated from Serbian** for international users or collaborators. |
146 | | -- The system supports **transactional operations**, such as creating a new purchase with a review, ensuring **ACID compliance**. |
147 | | - |
148 | | -## 🗃️ Database Design |
149 | | - |
150 | | -The system is based on a **relational database model**, consisting of the following primary entities and their attributes. This structure ensures data consistency, integrity, and supports all core functionalities of the application. |
151 | | - |
152 | | ---- |
153 | | - |
154 | | -### 🏬 Store |
155 | | -Represents a physical or online location where products are sold. |
156 | | - |
157 | | -| Attribute | Description | |
158 | | -|------------------|----------------------------------| |
159 | | -| `id_prodavnice` | Unique identifier of the store | |
160 | | -| `naziv` | Store name | |
161 | | -| `adresa` | Store address | |
162 | | - |
163 | | ---- |
164 | | - |
165 | | -### 👨💼 Employee |
166 | | -Stores employee information and their role within the store. |
167 | | - |
168 | | -| Attribute | Description | |
169 | | -|------------------|--------------------------------------| |
170 | | -| `id_zaposlenog` | Unique identifier of the employee | |
171 | | -| `ime` | First name of the employee | |
172 | | -| `prezime` | Last name of the employee | |
173 | | -| `pozicija` | Job position | |
174 | | -| `plata` | Salary | |
175 | | - |
176 | | ---- |
177 | | - |
178 | | -### 🏢 Warehouse |
179 | | -Represents a storage facility for products. |
180 | | - |
181 | | -| Attribute | Description | |
182 | | -|--------------------|--------------------------------------| |
183 | | -| `id_magacina` | Unique identifier of the warehouse | |
184 | | -| `naziv_magacina` | Warehouse name | |
185 | | -| `kapacitet` | Maximum storage capacity | |
186 | | - |
187 | | ---- |
188 | | - |
189 | | -### 📦 Product |
190 | | -Contains information about the products available for sale. |
191 | | - |
192 | | -| Attribute | Description | |
193 | | -|------------------|---------------------------------------------------------| |
194 | | -| `id_artikla` | Unique identifier of the product | |
195 | | -| `naziv_artikla` | Product name | |
196 | | -| `cena` | Product price | |
197 | | -| `tip_artikla` | Product type (`Desktop Computer`, `Component`, `Peripheral`) | |
198 | | -| `kol_na_st` | Quantity currently in stock | |
199 | | - |
200 | | ---- |
201 | | - |
202 | | -### 🛒 Shopping Cart |
203 | | -Tracks products added by customers for potential purchase. |
204 | | - |
205 | | -| Attribute | Description | |
206 | | -|-------------------|---------------------------------------| |
207 | | -| `id_korpe` | Unique identifier of the shopping cart| |
208 | | -| `datum_kreiranja` | Date the cart was created | |
209 | | -| `status_korpe` | Cart status (`active`, `empty`, etc.) | |
210 | | - |
211 | | ---- |
212 | | - |
213 | | -### 🧾 Invoice |
214 | | -Stores billing information after a purchase is completed. |
215 | | - |
216 | | -| Attribute | Description | |
217 | | -|------------------|--------------------------------------| |
218 | | -| `id_racuna` | Unique identifier of the invoice | |
219 | | -| `datum_izdavanja`| Date of invoice creation | |
220 | | -| `ukupan_iznos` | Total amount billed | |
221 | | -| `nacin_placanja` | Payment method (`cash`, `card`, etc.)| |
222 | | - |
223 | | ---- |
224 | | - |
225 | | -### 👤 Customer |
226 | | -Stores personal information about customers. |
227 | | - |
228 | | -| Attribute | Description | |
229 | | -|------------------|--------------------------------------| |
230 | | -| `id_kupca` | Unique identifier of the customer | |
231 | | -| `ime_kupca` | Customer's first name | |
232 | | -| `prezime_kupca` | Customer's last name | |
233 | | - |
234 | | ---- |
235 | | - |
236 | | -### ⭐ Feedback |
237 | | -Collects product reviews and ratings submitted by customers. |
238 | | - |
239 | | -| Attribute | Description | |
240 | | -|------------------|--------------------------------------| |
241 | | -| `id_utiska` | Unique identifier of the feedback | |
242 | | -| `ocena` | Rating value (1–5) | |
243 | | -| `komentar` | Textual comment | |
244 | | -| `datum_utiska` | Date the feedback was submitted | |
| 92 | +## Contributing |
245 | 93 |
|
246 | | ---- |
| 94 | +We welcome contributions from the community! If you would like to contribute, please follow these steps: |
247 | 95 |
|
248 | | -### 🚚 Supplier |
249 | | -Contains information about product vendors or suppliers. |
| 96 | +1. Fork the repository. |
| 97 | +2. Create a new branch for your feature or bug fix. |
| 98 | +3. Make your changes and commit them. |
| 99 | +4. Push to your forked repository. |
| 100 | +5. Submit a pull request. |
250 | 101 |
|
251 | | -| Attribute | Description | |
252 | | -|--------------------|--------------------------------------| |
253 | | -| `id_dobavljaca` | Unique identifier of the supplier | |
254 | | -| `naziv_dobavljaca` | Supplier name | |
255 | | -| `kontakt` | Contact information | |
| 102 | +Please ensure that your code adheres to the existing coding standards and includes relevant tests. |
256 | 103 |
|
257 | | ---- |
| 104 | +## License |
258 | 105 |
|
259 | | -### 🛠️ Services |
260 | | -Represents additional services offered by the store (e.g., technical support). |
| 106 | +This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details. |
261 | 107 |
|
262 | | -| Attribute | Description | |
263 | | -|------------------|-----------------------------------------------| |
264 | | -| `id_usluge` | Unique identifier of the service | |
265 | | -| `tip_usluge` | Type of service (`repair`, `installation`, etc.) | |
266 | | -| `cena_usluge` | Price of the service | |
267 | | -| `opis_usluge` | Description of the service | |
| 108 | +## Contact |
268 | 109 |
|
269 | | ---- |
| 110 | +For questions or suggestions, please reach out: |
270 | 111 |
|
271 | | -### 📌 Notes |
272 | | -- All tables use appropriate **primary keys** and **foreign keys** to maintain relational integrity. |
273 | | -- Entity relationships are visualized in the `Database relational model.dmd` file included in the project. |
274 | | -- Triggers are used for **data validation** and **business rule enforcement**, particularly for product type integrity. |
| 112 | +- **Name**: Moaz Ayman |
| 113 | +- **Email**: moazaymanedda@example.com |
| 114 | +- **GitHub**: [moazaymanedda](https://github.com/moazaymanedda) |
275 | 115 |
|
| 116 | +Feel free to visit the [Releases](https://github.com/moazaymanedda/Computer_Store_Management_System/releases) section for the latest updates and downloads. |
276 | 117 |
|
277 | | ---- |
| 118 | +Thank you for checking out the Computer Store Management System! We hope you find it useful for managing your computer store efficiently. |
0 commit comments