How this guide works

You build one application across nine steps. Each step matches one lab sheet. The pages show the target design, the code (open the file panels to compare with your own), the command to run it, and the real output or a real screenshot of the reference solution.

The rule: try the lab first. Open the reference code only to check your work or when you are stuck. Typing the code yourself is where the learning happens.

The finished architecture
The finished architecture: each layer talks only to the one below it.

The nine steps

Classes, Objects & Encapsulation
Week 2 · Lab 1
Step 01 of 9
01
Inheritance & Polymorphism
Week 3 · Lab 2
Step 02 of 9
02
Abstract Classes & Interfaces
Week 4 · Lab 3
Step 03 of 9
03
Exception Handling
Week 5 · Lab 4
Step 04 of 9
04
GUI I: Layouts & Widgets
Week 8 · Lab 5
Step 05 of 9
05
GUI II: Events & MVC
Week 9 · Lab 6
Step 06 of 9
06
Generics, Collections & Streams
Week 10 · Lab 7
Step 07 of 9
07
JDBC & the Database
Week 11 · Lab 8
Step 08 of 9
08
Threads & Shipping v1.0
Week 12 · Lab 9
Step 09 of 9
09

The finished project layout

lms-<index>/
├── README.md   pom.xml   build.sh   .gitignore
├── docs/                      UML, ER, screenshots
├── lib/                       sqlite-jdbc jar (not committed)
└── src/lms/
    ├── GuiMain.java   DaoDemo.java   RaceDemo.java
    ├── model/         Book, DVD, Magazine, LibraryItem, Member, Student, Staff, Loanable, Reservable
    ├── exception/     ItemNotAvailableException, MemberNotFoundException, DataAccessException
    ├── service/       Library, LibraryController, Repository, OverdueChecker
    ├── dao/           Database, ItemDAO, MemberDAO, LoanDAO
    └── ui/            MainFrame, ImportWorker

Download the reference solution

Every week's code, compiled on JDK 21, plus the finished project: SENG12233_LMS_Reference_Solution.zip. Release it only after each PR deadline.

Before you start

  • JDK 21 installed (java -version)
  • Git working and a private GitHub repository lms-<index> created (see the Git Support Guide)
  • An IDE of your choice (IntelliJ IDEA, Eclipse or VS Code)