-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathcreate.py
More file actions
88 lines (74 loc) · 3.1 KB
/
create.py
File metadata and controls
88 lines (74 loc) · 3.1 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
from Database import siswaDict
from Utilities import digitCheck, checkSystemOS, loopValidator
from read import showSiswaInDetails
import random
def isSiswaExist(msg): # Fungsi untuk validasi jika input data baru sudah ada
while True:
cekNama = input(msg).title()
if cekNama == '': # Validasi nama kosong
print('\nNama siswa tidak boleh kosong, silahkan coba lagi.')
continue
# Validasi data siswa baru sudah ada duplikatnya
for siswa in siswaDict:
if cekNama == siswa['nama']:
print(f'''
Data siswa bernama {cekNama} sudah tercatat di dashboard
Silahkan pilih Menu Edit Data jika ingin melakukan perubahan''')
return False
return cekNama # Else -> Nama yang baru dimasukkan = Valid
def addSiswaBaru(): # Fungsi untuk menambahkan data siswa baru
namaSiswaBaru = isSiswaExist('\nTambah Nama Siswa Baru\t: ')
if not namaSiswaBaru:
return None # Jika input baru tervalidasi tidak ada duplikat
while True: # Validasi kelas tidak boleh kosong
kelasSiswaBaru = input('Kelas\t\t\t: ').upper()
if kelasSiswaBaru == '':
print('\nKelas siswa tidak boleh kosong, silahkan coba lagi.\n')
continue
else:
break
# Validasi input user untuk siswa baru
nilaiBaruMTK = digitCheck('Nilai Matematika\t: ')
nilaiBaruIPA = digitCheck('Nilai IPA\t\t: ')
nilaiBaruIPS = digitCheck('Nilai IPS\t\t: ')
nilaiBaruIND = digitCheck('Nilai Bahasa Indonesia\t: ')
nilaiBaruENG = digitCheck('Nilai Bahasa Inggris\t: ')
# Validasi simpan data
isSave = input(f'\nSimpan data? [Ya/Tidak]: ')
if isSave.lower() == 'ya':
return namaSiswaBaru, kelasSiswaBaru, nilaiBaruMTK, \
nilaiBaruIPA, nilaiBaruIPS, nilaiBaruIND, nilaiBaruENG
else:
print('\nPenambahan data baru telah dibatalkan.')
return None
def nisSiswaBaru(nama): # Fungsi untuk generate Unique NIS untuk siswa baru
# NIS = 2 Angka Random + 2 Huruf Inisial
randomNIS = str(random.randrange(10,100,3))
inisial = nama[:5:2].upper()
nisBaru = randomNIS + inisial[:2]
return nisBaru
def showSiswaBaru():
# Tangkap user input dari fungsi addSiswaBaru()
hasilSiswaBaru = addSiswaBaru()
if hasilSiswaBaru == None or len(hasilSiswaBaru) < 7:
return
namaBaru, kelasBaru, nMTk, nIPA, nIPS, nIND, nENG = hasilSiswaBaru
nisBaru = nisSiswaBaru(namaBaru) # Append data siswa baru ke siswaDict
siswaDict.append({
'nis': nisBaru,
'nama': namaBaru,
'kelas': kelasBaru,
'nilai': {
'MTK': nMTk,
'IPA': nIPA,
'IPS': nIPS,
'B.IND': nIND,
'B.ING': nENG
}
})
print('\nSiswa baru berhasil ditambahkan!')
print(f'\nData Siswa Baru:\nNIS\t: {siswaDict[-1]['nis']}\nNama\t: {siswaDict[-1]['nama']}')
showSiswaInDetails()
def createConsole():
checkSystemOS()
loopValidator(showSiswaBaru, '\nLanjutkan menambah Data Siswa Baru? [Ya/Tidak]: ')