Untitled

mail@pastecode.io avatar
unknown
plain_text
10 months ago
3.6 kB
2
Indexable
Never
Certainly, let's go through the code step by step and explain its functionality:

1. Include necessary header files:
   ```cpp
   #include <iostream>
   #include <fstream>
   #include <string>
   ```
   These lines include the required C++ standard library headers for input/output, file handling, and working with strings.

2. Define a `Student` struct:
   ```cpp
   struct Student {
       int id;
       std::string name;
   };
   ```
   This struct defines the structure of a student, containing two fields: `id` (an integer representing the student's ID) and `name` (a string representing the student's name).

3. Function `writeStudentData`:
   ```cpp
   void writeStudentData(const std::string& filename, const Student& student) {
       // Open the file in append mode
       std::ofstream outFile(filename, std::ios::app);

       if (outFile.is_open()) {
           outFile << student.id << " " << student.name << "\n";
           outFile.close();
           std::cout << "Student information has been written to the file." << std::endl;
       } else {
           std::cerr << "Error: Unable to open the file for writing." << std::endl;
       }
   }
   ```
   - This function takes two parameters: a filename and a `Student` object.
   - It opens the file specified by the filename in append mode (`std::ios::app`) and writes the student's ID and name to the file, separated by a space.
   - It then closes the file and prints a message to indicate whether the operation was successful.

4. Function `readStudentData`:
   ```cpp
   void readStudentData(const std::string& filename) {
       // Open the file for reading
       std::ifstream inFile(filename);

       if (inFile.is_open()) {
           Student student;
           while (inFile >> student.id) {
               inFile.get(); // Consume the space character
               std::getline(inFile, student.name);
               std::cout << "Student ID: " << student.id << ", Student Name: " << student.name << std::endl;
           }
           inFile.close();
       } else {
           std::cerr << "Error: Unable to open the file for reading." << std::endl;
       }
   }
   ```
   - This function takes a filename as a parameter and opens the file for reading using `std::ifstream`.
   - It reads student information from the file line by line. It extracts the ID as an integer and consumes the space character before reading the student's name as a string.
   - The student information is then displayed, and the file is closed.

5. The `main` function:
   - It defines a constant string `filename` as the name of the file where student data is stored.

   - Inside a while loop, it presents a menu to the user, allowing them to:
     - Add a student (enter ID and name).
     - Display all students' information.
     - Quit the program.

   - For adding a student, the program reads the student's ID and name, and for displaying all students, it reads and prints all student information from the file.

   - The program keeps running until the user chooses to quit by entering '3'.

   - It uses `std::cin` and `std::cout` for input and output and correctly handles student names with spaces using `getline` and consuming the newline characters.

   - Error messages are displayed if there are issues with file operations.

In summary, this C++ program provides a simple file-based system for storing and retrieving student information, including student IDs and names, using functions and a menu-driven interface.