Skip to content

sszobaer/Course_Registration_Management_System

Repository files navigation

Course Registration Management System

Welcome to the Course Registration Management System! This application is meticulously designed to streamline the registration process, providing efficient handling of course enrollment. Developed using C# (.NET) and seamlessly integrated with an Oracle database, it ensures smooth and reliable data storage and retrieval.


Table of Contents

  1. Authors
  2. Team Members
  3. Background of the Problem
    1. Main Problems Students Face
    2. The Biggest Problem
  4. Proposed Solution: Virtual Advisor Chatbot Powered by AI
    1. How the Virtual Advisor Chatbot Will Help
  5. Benefits of This Solution
  6. Prerequisites
    1. Required Software
  7. Get Started
    1. Python Dependencies
    2. NuGet Packages
  8. Installation Procedure
    1. Step 1: Clone the Repository
    2. Step 2: Set Up the Database
    3. Step 3: Configure the Connection String
    4. Step 4: Build and Run the Project
  9. Special Instruction
    1. Configuring the Oracle Database Connection String
    2. Testing the Connection
    3. Configuring the Oracle Database Connection in Python using PyODBC
  10. Architecture/Technology Sections
    1. Entity Relationship Diagram
    2. Schema Diagram
    3. Activity Diagram
    4. Class Diagram
    5. Key Pages from UI
      1. Admin Dashboard
      2. Student Dashboard
      3. Take Courses or Register for a Course
      4. Smart Advisor
      5. Add New Course
  11. Color Reference
  12. Lessons Learned
  1. Feedback & Issues
  1. Acknowledgements
  2. Contact

Authors


Team Members

Name Roles and Responsibilities
S S Zobaer Ahmed Project Lead, Backend Construction, AI Development and Integration, README Writer, Documentation, Formatting, OOE
Morshed Al-Jaber Bishal Database Specialist, Design, Query Writing
SANVIRAJ AYNUL SIAM Documentation, Design, Query Writing
SHARUP PAUL Query Writing, Relational Algebra

Background of the Problem

Course registration is a vital process for university students. It ensures they can enroll in the correct courses to complete their degree on time. However, many students encounter challenges during the registration process, which can lead to delays in graduation or missed opportunities.

Main Problems Students Face:

  • Limited Seats in Courses: Students may miss out on essential courses due to limited seats.
  • No Immediate Help: Academic advisors are often too busy to assist every student during registration.
  • Confusion About Course Selection: Many students, especially first-year students, struggle to choose the right courses.
  • Time Conflicts: Students may face overlapping class schedules that prevent them from enrolling in multiple desired courses.
  • Slow Decision-Making: Delays in decision-making can cause students to miss available spots in courses.
  • System Issues: The registration website may crash or slow down during peak usage times.

The Biggest Problem:

Some students fail to register for courses altogether, which negatively impacts their academic progress and causes unnecessary stress.

Proposed Solution: Virtual Advisor Chatbot Powered by AI

To solve these challenges, we introduce the Virtual Advisor Chatbotβ€”an AI-powered solution that will streamline the registration process. The chatbot uses Natural Language Processing (NLP) with the OpenAI API to guide students through their course registration smoothly and effectively.

How the Virtual Advisor Chatbot Will Help:

  • Suggesting Courses: The chatbot will recommend the best courses based on the student’s academic progress and available options.
  • Finding Alternatives: If a course is full, it will suggest similar courses.
  • Checking Requirements: It will ensure students meet the prerequisites for a course before they attempt to enroll.
  • Avoiding Time Conflicts: The chatbot will help students select courses that do not have overlapping schedules.
  • Available Anytime: Unlike human advisors, the chatbot will be accessible 24/7 to assist students.
  • Notifying About Seat Availability: If a course is full, the chatbot will notify students when a seat becomes available.
  • Answering Questions: The chatbot will provide answers to questions regarding course rules, credit limits, and registration deadlines.
  • Helping Universities Plan Better: The AI will predict which courses will be in high demand, assisting universities in offering more seats for those courses.

Benefits of This Solution:

  • More Students Get Registered: The chatbot helps students quickly find available courses, ensuring they don’t miss out on opportunities.
  • Less Pressure on Human Advisors: With the chatbot answering routine questions, advisors can focus on more complex student needs.
  • Faster Decision-Making: Students won’t waste time searching for courses, enabling faster registration.
  • Better Student Experience: A smoother, stress-free registration process will enhance student satisfaction.
  • Smarter Course Planning: Universities will have insights into which courses require more seats, ensuring better resource management.

Integrating the AI-powered Virtual Advisor Chatbot into the course registration system will significantly improve the experience for both students and universities. By offering quick recommendations, solving scheduling conflicts, and ensuring fair access to courses, this solution will reduce stress, save time, and enhance the overall academic experience.

Prerequisites

Before starting, ensure you have the following installed:

Required Software

  1. Visual Studio – Download the latest version and install it.

    • During installation, select the .NET desktop development workload.
  2. .NET Framework – Included with Visual Studio, but if needed, download from Microsoft's official site.

  3. Oracle Database Express Edition – Download and install it.

    • Follow Oracle’s setup instructions and create a test database.
  4. Ollama – Download here and install it.

  5. Python – Download the latest version and install it.

    • Ensure you check the option "Add Python to PATH" during installation. Also download a IDE for python.

Get Started

Python Dependencies

Make sure you have Python installed, then install the required packages using:

pip install flask pyodbc

NuGet Packages

In Visual Studio, install the following NuGet packages:

Method 1: Using NuGet Package Manager GUI

  1. Open Visual Studio.
  2. Go to Tools > NuGet Package Manager > Manage NuGet Packages for Solution.
  3. Search for and install the following packages:
    • Oracle.ManagedDataAccess
    • Newtonsoft.Json

Method 2: Using Package Manager Console

Alternatively, you can install them via the Package Manager Console (View > Other Windows > Package Manager Console):

Install-Package Oracle.ManagedDataAccess  
Install-Package Newtonsoft.Json

Installation Procedure

Follow these steps to set up the Course Registration Management System:

Step 1: Clone the Repository

git clone https://github.com/your-repo/course-registration-system.git
cd course-registration-system

Step 2: Set Up the Database

  1. Open Oracle SQL Developer or your preferred database tool.
  2. Create a database and run the provided SQL script to create tables.

Step 3: Configure the Connection String

  • In Visual Studio, navigate to app.config or appsettings.json.
  • Update the connection string to match your Oracle database credentials.

Step 4: Build and Run the Project

  1. Open the solution in Visual Studio.
  2. Restore NuGet packages (if not restored automatically).
  3. Press F5 or click Start to run the application.

Special Instruction

Configuring the Oracle Database Connection String

To connect your Course Registration Management System to an Oracle database, you need to update the connection string properly.

Connection String Format:

string conStr = @"Data Source = (DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) 
(CONNECT_DATA = (SERVICE_NAME = xe))); 
User Id = CRMS; 
Password = 1234;";

What You Need to Change:

  1. HOST (localhost) – Replace with your Oracle server IP address if the database is hosted on another machine.
  2. PORT (1521) – Ensure this matches the port used by your Oracle database.
  3. SERVICE_NAME (xe) – If you have a different Oracle service name, update it accordingly.
  4. User Id (CRMS) – Change to the Oracle username you created for the database.
  5. Password (1234) – Set your actual Oracle database password.

Example for a Remote Server:

If your Oracle database is on another machine with IP 192.168.1.100 and a service name of orcl, modify the string as follows:

string conStr = @"Data Source = (DESCRIPTION = 
(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.1.100)(PORT = 1521))) 
(CONNECT_DATA = (SERVICE_NAME = orcl))); 
User Id = CRMS; 
Password = mySecurePassword;";

Testing the Connection

You can test the connection using a simple C# Console Application:

using System;
using System.Data;
using Oracle.ManagedDataAccess.Client;

class Program
{
    static void Main()
    {
        string conStr = @"Data Source = (DESCRIPTION = 
        (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = localhost)(PORT = 1521))) 
        (CONNECT_DATA = (SERVICE_NAME = xe))); 
        User Id = CRMS; 
        Password = 1234;";

        using (OracleConnection conn = new OracleConnection(conStr))
        {
            try
            {
                conn.Open();
                Console.WriteLine("Connection Successful!");
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

If the connection is successful, it will print "Connection Successful!"; otherwise, it will display an error message.


This will ensure your Course Registration Management System connects properly to Oracle.

Configuring the Oracle Database Connection in Python using PyODBC

To connect your Course Registration Management System to Oracle using PyODBC, you need to configure the connection string correctly.


Connection String Format:

import pyodbc

conn = pyodbc.connect("DSN=OracleXE;UID=CRMS;PWD=1234")

What You Need to Change:

  1. DSN (OracleXE) –

    • This refers to the Data Source Name configured in your ODBC settings.
    • You must set up an ODBC Data Source before using this connection.
    • Alternatively, you can use a direct connection string (see below).
  2. UID (CRMS) –

    • Change this to the Oracle username for your database.
  3. PWD (1234) –

    • Set your actual Oracle database password.

Alternative: Direct Connection Without DSN

If you don't want to configure an ODBC Data Source, use a direct connection string:

conn = pyodbc.connect(
    "DRIVER={Oracle in OraDB12Home1};"
    "DBQ=localhost:1521/xe;"
    "UID=CRMS;"
    "PWD=1234"
)

Modifications for Your Setup:

  • DRIVER (Oracle in OraDB12Home1) – Change based on your Oracle driver version.
    • Run the following command to check installed drivers:
      print(pyodbc.drivers())
  • DBQ (localhost:1521/xe) –
    • Replace localhost with your Oracle server IP if it's remote.
    • Replace xe with your actual service name.

Testing the Connection

You can test if the connection is working using this Python script:

import pyodbc

try:
    conn = pyodbc.connect("DSN=OracleXE;UID=CRMS;PWD=1234")
    cursor = conn.cursor()
    cursor.execute("SELECT * FROM dual")  # A test query for Oracle
    print("Connection Successful!")
    conn.close()
except Exception as e:
    print("Error:", e)

Setting Up ODBC Data Source (Windows Only)

If you use DSN=OracleXE, you must first configure it in ODBC Data Source Administrator:

  1. Open ODBC Data Source Administrator (Run odbcad32.exe).
  2. Go to the System DSN tab and click Add.
  3. Select Oracle ODBC Driver and click Finish.
  4. Enter:
    • Data Source Name (DSN): OracleXE
    • TNS Service Name: xe
    • User ID: CRMS
  5. Click OK and test the connection.

This will ensure your Course Registration Management System connects properly to Oracle in Python! πŸš€

Your Course Registration Management System should now be up and running! πŸš€

Architecture/Technology Sections

Entity Relationship Diagram

Untitled design (42)

Schema Diagram

Scema Diagram

Activity Diagram

Activity

Class Diagram

Class

Key pages from UI

Admin dashboard

Screenshot 2025-02-03 000057

Student dashboard

Screenshot 2025-02-03 000643

Take courses or register for a course

Screenshot 2025-02-03 000710

Smart Advisor

Screenshot 2025-02-03 001602

Add new course

Screenshot 2025-02-03 000120


Color Reference

Color Hex Code Preview
Black #0a192f #0a192f
White #f8f8f8 #f8f8f8
Teal #008080 #008080
Smoke White #f5f5f5 #f5f5f5

Lessons Learned

1. Importance of Database Design

  • Structuring tables correctly, such as classSchedule, REGISTEREDCOURSE, and PREREQUISITECOURSE, is crucial for ensuring efficient data retrieval and integrity.
  • Implementing relationships between tables (e.g., students, courses, and prerequisites) improved query performance and data consistency.

2. AI-Powered Virtual Advisor Implementation

  • Integrating an AI-based chatbot for course advising added significant value, helping students register for courses efficiently.
  • Mapping user queries to database interactions required careful planning to ensure accurate responses.

3. Optimizing Queries for Performance

  • Writing efficient SQL queries helped reduce query execution time, especially when dealing with large datasets (e.g., retrieving schedules, prerequisites, and registered courses).
  • Indexing key columns improved database performance.

4. Oracle Database Connection Challenges

  • Configuring Oracle.ManagedDataAccess in C# and PyODBC in Python required proper connection strings and ODBC setup.
  • Understanding how to secure database credentials (e.g., avoiding hardcoded passwords) was critical for security.

5. User Experience & Interface Design

  • Designing a user-friendly WinForms UI was essential for smooth navigation.
  • Implementing error handling and clear feedback messages improved the overall experience.

6. Role-Based Access Control (RBAC)

  • Implementing admin, student, and faculty roles required well-defined authentication and authorization mechanisms.
  • Secure login and password management were critical for protecting user data.

7. Importance of Payment Integration

  • The payment module needed proper validation to ensure students successfully complete transactions.
  • Handling different payment methods (e.g., banking, mobile banking) required additional configurations.

8. Deployment & Compatibility Considerations

  • Ensuring the system runs smoothly on different Windows environments required testing on multiple setups.
  • Managing dependencies, such as .NET Framework, Oracle drivers, and NuGet packages, was essential for proper installation.

Feedback & Issues

We value your feedback and contributions to improve the Course Registration Management System. Please follow the steps below for providing feedback or reporting issues:

How to Provide Feedback

  • If you have any suggestions, questions, or need support, feel free to open an issue on our GitHub repository.
  • Provide a clear description of your feedback or the issue you're facing.
  • For suggestions, explain how the system could be improved or how it could better meet the user needs.

Reporting Issues

  • If you encounter any bugs or unexpected behavior, please open a new issue on the repository with the following details:
    1. Summary of the issue: A concise description of the problem.
    2. Steps to Reproduce: Describe the steps taken to reproduce the issue, including any input or actions.
    3. Expected Behavior: What you expected to happen.
    4. Actual Behavior: What actually happened.
    5. Screenshots or Logs (optional): If applicable, include any relevant screenshots, logs, or error messages.

Contributing to the Project

  • If you'd like to contribute to the project, we welcome pull requests. Please fork the repository, make your changes, and submit a pull request with a detailed description of what was changed.

Using the GitHub Issue Tracker

  • Go to the Issues tab in our GitHub repository to view open issues or add new ones.
  • Feel free to comment on any issue to provide additional context or ask for clarification.

License

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

Acknowledgements

Special thanks to:

  • Microsoft and Oracle for their development tools and platform.
  • Stack Overflow and GitHub communities for their valuable support and resources.
  • And Also
    πŸŽ“ Juena Ahmed Noshin
    πŸŽ“ Assistant Professor, Faculty, Department of Computer Science, AIUB
    Your guidance has been instrumental in the development of this project.

Contact

For more information, reach out to:

About

AI powered course Registration management system

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published