Skip to content

LT-Ripjaws/MyRegPlanner-csharp-project

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

3 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

MyRegPlanner - University Course Registration Planner

Contributors Technologies Status

Intro

πŸ“‹ Overview

MyRegPlanner is a desktop application built with C# and .NET 8.0 Windows Forms, designed to help university students plan their course registrations efficiently. The application allows students to add courses, set section priorities, and generate optimal class routines based on their preferences and constraints. I made it as a fun project to practice as well as to help me during my University course registrations.

✨ Features

  • Course Management: Add and manage courses with multiple sections
  • Section Priority: Set priorities for different course sections based on preferences
  • Routine Generation: Automatically generate class schedules avoiding time conflicts
  • Dashboard: Overview of added courses and generated routines
  • Excel Export: Export generated routines to Excel format using ClosedXML
  • Visual Interface: Modern UI with custom panels and intuitive navigation
  • Input Validation: Ensures data integrity with built-in validation utilities

🎯 Purpose

This practice project was developed to:

  • Solve a real-world problem of course registration planning
  • Demonstrate proficiency in Windows Forms development
  • Practice working with third-party libraries (ClosedXML, Krypton Toolkit)
  • Apply software architecture principles (BLL pattern, separation of concerns)

πŸ—οΈ System Architecture

MyRegPlanner follows a layered architecture:

Presentation Layer (Forms + UserControls) β†’ Business Logic Layer (BLL) β†’ Data Access Layer (Data)

Components

Presentation Layer

  • Forms: Main application windows (MainForm, SplashScreen, SectionPriority)
  • UserControls: Reusable UI components (Dashboard, AddCourses, Routines)

Business Logic Layer

  • Course and Section management
  • Priority algorithms
  • Routine generation logic
  • Query management for data operations

Data Access Layer

  • Database connection management

Utilities

  • Form design helpers
  • Input validation functions

πŸ“ Project Structure

MyRegPlanner/
β”œβ”€β”€ MyRegPlanner.sln          # Solution file
β”‚
└── MyRegPlanner/
    β”œβ”€β”€ Assets/               # Images and icons
    β”‚   β”œβ”€β”€ general/          # UI icons
    β”‚   └── [UI assets]
    β”œβ”€β”€ BLL/                  # Business Logic Layer
    β”‚   β”œβ”€β”€ Course.cs
    β”‚   β”œβ”€β”€ Section.cs
    β”‚   β”œβ”€β”€ AddCoursesManager.cs
    β”‚   β”œβ”€β”€ AddCoursesQueries.cs
    β”‚   β”œβ”€β”€ RoutinesManager.cs
    β”‚   β”œβ”€β”€ RoutinesQueries.cs
    β”‚   └── SectionPriorityManager.cs
    β”œβ”€β”€ Data/                 # Data Access Layer
    β”‚   └── DatabaseConnection.cs
    β”œβ”€β”€ Forms/                # Application Forms
    β”‚   β”œβ”€β”€ MainForm.cs
    β”‚   β”œβ”€β”€ SplashScreen.cs
    β”‚   └── SectionPriority.cs
    β”œβ”€β”€ UserControls/         # Reusable UI Components
    β”‚   β”œβ”€β”€ Dashboard.cs
    β”‚   β”œβ”€β”€ AddCourses.cs
    β”‚   └── Routines.cs
    β”œβ”€β”€ Utilities/            # Helper Classes
    β”‚   β”œβ”€β”€ FormDesign.cs
    β”‚   └── InputValidator.cs
    β”œβ”€β”€ Properties/           # Project properties
    β”œβ”€β”€ bin/                  # Build output (ignored)
    β”œβ”€β”€ obj/                  # Build intermediates (ignored)
    β”œβ”€β”€ MyRegPlanner.csproj   # Project file
    └── Program.cs            # Entry point

✨ Demo & Screenshots

Dashboard Add courses
login registration
Generate Courses Section Priority
home gallery

πŸš€ Setup Instructions

Prerequisites

  • Visual Studio 2022 or later
  • .NET 8.0 SDK
  • SQL Server 2019 or later
  • Windows 10/11

Installation

  1. Clone the repository

    git clone https://github.com/LT-Ripjaws/MyRegPlanner-csharp-project.git
    cd MyRegPlanner-csharp-project
  2. Open the solution

    • Open MyRegPlanner.sln in Visual Studio
  3. Restore NuGet Packages

    • Packages should restore automatically
    • If not: Right-click Solution β†’ Restore NuGet Packages
  4. Database Configuration

    • Update connection string in Data/DatabaseConnection.cs Set the location of the provided .mdf:
    private string connectionString = "Server=YOUR_SERVER;Database=MyRegPlannerDB;Integrated Security=true;TrustServerCertificate=true;";
  5. Build and Run

  • Build β†’ Build Solution (Ctrl+Shift+B)
  • Press F5 to run

πŸ’‘ Usage

Adding Courses

  1. Navigate to the Add Courses tab
  2. Enter course details
  3. Add sections

Setting Section Priorities

  1. Go to Section Priority window
  2. View all available sections
  3. Assign priority
  4. Higher priority sections are preferred during routine generation

Generating Routines

  1. Navigate to the Routines tab
  2. Click Generate Routine
  3. The algorithm will:
    • Select sections based on priority
    • Avoid time conflicts
  4. View generated routine in the grid
  5. Export to Excel if needed

Dashboard

  • View summary of added courses
  • Check total credits
  • See routine statistics

πŸŽ“ Key Features Explained

Conflict Detection

The routine generator automatically detects and prevents:

  • Overlapping time slots
  • Same-day conflicts

Priority Algorithm

  • Sections are ranked by user-assigned priority
  • Higher priority sections are selected first
  • Falls back to lower priority if conflicts exist

Excel Export

  • Generates formatted Excel files
  • Includes course details

πŸ› Known Issues

  • Routine generation may not find optimal solution
  • Limited to single-semester planning
  • Requires manual section data entry

πŸ“ Notes

  • Practice Project: This was developed as a practice project to solve a personal need during university course registration.
  • Data Privacy: No personal student information is stored beyond course selections.

πŸ“„ License

This project is licensed under the MIT License - see the LICENSE file for details.

πŸ“Š Project Status

🚧 Completed development – Version 1.0.0

πŸ‘€ Author

Chinmoy Guha

Profile Banner

About

MyRegPlanner is a desktop application built with C# and .NET 8.0 Windows Forms. I made it as a fun project to practice as well as to help me during my University course registrations.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages