Project Description
Build a production-grade Command-Line Interface (CLI) application in Python that manages student profiles, course grades, GPA calculations, and JSON file storage. You will apply core data structures, input validation, and defensive programming.
Learning Objectives
- Design structured nested dictionary representations for complex entity records.
- Implement CRUD (Create, Read, Update, Delete) data operations over interactive CLI inputs.
- Safely handle invalid user inputs with try/except exception catching.
- Persist application state cleanly using Python standard library json file serialization.
Technical Requirements & Specifications
### Project Overview
The **Student Management System** is a foundational CLI application designed to consolidate your mastery of Python Level 0 & 1 concepts.
### System Architecture & Requirements
1. **Student Data Model**:
- Each student is identified by a unique ID (e.g. `"STU1001"`).
- Attributes: `name` (str), `age` (int), `email` (str), `courses` (list of str), `grades` (list of float).
2. **Core Features**:
- **Add Student**: Prompts for details, validates numeric grades, and computes initial GPA.
- **Search Student**: Query by Student ID or partial Name search.
- **Update Record**: Add new course grades or update email address.
- **Delete Student**: Safely remove student profile after user confirmation.
- **Export Report**: Print formatted ASCII summary table of all enrolled students sorted by GPA.
3. **Data Persistence**:
- Automatically save all mutations to `students.json` upon program exit.