anasazhar

contact_apps

Nov 4th, 2020
146
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.63 KB | None | 0 0
  1. from os import system
  2. from json import dump, load
  3. from datetime import datetime
  4.  
  5. def print_menu():
  6.     system("cls")
  7.     print("""
  8.     Penyimpanan Kontak Sederhana
  9.     [1]. Lihat Semua Kontak
  10.     [2]. Tambah Kontak Baru
  11.     [3]. Cari Kontak
  12.     [4]. Hapus Kontak
  13.     [5]. Update Kontak
  14.     [6]. Tentang Aplikasi
  15.     [Q]. Keluar
  16.         """)
  17.  
  18. def print_header(msg):
  19.     system("cls")
  20.     print(msg)
  21.  
  22. def not_empty(container):
  23.     if len(container) != 0:
  24.         return True
  25.     else:
  26.         return False
  27.  
  28. def verify_ans(char):
  29.     if char.upper() == "Y":
  30.         return True
  31.     else:
  32.         return False
  33.  
  34. def print_data(id_contact=None, telp=True, hobi=True, all_data=False):
  35.     if id_contact != None and all_data == False:
  36.         print(f"ID : {id_contact}")
  37.         print(f"NAMA : {contacts[id_contact]['nama']}")
  38.         print(f"TELP : {contacts[id_contact]['telp']}")
  39.         print(f"HOBI : {contacts[id_contact]['hobi']}")
  40.     elif hobi == False and all_data == False:
  41.         print(f"ID : {id_contact}")
  42.         print(f"NAMA : {contacts[id_contact]['nama']}")
  43.         print(f"TELP : {contacts[id_contact]['telp']}")
  44.     elif all_data == True:
  45.         for id_contact in contacts: # lists, string, dict
  46.             nama = contacts[id_contact]["nama"]
  47.             telp = contacts[id_contact]["telp"]
  48.             hobi = contacts[id_contact]["hobi"]
  49.             print(f"ID : {id_contact} - NAMA : {nama} - TELP : {telp} - HOBI : {hobi}")
  50.  
  51. def view_contacts():
  52.     print_header("DAFTAR KONTAK TERSIMPAN")
  53.     if not_empty(contacts):
  54.         print_data(all_data=True)
  55.     else:
  56.         print("MAAF BELUM ADA KONTAK TERSIMPAN")
  57.     input("Tekan ENTER untuk kembali ke MENU")
  58.  
  59. def create_id_contact(name, phone):
  60.     hari_ini = datetime.now()
  61.     tahun = hari_ini.year
  62.     bulan = hari_ini.month
  63.     hari = hari_ini.day
  64.  
  65.     counter = len(contacts) + 1
  66.     first = name[0].upper()
  67.     last_4 = phone[-4:]
  68.    
  69.     id_contact = ("%04d%02d%02d-C%03d%s%s" % (tahun, bulan, hari, counter, first, last_4))
  70.     return id_contact
  71.  
  72.  
  73.  
  74. def add_contact():
  75.     print_header("MENAMBAHKAN KONTAK BARU")
  76.     nama = input("NAMA \t: ")
  77.     telp = input("TELP \t: ")
  78.     hobi = input("HOBI \t: ")
  79.     respon = input(f"Apakah yakin ingin menyimpan kontak : {nama} ? (Y/N) ")
  80.     if verify_ans(respon):
  81.         id_contact = create_id_contact(name=nama, phone=telp)
  82.         contacts[id_contact] = {
  83.             "nama" : nama,
  84.             "telp" : telp,
  85.             "hobi" : hobi
  86.         }
  87.         saved = save_data_contacts()
  88.         if saved:
  89.             print("Data Kontak Tersimpan.")
  90.         else:
  91.             print("Kesalahan saat menyimpan")
  92.     else:
  93.         print("Data Batal Disimpan")
  94.     input("Tekan ENTER untuk kembali ke MENU")
  95.  
  96. def searching_by_name(contact):
  97.     for id_contact in contacts:
  98.         if contacts[id_contact]['nama'] == contact:
  99.             return id_contact
  100.     else:
  101.         return False
  102.  
  103. def find_contact():
  104.     print_header("MENCARI KONTAK")
  105.     nama = input("Nama Kontak yang Dicari : ")
  106.     exists = searching_by_name(nama)
  107.     if exists:
  108.         print("Data Ditemukan")
  109.         print_data(id_contact=exists)
  110.     else:
  111.         print("Data Tidak Ada")
  112.     input("Tekan ENTER untuk kembali ke MENU")
  113.  
  114. def delete_contact():
  115.     print_header("MENGHAPUS KONTAK")
  116.     nama = input("Nama Kontak yang akan Dihapus : ")
  117.     exists = searching_by_name(nama)
  118.     if exists:
  119.         print_data(id_contact=exists)
  120.         respon = input(f"Yakin ingin menghapus {nama} ? (Y/N) ")
  121.         if verify_ans(respon):
  122.             del contacts[exists]
  123.             saved = save_data_contacts()
  124.             if saved:
  125.                 print("Data Kontak Telah Dihapus")
  126.             else:
  127.                 print("Kesalahan saat menyimpan")
  128.         else:
  129.             print("Data Kontak Batal Dihapus")
  130.     else:
  131.         print("Data Tidak Ada")
  132.     input("Tekan ENTER untuk kembali ke MENU")
  133.  
  134. def update_contact_nama(id_contact):
  135.     print(f"Nama Lama : {contacts[id_contact]['nama']}")
  136.     new_name = input("Masukkan Nama baru : ")
  137.     respon = input("Apakah yakin data ingin diubah (Y/N) : ")
  138.     result = verify_ans(respon)
  139.     if result :
  140.         contacts[id_contact]['nama'] = new_name
  141.         print("Data Telah di simpan")
  142.         print_data(id_contact)
  143.     else:
  144.         print("Data Batal diubah")
  145.  
  146. def update_contact_telp(id_contact):
  147.     print(f"Nomor Telpon Lama : {contacts[id_contact]['telp']}")
  148.     new_telp = input("Masukkan Nomor Telepon Baru : ")
  149.     respon = input("Apakah yakin data ingin diubah (Y/N) : ")
  150.     result = verify_ans(respon)
  151.     if result :
  152.         contacts[id_contact]['telp'] = new_telp
  153.         print("Data Telah di simpan")
  154.         print_data(id_contact)
  155.     else:
  156.         print("Data Batal diubah")
  157.  
  158. def update_contact_hobi(contact):
  159.     pass
  160.  
  161. def update_contact():
  162.     print_header("MENGUPDATE INFO KONTAK")
  163.     nama = input("Nama Kontak yang akan di-update : ")
  164.     exists = searching_by_name(nama)
  165.     if exists:
  166.         print_data(exists)
  167.         print("EDIT FIELD [1] NAMA - [2] TELP - [3] HOBI")
  168.         respon = input("MASUKAN PILIHAN (1/2/3) : ")
  169.         if respon == "1":
  170.             update_contact_nama(exists)
  171.         elif respon == "2":
  172.             update_contact_telp(exists)
  173.         elif respon == "3":
  174.             update_contact_hobi(exists)
  175.         saved = save_data_contacts()
  176.         if saved:
  177.             print("Data Kontak Telah di-update.")
  178.         else:
  179.             print("Kesalahan saat menyimpan")
  180.  
  181.     else:
  182.         print("Data Tidak Ada")
  183.     input("Tekan ENTER untuk kembali ke MENU")
  184.  
  185.  
  186. def check_user_input(char):
  187.     char = char.upper()
  188.     if char == "Q":
  189.         print("BYE!!!")
  190.         return True
  191.     elif char == "1":
  192.         view_contacts()
  193.     elif char == "2":
  194.         add_contact()
  195.     elif char == "3":
  196.         find_contact()
  197.     elif char == "4":
  198.         delete_contact()
  199.     elif char == "5":
  200.         update_contact()
  201.     elif char == "6":
  202.         pass
  203.  
  204. def load_data_contacts():
  205.     with open(file_path, 'r') as file:
  206.         data = load(file)
  207.     return data
  208.  
  209. def save_data_contacts():
  210.     with open(file_path, 'w') as file:
  211.         dump(contacts, file)
  212.     return True
  213.  
  214.  
  215. #flag/sign/tanda menyimpan sebuah kondisi
  216. stop = False
  217. file_path = "filetxt/contacts.json"
  218. contacts = load_data_contacts()
  219. while not stop:
  220.     print_menu()
  221.     user_input = input("Pilihan : ")
  222.     stop = check_user_input(user_input)
  223.  
  224.  
Advertisement
Add Comment
Please, Sign In to add comment