Anda di halaman 1dari 39

PROGRAM PENERIMAAN MAHASISWA

Tugas ini dibuat untuk memenuhi Nilai Tugas Project Mata Kuliah Dasar
Pemrograman
Disusun oleh :

Adrian Antolin (17225056)


Andi Basir Ali Rettob (17225122)
Ardhya Indra Rajasa (17225114)
Azis Hermansyah (17225108)
Mochammad Faishal Suryadirja (17225092)
Rendy Roviardi Permana (17225060)

PROGRAM STUDI TEKNOLOGI KOMPUTER FAKULTAS


TEKNOLOGI INFORMASI UNIVERSITAS BINA SARANA
INFORMATIKA 2023
KATA PENGANTAR
Puji syukur kami panjatkan kehadirat Tuhan Yang Maha Esa yang telah
menganugerahkan banyak nikmat sehingga kami dapat membuat program
penerimaan mahasiswa. Laporan ini berisi tentang pendaftaran mahasiswa di
Universitas Bina Sarana Informatika.

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

KATA PENGANTAR ..................................................................................................................... ii


DAFTAR ISI................................................................................................................................. iii
DAFTAR SIMBOL ........................................................................................................................... iv
BAB I PENDAHULUAN.................................................................................................................. 1
1.1 Latar Belakang Masalah.................................................................................................. 1
1.2 Maksud dan Tujuan......................................................................................................... 1
1.3 Ruang Lingkup................................................................................................................ 1
BAB II LANDASAN TEORI............................................................................................................ 2
2.1 Pengertian Bahasa Pemrograman Python ...................................................................... 2
2.2 Kelebihan dan Kekurangan Bahasa Python.................................................................... 3
2.3 Pengertian Flowchart ..................................................................................................... 4
BAB III PERANCANGAN DAN IMPLEMENTASI....................................................................... 5
3.1 Rancangan Flowchart Aplikasi....................................................................................... 5
3.2 Tampilan Aplikasi........................................................................................................... 9
3.3 Source Code ................................................................................................................... 14
BAB IV PENUTUP ............................................................................................................. 34
4.1 Kesimpulan .................................................................................................................... 34
4.2 Saran .............................................................................................................................. 35
DAFTAR PUSTAKA ........................................................................................................................ 36

iii
DAFTAR SIMBOL
SIMBOL NAMA SIMBOL KETERANGAN
sebagai awal (berisi
‘Start’/’Mulai’) dan sebagai
TERMINAL akhir (berisi
‘End’/’Stop’/’Selesai’)

membaca masukan (input) atau


menampilkan keluaran (output)
INPUT/OUTPUT

mengolah data melalui operasi


aritmatika dan logika
PROSES/PROCESSING

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

Flowline/Arus Data bagian arah instruksi yang


dijalankan

digunakan untuk pemberian


Preparation harga awal.

iv
BAB I
PENDAHULUAN

1.1 Latar Belakang Masalah


Penerimaan mahasiswa baru merupakan suatu tahapan di mana
masyarakat umum melakukan registrasi di kampus tersebut sehingga dapat
menjadi salah satu dari mahasiswa kampus tersebut.
Pemilihan program studi (prodi) merupakan bagian penting karena
dalam program studi tersebut kegiatan perkuliahan akan dijalankan.
Sebelum calon mahasiswa memilih program studi sudah menjadi kewajiban
untuk mempertimbangkan dengan baik, supaya kesiapan dan kemampuan
yang akan diterapkan pada dunia kerja sesuai atau berhubungan dengan
program studi yang dipilih .
1.2 Maksud dan Tujuan
Maksud
Membuat program aplikasi berbasis dasar pemograman menggunakan
program python.
Tujuan
Tujuan dari pembuatan aplikasi ini adalah untuk Memberikan kesempatan
kepada lulusan SMA/SMK/MA yang ingin mendaftar di Universitas BSI
dan memudahkan proses pendaftaran mahasiswa yang ingin mendaftar
1.3 Ruang Lingkup
Program ini meliputi kegiatan penerimaan mahasiswa baru untuk Tahun
2023 meliputi kegiatan pendaftaran peserta, Registrasi calon mahasiswa.
Semua itu di Universitas menjadi satu system yaitu “System One Day
Service”. Pada tahapan akhir adalah Input Data ke sistem dan mengirim E-
mail konfirmasi kepada user, dan mahasiswa mendapatkan NIM (Nomor
Induk Mahasiswa).

1
BAB II
LANDASAN TEORI

2.1 Pengertian Bahasa Pemrograman Python


Python adalah bahasa pemrograman tujuan umum yang ditafsirkan,
tingkat tinggi. Dibuat oleh Guido van Rossum dan pertama kali dirilis pada
tahun 1991, filosofi desain Python menekankan keterbacaan kode dengan
penggunaan spasi putih yang signifikan. Konstruksi bahasanya dan
pendekatan berorientasi objek bertujuan untuk membantu pemrogram
menulis kode yang jelas dan logis untuk proyek skala kecil dan besar.
Menurut Wikipedia, Bahasa Pemrograman Python adalah interpreted
high-level programming language for general-purpose programming.
Terjemahan bebasnya: Python adalah bahasa pemrograman tingkat tinggi
(high-level programming language), berjalan dengan sistem interpreted, dan
bisa dipakai untuk berbagai jenis tujuan (general-purpose).
Sebutan bahasa pemrograman tingkat tinggi merujuk level kedekatan
sebuah bahasa pemrograman ke kode-kode listrik yang dipakai komputer.
Sebuah bahasa pemrograman disebut sebagai bahasa pemrograman tingkat
tinggi (high-level programming language) karena perintah atau kode
program yang dipakai sudah mirip dengan bahasa manusia.
Hampir semua bahasa pemrograman modern masuk ke dalam bahasa
tingkat tinggi, diantaranya Pascal, C++, Java, PHP, JavaScript dan Python.
Bahasa C sering disebut bahasa pemrograman tingkat menengah karena
sebagian perintahnya bisa langsung mengakses hardware komputer, namun
karena hal ini juga bahasa C sedikit lebih rumit untuk dipelajari.
Python menggunakan metode pemrosesan interpreted, kode program
akan diproses baris per baris langsung dari kode program (tidak butuh
proses compile). Ini mirip seperti bahasa script seperti PHP dan JavaScript.
(Sembiring & Erfina, 2020).

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"))

# Connect to the SMTP server and send the message


with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_name, smtp_password)
server.sendmail(sender_email, receiver_email, msg.as_string())

def verify_otp(otp, entered_otp):


return otp == entered_otp

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

password_hash = hashlib.md5(password.encode()).hexdigest() # Meng-hash password


menggunakan MD5
db = open("database.txt",'a')
db.write(username + ", " + password_hash + "\n")
print("Success!")
db.close()
send_otp(email)

# Meminta pengguna untuk memasukkan OTP


entered_otp = input("Masukkan OTP: ")

# 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 not len(username) < 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:
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()

# Meminta pengguna untuk memasukkan OTP


entered_otp = input("Masukkan OTP: ")

# 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)

if option == '1' or option == 'signup':


register()
elif option == '2' or option == "login":
login()
elif option == "3" or option == 'edit profil':
verifikasi_akun_to_update()
elif option == "4" or option == "ganti password":
lupa_password()
elif option == '5' or option == 'keluar':
print("Program Selesai")
else:
print("Choose a valid option")
home()

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)

for nomor,jurusan in enumerate(jurusan_teknik,start=1):


print(f" {nomor}.Teknik {jurusan}(S1)")
print("="*60)
jurusan_pilihan_user = (input("Silahkan Pilih Jurusan: "))

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)

if jurusan_pilihan_user >= 11:


print("Error: Indeks Program tidak valid.")
teknik_s2()
else:
nim =nim_baru+str(jurusan_pilihan_user)
biaya_smt_s2_teknik = semesteran_teknik [jurusan_pilihan_user-1]
jurusan_pilihan_user = jurusan_teknik[jurusan_pilihan_user-1]
biaya_smt = biaya_smt_s2_teknik
periode_kuliah()
except ValueError:
print("Error: Indeks Program tidak valid.")
teknik_s2()
except IndexError:
print("Error: Indeks Program tidak valid.")
teknik_s2()

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"))

# Connect to the SMTP server and send the message


with smtplib.SMTP(smtp_server, smtp_port) as server:
server.starttls()
server.login(smtp_name, smtp_password)
server.sendmail(sender_email, receiver_email, msg.as_string())

create_table()

def delete_data_by_name(username):
connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()

# Fetch existing data based on the name


cursor.execute("SELECT * FROM profil WHERE username = ?", (username,))
row = cursor.fetchone()

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()

print("Data berhasil dihapus.")


else:
print("Penghapusan data dibatalkan.")
connect.commit()
connect.close()

29
def update_data_by_username(username):
connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()

# Fetch existing data based on the name


cursor.execute("SELECT * FROM profil WHERE username = ?", (username,))
row = cursor.fetchone()

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("---------------------")

# Prompt user for updated data


usia_baru = input("Masukkan usia baru: ")
alamat_baru = input("Masukkan alamat baru: ")
no_handphone_baru = input("Masukkan no. handphone baru: ")
email_baru = input("Masukkan email baru: ")
list_jurusan =['Teknik','Soshum','Desain']
for nomor,jurusan in enumerate(list_jurusan,start=1):
print(f"{nomor}.{jurusan}")
penjuruan = int(input("Pilih Jurusan Anda : "))

if penjuruan == 1 or penjuruan == 'teknik':


for nomor,jurusan in enumerate(jurusan_teknik,start=1):
print(f" {nomor}.Teknik {jurusan}")
jurusan_pilihan_user = int(input("Silahkan Pilih Jurusan: "))

if jurusan_pilihan_user >= 11:


verifikasi_akun_to_update()
else:
jurusan_baru = jurusan_teknik[jurusan_pilihan_user-1]

elif penjuruan == 2 or penjuruan == 'soshum':

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]

# Update data in the table


cursor.execute("UPDATE profil SET usia=?, alamat=?, no_handphone=?, email=?, jurusan=?,
username=? WHERE nama=?",
(usia_baru, alamat_baru, no_handphone_baru, email_baru, jurusan_baru,
username_baru,nama))
connect.commit()
connect.close()

print("Data berhasil diupdate.")


connect = sqlite3.connect('Database_mahasiswa.db')
cursor = connect.cursor()
cursor.execute("SELECT * FROM profil WHERE username = ?", (username,))
row = cursor.fetchone()

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'

data_diri = [today,int(nim),nama, usia, alamat, no_handphone, email, str(jurusan_pilihan_user),gol,


username]

create_table = '''CREATE TABLE IF NOT EXISTS profil (


tanggal TEXT NOT NULL,
nim INTEGER NOT NULL,
nama TEXT NOT NULL,
usia INTEGER NOT NULL,
alamat TEXT NOT NULL,
no_handphone TEXT NOT NULL,
email TEXT NOT NULL,
jurusan TEXT NOT NULL,
gol TEXT NOT NULL,
username TEXT NOT NULL
)'''
cursor.execute(create_table)
cursor.execute("INSERT INTO profil VALUES(?,?,?,?,?,?,?,?,?,?);",data_diri)
connect.commit()
connect.close()
print("Pendaftaran Berhasil Silahkan Cek E-mail anda")

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

Saragih, R. R. (2016). Pemrograman dan bahasa Pemrograman. STMIK-STIE Mikroskil,


1-91. https://www.researchgate.net/profile/Richy-Saragih/publication/329885312

35

Anda mungkin juga menyukai