# Bài tập Seminar#1 - Mermaid ###### tags: `TKPM-Mermaid` ## :memo: Thành viên nhóm ### :bulb: 1712039 - Trương Nguyễn Anh Hoàng ### :bulb: 1712011 - Trần Thị Tuyết Chung ### :bulb: 1712039 - Lê Văn Hải ## Mục lục [ToC] ## Bài tập 1: Flowchart - ### Flowchart: Euclide GCD + Mermaid code: ``` graph TD A[Input A,B] --> B(( )) --> C{B = 0} D(( )) --> B C -- no --> E{A>B} C -- Yes --> L[PRINT A] --> M([END]) E -- "no (< or =)" --> F[B<-B-A]--- G[GOTO2] --> D E -- Yes --> H[A<-A-B] --- K[GOTO2] --> D ``` + Flowchart: ```mermaid graph TD A[Input A,B] --> B(( )) --> C{B = 0} D(( )) --> B C -- no --> E{A>B} C -- Yes --> L[PRINT A] --> M([END]) E -- "no (< or =)" --> F[B<-B-A]--- G[GOTO2] --> D E -- Yes --> H[A<-A-B] --- K[GOTO2] --> D ``` - ### Flowchart: Quadratic Equation + Mermaid code: ``` graph TD A([Start]) -->B[/Read a,b,c/] --> C[d=b^2 -4ac] --> D{d>=0} D -- True --> E["x1 = (-b+sqrt(D))/2a"] --> F["x2 =(-b+sqrt(D))/2a"] --> G[/print x1,x2/] --> Q(( )) D -- False --> K[p=-b/2a] --> M["q=sqrt(|d|)/2a"] --> N[/print p,'+i',q/] --> L[/print p,'-i',q/] --> Q ``` + Flowchart: ```mermaid graph TD A([Start]) -->B[/Read a,b,c/] --> C[d=b^2 -4ac] --> D{d>=0} D -- True --> E["x1 = (-b+sqrt(D))/2a"] --> F["x2 = (-b+sqrt(D))/2a"] --> G[/print x1,x2/] --> Q(( )) D -- False --> K[p=-b/2a] --> M["q=sqrt(|d|)/2a"] --> N[/print p,'+i',q/] --> L[/print p,'-i',q/] --> Q ``` ## Bài tập 2: Class Diagram - ### Mermaid code: ``` classDiagram Address "1" --* Customer Address --* "Has" Customer PremiumCustomer --|> Customer RegularCustomer --|> Customer Product "Purchase" -- "1" Customer Product -- "Is Sold To" Customer PurchaseDetail -- Customer Bill --o Customer Bill ..|> PaymentCounter : Accepts Bill ..> Discount Bill ..> PurchaseDetail Discount ..> PurchaseDetail class Customer{ custName: String custID: Int custPhnum: Int purchaseItem() requestBill() enterCustDetail() } class Address{ street: String city: String state: String enterStreet() enterCity() enterState() enterZipcode() } class Product{ productID: Int productName: String productPrice: Float getPrice() setPrice() } class PurchaseDetail{ custID: Int quantity: Int purchaseDate: Date productID: Int calculateTotalAmt() generatePurchaseList() } class Discount{ discountType discountValue SelectDiscount() } class Bill{ payableAmt calculatePayableAmt() generateBill() } class RegularCustomer{ regularDiscount: Int enterCusDetail() } class PremiumCustomer{ premiumDiscount: Int enterCustDetail() } class Payment Counter{ <<interface>> calculatePayableAmt() generateBill() } ``` - ### Class Diagram (không có annotation): + :memo: HackMD **không hỗ trợ** render annotation của class của (<<interface>>,<<abstract>>,<<service>>, <<enumeration>>) với **mermaid-js** ```mermaid classDiagram Address "1" --* Customer Address --* "Has" Customer PremiumCustomer --|> Customer RegularCustomer --|> Customer Product "Purchase" -- "1" Customer Product -- "Is Sold To" Customer PurchaseDetail -- Customer Bill --o Customer Bill ..|> PaymentCounter : Accepts Bill ..> Discount Bill ..> PurchaseDetail Discount ..> PurchaseDetail class Customer{ custName: String custID: Int custPhnum: Int purchaseItem() requestBill() enterCustDetail() } class Address{ street: String city: String state: String enterStreet() enterCity() enterState() enterZipcode() } class Product{ productID: Int productName: String productPrice: Float getPrice() setPrice() } class PurchaseDetail{ custID: Int quantity: Int purchaseDate: Date productID: Int calculateTotalAmt() generatePurchaseList() } class Discount{ discountType discountValue SelectDiscount() } class Bill{ payableAmt calculatePayableAmt() generateBill() } class RegularCustomer{ regularDiscount: Int enterCusDetail() } class PremiumCustomer{ premiumDiscount: Int enterCustDetail() } class Payment Counter { calculatePayableAmt() generateBill() } ``` - ### Class Diagram (đầy đủ/ảnh/rendered by live editor): ![](https://i.imgur.com/cOKLiNC.jpg) ## Bài tập 3: Sequence Diagram - ### Mermaid code: ``` sequenceDiagram participant Customer participant Search Page participant Search Result Page participant Catalog participant Search Results activate Customer Customer->> Search Page: 1:OnSearch(author) activate Search Page Search Page->>Search Page: 1.1:validateSearchCriteria() alt author entered Search Page ->>+ Catalog: 1.2: searchByAuthor(author) activate Catalog Catalog ->> Search Results: 1.2.1: create() activate Search Results Search Results ->> Search Result Page: 1.2.1.1: display() activate Search Result Page deactivate Search Result Page deactivate Search Results else author not entered deactivate Catalog Search Page ->> Search Page: 1.3: displayErrorMessage() deactivate Search Page end deactivate Customer ``` - ### Search Book Sequence Diagram: ```mermaid sequenceDiagram participant Customer participant Search Page participant Search Result Page participant Catalog participant Search Results activate Customer Customer->> Search Page: 1:OnSearch(author) activate Search Page Search Page->>Search Page: 1.1:validateSearchCriteria() alt author entered Search Page ->>+ Catalog: 1.2: searchByAuthor(author) activate Catalog Catalog ->> Search Results: 1.2.1: create() activate Search Results Search Results ->> Search Result Page: 1.2.1.1: display() activate Search Result Page deactivate Search Result Page deactivate Search Results else author not entered deactivate Catalog Search Page ->> Search Page: 1.3: displayErrorMessage() deactivate Search Page end deactivate Customer ``` ## Bài tập 4: State Chart Diagram - ### Mermaid code ``` stateDiagram [*] --> AD AD: IDLE D: PrintReceipt C: DispenseMoney B: AcountActions AD--> VerifyAcount B --> C C --> D B --> D C --> [*] D --> [*] state VerifyAcount{ A: VerifyCards B: CardValid C: VerifyPin D: PinCorrect G:valid F: PinCorrect B-->C C-->F F-->D:PINValid F-->E :else E-->C: [tries<maxTries] tries++ A-->G G-->B: cardValid } ``` - ## ATM State Machine Diagram(dạng ảnh): ![](https://i.imgur.com/Y4C43tS.jpg)