Skip to content

kimukenyuu/Course_Registration

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

21 Commits
 
 
 
 
 
 

Repository files navigation

🎓 Course Registration System

A lightweight, MVC-based Java desktop application designed to simulate an end-to-end course registration flow. This project demonstrates how a graphical user interface (GUI) interacts with file-based data storage and external web data scraping to manage student enrollments securely.

🎥 Demo Video: Watch the System in Action on YouTube




✨ Key Features

  • Hierarchical Course Selection & Registration Flow
    • Navigate through a hierarchical structure (Campus → College → Department → Lecture) to add desired courses to a "Preliminary Cart" and process the final "Course Registration"
  • Persistent Registration Status per Member
    • Independently saves and loads the current preliminary cart and finalized registration status for each student account.
  • Student Information Viewing & Editing
    • Displays basic personal information of the logged-in student and allows users to manually update and modify their details.
  • University Website Integration
    • Provides a convenient link within the GUI to visit the official university website directly.
  • Real-Time Academic Schedule & Weather Scraping
    • Utilizes the Jsoup library to crawl the "Academic Schedule for the Month" and real-time weather data from external web pages, displaying them dynamically on the main screen.
  • Sign-Up & Account Discovery (ID/PW)
    • Offers a registration function for new users and a recovery feature to trace and find forgotten IDs and passwords for existing users.
  • AES-128 Password Encryption
    • Ensures security by avoiding plaintext password storage; passwords are encrypted using the AES-128 algorithm and safely hidden in files.



🏗️ System Architecture & Directory Structure

The project strictly follows the MVC (Model-View-Controller) pattern, separating the core business logic, data models, and presentation layers to decouple responsibilities.

Course_Registration/
│
├── src/
│   ├── View/                 # Presentation Layer (GUI Components)
│   │   ├── Main.java         # Application entry point
│   │   ├── PMainFrame.java   # Main application window
│   │   ├── PLoginDialog.java # User authentication, Sign-up & Find ID/PW UI
│   │   └── ...               # Other dialogs and panels
│   │
│   ├── View_Registation/     # Course Registration Specific UI
│   │   ├── PRegistrationPanel.java # Main registration interface (Miridamgi/Sincheong)
│   │   ├── PDirectoryPanel.java    # Hierarchical course directory (Campus->College->Dept->Lecture)
│   │   └── PTable.java             # Custom table component for displaying courses
│   │
│   ├── Service/              # Controller / Service Layer
│   │   ├── SLogin.java       # Handles login, registration, and account discovery logic
│   │   ├── SDirectory.java   # Fetches course directory data
│   │   └── SWebData.java     # Manages external data fetching (Schedules & Weather)
│   │
│   ├── Entity/               # Data Access & Business Logic Layer (Models)
│   │   ├── ELogin.java       # Reads/validates user credentials from files
│   │   ├── EEncryption.java  # AES-128 encryption/decryption for passwords
│   │   ├── EMyLecture.java   # Manages saved courses (Miridamgi/Sincheong)
│   │   └── EWebData.java     # Web scraping using Jsoup (Weather, Schedule)
│   │
│   ├── ValueObject/          # Data Transfer Objects (DTO)
│   │   ├── VAccount.java     # User profile data model
│   │   └── VDirectory.java   # Course information data model
│   │
│   └── Global/               # Global Configurations
│       ├── Constants.java    # System-wide constants (UI dimensions, etc.)
│       └── Locale.java       # Static string resources
│
├── account/                  # File-based Database for Users & Registrations
├── directory/                # File-based Database for Course Hierarchy
└── libs/                     # External Libraries
    └── jsoup-1.15.3.jar      # Used for web scraping

🔄 Core Data Flow

1. Authentication & Account Management (View/PLoginDialogService/SLoginEntity/ELogin):

Handles user authentication, account registration, and credential recovery. Password encryption/decryption is funneled through EEncryption using AES-128 before reading or writing to the flat files.

2. Course Discovery & Registration Flow (View_Registation Panels):

Users select structural directory Nodes (Campus → College → Dept → Lecture). SDirectory reads files from directory/ to refresh the PTable. Actions in PRegistrationPanel route data into EMyLecture to handle maximum credit limits (18 credits) and differentiate between Preliminary Cart (미리담기) and Final Registration (수강신청).

3. External Information Scraper (Service/SWebDataEntity/EWebData):

Triggers a background Jsoup connection to pull the current month's academic schedule and local weather, populating static information zones in PMainFrame.

4. Persistence Management (Entity/EMyLecture):

Any alterations to student info or registration configurations immediately serialize updates back into individual student profile directories inside the account/ container.

⚙️ Dependencies

  • Java SE (JDK 16+): Core runtime environment.
  • Swing / AWT: Built-in Java libraries for creating the graphical user interface.
  • Jsoup (v1.15.3): External library for HTML parsing to scrape school schedules and weather information.

🚀 Getting Started

📝 Important Notes

  • Encoding Format: MS949

  • Ensure your IDE's workspace text file encoding is set to MS949 (or EUC-KR) to prevent Korean characters from breaking.

  • Test Accounts: You can use the existing ID and Password combinations pre-configured in the account/account text file for login testing.

Prerequisites

  • Java Development Kit (JDK) 16 or higher installed.
  • Eclipse IDE (recommended, as .classpath and .project are included).

Running the Application

  1. Clone or extract the repository.
  2. Open Eclipse and select File > Import > Existing Projects into Workspace.
  3. Select the Course_Registration folder.
  4. Ensure libs/jsoup-1.15.3.jar is correctly added to the Build Path.
  5. Set the project text file encoding to MS949 (Right-click Project > Properties > Resource > Text file encoding).
  6. Run src/View/Main.java as a Java Application.

About

Course Registration System based on the MVC pattern

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages