anasazhar

CONTACTSAPPSjson

Nov 3rd, 2020
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 6.07 KB | None | 0 0
  1. from os import system
  2. from datetime import datetime
  3. from json import load, dump
  4.  
  5. def load_data_apps():
  6.     global data_contact
  7.     with open(file_path, 'r') as document:
  8.         data_contact = load(document)
  9.  
  10. def save_data_apps():
  11.     global data_contact
  12.     with open(file_path, 'w') as document:
  13.         dump(data_contact, document)
  14.  
  15. def view_menu():
  16.     system("cls")
  17.     menu = """
  18.     APLIKASI KONTAK KITA BERSAMA
  19.     [A] - TAMBAH KONTAK BARU
  20.     [B] - TAMPILKAN SEMUA KONTAK
  21.     [C] - CARI KONTAK BERDASARKAN NAMA
  22.     [D] - PERBARUI KONTAK
  23.     [E] - HAPUS KONTAK
  24.     [I] - TENTANG APLIKASI
  25.     [Q] - KELUAR
  26.     """
  27.     print(menu)
  28.  
  29. def verify_ans(char):
  30.     char = char.upper()
  31.     if char == "Y":
  32.         return True
  33.     else:
  34.         return False
  35.  
  36. def print_header(msg):
  37.     system("cls")
  38.     print(msg)
  39.  
  40. def create_id_contact():
  41.     today = datetime.now()
  42.     year = today.year
  43.     month = today.month
  44.     hari = today.day
  45.     counter = len(data_contact)+1
  46.     id_contact = str("%4d%02d%02d-C%03d" % (year, month, hari, counter))
  47.     return id_contact
  48.  
  49. def print_data_contact(id_contact = None, all_fields = False, hobi = True):
  50.     if id_contact != None and all_fields == False:
  51.         print(f"""
  52.         -DATA DITEMUKAN-
  53.     ID \t: {id_contact}
  54.     Nama \t:{data_contact[id_contact]["nama"]}
  55.     Telp \t:{data_contact[id_contact]["telp"]}
  56.     Hobi \t:{data_contact[id_contact]["hobi"]}
  57.             """)
  58.     elif id_contact != None and hobi == False:
  59.         print(f"""
  60.         -DATA DITEMUKAN-
  61.     ID \t: {id_contact}
  62.     Nama \t:{data_contact[id_contact]["nama"]}
  63.     Telp \t:{data_contact[id_contact]["telp"]}
  64.             """)
  65.     elif all_fields == True:
  66.         for id_contact in data_contact:
  67.             nama = data_contact[id_contact]["nama"]
  68.             telp = data_contact[id_contact]["telp"]
  69.             hobi = data_contact[id_contact]["hobi"]
  70.             print(f"ID:{id_contact}\tNAMA:{nama}\tTELP:{telp}\tHOBI:{hobi}")
  71.  
  72. def add_to_contact():
  73.     #Menginpun informasi / data yg kita butuhkan
  74.     print_header("-MEMASUKKAN DAFTAR KONTAK BARU-")
  75.     nama = input("NAMA\t:") #key dict
  76.     telp = input("TELP\t:") #data dict di dalam dict
  77.     hobi = input("HOBI\t:") #data dict di dalam dict
  78.  
  79.     user_ans = input("Tekan Y untuk menyimpan(Y/N) : ")
  80.  
  81.     if verify_ans(user_ans): #refactoring function
  82.         id_contact = create_id_contact()
  83.         print("Menyiman Data ...")
  84.         #akses input ke data dict (dict di dalam dict)
  85.         data_contact[id_contact] = {
  86.             "nama" : nama,
  87.             "telp" : telp,
  88.             "hobi" : hobi
  89.         }
  90.         save_data_apps()
  91.         print("Data Tersimpan")
  92.     else:
  93.         print("Data batal Disimpan")
  94.     input("Tekan ENTER untuk kembali ke MENU")
  95.  
  96.  
  97. def print_contact():
  98.     print_header("-SEMUA KONTAK-")
  99.     if len(data_contact) == 0:
  100.         print("<BELUM ADA KONTAK YANG DISIMPAN>")
  101.     else:
  102.         print_data_contact(all_fields=True)
  103.     input("Tekan ENTER untuk kembali ke MENU")
  104.  
  105.  
  106. def searching_by_name(contact):
  107.     for id_contact in data_contact:
  108.         if data_contact[id_contact]["nama"] == contact:
  109.             print_data_contact(id_contact=id_contact)
  110.             return True
  111.     else:
  112.         print("-DATA TIDAK DITEMUKAN-")
  113.         return False
  114.  
  115. def get_id_contact_from_name(contact):
  116.     for id_contact in data_contact:
  117.         if data_contact[id_contact]["nama"] == contact:
  118.             return id_contact
  119.  
  120. def seraching_by_id(id_contact):
  121.     if id_contact in data_contact:
  122.         print_data_contact(id_contact=id_contact)
  123.         return True
  124.     else:
  125.         print("-DATA TIDAK DITEMUKAN-")
  126.         return False
  127.  
  128. def find_contact():
  129.     print_header("-CARI KONTAK-\n")
  130.     nama = input("Nama Kontak Yang Dicari : ")
  131.     result = searching_by_name(nama)
  132.     input("Tekan ENTER untuk kembali ke MENU")
  133.  
  134. def delete_contact():
  135.     print_header("-MENGHAPUS KONTAK-")
  136.     nama = input("Masukkan Nama Kontak yang akan Dihapus : ")
  137.     result = searching(nama)
  138.     if result:
  139.         respon = input(f"Yakin ingin menghapus {nama} (Y/N): ")
  140.         if verify_ans(respon):
  141.             del data_contact[nama]
  142.             save_data_apps()
  143.             print("DATA telah dihapus.")
  144.  
  145.         else:
  146.             print("DATA batal dihapus")
  147.     input("Tekan ENTER untuk kembali ke menu utama")
  148.  
  149. def update_nama(contact):
  150.     print(f"Nama Lama \t:{contact}")
  151.     new_nama = input("Nama Baru\t: ")
  152.     respon = input("Apa yakin ingin mengganti datanya (Y/N) : ")
  153.     if verify_ans(respon):
  154.         id_contact = get_id_contact_from_name(contact)
  155.         data_contact[id_contact]["nama"] = new_nama
  156.         #del data_contact[contact]
  157.         save_data_apps()
  158.         print("Data telah di-update")
  159.     else:
  160.         print("Data batal diperbarui")
  161.  
  162. def update_telp(contact):
  163.     id_contact = get_id_contact_from_name(contact)
  164.     print(f"Nama \t:{data_contact[id_contact]['nama']}")
  165.     print(f"Telp Lama\t:{data_contact[id_contact]['telp']}")
  166.     new_telp = input("Telp Baru\t: ")
  167.     respon = input("Apa yakin ingin mengganti datanya (Y/N) : ")
  168.     if verify_ans(respon):
  169.         data_contact[id_contact]['telp'] = new_telp
  170.         save_data_apps()
  171.         print("Data telah di-update")
  172.     else:
  173.         print("Data batal diperbarui")
  174.  
  175. def update_hobi(contact):
  176.     id_contact = get_id_contact_from_name(contact)
  177.     print(f"Nama \t:{data_contact[id_contact]['nama']}")
  178.     print(f"Hobi Lama\t:{data_contact[id_contact]['hobi']}")
  179.     new_hobi = input("Hobi Baru\t: ")
  180.     respon = input("Apa yakin ingin mengganti datanya (Y/N) : ")
  181.     if verify_ans(respon):
  182.         data_contact[id_contact]['hobi'] = new_hobi
  183.         save_data_apps()
  184.         print("Data telah di-update")
  185.     else:
  186.         print("Data batal diperbarui")
  187.  
  188. def update_contact():
  189.     print_header("PERBARUI DATA KONTAK\n")
  190.     nama = input("Nama Kontak yang ingin diperbarui : ")
  191.     result = searching_by_name(nama)
  192.     if result:
  193.         print("Data yang ingin diperbarui : ")
  194.         print("[1]. Nama , [2]. Telp , [3]. Hobi")
  195.         respon = input("Pilihan : ")
  196.         if respon == "1":
  197.             update_nama(nama)
  198.         elif respon == "2":
  199.             update_telp(nama)
  200.         elif respon == "3":
  201.             update_hobi(nama)
  202.     input("Tekan ENTER untuk kembali ke menu utama")
  203.  
  204.  
  205.  
  206. def check_input(char):
  207.     char = char.upper()
  208.     if char == "Q":
  209.         return True
  210.     elif char == "A":
  211.         add_to_contact()
  212.     elif char == "B":
  213.         print_contact()
  214.     elif char == "C":
  215.         find_contact()
  216.     elif char == "D":
  217.         update_contact()
  218.     elif char == "E":
  219.         delete_contact()
  220.  
  221. ###MAIN PROGRAM#####
  222.  
  223. file_path = 'storage/contacts_table.json'
  224. data_contact = None
  225. stop = False
  226.  
  227. load_data_apps()
  228.  
  229. while not stop:
  230.     view_menu()
  231.     user_input = input("Pilihan : ")
  232.     stop = check_input(user_input)
  233.  
  234.    
Advertisement
Add Comment
Please, Sign In to add comment