Student Data Management System in C
Problem Description:
Design and implement a "Student Data Management System" in C to perform the following tasks:
1. Add a new student with their ID, name, grades for 5 subjects, and initialize their attendance
record.
2. Mark attendance for a student by specifying a day (1-32). Attendance is stored as a bitwise
integer.
3. Display all student records, including:
- Student ID and Name
- Grades for each subject and their average grade
- Performance category based on their average grade
- Attendance in binary format (32-bit representation).
4. Exit the program and ensure all dynamically allocated memory is freed.
Requirements:
1. Use the following C concepts:
- Structs to store student data.
- Enums for categorizing student performance as EXCELLENT, GOOD, AVERAGE, or POOR.
- Bitwise operators for attendance management.
- Dynamic memory allocation for student names.
2. Implement a menu-driven approach to allow users to interact with the system.
Performance Classification Criteria:
- EXCELLENT: Average grade >= 90
- GOOD: Average grade >= 75 and < 90
- AVERAGE: Average grade >= 50 and < 75
- POOR: Average grade < 50
Sample Input and Output:
1. Add Student
Input:
Enter Student ID: 101
Enter Student Name: John Doe
Enter Grades (5 subjects): 85 90 78 88 92
Output:
Student added successfully!
2. Mark Attendance
Input:
Enter Student ID: 101
Enter day to mark attendance (1-32): 5
Output:
Attendance marked for day 5.
3. Display Records
Output:
--- Student Records ---
Student ID: 101
Name: John Doe
Grades: 85 90 78 88 92
Average: 86.60
Category: GOOD
Attendance (Binary): 00000000000000000000000000010000
Note: The binary format of attendance will show '1' for days attended and '0' otherwise.
Constraints:
1. Assume a maximum of 32 days of attendance (bitwise integer).
2. The number of students is dynamic and managed with dynamic memory allocation.