Tugas ini dibuat untuk memenuhi Nilai Tugas Project Mata Kuliah Dasar
Pemrograman
Disusun oleh :
Laporan ini kami susun secara detail dengan bantuan dan dukungan,selaku dosen
mata kuliah Dasar Pemograman yaitu Ibu Monnika Nur Winnarto S.Kom. Oleh
karena itu kami sampaikan terima kasih atas waktu.
Dalam penyusunan laporan ini, kami menyadari bahwa hasil laporan praktikum ini
masih jauh dari kata sempurna. Sehingga kami selaku penyusun sangat
mengharapkan kritik dan saran. Akhir kata Semoga laporan ini dapat dapat di
terima.
Hormat Kami
Kelompok 3
ii
DAFTAR ISI
iii
DAFTAR SIMBOL
SIMBOL NAMA SIMBOL KETERANGAN
sebagai awal (berisi
‘Start’/’Mulai’) dan sebagai
TERMINAL akhir (berisi
‘End’/’Stop’/’Selesai’)
menghubungkan sambungan
dari bagian flowchart yang
OFF PAGE CONNECTOR terputus dimana sambungannya
berada pada halaman lain
berfungsi untuk
memutuskan arah/percabangan
yang diambil sesuai dengan
kondisi yang dipenuhi, yaitu
Decission Benar/Salah
iv
BAB I
PENDAHULUAN
1
BAB II
LANDASAN TEORI
2
2.2 Kelebihan dan Kekurangan Bahasa Python
Berbagai bahasa pemrograman pasti memiliki kelebihan dan
kekurangan. Hal tersebut tidak terlepas dari bahasa pemrograman python.
Berikut ini merupakan kelebihan dan kekurangan dari bahasa pemrograman
python.
Kelebihan Bahasa Python
1. Memiliki konsep desain bagus dan sederhana. Python itu memiliki konsep
desain yang bagus dan sederhana. Karena python hanya berfokus pada
kemudahan pengguna.
2. Menghemat waktu programmer. Dengan memakai Python itu proses
pengerjaannya relative singkat sehingga programmer dapat cepat
menghasilkan berbagai program baru.
3. Dukungan penuh dari berbagai sistem operasi. Python adalah bahasa
pemrograman yang bisa menjalankan sistem operasi dengan mulus seperti
Linux, Mac OS X, atau Windows.
4. Dukungan pustaka / software dari pihak ketiga. Python adalah bahasa
pemrograman yang mempunyai dukungan software mumpuni sehingga
memudahkan pengguna dalam mempelajari python.
5. Bisa diintegrasikan dengan aplikasi lain. Kode yang bisa dipakai dan
digunakan untuk coding dibanyak aplikasi.
Kekurangan Bahasa Python
1. Tidak ideal untuk memory intensive. Pemrograman python adalah bahasa
yang dikenal fleksibilitas tipe datanya sehingga dapat menghasilkan
konsumsi memori yang cukup tinggi dan tidak nyaman digunakan untuk
memory intensive task.
2. Kurang popular untuk mobile app development. Python tidak digunakan
khusus dalam pembuatan pemrograman mobile development dan jarang
development memakai bahasa python sebagai pembuatan mobile
development. 3. Batasan desain. Python diketik secara dinamis sehingga
memiliki banyak batasan desain sehingga bahasa python hanya digunakan
sebagai pengujian kesalahan yang muncul ketika aplikasi akhirnya
dijalankan.
4. Batasan kecepatan. Python memiliki kecepatan yang sangat lambat dari
pada pemrograman C++ (Setiawan & Vania, 2022).
3
2.3 Pengertian Flowchart
Flowchart adalah sebuah diagram yang menjelaskan alur proses dari
sebuah program. Dalam membangun sebuah program, flowchart berperan
penting untuk menerjemahkan proses berjalannya sebuah program agar
lebih mudah untuk dipahami. Flowchart atau bagan alur adalah diagram
yang menampilkan langkah-langkah dan keputusan untuk melakukan sebuah
proses dari suatu program. Setiap langkah digambarkan dalam bentuk
diagram dan dihubungkan dengan garis atau arah panah. Flowchart
digunakan untuk merepresentasikan maupun mendesain program. Oleh
karena itu flowchart harus bisa merepresentasikan komponen-komponen
dalam bahasa pemrograman. Baik flowchart maupun algoritma bisa dibuat
sebelum maupun setelah pembuatan program. Flowchart dan algoritma yang
dibuat sebelum membuat program digunakan untuk mempermudah pembuat
program untuk menentukan alur logika program, sedangkan yang dibuat
setelah pembuatan program digunakan untuk menjelaskan alur program
kepada orang lain. Flowchart berperan penting dalam memutuskan sebuah
langkah atau fungsionalitas dari sebuah proyek pembuatan program yang
melibatkan banyak orang sekaligus. Selain itu dengan menggunakan bagan
alur proses dari sebuah program akan lebih jelas, ringkas, dan mengurangi
kemungkinan untuk salah penafsiran. Penggunaan flowchart dalam dunia
pemrograman juga merupakan cara yang bagus untuk menghubungkan
antara kebutuhan teknis dan non-teknis. (Pratiwi & Pratomo, 2020).
4
BAB III
PERANCANGAN DAN IMPLEMENTASI
3.1 Rancangan Flowchart Aplikasi
5
6
7
8
3.2 Tampilan Aplikasi
1. Register
9
10
2. Login
11
3. Edit profile
12
3. Lupa password
13
3.3 SOURCE CODE
import time # Modul untuk berinteraksi dengan waktu
import sqlite3 # Modul untuk mengakses database SQLite
import datetime # Modul untuk bekerja dengan tanggal dan waktu
import hashlib # Modul untuk menghasilkan nilai hash
import random # Modul untuk menghasilkan bilangan acak
import getpass # Modul untuk menerima input password yang aman
import smtplib # Modul untuk mengirim email melalui protokol SMTP
from email.mime.text import MIMEText # Modul untuk membuat objek teks email dengan tipe
MIME(Multipurpose Internet Mail Extensions)
from email.mime.multipart import MIMEMultipart # Modul untuk membuat objek email dengan beberapa
bagian
jurusan_teknik =
["Sipil","Elektro","Kimia","Mesin","Industri","Informatika","Lingkungan","Perminyakan","Arsitektur","
Metalurgi"]#10
semesteran_teknik =
[4500000,5000000,4700000,5400000,5000000,4300000,5200000,6000000,5400000,4300000]
jurusan_soshum = ["Ilmu Komunikasi","Hubungan
Internasional","Sastra","Sejarah","Psikologi","Sosiologi","Ilmu
Politik","Geografi","Hukum","Filsafat"]#10
semesteran_soshum =
[4000000,4500000,4200000,4500000,46000000,3900000,4700000,5400000,4900000,3900000]
jurusan_desain = ["Grafis","Interior","Produk","Mode","Komunikasi Visual","Multimedia"]#6
semesteran_desain = [4000000,4500000,4200000,4500000,46000000,3900000]
t = time.localtime() # Mendapatkan waktu saat ini dalam bentuk struktur waktu (time.struct_time)
now = datetime.datetime.now() # Mendapatkan waktu saat ini dalam bentuk objek datetime
formatted_time = time.strftime("%A", t) # Mengformat waktu saat ini menjadi hari dalam format teks
lengkap
today = now.strftime("%d-%m-%Y")
current_time = now.strftime("%H:%M") # Mengformat waktu saat ini menjadi jam dan menit dalam
format 24 jam
hour = now.hour # Mendapatkan nilai jam saat ini dalam angka
if hour < 12:
time_of_day = "Pagi"
elif hour < 16:
time_of_day = "Siang"
elif hour < 18 :
time_of_day = "Sore"
else:
time_of_day = "Malam"
print(f"\nSelamat {time_of_day}")
print(today)
print(formatted_time,current_time)
def generate_otp(length):
14
digits = "1234567890"
otp = ""
for _ in range(length):
otp += random.choice(digits)
return otp
def send_otp(email):
global otp
otp = generate_otp(6) # Menghasilkan OTP dengan panjang 6 digit
# Kode untuk mengirim OTP ke pengguna, misalnya melalui email
print(f"OTP: telah dikirim ke {email}")
smtp_server = "smtp.gmail.com"
smtp_port = 587
smtp_name = 'universitypmb4@gmail.com'
smtp_password = 'lapsdilhuaizxfxj'
sender_email = "universitypmb4@gmail.co"
receiver_email = email
subject = "Kode OTP"
body = otp
msg = MIMEMultipart()
msg["From"] = sender_email
msg["To"] = receiver_email
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain"))
def register():
global username
db = open("database.txt",'r')
kondisi = False
while kondisi == False:
email = input("Email : ")
username = input("Create username : ")
d = []
f = []
for i in db:
a,b = i.split(", ")
b = b.strip()
d.append(a)
15
f.append(b)
data = dict(zip(d, f))
if username in d:
print("Username already exists")
register()
else:
password = getpass.getpass("Create password : ")
if len(password) < 6:
print("Password harus terdiri lebih dari 6 karakter. Silakan coba lagi.")
register()
else:
password1 = getpass.getpass("Confirm password : ")
if password != password1:
print("Konfirmasi password tidak sesuai. Silakan coba lagi.")
register()
else:
kondisi = True # Keluar dari loop jika password valid
# Verifikasi OTP
otp_verified = verify_otp(otp, entered_otp)
if otp_verified:
print("OTP valid. Autentikasi berhasil.")
pengambilan_data_diri()
else:
print("OTP tidak valid. Autentikasi gagal.")
register()
def login():
global username
db = open("database.txt", 'r')
username = input("Enter username : ")
password = getpass.getpass("Enter password : ")
if not len(username or password) < 1:
d = []
f = []
16
for i in db:
a, b = i.split(",")
b = b.strip()
c = a, b
d.append(a)
f.append(b)
data = dict(zip(d, f))
if username in data:
password_hash = hashlib.md5(password.encode()).hexdigest() # Hash the entered password for
comparison
if password_hash == data[username]:
print("Login Successful")
read_data_by_keyword(username)
else:
print("Incorrect password or username")
login()
else:
print("Username doesn't exist")
home()
else:
print("Enter a value")
login()
def lupa_password():
global username
db = open("database.txt", 'r')
username = input("Enter username : ")
if username in data:
keyword = username
connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()
cursor.execute("SELECT email FROM profil WHERE username LIKE ?", ('%{}
%'.format(keyword),))
rows = cursor.fetchall()
17
email = rows[0][0]
send_otp(email)
entered_otp = input("Masukkan OTP: ")
db.close()
# Verifikasi OTP
otp_verified = verify_otp(otp, entered_otp)
if otp_verified:
print("OTP valid. Autentikasi berhasil.")
print("Password minimal 6 karater")
new_password = getpass.getpass("Enter new password: ")
password_hash = hashlib.md5(new_password.encode()).hexdigest()
lines = []
found = False
with open("database.txt", 'r') as db:
for line in db:
line = line.strip()
a,b = line.split(",")
if a == username:
line = f"{a},{password_hash}"
found = True
lines.append(line)
if found:
with open("database.txt", 'w') as db:
db.write('\n'.join(lines))
print("Password successfully updated.")
home()
else:
print("Username not found.")
home()
else:
print("OTP tidak valid. Autentikasi gagal.")
lupa_password()
else:
print("Username tidak ada")
lupa_password()
def verifikasi_akun_to_update():
global username
connect = sqlite3.connect('Database_mahasiswa.db')
db = open("database.txt",'r')
print("="*60)
username = input("Username : ")
password = getpass.getpass("password : ")
keyword = username
cursor = connect.cursor()
cursor.execute("SELECT email FROM profil WHERE username LIKE ?", ('%{}%'.format(keyword),))
rows = cursor.fetchall()
18
if not len(username or password) < 1:
d = []
f = []
for i in db:
a, b = i.split(",")
b = b.strip()
c = a, b
d.append(a)
f.append(b)
data = dict(zip(d, f))
if username in data:
password_hash = hashlib.md5(password.encode()).hexdigest() # Hash the entered password for
comparison
if password_hash == data[username]:
print("Berhasil")
if len(rows) > 0:
email = rows[0][0]
print("Email:", email)
send_otp(email)
else:
print("Tidak ditemukan data yang sesuai dengan kata kunci username:", keyword)
else:
print("Username doesn't exist")
else:
print("Enter a value")
verifikasi_akun_to_update()
connect.close()
# Verifikasi OTP
otp_verified = verify_otp(otp, entered_otp)
if otp_verified:
print("OTP valid. Autentikasi berhasil.")
update_data_by_username(username)
else:
print("OTP tidak valid. Autentikasi gagal.")
verifikasi_akun_to_update()
def home():
19
global option
print("="*50)
option = input("1. Sign up\n2. Login\n3. Edit Profile\n4. Lupa password \n5. Keluar\nSilahkan Pilih :")
print("="*50)
def pengambilan_data_diri():
print("\nSilahkan lengkapi Data pribadi Anda")
global nama,usia,pendidikan_terakhir,ttl,alamat,tahun_lulus,no_handphone,email,data_diri
print("="*60)
data = False
while data == False:
nama = input("Nama : ")
usia = input("Usia : ")
pendidikan_terakhir = input("Pendidikan Terakhir : ")
ttl = input("Tempat Tanggal Lahir : ")
alamat = input("Alamat : ")
tahun_lulus = input("Tahun Lulus Pendidikan Terakhir : ")
no_handphone = input("No Handphone : ")
email = input("Alamat Email : ")
if not (nama and usia and pendidikan_terakhir and ttl and alamat and tahun_lulus and no_handphone
and email):
print("Mohon isi semua input.")
pengambilan_data_diri()
else:
print("="*60)
data_diri = [nama,usia,pendidikan_terakhir,ttl,alamat,tahun_lulus,no_handphone,email]
data = True
Penjurusan()
def Penjurusan():
global Program,pilihan_starata,gol,nim
Program =['Program Sarjana(S1)','Program Magister(S2)']
20
for nomor,strata in enumerate(Program,start=1):
print(f"{nomor}.{strata}")
print("="*60)
starata = (input('Silahkan pilih Program Studi Anda : '))
print("="*60)
try:
starata = int(starata) # Convert the input to an integer
if starata == 1:
nim = "01"
gol = Program[starata-1]
pilihan_starata = Program[starata-1]
print("Anda Memilih", pilihan_starata)
Jurusan_S1()
elif starata == 2:
nim = "02"
gol = Program[starata-1]
pilihan_starata = Program[starata-1]
print("Anda Memilih", pilihan_starata)
Jurusan_S2()
else:
raise ValueError("Pilihan Invalid")
except IndexError:
print("Error: Pilihan tidak valid.")
Penjurusan()
except ValueError:
print("Error: Pilihan tidak valid.")
Penjurusan()
def Jurusan_S1():
global penjuruan,list_jurusan,prodi,nim,nim_baru
list_jurusan =['Teknik','Soshum','Desain']
print("="*60)
for nomor,jurusan in enumerate(list_jurusan,start=1):
print(f"{nomor}.{jurusan}")
print("="*60)
penjuruan = (input("Pilih Jurusan Anda : "))
#teknik S1
try:
penjuruan = int(penjuruan) # Convert the input to an integer
if penjuruan == 1:
nim_baru = nim+"01"
prodi = list_jurusan[penjuruan-1]
print("Anda Memilih Jurusan ",list_jurusan[penjuruan-1])
21
teknik_S1()
elif penjuruan == 2:
nim_baru = nim+"02"
prodi = list_jurusan[penjuruan-1]
print("Anda Memilih Jurusan ",list_jurusan[penjuruan-1])
soshum_s1()
elif penjuruan == 3:
nim_baru = nim+"03"
prodi = list_jurusan[penjuruan-1]
print("Anda Memilih Jurusan ",list_jurusan[penjuruan-1])
desain_s1()
else:
print("Pilihan Invalid")
Jurusan_S1()
raise ValueError("Pilihan Invalid")
except ValueError:
print("Error: Indeks Program tidak valid.")
Jurusan_S1()
except IndexError:
print("Error: Indeks Program tidak valid.")
Jurusan_S1()
def Jurusan_S2():
global penjuruan,list_jurusan,prodi,nim,nim_baru
list_jurusan =['Teknik','Soshum','Desain']
print("="*60)
for nomor,jurusan in enumerate(list_jurusan,start=1):
print(f"{nomor}.{jurusan}")
print("="*60)
penjuruan = (input("Pilih Jurusan Anda : "))
try:
penjuruan = int(penjuruan) # Convert the input to an integer
if penjuruan == 1:
nim_baru = nim+"01"
prodi = list_jurusan[penjuruan-1]
print("Anda Memilih Jurusan ",list_jurusan[penjuruan-1])
teknik_s2()
elif penjuruan == 2:
nim_baru = nim+"02"
prodi = list_jurusan[penjuruan-1]
print("Anda Memilih Jurusan ",list_jurusan[penjuruan-1])
soshum_s2()
elif penjuruan == 3:
nim_baru = nim+"03"
prodi = list_jurusan[penjuruan-1]
print("Anda Memilih Jurusan ",list_jurusan[penjuruan-1])
desain_s2()
22
else:
print("Pilihan Invalid")
Jurusan_S2()
except ValueError:
print("Error: Indeks Program tidak valid.")
Jurusan_S2()
except IndexError:
print("Error: Indeks Program tidak valid.")
Jurusan_S2()
def teknik_S1():
global biaya_smt_s1_teknik,jurusan_pilihan_user,nim,biaya_smt
print("="*60)
print("Anda Memilih" ,pilihan_starata,"(S1)")
print("="*60)
try:
jurusan_pilihan_user = int(jurusan_pilihan_user)
if jurusan_pilihan_user >= 11:
teknik_S1()
else:
nim =nim_baru+str(jurusan_pilihan_user)
biaya_smt_s1_teknik = semesteran_teknik [jurusan_pilihan_user-1]
jurusan_pilihan_user = jurusan_teknik[jurusan_pilihan_user-1]
biaya_smt = biaya_smt_s1_teknik
periode_kuliah()
except ValueError:
print("Error: Indeks Program tidak valid.")
teknik_S1()
except IndexError:
print("Error: Indeks Program tidak valid.")
teknik_S1()
def teknik_s2():
global biaya_smt_s2_teknik,jurusan_pilihan_user,nim,biaya_smt
print("="*60)
print("Anda Memilih" ,pilihan_starata,"S2")
print("="*60)
for nomor,jurusan in enumerate(jurusan_teknik,start=1):
print(f" {nomor}.Teknik {jurusan}(S2)")
23
print("="*60)
jurusan_pilihan_user = (input("Silahkan Pilih Jurusan: "))
try:
jurusan_pilihan_user = int(jurusan_pilihan_user)
def soshum_s1():
global biaya_smt_s1_soshum,jurusan_pilihan_user,nim,biaya_smt
print("="*60)
print("Anda Memilih" ,pilihan_starata,"(S1)")
for nomor,jurusan in enumerate(jurusan_soshum,start=1):
print(f" {nomor}. {jurusan}(S1)")
print("="*60)
jurusan_pilihan_user = (input("Silahkan Pilih Jurusan: "))
try:
jurusan_pilihan_user = int(jurusan_pilihan_user)
if jurusan_pilihan_user >= 11:
soshum_s1()
else:
nim =nim_baru+str(jurusan_pilihan_user)
biaya_smt_s1_soshum = semesteran_teknik [jurusan_pilihan_user-1]
jurusan_pilihan_user = jurusan_soshum[jurusan_pilihan_user-1]
biaya_smt = biaya_smt_s1_soshum
periode_kuliah()
except ValueError:
print("Error: Indeks Program tidak valid.")
soshum_s1()
except IndexError:
print("Error: Indeks Program tidak valid.")
soshum_s1()
def soshum_s2():
24
print("="*60)
global biaya_smt_s2_soshum,jurusan_pilihan_user,nim,biaya_smt
print("Anda Memilih" ,pilihan_starata,"(S2)")
print("="*60)
for nomor,jurusan in enumerate(jurusan_soshum,start=1):
print(f" {nomor}.{jurusan}(S2)")
print("="*60)
jurusan_pilihan_user =(input("Silahkan Pilih Jurusan: "))
try:
jurusan_pilihan_user = int(jurusan_pilihan_user)
if jurusan_pilihan_user >= 11:
soshum_s2()
else:
nim =nim_baru+str(jurusan_pilihan_user)
biaya_smt_s2_soshum = semesteran_teknik [jurusan_pilihan_user-1]
jurusan_pilihan_user = jurusan_soshum[jurusan_pilihan_user-1]
biaya_smt = biaya_smt_s2_soshum
periode_kuliah()
except ValueError:
print("Error: Indeks Program tidak valid.")
soshum_s2()
except IndexError:
print("Error: Indeks Program tidak valid.")
soshum_s2()
def desain_s1():
global biaya_smt_s1_desain,jurusan_pilihan_user,nim,biaya_smt
print("="*60)
print("Anda Memilih" ,pilihan_starata,"(S1)")
print("="*60)
for nomor,jurusan in enumerate(jurusan_desain,start=1):
print(f" {nomor}. {jurusan}(S1)")
print("="*60)
jurusan_pilihan_user =(input("Silahkan Pilih Jurusan: "))
try:
jurusan_pilihan_user = int(jurusan_pilihan_user)
if jurusan_pilihan_user >= 7:
desain_s1()
else:
nim =nim+str(jurusan_pilihan_user)
biaya_smt_s1_desain = semesteran_desain [jurusan_pilihan_user-1]
jurusan_pilihan_user = jurusan_desain[jurusan_pilihan_user-1]
biaya_smt = biaya_smt_s1_desain
periode_kuliah()
except ValueError:
print("Error: Indeks Program tidak valid.")
desain_s1()
except IndexError:
25
print("Error: Indeks Program tidak valid.")
desain_s1()
def desain_s2():
print("="*60)
global biaya_smt_s2_desain,jurusan_pilihan_user,nim,biaya_smt
print("Anda Memilih" ,pilihan_starata,"(S2)")
print("="*60)
for nomor,jurusan in enumerate(jurusan_desain,start=1):
print(f" {nomor}.{jurusan}(S2)")
jurusan_pilihan_user = int(input("Silahkan Pilih Jurusan: "))
nim =nim_baru+str(jurusan_pilihan_user)
print("="*60)
try:
jurusan_pilihan_user = int(jurusan_pilihan_user)
if jurusan_pilihan_user >= 7:
desain_s2()
else:
nim =nim+str(jurusan_pilihan_user)
biaya_smt_s2_desain = semesteran_desain [jurusan_pilihan_user-1]
jurusan_pilihan_user = jurusan_desain[jurusan_pilihan_user-1]
biaya_smt = biaya_smt_s2_desain
periode_kuliah()
except ValueError:
print("Error: Indeks Program tidak valid.")
desain_s2()
except IndexError:
print("Error: Indeks Program tidak valid.")
desain_s2()
def periode_kuliah():
global nim_baru
print("="*60)
periode_dftr = ['Periode 1(Mulai Kuliah 13 Maret 2024)','Periode 2(Mulai Kuliah 18 September 2024)']
for nomor,periode in enumerate(periode_dftr,start=1):
print(f"{nomor}.{periode}")
periode_dftr = input("Pilih Periode Perkuliahan : ")
print("="*60)
# try:
periode_dftr = int(periode_dftr)
if periode_dftr == 1:
nim_baru =nim+str(periode_dftr)
periode_1()
elif periode_dftr ==2 :
nim_baru =nim+str(periode_dftr)
periode_2()
else:
26
periode_kuliah()
# except ValueError:
# print("Error: Indeks Program tidak valid.")
# periode_kuliah()
# except IndexError:
# print("Error: Indeks Program tidak valid.")
# periode_kuliah()
def periode_1():
global total,periode_pilihan_user,nim
gelombang_dftr = ["01 November 2023 - 05Desember 2023","06 Desember 2023 - 04 Januari 2024","05
Januari 2024 - 06 Febuari 2024",'07 Febuari 2024 - 06 maret 2023']
biaya_pendaftaran = [250000,300000,350000,400000]
sdp = [3000000,3500000,4000000,4500000]
for nomor,list_gelombang in enumerate(gelombang_dftr,start=1):
print("="*60)
print(f"{nomor}.{list_gelombang}\n Sumbangan dana pendidikan =",sdp[nomor-1])
periode_dftr =input("Silahkan Pilih Gelombang Pendaftaran : ")
try:
periode_dftr = int(periode_dftr)
if periode_dftr >= 5:
periode_1()
else:
nim =nim_baru+str(periode_dftr)
biaya_dftr = (biaya_pendaftaran[periode_dftr-1])
periode_pilihan_user = gelombang_dftr[periode_dftr-1]
sdp_user = (sdp[periode_dftr-1])
total = (sdp_user+biaya_dftr)
print("="*60)
print("Selesai")
send_mail()
except ValueError:
print("Error: Indeks Program tidak valid.")
periode_1()
except IndexError:
print("Error: Indeks Program tidak valid.")
periode_1()
def periode_2():
global total,periode_pilihan_user,nim,total
gelombang_dftr = ["01 November 2023 - 02 febuari 2024 ","03 Febuari 2024 - 05 April 2024 ","06
April 2024 - 05 Juni 2024" ,'06 Juni 2024 - 04 Juli 2024','05 Juli 2024 - 02 Agustus 2024','03 Agustus 2024
- 04 September 2024','05 September 2024 - 26 September 2024']
biaya_pendaftaran = [250000,300000,350000,400000,450000,500000,550000]
sdp =[2500000,3000000,3500000,4000000,4500000,5000000,5500000]
for nomor,list_gelombang in enumerate(gelombang_dftr,start=1):
print(f"{nomor}.{list_gelombang}\n Sumbangan dana pendidikan =",sdp[nomor-1])
print("="*60)
27
periode_dftr = input("Silahkan Pilih Gelombang Pendaftaran : ")
# try:
periode_dftr = int(periode_dftr)
if periode_dftr >= 8:
periode_2()
else:
nim =nim_baru+str(periode_dftr)
biaya_dftr = (biaya_pendaftaran[periode_dftr-1])
periode_pilihan_user = gelombang_dftr[periode_dftr-1]
sdp_user = (sdp[periode_dftr-1])
total = (sdp_user+biaya_dftr)
print("="*60)
print("Selesai")
total = sdp_user+biaya_dftr+biaya_smt
send_mail()
# except ValueError:
# print("Error: Indeks Program tidak valid(V).")
# periode_2()
# except IndexError:
# print("Error: Indeks Program tidak valid(I).")
# periode_2()
def send_mail():
global nim
smtp_server = "smtp.gmail.com"
smtp_port = 587
smtp_name = 'universitypmb4@gmail.com'
smtp_password = 'lapsdilhuaizxfxj'
sender_email = "universitypmb4@gmail.com"
receiver_email = email
subject = "Pendaftaran Mahasiswa Baru"
body = "Selamat datang di kampus kami mahasiswa baru\n" +\
"NIM :"+nim + "\n"+\
"Nama :"+nama + "\n" + \
"Jurusan :"+"("+prodi+")"+ str(jurusan_pilihan_user) + "\n" + \
"Periode daftar :"+periode_pilihan_user+"\n"+\
"Mendaftar pada Tanggal :"+today+"\n"+\
"Biaya Yang Harus di bayarkan :Rp."+str(total)+"\n"+\
"Silahkan Datang ke Kampus Untuk Pengambilan Almamater dan melakukan Pembayaran "
msg = MIMEMultipart()
msg["From"] = sender_email
28
msg["To"] = receiver_email
msg["Subject"] = subject
msg.attach(MIMEText(body, "plain"))
create_table()
def delete_data_by_name(username):
connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()
if row is None:
print("Data dengan username", username, "tidak ditemukan.")
else:
# Display existing data
print("Data sebelum dihapus:")
print("Nama:", row[0])
print("Usia:", row[1])
print("Alamat:", row[2])
print("No. Handphone:", row[3])
print("Email:", row[4])
print("Jurusan:", row[5])
print("Mahasiswa :",row[6])
print("Username:", row[7])
print("---------------------")
# Confirm deletion
confirmation = input("Apakah Anda yakin ingin menghapus data ini? (y/n): ")
if confirmation.lower() == 'y':
# Delete data from the table
cursor.execute("DELETE FROM profil WHERE username = ?", (username,))
connect.commit()
29
def update_data_by_username(username):
connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()
if row is None:
print("Data dengan nama", username, "tidak ditemukan.")
else:
# Display existing data
print("Data sebelum diupdate:")
print("TGL Registrasi :",row[0])
print("NIM :",row[1])
print("Nama :", row[2])
print("Usia :", row[3])
print("Alamat :", row[4])
print("No. Handphone :", row[5])
print("Email :", row[6])
print("Jurusan :", row[7])
print("Mahasiswa :",row[8])
print("Username :", row[9])
print("---------------------")
30
for nomor,jurusan in enumerate(jurusan_soshum,start=1):
print(f" {nomor}. {jurusan}")
jurusan_pilihan_user = int(input("Silahkan Pilih Jurusan: "))
if jurusan_pilihan_user >= 11:
verifikasi_akun_to_update()
else:
jurusan_baru = jurusan_soshum[jurusan_pilihan_user-1]
else:
for nomor,jurusan in enumerate(jurusan_desain,start=1):
print(f" {nomor}.{jurusan}")
jurusan_pilihan_user = int(input("Silahkan Pilih Jurusan: "))
if jurusan_pilihan_user >= 11:
verifikasi_akun_to_update()
else:
jurusan_baru = jurusan_desain[jurusan_pilihan_user-1]
username_baru = username
nama = row[2]
if row is None:
print("Data dengan nama", nama, "tidak ditemukan.")
else:
# Display existing data
print("Data sesudah diupdate:")
print("TGL Registrasi :",row[0])
print("NIM :",row[1])
print("Nama :", row[2])
print("Usia :", row[3])
print("Alamat :", row[4])
print("No. Handphone :", row[5])
print("Jurusan :", row[7])
31
print("Mahasiswa :",row[8])
print("Username :", row[9])
print("---------------------")
connect.close()
home()
def create_table():
global nim
connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()
today = now.strftime("%d-%m-%Y")
# nim = '0123124123'
# nama = 'tes 1'
# usia = '23'
# alamat = 'JL.Tes'
# no_handphone='123456789'
# email = "tes@gmail.com"
# jurusan_pilihan_user = jurusan_teknik[5]
# gol='program Sarjana S1'
# username='tes123'
def read_data_by_keyword(keyword):
connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()
32
# Fetch rows from the "profil" table based on the keyword
cursor.execute("SELECT * FROM profil WHERE username LIKE ? OR alamat LIKE ? OR jurusan
LIKE ?",
('%{}%'.format(keyword), '%{}%'.format(keyword), '%{}%'.format(keyword)))
rows = cursor.fetchall()
if len(rows) == 0:
print("Tidak ditemukan data yang sesuai dengan kata kunci:", keyword)
else:
# Process the fetched rows
for row in rows:
tanggal,nim,nama, usia, alamat, no_handphone, email, jurusan,gol, username = row
print("TGL Registrasi :",tanggal)
print("NIM :",nim)
print("Nama :", nama)
print("Usia :", usia)
print("Alamat :", alamat)
print("No. Handphone :", no_handphone)
print("Email :", email)
print("Jurusan :", jurusan)
print("Mahasiswa :", gol)
print("Username :", username)
print("Anda Sudah Terdaftar")
print("---------------------")
home()
connect.close()
home()
33
BAB IV
PENUTUP
4.1 Kesimpulan
Setelah melakukan analisis dan penelitian mendalam, kami
mengambil kesimpulan bahwa proyek PMB Python ini sangatlah penting
dan relevan dalam meningkatkan efisiensi dan efektivitas proses penerimaan
mahasiswa baru di institusi pendidikan kami.
Dari hasil penelitian kami, kami yakin bahwa penggunaan bahasa
pemrograman Python akan memberikan solusi yang handal dan efisien
dalam mengelola data penerimaan mahasiswa baru. Kami telah merancang
aplikasi yang dibuat memiliki fitur-fitur canggih, seperti pengolahan data,
pemrosesan otomatis, enkripsi data, serta pengiriman notifikasi secara real-
time.
Kami meyakini bahwa proyek PMB Python ini akan membawa
perubahan positif dan menguntungkan bagi institusi pendidikan kami. Kami
berharap proposal ini dapat diterima dan didukung, sehingga kami dapat
melanjutkan langkah-langkah selanjutnya dalam mewujudkan proyek ini.
Terima kasih atas perhatian dan dukungannya.
4.2 Saran
Menambahkan fitur seperti data personal, data akademik, upload
dokumen, data orang tua, data pekerjaan, dan fitur pemberitahuan jadwal
pengambilan jaket almamater, jadwal ormik dan semot, serta jadwal kuliah
sesuai periode yang diambil, fitur ujian saringan pada calon mahasiswa dan
pembayaran secara online, serta info berita agar calon mahasiswa bisa selalu
update seputar kampus.
34
DAFTAR PUSTAKA
Sembiring F. & Erfina A. (2020). BAHASA ULAR UNTUK PEMROGRAMAN PYTHON. Insan
Cendekia Mandiri. https://books.google.co.id/books?id=SLoREAAAQBAJ
Setiawan, G. A., & Vania, E. (2022). Praktek Pemrograman C++ dan Python. SCU Knowledge Media.
https://books.google.co.id/books?id=nzJsEAAAQBAJ
Pratiwi, E. L., & Pratomo, A. (2020). Konsep Dasar Algoritma Dan Pemrograman Dengan Bahasa
Java. Poliban Press. https://books.google.co.id/books?id=crsmEAAAQBAJ
35