Programming Fundamentals Using C++

Project 05 · Integrated C++ Management Application

Capstone · all 16 modules · the graded course project (10 %, Weeks 14–16) Outcomes: CLO-1…CLO-8. Difficulty: ★★★★★ · Subsumes P1–P4 bands.

1. Problem description

A small institute runs three desks that currently use three separate paper registers: course grades (per-student weighted averages and letters, the P1 domain), petty cash (expenses and category totals, the P2 domain), and the reading-room shelf (a mini catalog with lend/return, the P3 domain). You will build ONE console application that integrates these three desks into a single coherent program with persistent state — the P4 class-design discipline applied across all three domains — and demonstrate it live.

Integration is the point: one shared main menu, one consistent validation vocabulary, one save/load discipline, reports that span desks (e.g., a "session summary" quoting all three).

2. Learning objectives

  1. Integrate three sub-systems behind one menu without entangling their data.
  2. Apply class design with invariants to a domain that needs it (records) and honestly choose structs where they suffice (expenses).
  3. Manage multi-file persistence with one uniform loader discipline.
  4. Search and sort across a collection for a ranked report.
  5. Produce a test table, a design narrative, and a live demonstration that together evidence understanding.

3. Functional requirements

4. Non-functional requirements

5. Suggested data structures

6. User interaction design

grades: loaded 2 skipped 0 | cash: loaded 5 skipped 1 | shelf: loaded 3 skipped 0
main (grades|cash|shelf|summary|quit): grades
grades (add|list|top|back): add
name lab midterm final: Zara 88 79 91
Zara: 86.05 -> C+
grades (add|list|top|back): back
main (grades|cash|shelf|summary|quit): summary
grades: 3 students | cash: 214.50 | shelf: 2 out
session entries: 4
main (grades|cash|shelf|summary|quit): quit
saved.

7. Input validation requirements

8. Testing plan

#ClassScenarioExpected
T1integrationall three desks populated, summarythree correct lines + entry count
T2round-trippopulate all, quit, restartper-file loaded N skipped 0
T3poisoned filecorrupt line in cash.txt onlycash skipped 1; other desks load clean
T4invariantgrade mark 101; shelf lend of out bookbad value / not available; state unchanged
T5derived statestudent's average after gpa-style edit of a componentrecomputed value in list/top — never a stale stored one
T6rankingaverages 86.05, 92.5, 86.05top-3 order: 92.5, then the two 86.05 alphabetical by name
T7cross-deskcash typed at grades submenubad input, desks unaffected
T8empty desksfresh files, summary then quitzeros; saved.; restart loads zeros
T9save failureread-only directorycannot save <file> per file, exit 2
T10vocabularyone rejected entry per desksame message grammar, no state change anywhere

Plus a demonstration script: a printed 8–10 command sequence you will run live at the demo (submit it; the demonstrator follows it).

9. Milestones (map to Weeks 14–16)

WeekMilestoneEvidence at checkpoint
14Proposal + skeletonsone-pager: data model per desk, file grammar, test-table plan
15Checkpoint: desks work standalonecompiling program: all three menus function in-memory; debug log
15Integration + persistenceone menu, three desks, round-trip (T2)
16Polish + demo + reportT1–T10 tables, top-3 ranking, demonstration script

10. Extension ideas ⚙ (optional; graded only as scope-calibration evidence)

11. Assessment rubric

Graded out of 100 points with the shared project rubric (../../instructor/assessment-rubrics/project.md): correctness 30 · design & quality 25 · testing 15 · explanation 15 · process 10 · scope 5. The demonstration maps to correctness + explanation; the debug logs and milestones map to process. NFR2 (no stored derived state) and FR4 (own sort) are named quality lines — violating either caps quality at 15/25.

12. Student instructions

Individual by default; pairs allowed with a written split and both partners answering live questions at the demonstration. Sequence: proposal → desk skeletons → integration → persistence → ranking → polish. Keep every desk working at each milestone (compile after every change; the debug log is process evidence). Deliverables at Week 16: source file(s), the three sample data files, test_table.md (T1–T10 + your own), postmortem.md (design narration + ≥ 2 defect narratives + honest limits), demonstration script, and a 5-minute live demo. Zip as p05_<yourid>.zip. Late policy per syllabus; the demonstration is scheduled in Week 16's lab slot.

Programming Fundamentals Using C++ · C++17 · 16 weeksBack to top ↑