An open API service indexing awesome lists of open source software.

https://github.com/elfaz19/double-linked-list-by-c--

📚 Student Management System 🎓 A C++ doubly linked list project to manage student records. Features: insert, delete, search, display, and demo mode. Perfect for learning dynamic data structures! 🚀 Happy Coding! ✨
https://github.com/elfaz19/double-linked-list-by-c--

cpp dsa dsa-algorithm dsa-practice

Last synced: 3 months ago
JSON representation

📚 Student Management System 🎓 A C++ doubly linked list project to manage student records. Features: insert, delete, search, display, and demo mode. Perfect for learning dynamic data structures! 🚀 Happy Coding! ✨

Awesome Lists containing this project

README

          

# 📚 Doubly Linked List Student Management System 🎓

Welcome to the **Doubly Linked List Student Management System**! 🎉 This C++ project is a simple yet powerful implementation of a doubly linked list to manage student records. It allows you to perform various operations such as inserting, deleting, searching, and displaying student data in both forward and backward directions. This project is ideal for learning and understanding how doubly linked lists work in C++. 🖥️

---

## 🌟 Features

### 1. **Insertion Operations** ➕
- **Insert at Beginning**: Add a student record at the beginning of the list.
- **Insert at End**: Add a student record at the end of the list.
- **Insert After**: Add a student record after a specified position in the list.

### 2. **Deletion Operations** ➖
- **Delete First**: Remove the first student record from the list.
- **Delete Last**: Remove the last student record from the list.
- **Delete After**: Remove a student record after a specified position in the list.

### 3. **Display Operations** 📄
- **Display Forward**: Display all student records from the beginning to the end.
- **Display Backward**: Display all student records from the end to the beginning.

### 4. **Search Operation** 🔍
- **Search by ID**: Search for a student record using their unique ID.

### 5. **Demo Mode** 🎮
- **Add Demo Students**: Quickly populate the list with 6 pre-defined student records for testing and demonstration purposes.

### 6. **Error Handling** 🛠️
- The program includes robust error handling to manage invalid inputs and edge cases.

---

## 🛠️ How It Works

The program uses a **doubly linked list** data structure to manage student records. Each node in the list represents a student and contains the following fields:
- **ID**: Unique identifier for the student.
- **Name**: Full name of the student.
- **Age**: Age of the student.
- **Department**: Department the student belongs to.
- **GPA**: Grade Point Average of the student.
- **Prev**: Pointer to the previous node in the list.
- **Next**: Pointer to the next node in the list.

The program provides a **menu-driven interface** for users to interact with the list and perform various operations.

---

## 📂 Code Structure

### Key Functions
1. **`createStudent`**: Creates a new student node with the provided details.
2. **`insertAtBeginning`**: Inserts a student at the beginning of the list.
3. **`insertAtEnd`**: Inserts a student at the end of the list.
4. **`insertAfter`**: Inserts a student after a specified position.
5. **`deleteFirst`**: Deletes the first student in the list.
6. **`deleteLast`**: Deletes the last student in the list.
7. **`deleteAfter`**: Deletes a student after a specified position.
8. **`displayForward`**: Displays the list from the beginning to the end.
9. **`displayBackward`**: Displays the list from the end to the beginning.
10. **`searchNode`**: Searches for a student by their ID.
11. **`addDemoStudents`**: Adds 6 demo student records to the list.

---

## 📝 Example Usage

### Adding a Student
1. Select **Insert at Beginning** or **Insert at End** from the menu.
2. Enter the student's details (ID, Name, Age, Department, GPA).
3. The student will be added to the list.

### Deleting a Student
1. Select **Delete First**, **Delete Last**, or **Delete After** from the menu.
2. Follow the prompts to delete the desired student.

### Searching for a Student
1. Select **Search Node** from the menu.
2. Enter the student's ID to search for their record.

### Displaying the List
1. Select **Display Forward** or **Display Backward** to view the list.

---

## 🎯 Why This Project?

This project is a great way to:
- Learn about **doubly linked lists** and their operations.
- Understand how to manage dynamic data structures in C++.
- Practice **menu-driven programming** and **error handling**.

---

## 🤝 Contributions

Contributions are welcome! If you have any suggestions, improvements, or bug fixes, feel free to open an issue or submit a pull request.

---

## 📜 License

This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.

---

## 👤 Author

👤 **ELFAZ DEJENE**
- GitHub: [ELFAZ19](https://github.com/elfaz19)
- Email: [ELFAZDEJENE@gmail.com ](https://elfazdjene@gmail.com)

---

Happy Coding! 🚀✨