Class Abacus

All Implemented Interfaces:
DateChangeListener, StudentChangeListener, ImageObserver, MenuContainer, Serializable, Accessible

public class Abacus extends JPanel implements DateChangeListener, StudentChangeListener
Abacus computational skills assessment page.

Provides a structured interface for evaluating student proficiency with the Cranmer Abacus across 22 standardized skills organized into 8 progressive competency phases:

  • Phase 1 (P1_1–P1_4): Foundational bead manipulation (setting, clearing, place value, vocabulary)
  • Phase 2 (P2_1–P2_3): Single-digit addition (direct and indirect methods)
  • Phase 3 (P3_1–P3_3): Single-digit subtraction (direct and indirect methods)
  • Phase 4 (P4_1–P4_2): Multiplication with multi-digit operands
  • Phase 5 (P5_1–P5_2): Division with multi-digit operands
  • Phase 6 (P6_1–P6_4): Decimal arithmetic (all four operations)
  • Phase 7 (P7_1–P7_4): Fraction arithmetic (all four operations)
  • Phase 8 (P8_1–P8_2): Advanced operations (percentages, square roots)

Data Persistence and Export:

  • Skill scores are captured via PhaseScoreField components (integer 0–4 typical)
  • Submit button persists values to normalized schema using Database.insertAssessmentResults(int, int, java.lang.String[], int[])
  • Session data exported to timestamped JSON in StudentDataFiles/<student>/Sessions/Abacus/
  • Per-phase time-series plots generated and saved to plots/ directory
  • Comprehensive Markdown and HTML reports generated with embedded phase plots and color-coded legends

Report Artifacts:

  • JSON export: Abacus-<sessionId>-<timestamp>.json with session envelope
  • Phase group plots: Abacus-<sessionId>-<date>-P<N>.png (8 PNG images)
  • Markdown report: reports/Abacus-<sessionId>-<date>.md with relative image links
  • HTML report: reports/Abacus-<sessionId>-<date>.html with inline styles and legends

The shared JLineGraph visualizes recent session trends, grouping skills by phase prefix to maintain chart readability. Implements DateChangeListener and StudentChangeListener for dynamic updates when global selections change.

See Also:
  • Constructor Details

    • Abacus

      public Abacus(String studentName, LocalDate date, JLineGraph lineGraph)
      Construct the Abacus page for the given student and session date.
      Parameters:
      studentName - the selected student's display name (may be null before selection)
      date - the date to associate with created progress sessions
      lineGraph - the shared graph component used to visualize results
  • Method Details