Advertisement
Guest User

Untitled

a guest
Mar 15th, 2019
105
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.33 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "strings"
  6. )
  7.  
  8. type product struct {
  9. id int
  10. name string
  11. }
  12.  
  13. type user struct {
  14. username string
  15. password string
  16. }
  17.  
  18. func main() {
  19. var products []product
  20. var users []user
  21. var isLogin = false
  22. var input int
  23.  
  24. for !isLogin {
  25. fmt.Println("Welcome to our program.")
  26. fmt.Println("List actions:")
  27. fmt.Println("1. Login")
  28. fmt.Println("2. Register")
  29. fmt.Println("0. Cancel")
  30.  
  31. action := 0
  32. _, _ = fmt.Scanf("%d", &action)
  33.  
  34. if action == 1 {
  35. isLogin = login(users)
  36. } else if action == 2 {
  37. username := ""
  38. password := ""
  39. fmt.Println("Masukkan username:")
  40. _, _ = fmt.Scanf("%s", &username)
  41. fmt.Println("Masukkan password:")
  42. _, _ = fmt.Scanf("%s", &password)
  43. register(username, password, &users)
  44. } else if action == 0 {
  45. break
  46. }
  47. }
  48.  
  49. for isLogin {
  50. fmt.Println("[======================]")
  51. fmt.Println("List menu: ")
  52. fmt.Println("1.] -> Show list product")
  53. fmt.Println("2.] -> Show product by id")
  54. fmt.Println("3.] -> Add product")
  55. fmt.Println("4.] -> Update product")
  56. fmt.Println("5.] -> Delete product")
  57. fmt.Println("0.] -> [[ Exit Program ]]")
  58. fmt.Println("[======================]")
  59.  
  60. _, _ = fmt.Scanf("%d", &input)
  61.  
  62. switch input {
  63. case 0:
  64. fmt.Println("Thank you for using our program! :)")
  65. isLogin = false
  66. break
  67. case 1:
  68. showListProduct(products)
  69. break
  70. case 2:
  71. id := 0
  72. fmt.Println("Masukkan id product:")
  73. _, _ = fmt.Scanf("%d", &id)
  74. showProductById(id, products)
  75. break
  76. case 3:
  77. //Kita akan melakukan perubahan terhadap products dengan menambahkan data produk, sehingga kita perlu menggunakan pointer
  78. //Kirimkan alamat array products (dalam memory dengan &products) kepada method addProduct(_)
  79. addProduct(&products)
  80. break
  81. case 4:
  82. //Kita akan melakukan perubahan terhadap products dengan mengubah data product, sehingga kita perlu menggunakan pointer
  83. //Kirimkan alamat array products (dalam memory dengan &products) kepada method addProduct(_)
  84. id := 0
  85. fmt.Println("Masukkan id product:")
  86. _, _ = fmt.Scanf("%d", &id)
  87. updateProductById(id, &products)
  88. break
  89. case 5:
  90. //Kita akan melakukan perubahan terhadap products dengan menghapus data product dari products, sehingga kita perlu menggunakan pointer
  91. //Kirimkan id product yang ingin dihapus dan alamat array products (dalam memory dengan &products) kepada method addProduct(_)
  92. id := 0
  93. fmt.Println("Masukkan id product:")
  94. _, _ = fmt.Scanf("%d", &id)
  95. deleteProductById(id, &products)
  96. break
  97. default:
  98. fmt.Println("Menu tidak dikenali, coba cek lagi!")
  99. break
  100. }
  101. }
  102. }
  103.  
  104. func deleteProductById(id int, products *[]product) {
  105. for i, p := range *products {
  106. if p.id == id {
  107. *products = append((*products)[:i], (*products)[i+1:]...)
  108. }
  109. }
  110. }
  111.  
  112. func updateProductById(id int, products *[]product) {
  113. newName := ""
  114.  
  115. fmt.Println("Masukkan nama terbaru product")
  116. _, _ = fmt.Scanf("%s", &newName)
  117.  
  118. for i, p := range *products {
  119. if p.id == id {
  120. (*products)[i] = product{id, newName}
  121. }
  122. }
  123. }
  124.  
  125. func addProduct(products *[]product) {
  126. id := 0
  127. name := ""
  128. fmt.Println("Masukkan id product")
  129. _, _ = fmt.Scanf("%d", &id)
  130. fmt.Println("Masukkan nama product")
  131. _, _ = fmt.Scanf("%s", &name)
  132.  
  133. product_ := product{id, name}
  134.  
  135. *products = append(*products, product_)
  136. }
  137.  
  138. func showProductById(id int, products []product) {
  139. for _, p := range products {
  140. if p.id == id {
  141. fmt.Println("ID: ", p.id)
  142. fmt.Println("Name: ", p.name)
  143. fmt.Println()
  144. }
  145. }
  146. }
  147.  
  148. func showListProduct(products []product) {
  149. // Untuk setiap product p dengan index i pada array products
  150. for _, p := range products {
  151. fmt.Println("ID: ", p.id)
  152. fmt.Println("Name: ", p.name)
  153. fmt.Println()
  154. }
  155. }
  156.  
  157. //Username: user; Password: pass
  158. func checkCredential(username string, password string, users []user) bool {
  159. for _, u := range users {
  160. if strings.Compare(username, u.username) == 0 && strings.Compare(password, u.password) == 0 {
  161. return true
  162. }
  163. }
  164.  
  165. return false
  166. }
  167.  
  168. func login(users []user) bool {
  169. var username string
  170. var password string
  171.  
  172. fmt.Println("You need to login to access this program.")
  173.  
  174. fmt.Println("Username: ")
  175. _, _ = fmt.Scanf("%s", &username)
  176. fmt.Println("Password: ")
  177. _, _ = fmt.Scanf("%s", &password)
  178.  
  179. if checkCredential(username, password, users) {
  180. return true
  181. }
  182.  
  183. return false
  184. }
  185.  
  186. func register(username string, password string, users *[]user) {
  187. *users = append(*users, user{username, password})
  188. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement