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.
- 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
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)
MyRegPlanner follows a layered architecture:
Presentation Layer (Forms + UserControls) β Business Logic Layer (BLL) β Data Access Layer (Data)
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
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
| Dashboard | Add courses |
|---|---|
![]() |
![]() |
| Generate Courses | Section Priority |
|---|---|
![]() |
![]() |
- Visual Studio 2022 or later
- .NET 8.0 SDK
- SQL Server 2019 or later
- Windows 10/11
-
Clone the repository
git clone https://github.com/LT-Ripjaws/MyRegPlanner-csharp-project.git cd MyRegPlanner-csharp-project -
Open the solution
- Open
MyRegPlanner.slnin Visual Studio
- Open
-
Restore NuGet Packages
- Packages should restore automatically
- If not: Right-click Solution β Restore NuGet Packages
-
Database Configuration
- Update connection string in
Data/DatabaseConnection.csSet the location of the provided .mdf:
private string connectionString = "Server=YOUR_SERVER;Database=MyRegPlannerDB;Integrated Security=true;TrustServerCertificate=true;";
- Update connection string in
-
Build and Run
- Build β Build Solution (Ctrl+Shift+B)
- Press F5 to run
- Navigate to the Add Courses tab
- Enter course details
- Add sections
- Go to Section Priority window
- View all available sections
- Assign priority
- Higher priority sections are preferred during routine generation
- Navigate to the Routines tab
- Click Generate Routine
- The algorithm will:
- Select sections based on priority
- Avoid time conflicts
- View generated routine in the grid
- Export to Excel if needed
- View summary of added courses
- Check total credits
- See routine statistics
The routine generator automatically detects and prevents:
- Overlapping time slots
- Same-day conflicts
- Sections are ranked by user-assigned priority
- Higher priority sections are selected first
- Falls back to lower priority if conflicts exist
- Generates formatted Excel files
- Includes course details
- Routine generation may not find optimal solution
- Limited to single-semester planning
- Requires manual section data entry
- 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.
This project is licensed under the MIT License - see the LICENSE file for details.
π§ Completed development β Version 1.0.0
Chinmoy Guha
- GitHub: @LT-Ripjaws
- Email: chinmoyguha676z@gmail.com





