https://github.com/lestherll/csc1035-p2
Project 2: Room Booker and Timetabling System for CSC1035 Computer Science Module
https://github.com/lestherll/csc1035-p2
Last synced: 12 months ago
JSON representation
Project 2: Room Booker and Timetabling System for CSC1035 Computer Science Module
- Host: GitHub
- URL: https://github.com/lestherll/csc1035-p2
- Owner: lestherll
- Created: 2021-09-25T21:44:48.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2021-10-17T03:11:47.000Z (over 4 years ago)
- Last Synced: 2025-01-16T14:45:49.716Z (over 1 year ago)
- Language: Java
- Size: 99.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
# CSC1035 Project 2 (Team Project)
Booking-Timetabling System that allows the user book for rooms based on their needs.
## Dependencies
Dependencies are defined in the [pom file](pom.xml). These dependencies are needed to
run the source code and the unit tests.
## Usage
The project is simple to start. [Main.java](src/main/java/Main.java) must be ran using
the appropriate JDK version (JDK 8+). The main class relies on the main method of the UserInterface
class. The UI class dictates how the user can interact with the system.
## Architecture
The architecture of the project tries to follow the Model-View-Controller architecture
pattern. This is is very useful because it allows us and contributors to be able to
isolate the classes from each other. This makes it easier to adhere to the Single
Responsibility Principle and separation of concerns.
### [Models](src/main/java/csc1035/project2/model)
These classes are the core of the solution to the problem that we are trying to solve
with the given client specification. They are a model of the involved parties in the
client specification. They contain fields that are relevant to the real world representation
of objects.
### [Controller](src/main/java/csc1035/project2/controller)
Controllers are the ones that are responsible for communicating with the model and the
database tables. In a sense, it serves as an interface(not to be confused with java interface)
between the UI, model and Hibernate itself.
An example implementation of a controller can be found [here](src/main/java/csc1035/project2/controller/Controller.java))
In this example, a certain design pattern called Dependency injection and Inversion of control
is used to allow the Controller to have access to the database, making it the CRUD class
of this project.
### [IO](src/main/java/csc1035/project2/io)
UserInterface will serve as the command line application that the user will actually interact
with. In turn, the UI interacts with the CRUD object and allow us to create, remove, update
and delete records or objects at will.
### [Util](src/main/java/csc1035/project2/util)
These are the classes that contain the helper methods that can be used throughout the
project. The most important Helper class is the HibernateUtil. This allows the program to
create SessionFactory objects and in turn create sessions and begin transactions. These
are crucial because it is what enables us to communicate with the database, schema, and
tables.
#### NOTES
- Merged module_requirements to modules.csv because the fields in requirements directly
depend on the module.