This project implements a Course Registration System using a doubly-linked list data structure in C++. It allows users to manage courses and student registrations efficiently. Features include adding and removing courses, registering students, managing quotas, and displaying registered students per course.
- Project Overview
- Features
- Data Structures
- How to Use
- Test Cases
- Code Description
- Dependencies
- Example Usage
- Acknowledgments
The Course Registration System enables educational institutions to:
- Manage Course Details (Course name, class section, student type, and quotas).
- Register Students to available courses.
- Track Enrollments with quotas and counts.
- Display Course Data and registered student lists.
- Update and Delete Registrations.
This system uses doubly-linked lists to manage both courses and their registered students efficiently.
-
Add New Courses
Users can add courses with specified attributes (name, class, quota, and student type). -
Remove Courses
Courses can be deleted by specifying their name and class section. -
Register Students
Students can register for courses with quota limits and validation checks. -
Update Registration
Manage student-course relationships dynamically, with limits (max 3 courses per student). -
Display Data
- All courses with details (name, section, quota, current count).
- Students registered in specific courses and sections.
-
Quota Management
Ensure quotas are respected during student registration. -
Finalization
Option to finalize and clean up unutilized courses with no registered students.
The system uses a doubly-linked list for courses, where each course points to:
- Next/Previous Course Nodes
- List of Students registered to the course.
struct elmCourse {
infotypeCourse info; // Course details
adrCourse next, prev; // Pointers to next and previous courses
adrStudent nextStudent; // Head pointer to student list
};
Each course contains a linked list of students:
struct elmStudent {
infotypeStudent info; // Student details
adrStudent next, prev; // Pointers to next and previous students
};
git clone https://github.com/filzarahma/Simpel-LMS-Registrasi-Mata-Kuliah.git
The project is intended to be run using Code::Blocks version 20.03 or higher.
- Open Code::Blocks.
- Go to the menu File > Open.
- Select the project file with the .cbp extension (e.g.,
courseRegistration.cbp
). - Build and run the project.
The system offers a menu with the following options:
- Add a new course
- Remove a course
- Register for courses
- Remove course registration
- Update student count for all courses
- Display all available courses
- Display students in a specific course and class
- Display all courses and registered students
- Search for a course with available quota
- Search for a specific student in a course
- Finalize course registration
- Exit
Below are the predefined test cases to verify system functionality:
// Test Case 1: Add new courses
1
3
Mathematics
A
30
regular
Fisika
B
25
regular
Programming
C
20
international
// Test Case 2: Add student and course registration
3
John
12345
1A
regular
2
Mathematics
A
Fisika
B
// Test Case 3: View all courses
6
// Test Case 4: View specific course students
7
Mathematics
A
// Test Case 5: Search course with quota
9
Mathematics
regular
// Test Case 6: Remove course registration
4
John
Mathematics
// Test Case 7: Add another student
3
Jane
67890
1B
international
1
Programming
C
// Test Case 8: Update student counts
5
// Test Case 9: View all data
8
// Test Case 10: Search student
10
Jane
Programming
// Test Case 11: Delete course
2
Fisika
B
// Test Case 12: Finalize registration
11
yes
// Test Case 13: Exit
0
courseRegistration.h
: Contains type definitions, constants, and function prototypes.courseRegistration.cpp
: Implements all course and student management functionalities.main.cpp
: Contains the user interface and interactive menu logic.
addCourse
: Adds a new course to the list.deleteCourse
: Removes a course from the list.addStudent
: Registers a student to a course.deleteStudent
: Removes a student from a course.showCourses
: Displays all courses.showStudentInCourse
: Displays students in a specific course.searchCourseByQuota
: Finds courses with available quotas.clearAllCourses
: Cleans up dynamically allocated memory.
This project requires:
- Code::Blocks version 20.03 or higher
- Standard C++11 compiler
No external libraries are needed.
Enter the number of courses to add (1-10): 3
Course 1 details:
Course Name: Mathematics
Class Name: A
Maximum Quota: 30
Student Type: regular
---- Student Registration ----
Name: John
Student ID: 12345
Original Class: 1A
Student Type: regular
Enter the number of courses to register for: 2
Enter the name of course 1: Mathematics
This project demonstrates a basic course registration system using doubly-linked lists. It serves as an excellent resource for learning data structures and C++ programming.
Feel free to use this project for educational purposes or extend it for more advanced use cases. Feedback and contributions are welcome! 😊