-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathpelanggan.go
108 lines (94 loc) · 2.37 KB
/
pelanggan.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
package main
import "fmt"
const NMAX_PELANGGAN int = 20
type Pelanggan struct {
id int
nama string
alamat string
nomorTelepon string
alamatEmail string
status int
}
type tabPelanggan [NMAX_PELANGGAN]Pelanggan
var daftarPelanggan tabPelanggan
var nP int = 0
func CreatePelanggan(nama, alamat, nomorTelepon, alamatEmail string, status int) {
if nP < NMAX_PELANGGAN {
daftarPelanggan[nP] = Pelanggan{nP + 1, nama, alamat, nomorTelepon, alamatEmail, status}
nP++
} else {
fmt.Println("Daftar pelanggan penuh!")
}
}
func ReadAllPelanggan() tabPelanggan {
return daftarPelanggan
}
func UpdatePelanggan(id int, nama, alamat, nomorTelepon, alamatEmail string) {
var left, right, mid int
left = 0
right = nP - 1
for left <= right {
mid = (left + right) / 2
if daftarPelanggan[mid].id == id {
if nama != "0" {
daftarPelanggan[mid].nama = nama
}
if alamat != "0" {
daftarPelanggan[mid].alamat = alamat
}
if nomorTelepon != "0" {
daftarPelanggan[mid].nomorTelepon = nomorTelepon
}
if alamatEmail != "0" {
daftarPelanggan[mid].alamatEmail = alamatEmail
}
fmt.Println("Data pelanggan berhasil diperbarui.")
return
} else if daftarPelanggan[mid].id < id {
left = mid + 1
} else {
right = mid - 1
}
}
fmt.Println("Pelanggan tidak ditemukan.")
}
func UpdateStatusPelanggan(id, status int) {
var left, right, mid int
left = 0
right = nP - 1
for left <= right {
mid = (left + right) / 2
if daftarPelanggan[mid].id == id {
daftarPelanggan[mid].status = status
fmt.Println("Status pelanggan berhasil diperbarui.")
return
} else if daftarPelanggan[mid].id < id {
left = mid + 1
} else {
right = mid - 1
}
}
fmt.Println("Pelanggan tidak ditemukan.")
}
func DeletePelanggan(id int) {
for i := 0; i < nP; i++ {
if daftarPelanggan[i].id == id {
for j := i; j < nP; j++ {
daftarPelanggan[j] = daftarPelanggan[j+1]
}
nP--
}
}
}
func SortingPelanggan(daftarPelanggan *tabPelanggan, prioritizedStatus int) {
for i := 1; i < nP; i++ {
key := daftarPelanggan[i]
j := i - 1
for j >= 0 && ((daftarPelanggan[j].status != prioritizedStatus && key.status == prioritizedStatus) ||
(daftarPelanggan[j].status != prioritizedStatus && key.status < daftarPelanggan[j].status)) {
daftarPelanggan[j+1] = daftarPelanggan[j]
j = j - 1
}
daftarPelanggan[j+1] = key
}
}