State Chart Diagram === ### ATM State Machine Diagram ```mermaid stateDiagram direction LR s1: PrintReceipt s2: DispenseMoney s3: AccountActions s4: Idle s2 --> s1 s3 --> s2 s3 --> s1 [*] --> s4 s1 --> [*] s2 --> [*] s4 --> VerifyAccount state VerifyAccount{ state "VerifyCard" as s5 s5:cardSubmitted / s5:readCard / s5:returnCard / s6: CardValid s7: PinCorrect state "VerifyPin" as s8 s8 : pinSubmitted / s8 : checkPin / s8 : returnCard / s9: PinInCorrect s5 --> CardValid CardValid --> s6: cardValid s6 --> s8 s8 --> PinCorrect PinCorrect --> s7: [PinValid] PinCorrect --> s9:[else] s9 --> s8: [tries < maxtries] / tries++ } ``` ```mermaid stateDiagram s1: PrintReceipt s2: DispenseMoney s3: AccountActions s4: Idle s2 --> s1 s3 --> s2 s3 --> s1 [*] --> s4 s1 --> [*] s2 --> [*] s4 --> VerifyAccount state VerifyAccount{ state "VerifyCard" as s5 s5:cardSubmitted / s5:readCard / s5:returnCard / s6: CardValid s7: PinCorrect state "VerifyPin" as s8 s8 : pinSubmitted / s8 : checkPin / s8 : returnCard / s9: PinInCorrect s5 --> CardValid CardValid --> s6: cardValid s6 --> s8 s8 --> PinCorrect PinCorrect --> s7: [PinValid] PinCorrect --> s9:[else] s9 --> s8: [tries < maxtries] / tries++ } ```