Skip to content
 
 

Latest commit

 

History

17 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CISC 192 Final Project: Budget Tracker

Overview

This repository implements a fully working grade management system that allows allocating and managing student information by using a file.

You may:

  • Add a student
  • Remove a student
  • Change a student's grade
  • Get the class average
  • Get the highest grade
  • Get the count of students
  • Sort students by their grade
  • Have a written report of student information that includes the average, highest grade and count of students.

How to Compile and Run

make
./main

How to Run Tests

make test

How to Clean Build Files

make clean

Integrate and Test Course Topics

  1. Week 1 Program Basics

    • Code location:
      • main.cpp: main();
      • project.hpp: A_MINIMUM, B_MINIMUM, C_MINIMUM, D_MINIMUM (constants), int/double/std::string (data types), project.cpp — getAverage() (arithmetic).
    • Test location: test_project.cpp — testStudentConstruction()
  2. Week 2 Decisions and Loops

    • Code location:
      • main.cpp: main() (menu-looping with do-while, switch statement on choice)
      • project.cpp: Student::determineLetterGrade() (conditional), Student::isValidId(), Student::isValidGrade(), isValidMenuChoice() (input validation)
    • Test location: test_project.cpp — testMenuValidation(), testLetterGrades()
  3. Week 3 Functions and Program Design

    • Code location:
      • project.hpp / project.cpp: functions across Student and StudentList: getStudentCount(), getAverage(), getHighestGrade(), findStudentIndex(), addStudent(), removeStudent(), changeStudentGrade(), sortByGrade(), readStudentFile(), writeStudentReport()
    • Test location: test_project.cpp — testValidation(), testStudentConstruction()
  4. Week 4 Arrays, Searching, and Sorting

    • Code location:
      • project.cpp: findStudentIndex() (linear search over studentList); getHighestGrade() (linear scan for max); sortByGrade() (selection sort, descending by grade)
    • Test location: test_project.cpp — testFindStudentIndex(), testAverageAndHighest(), testSortByGrade()
  5. Week 5 Strings and Structures

    • Code location:
      • project.hpp: Student struct (id, name as std::string members); — project.cpp: Student::Student() constructors, Student::getId(), Student::getName()
    • Test location: test_project.cpp — testStudentConstruction(), testValidation()
  6. Week 6 Pointers, Dynamic Memory, and Linked Lists

    • Code location:
      • project.hpp: StudentNode class (info, next pointer)
      • project.cpp: StudentNode::StudentNode(), StudentList::addStudent() (new StudentNode, pointer traversal via next), StudentList::removeStudent() (delete, relinking previous->next)
    • Test location: test_project.cpp — testAddStudent(), testRemoveStudent()
  7. Week 7 File I/O and Integration

    • Code location:
      • project.cpp: StudentList::readStudentFile() (ifstream), StudentList::writeStudentReport() (ofstream)
      • main.cpp: main() (menu ties all StudentList operations together into one program)
    • Test location: test_project.cpp — testReadStudentFile(), testWriteStudentReport()

Known Limitations

  • The student report is not sorted unless user selects "Sort students by grade"/choice 7 before generating the student report/choice 8. writeStudentReport() does not sort automatically, so getting the report first will result in a report of students in whichever order students were inserted first.
  • Student names must be a single word.
  • sortByGrades() doesn't sort the linked list, leaving it in its original insertion order. However, the rest of the program doesn't use it unless addStudent()/choice 1 or removeStudent()/choice 2 is called.

Final Submission Checklist

  • My project compiles with make.
  • My project runs with ./main.
  • My tests run with make test.
  • I deleted or replaced the sample project code.
  • My project uses class names that are nouns from my own project.
  • My project integrates all 7 course topics in reachable code.
  • My project includes at least one unit test per course topic.
  • My README explains where each topic appears.
  • My README explains which test verifies each topic.
  • My code is committed and pushed to GitHub Classroom.

About

2265_mira_cisc-192_30625-8-1-final-project-CISC192FinalProject created by GitHub Classroom

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages