Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package main
- import (
- "fmt"
- "strings"
- )
- type product struct {
- id int
- name string
- }
- type user struct {
- username string
- password string
- }
- func main() {
- var products []product
- var users []user
- var isLogin = false
- var input int
- for !isLogin {
- fmt.Println("Welcome to our program.")
- fmt.Println("List actions:")
- fmt.Println("1. Login")
- fmt.Println("2. Register")
- fmt.Println("0. Cancel")
- action := 0
- _, _ = fmt.Scanf("%d", &action)
- if action == 1 {
- isLogin = login(users)
- } else if action == 2 {
- username := ""
- password := ""
- fmt.Println("Masukkan username:")
- _, _ = fmt.Scanf("%s", &username)
- fmt.Println("Masukkan password:")
- _, _ = fmt.Scanf("%s", &password)
- register(username, password, &users)
- } else if action == 0 {
- break
- }
- }
- for isLogin {
- fmt.Println("[======================]")
- fmt.Println("List menu: ")
- fmt.Println("1.] -> Show list product")
- fmt.Println("2.] -> Show product by id")
- fmt.Println("3.] -> Add product")
- fmt.Println("4.] -> Update product")
- fmt.Println("5.] -> Delete product")
- fmt.Println("0.] -> [[ Exit Program ]]")
- fmt.Println("[======================]")
- _, _ = fmt.Scanf("%d", &input)
- switch input {
- case 0:
- fmt.Println("Thank you for using our program! :)")
- isLogin = false
- break
- case 1:
- showListProduct(products)
- break
- case 2:
- id := 0
- fmt.Println("Masukkan id product:")
- _, _ = fmt.Scanf("%d", &id)
- showProductById(id, products)
- break
- case 3:
- //Kita akan melakukan perubahan terhadap products dengan menambahkan data produk, sehingga kita perlu menggunakan pointer
- //Kirimkan alamat array products (dalam memory dengan &products) kepada method addProduct(_)
- addProduct(&products)
- break
- case 4:
- //Kita akan melakukan perubahan terhadap products dengan mengubah data product, sehingga kita perlu menggunakan pointer
- //Kirimkan alamat array products (dalam memory dengan &products) kepada method addProduct(_)
- id := 0
- fmt.Println("Masukkan id product:")
- _, _ = fmt.Scanf("%d", &id)
- updateProductById(id, &products)
- break
- case 5:
- //Kita akan melakukan perubahan terhadap products dengan menghapus data product dari products, sehingga kita perlu menggunakan pointer
- //Kirimkan id product yang ingin dihapus dan alamat array products (dalam memory dengan &products) kepada method addProduct(_)
- id := 0
- fmt.Println("Masukkan id product:")
- _, _ = fmt.Scanf("%d", &id)
- deleteProductById(id, &products)
- break
- default:
- fmt.Println("Menu tidak dikenali, coba cek lagi!")
- break
- }
- }
- }
- func deleteProductById(id int, products *[]product) {
- for i, p := range *products {
- if p.id == id {
- *products = append((*products)[:i], (*products)[i+1:]...)
- }
- }
- }
- func updateProductById(id int, products *[]product) {
- newName := ""
- fmt.Println("Masukkan nama terbaru product")
- _, _ = fmt.Scanf("%s", &newName)
- for i, p := range *products {
- if p.id == id {
- (*products)[i] = product{id, newName}
- }
- }
- }
- func addProduct(products *[]product) {
- id := 0
- name := ""
- fmt.Println("Masukkan id product")
- _, _ = fmt.Scanf("%d", &id)
- fmt.Println("Masukkan nama product")
- _, _ = fmt.Scanf("%s", &name)
- product_ := product{id, name}
- *products = append(*products, product_)
- }
- func showProductById(id int, products []product) {
- for _, p := range products {
- if p.id == id {
- fmt.Println("ID: ", p.id)
- fmt.Println("Name: ", p.name)
- fmt.Println()
- }
- }
- }
- func showListProduct(products []product) {
- // Untuk setiap product p dengan index i pada array products
- for _, p := range products {
- fmt.Println("ID: ", p.id)
- fmt.Println("Name: ", p.name)
- fmt.Println()
- }
- }
- //Username: user; Password: pass
- func checkCredential(username string, password string, users []user) bool {
- for _, u := range users {
- if strings.Compare(username, u.username) == 0 && strings.Compare(password, u.password) == 0 {
- return true
- }
- }
- return false
- }
- func login(users []user) bool {
- var username string
- var password string
- fmt.Println("You need to login to access this program.")
- fmt.Println("Username: ")
- _, _ = fmt.Scanf("%s", &username)
- fmt.Println("Password: ")
- _, _ = fmt.Scanf("%s", &password)
- if checkCredential(username, password, users) {
- return true
- }
- return false
- }
- func register(username string, password string, users *[]user) {
- *users = append(*users, user{username, password})
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement