Advertisement
sabdas4869

tubes fix beres ini mah

Nov 27th, 2019
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.85 KB | None | 0 0
  1. package main
  2.  
  3. import (
  4. "fmt"
  5. "os"
  6. "os/exec"
  7. "runtime"
  8. )
  9.  
  10. const N = 99999
  11.  
  12. type data struct {
  13. id int
  14. sekul string
  15. kls int
  16. pel string
  17. smt int
  18. silb string
  19. mat string
  20. }
  21. type arr[N] data
  22.  
  23. var T arr
  24. var tot int
  25.  
  26. var clear map[string]func() //create a map for storing clear funcs
  27.  
  28. func init() {
  29. clear = make(map[string]func()) //Initialize it
  30. clear["linux"] = func() {
  31. cmd := exec.Command("clear") //Linux example, its tested
  32. cmd.Stdout = os.Stdout
  33. cmd.Run()
  34. }
  35. clear["windows"] = func() {
  36. cmd := exec.Command("cmd", "/c", "cls") //Windows example, its tested
  37. cmd.Stdout = os.Stdout
  38. cmd.Run()
  39. }
  40. }
  41.  
  42. func CallClear() {
  43. value, ok := clear[runtime.GOOS] //runtime.GOOS -> linux, windows, darwin etc.
  44. if ok { //if we defined a clear func for that platform:
  45. value() //we execute it
  46. } else { //unsupported platform
  47. panic("Your platform is unsupported! I can't clear terminal screen :(")
  48. }
  49. }
  50.  
  51. var key string
  52.  
  53. // PROGRAM UTAMA
  54. func main() {
  55. var c string
  56. var x int
  57.  
  58. CallClear()
  59. fmt.Println(".::Selamat Datang di aplikasi DARING 1::.")
  60. fmt.Println("==========================================\n")
  61. fmt.Print("Ketik 'yes' jika ingin lanjut : ")
  62. fmt.Scan(&c)
  63. if c == "yes" {
  64. CallClear()
  65. menuUtama(x)
  66. } else {
  67. fmt.Println()
  68. fmt.Println("==========================================\n")
  69. fmt.Print("Terima Kasih :)")
  70.  
  71. }
  72. }
  73. // End
  74. //MENU UTAMA
  75. func menuUtama(x int) {
  76.  
  77. fmt.Println(".::::::::::::::::::::::::::::::::::::::::::.")
  78. fmt.Print("(1. Insert) (2. View) (0. Exit)\n")
  79. fmt.Print("::::::::::::::::::::::::::::::::::::::::::::\nPilih : ")
  80. fmt.Scan(&x)
  81. CallClear()
  82.  
  83. if x == 1 {
  84. fmt.Print("insert")
  85. insert(&T,&tot)
  86. }else if x == 2 {
  87. menuView(x)
  88. }else if x==3{
  89. main()
  90. }
  91.  
  92. }
  93. //MENU VIEW
  94. func menuView(x int){
  95. fmt.Print(".::::::::::::::::::::::::::::::::::::::::::::::::::::::::.\n")
  96. fmt.Print("(1. Edit) (2. Delete) (3. Cari) (4. Sorting) (0. Exit)\n")
  97. fmt.Print("::::::::::::::::::::::::::::::::::::::::::::::::::::::::::\nPilih : ")
  98. fmt.Scan(&x)
  99. CallClear()
  100. if x == 1 {
  101. fmt.Print("EDIT")
  102. menuEdit(&T)
  103. menuUtama(x)
  104. } else if x == 2 {
  105. fmt.Print("DELETE")
  106. menuDelete(&T)
  107. menuUtama(x)
  108. } else if x == 3 {
  109. fmt.Print("CARI")
  110. menuCari(&T)
  111. menuUtama(x)
  112. } else if x == 4 {
  113. fmt.Print("SORTING")
  114. menuSort(&T)
  115. //}else if x==0{
  116. // menuUtama(x)
  117. } else if x == 0 {
  118. menuUtama(x)
  119.  
  120. }
  121.  
  122. }
  123. //MENU INSERT
  124. func insert(T *arr, tot *int) {
  125. var confirm string
  126. var i,x int
  127. var id int
  128. i=*tot
  129. id=*tot
  130.  
  131. fmt.Print("::::::::::::::::::::::::::::::::::::::::::::\n")
  132. fmt.Print("Apakah Ingin Input : ")
  133. fmt.Scan(&confirm)
  134. fmt.Print("::::::::::::::::::::::::::::::::::::::::::::\n")
  135. for (confirm != "no") && (i < N) {
  136. id++
  137.  
  138. T[i].id = id
  139. fmt.Print("Sekolah : ")
  140. fmt.Scan(&T[i].sekul)
  141. fmt.Print("Kelas : ")
  142. fmt.Scan(&T[i].kls)
  143. fmt.Print("Pelajaran : ")
  144. fmt.Scan(&T[i].pel)
  145. fmt.Print("Semester : ")
  146. fmt.Scan(&T[i].smt)
  147. fmt.Print("Silabus : ")
  148. fmt.Scan(&T[i].silb)
  149. fmt.Print("Materi : ")
  150. fmt.Scan(&T[i].mat)
  151. CallClear()
  152. i++
  153. *tot++
  154. fmt.Print("::::::::::::::::::::::::::::::::::::::::::::\n")
  155. fmt.Print("Apakah anda ingin input lagi : ")
  156. fmt.Scan(&confirm)
  157. fmt.Print("::::::::::::::::::::::::::::::::::::::::::::\n")
  158. }
  159. CallClear()
  160. menuUtama(x)
  161. }
  162.  
  163. func menuCari( T *arr) data {
  164. var x,sum, i, klas int
  165. var s string
  166.  
  167. i = 0
  168. fmt.Println(".::::::::::::::::::::::::::::::::::.")
  169. fmt.Print("(1. Pelajaran) (2. Kelas) (0. Exit)\n")
  170. fmt.Print("====================================\nCari Berdasarkan : ")
  171. fmt.Scan(&x)
  172. if (x == 1) {
  173. fmt.Print("Pelajaran : ")
  174. fmt.Scan(&s)
  175. } else if (x == 2) {
  176. fmt.Print("Kelas : ")
  177. fmt.Scan(&klas)
  178. } else if (x == 0) {
  179. CallClear()
  180. menuUtama(x)
  181. } else {
  182. menuCari(&*T)
  183. }
  184.  
  185. for (i < tot) {
  186. if (s == T[i].pel || klas == T[i].kls) {
  187. fmt.Println(".::::::::::::::::::::::::::::::::::::.")
  188. fmt.Println("ID : ",T[i].id)
  189. fmt.Println("Sekolah : ",T[i].sekul)
  190. fmt.Println("Kelas : ",T[i].kls)
  191. fmt.Println("Pelajaran : ",T[i].pel)
  192. fmt.Println("Semester : ",T[i].smt)
  193. fmt.Println("Silabus : ",T[i].silb)
  194. fmt.Println("Materi : ",T[i].mat)
  195. fmt.Println("::::::::::::::::::::::::::::::::::::::")
  196. sum++
  197. }
  198. i++
  199. }
  200.  
  201. if sum <= 0 {
  202. fmt.Println("Data Tidak Ditemukan")
  203. }
  204. fmt.Print("Ketik '0' jika ingin Exit : ")
  205. fmt.Scan(&x)
  206. if x == 0 {
  207. CallClear()
  208. menuUtama(x)
  209. } else {
  210. menuCari(&*T)
  211. }
  212. return(T[i])
  213. }
  214. //MENU DELETE
  215. func menuDelete(T *arr) {
  216. var x,i int
  217. var found bool
  218.  
  219. i = 0
  220. found = false
  221. fmt.Print("Input ID data yang ingin di hapus : ")
  222. fmt.Scan(&x)
  223.  
  224. for (i < tot) && (found == false) {
  225. if T[i].id == x {
  226. found = true
  227. T[i].sekul = ""
  228. T[i].kls = -1
  229. T[i].pel = ""
  230. T[i].smt = -1
  231. T[i].silb = ""
  232. T[i].mat = ""
  233. }
  234. i++
  235. }
  236. if found == true {
  237. fmt.Println("Data Berhasil Dihapus")
  238. }
  239.  
  240. fmt.Print("Ketik '0' jika ingin Exit : ")
  241. fmt.Scan(&x)
  242. if x == 0 {
  243. CallClear()
  244. menuUtama(x)
  245. } else {
  246. menuDelete(&*T)
  247. }
  248. }
  249. //MENU EDIT
  250. func menuEdit(T *arr){
  251. var x, i, y int
  252. var c string
  253. var found bool
  254.  
  255. i = 0
  256. found = false
  257. c = "no"
  258.  
  259. for c != "yes" {
  260. fmt.Print("Input ID data yang ingin di Edit : ")
  261. fmt.Scan(&x)
  262.  
  263. for (i < tot) && (found == false) {
  264.  
  265. if T[i].id == x {
  266. found = true
  267. fmt.Println(".::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::.")
  268. fmt.Print("(1. Sekolah) (2. Kelas) (3. Pelajaran) (4. Semester) (5. Silabus) (6. Materi) (0. Exit)\n")
  269. fmt.Print("Pilih yang akan di Edit : ")
  270. fmt.Scan(&x)
  271.  
  272. switch x {
  273. case 1:
  274. fmt.Print("Input Sekolah : ")
  275. fmt.Scan(&T[i].sekul)
  276. case 2:
  277. fmt.Print("Input Kelas : ")
  278. fmt.Scan(&T[i].kls)
  279. case 3:
  280. fmt.Print("Input Pelajaran : ")
  281. fmt.Scan(&T[i].pel)
  282. case 4:
  283. fmt.Print("Input Semester : ")
  284. fmt.Scan(&T[i].smt)
  285. case 5:
  286. fmt.Print("Input Silabus : ")
  287. fmt.Scan(&T[i].silb)
  288. case 6:
  289. fmt.Print("Input Materi : ")
  290. fmt.Scan(&T[i].mat)
  291. default :
  292. menuUtama(y)
  293. }
  294.  
  295. }
  296.  
  297. i++
  298. }
  299.  
  300. fmt.Println("Sudah Selesai Edit ")
  301. fmt.Scan(&c)
  302. }
  303.  
  304. if found == true {
  305. fmt.Println("Data Berhasil Diedit")
  306. }
  307.  
  308. fmt.Print("Ketik '0' jika ingin Exit : ")
  309. fmt.Scan(&x)
  310. if x == 0 {
  311. CallClear()
  312. menuUtama(y)
  313. } else {
  314. menuEdit(&*T)
  315. }
  316. }
  317. func menuSort(T *arr){
  318.  
  319. var a,b,x int
  320.  
  321.  
  322.  
  323. fmt.Println("Sorting \n1.Ascending \n2.Descending")
  324. fmt.Scan(&a)
  325. if a==1{
  326. fmt.Println("Berdasarkan : \n1.Sekolah \n2.Materi")
  327. fmt.Scan(&b)
  328. if b==1{
  329.  
  330. //SELECTION SORT ASCENDING
  331.  
  332. for i := 1; i < tot; i++ {
  333. j := i
  334. for j > 0 && T[j].sekul < T[j-1].sekul && T[j].id!=0 && T[j-1].id!=0{
  335. T[j], T[j-1] = T[j-1], T[j]
  336. j -= 1
  337. }
  338.  
  339. }
  340. hasilSort()
  341. }else if b==2{
  342.  
  343. //SELECTION SORT DESCENDING
  344.  
  345. for i := 1; i < tot; i++ {
  346. j := i
  347. for j > 0 && T[j].mat <T[j-1].mat && T[j].id!=0 && T[j-1].id!=0{
  348. T[j], T[j-1] = T[j-1], T[j]
  349. j -= 1
  350. }
  351.  
  352. }
  353. hasilSort()
  354. }
  355. }else if a==2{
  356. fmt.Println("Berdasarkan : \n1.Sekolah \n2.Materi")
  357. fmt.Scan(&b)
  358. if b==1{
  359.  
  360. //INSERTION SORT DESCENDING
  361.  
  362. for j := 0; j < tot; j++ {
  363. minPos := j
  364. for i := j + 1; i < tot; i++ {
  365. if T[i].sekul > T[minPos].sekul && T[i].id!=0 && T[minPos].id!=0{
  366. minPos = i
  367. }
  368. }
  369. T[j], T[minPos] = T[minPos], T[j]
  370. }
  371. hasilSort()
  372. }else if b==2{
  373.  
  374. for j := 0; j < tot; j++ {
  375. minPos := j
  376. for i := j + 1; i < tot; i++ {
  377. if T[i].mat > T[minPos].mat && T[i].id!=0 && T[minPos].id!=0 {
  378. minPos = i
  379. }
  380. }
  381. T[j], T[minPos] = T[minPos], T[j]
  382. }
  383. hasilSort()
  384. }
  385. }
  386. menuUtama(x)
  387. }
  388. func hasilSort(){
  389. for i:=0; i<tot; i++{
  390. fmt.Print(T[i], " ")
  391.  
  392. }
  393.  
  394. fmt.Print("\n")
  395. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement