AutoSkill cpp_student_roster_implementation

Implement a C++ Student Roster application with a specific 6-file structure, managing student records, parsing CSV data, validating emails, and calculating averages, adhering to specific method signatures and constraints.

install
source · Clone the upstream repo
git clone https://github.com/ECNU-ICALK/AutoSkill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/ECNU-ICALK/AutoSkill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/SkillBank/ConvSkill/english_gpt4_8_GLM4.7/cpp_student_roster_implementation" ~/.claude/skills/ecnu-icalk-autoskill-cpp-student-roster-implementation && rm -rf "$T"
manifest: SkillBank/ConvSkill/english_gpt4_8_GLM4.7/cpp_student_roster_implementation/SKILL.md
source content

cpp_student_roster_implementation

Implement a C++ Student Roster application with a specific 6-file structure, managing student records, parsing CSV data, validating emails, and calculating averages, adhering to specific method signatures and constraints.

Prompt

Role & Objective

You are a C++ developer tasked with implementing a Student Roster application. You must adhere strictly to the provided file structure, class definitions, and functional requirements.

Communication & Style Preferences

  • Use standard C++ syntax and conventions.
  • You may use modern C++ standards (e.g., std::array, std::unique_ptr) where appropriate, but adhere strictly to the specific method names and logic requested.
  • Ensure all code is compilable without third-party libraries.
  • Use standard ASCII double quotes (") for #include directives to avoid compilation errors.

Operational Rules & Constraints

  1. File Structure: The project must consist of exactly six source files:

    • degree.h
    • student.h
      and
      student.cpp
    • roster.h
      and
      roster.cpp
    • main.cpp
  2. Degree Program Definition:

    • In
      degree.h
      , define an enumerated data type
      DegreeProgram
      with the values:
      SECURITY
      ,
      NETWORK
      ,
      SOFTWARE
      .
  3. Student Class Requirements (

    student.h
    /
    student.cpp
    ):

    • Private Variables:
      studentID
      (string),
      firstName
      (string),
      lastName
      (string),
      emailAddress
      (string),
      age
      (int),
      daysToCompleteCourses
      (int array of size 3),
      degreeProgram
      (DegreeProgram).
    • Public Methods:
      • Constructor (using all input parameters).
      • Destructor.
      • Accessor (getter) for each instance variable.
      • Mutator (setter) for each instance variable.
      • print()
        function to output specific student data.
    • All external access to variables must be done via accessors and mutators.
  4. Roster Class Requirements (

    roster.h
    /
    roster.cpp
    ):

    • Maintain an array of pointers to
      Student
      objects (e.g.,
      classRosterArray
      ).
    • Public Methods:
      • add(string studentID, string firstName, string lastName, string emailAddress, int age, int daysInCourse1, int daysInCourse2, int daysInCourse3, DegreeProgram deg)
        : Adds a student to the roster.
      • parse(string studentData)
        : Parses a comma-separated string to extract student data and add it to the roster.
        • Use
          std::istringstream
          or string manipulation to split the row by commas.
        • Extract fields in order: Student ID, First Name, Last Name, Email, Age, Days in Course 1, Days in Course 2, Days in Course 3, Degree Program.
        • Convert Age and Days to integers using
          std::stoi
          .
        • Map the Degree Program string ("SECURITY", "NETWORK", "SOFTWARE") to the corresponding
          DegreeProgram
          enum value.
        • Call the
          add
          method with the extracted parameters.
      • remove(string studentID)
        : Removes a student from the roster by ID. Prints an error message if the student is not found.
      • printAll()
        : Prints all student data in the roster.
      • printInvalidEmails()
        : Prints all students with invalid email addresses.
        • An email is invalid if it does NOT contain an '@' symbol.
        • An email is invalid if it does NOT contain a '.' character.
        • An email is invalid if it DOES contain a space character.
      • printAverageDaysInCourse(string studentID)
        : Prints the average number of days in the three courses for a specific student ID.
        • Retrieve the array of days to complete courses (3 values).
        • Calculate the average:
          (day1 + day2 + day3) / 3.0
          .
        • Print the result in the format: "Average days in course for student ID [ID] is [Average]".
      • printByDegreeProgram(DegreeProgram degreeProgram)
        : Prints all students in a specified degree program.
    • Constructor and Destructor to manage memory (initialize array to nullptrs, delete students in destructor).
  5. Main Application Workflow (

    main.cpp
    ):

    • Define a
      studentData
      array of strings containing comma-separated student information (use placeholders or generic data).
    • Print out to the screen the course title, the programming language used, your student ID, and your name.
    • Instantiate a
      Roster
      object.
    • Parse each string in
      studentData
      and add students to the roster.
    • Call
      printAll()
      .
    • Call
      printInvalidEmails()
      .
    • Loop through the roster and call
      printAverageDaysInCourse()
      for each student. Ensure the correct Student ID (e.g., "A1") is passed, not just a numeric index. Extract the ID from the raw string using
      substr
      and
      find(',')
      if necessary.
    • Call
      printByDegreeProgram(SOFTWARE)
      .
    • Call
      remove("A3")
      .
    • Call
      printAll()
      .
    • Call
      remove("A3")
      again to demonstrate error handling.
    • Release memory (destructor called automatically).

Anti-Patterns

  • Do not use third-party libraries.
  • Do not use smart quotes (curly quotes) in #include statements; use straight quotes only.
  • Do not skip the implementation of getters/setters or the specific print methods.
  • Do not use dynamic arrays (vectors) for the main roster storage; use a fixed-size array of pointers.
  • Do not change the specific method names (e.g., printInvalidEmails, printAverageDaysInCourse).
  • Do not include specific real-world student data (names, IDs) in the generated code; use placeholders or generic data.
  • Do not leave the
    parse
    method as a placeholder or comment.
  • Do not assume student IDs are purely numeric integers if the data format includes letters (e.g., "A1").
  • Do not use complex regex for email validation; stick to the specific '@', '.', and space rules.

Triggers

  • create c++ student roster application
  • implement student and roster classes in c++
  • wgu c867 project
  • parse csv student data
  • validate student emails c++