- Shubham Gupta - Generate random Student and Register them, Search Operation, Makefile, Shell Scripting.
- Ashutosh Sahu - File Handling ,Memory Management and Server.
- Om Buddhadev - Regular and Random request generators.
- Sahil Sonawane - Linked-List operations (Update, Remove).
The Student Management System is an application that offers functionalities/services required in an academic setting involving student activities. This project is developed using C-language on a Linux-based environment and provides features for registering, searching, updating, and deleting student records for a specific academic club.
- Context
- Problem Overview
- Project Features
- Compilation and Execution
- Performance Measurement
- Assumptions
- Known Issues
- Future Improvements
- Group Details
- References
In an academic institute, students can participate in various activities organized by different clubs. This project focuses on managing student records for one such club. The application allows administrators, managers, and members to interact with the system through a command-line interface. It uses a file-based database to store records and a main-memory linked list to keep track of recently accessed data efficiently.
The Student Management System aims to provide the following services:
- Registration: Adding student records to the database.
- Search: Retrieving student records based on student ID.
- Update: Modifying student records, especially for hostel room updates.
- Delete: Removing student records from the database.
The system supports three types of users: administrators, managers, and members. The application listens to requests from users or other programs, which may involve the operations mentioned above.
- File-based database for storing student records.
- Main-memory linked list to keep track of recently accessed data.
- Command-line interface for user interaction.
- Support for registration, search, update, and delete operations.
- Differentiate between administrator, manager, and member roles.
The project can be compiled and executed using the provided run.sh
script. The script will compile all the source files for each module and create executable files. To run the project, use the following command:
run.sh
The project includes a performance measurement module to measure throughput and mean response time for different request generation scenarios. The results of these measurements are used to assess the system's performance under varying loads.
The project provides two request generation scenarios:
-
Request Generator - Regular: This program generates a total of 50 pairs of random numbers (student id=[1-100], op id=[0-3]) at an interval of one second. The first number represents the student id, and the second number represents the operation id. For update operations, the program also chooses a random value for the hostel room as the update candidate.
-
Request Generator - Random: This program generates a total of 20 pairs of random numbers, similar to the first program. However, after generating each pair, this program waits for a random amount of time between one to three seconds before generating the next pair.
To measure the throughput and mean response time for both request generators, run the performance measurement module for each scenario and record the results.
To measure the impact of increasing the main-memory size by 20% and then 50%, modify the main-memory linked list to accommodate more nodes. Run the performance measurement module for each scenario and compare the results with the original main-memory size.
To measure the impact of faster memory technology, assuming both the disk and main-memory perform twice as fast, modify the access times in the performance measurement module accordingly. Run the performance measurement module for both the original memory size and increased memory size, and analyze the performance improvement.
The project makes the following assumptions:
- Student IDs start from 1 and increment by 1 for each new student.
- The system can handle a maximum of 100 students.
- No known issues at the moment.
- Implement more robust error handling and input validation.
- Add additional user roles and access control features.
- Enhance performance using more efficient data structures and algorithms.