Code
Code
ttk import *
from tkinter import *
import os
def date():
from datetime import datetime
# current date time
now = datetime.now()
t = now.strftime("%H:%M")
s1 = now.strftime("%H:%M,%Y-%m-%d")
s1 = str(s1)
return s1 #returns Current Date And Time In String
base = Tk()
base.title("HOSTEL MANAGEMENT SYSTEM")
base.geometry(f'{1535}x{790}+{0}+{0}')
heading = Label(base, text="HOSTEL MANAGEMENT SYSTEM", font=("Arial 30 bold"),
bg="lightseagreen", fg="white", padx=490, pady=20)
heading.pack()
G = 1
def main():
global G
canvas = Canvas(base, bg='lightseagreen', height=675, width=310)
canvas.place(x=-1, y=100)
can = Canvas(base, bg='silver', height=675, width=1500)
can.place(x=320, y=105)
def add_stud():
canvas = Canvas(base, bg='silver', height=675, width=1210)
canvas.place(x=320, y=105)
first_name = Label(base, text="First Name", font=("Arial 15 bold"),
bg='silver', fg="black")
first_name.place(x=400, y=150)
fir_name_entry = Entry(base, width=15, font=("Arial 15"))
fir_name_entry.place(x=400, y=180)
fir_name_entry.focus()
c1 = IntVar()
a = Radiobutton(base, text="Male", bg="silver", fg="black", font=("Arial 15
bold"), variable=c1, value=1, command=selected)
b = Radiobutton(base, text="Female", bg="silver", fg="black", font=("Arial
15 bold"), variable=c1, value=2, command=selected)
c = Radiobutton(base, text="Other", bg="silver", fg="black", font=("Arial
15 bold"), variable=c1, value=0, command=selected)
a.place(x=490,y=580)
b.place(x=580,y=580)
c.place(x=680,y=580)
continu = Button(base, text="Continue", font=("Arial 15 bold"), bg="white",
command=available_roome)
continu.place(x=490, y=670)
global G
G = 1
def selected():
global G
if c1.get() == 1:
G = 1
if c1.get() == 2:
G = 2
if c1.get() == 0:
G = 0
c1 = IntVar()
a = Radiobutton(base, text="Male", bg="silver", fg="black", font=("Arial 15
bold"), variable=c1, value=1,
command=selected)
b = Radiobutton(base, text="Female", bg="silver", fg="black", font=("Arial
15 bold"), variable=c1, value=2,
command=selected)
c = Radiobutton(base, text="Other", bg="silver", fg="black", font=("Arial
15 bold"), variable=c1, value=0,
command=selected)
a.place(x=750, y=350)
b.place(x=840, y=350)
c.place(x=950, y=350)
def add():
file_name = ""
bed1 = bed2 = bed3 = None
r = (rm_n_entry.get())
if G==1:
bed1 = "B1"
bed2 = "B2"
bed3 = "B3"
file_name = "room_info_boys.txt"
f2 = open(file_name, "r")
if G==2:
bed1 = "G1"
bed2 = "G2"
bed3 = "G3"
file_name = "room_info_girls.txt"
f2 = open(file_name, "r")
if G==0:
bed1 = "O1"
bed2 = "O2"
bed3 = "O3"
file_name = "room_info_others.txt"
f2 = open(file_name, "r")
all_lines = f2.readlines()
count = 0
for i in all_lines:
temp = str(i)
one_line = temp.split(',')
if one_line[0] == r:
l = Label(base, text="Room Is Already Addded....!",
font=("Arial 25 bold"), bg='silver',
fg="black")
l.place(x=650, y=600)
f2.close()
count = 2
f2.close()
if count != 2:
q = "NOT"
f1 = open(file_name, "a")
f1.write(r + "," + bed1 + "," + bed2 + "," + bed3 + "," + q + "," +
"\n")
f1.close()
l = Label(base, text="ROOM Successfully Added....!", font=("Arial
25 bold"), bg='silver',
fg="black")
l.place(x=650, y=600)
def in_out_time():
canvas = Canvas(base, bg='silver', height=675, width=1210)
canvas.place(x=320, y=105)
a = "---------------Outtime---------------"
out_time_h1 = Label(base, text=a, font=("Arial 20 bold"), bg="dark slate
grey", fg="white", padx=20,
pady=10)
out_time_h1.place(x=320, y=115)
def save1():
Id = str(out_time_entry.get())
pur1 = str(purpose_entry.get())
t = date()
f1 = open("inouttime.txt", "a")
f1.write(Id + "," + pur1 + "," + t + "," + "OUTTIME" + "," + "REMARK" +
"\n")
f1.close()
done = Label(base, text="Successfull...!", font=("Arial 20 bold"),
bg="silver", fg="black")
done.place(x=1200, y=220)
a1 = "---------------Inttime---------------"
in_time_h1 = Label(base, text=a1, font=("Arial 20 bold"), bg="dark slate
grey", fg="white", padx=20,
pady=10)
in_time_h1.place(x=320, y=400)
def search_outtime():
s_id = str(in_time_entry.get())
fobj = open("inouttime.txt", "r")
fdata_ls = fobj.readlines()
count = 1
for oneline in fdata_ls:
if oneline.startswith(s_id + ",") and
oneline._contains_(",OUTTIME,"):
# write date
count = 2
y = oneline.split(",")
tv = StringVar()
tv.set(y[2] + " " + y[3])
ot = Entry(base, width=20, textvariable=tv, font=("Arial 20
bold"))
ot.place(x=680, y=550)
break
fobj.close()
if count == 1:
tv = StringVar()
tv.set("Invalid Id")
ot = Entry(base, width=20, textvariable=tv, font=("Arial 20 bold"))
ot.place(x=680, y=550)
def save2():
sel_opt = str(r_sel.get())
s_id = str(in_time_entry.get())
fobj = open("inouttime.txt", "r")
fdata_ls = fobj.readlines()
fobj.close()
rdate = date()
count = 1
fobj = open("inouttime.txt", "w")
for oneline in fdata_ls:
if oneline.startswith(s_id + ",") and
oneline._contains_(",OUTTIME,"):
# write date
new_oneline = oneline.replace(",OUTTIME,", "," + rdate + ",")
new_oneline2 = new_oneline.replace(",REMARK", "," + sel_opt +
",")
fobj.write(new_oneline2)
count = 2
else:
fobj.write(oneline)
if count == 2:
done = Label(base, text="Successful...!", font=("Arial 20 bold"),
bg="silver", fg="black")
done.place(x=700, y=720)
if count == 1:
done = Label(base, text="Please Give Correct Information",
font=("Arial 20 bold"), bg="silver",
fg="black")
done.place(x=600, y=720)
fobj.close()
r_sel = StringVar(base)
ls = ['Before Time', 'On Time', 'Late']
r_sel.set(ls[0])
remark = OptionMenu(base, r_sel, *ls)
remark.config(width=20, font=("Arial 15 bold"), fg="black")
remark.place(x=680, y=610)
def visitor():
canvas = Canvas(base, bg='silver', height=675, width=1210)
canvas.place(x=320, y=105)
def search():
def reset():
ot.destroy()
st_name_entry.delete(0, END)
st_name_entry.place(x=1250, y=200)
def add_visitor():
vn = str(v_name_entry.get())
vcon = str(v_contact_entry.get())
vr = str(v_reason_entry.get())
vadd = str(v_address_entry.get())
sn = str(st_name_entry.get())
d = str(date())
fp = open("visitor_info.txt", "a")
fp.write(sn + "," + vn + "," + vcon + "," + vr + "," + vadd + "," +
d + "," + "\n")
fp.close()
s = Label(base, text="Successfull...!", font=("Arial 20 bold"),
bg="dark slate grey", fg="white",
padx=100)
s.place(x=1100, y=700)
reset_btn = Button(base, text="Reset", font=("Arial 20 bold"),
command=reset)
reset_btn.place(x=1340, y=280)
s_n = str(st_name_entry.get())
fobj = open("student_info.txt", "r")
fdata_ls = fobj.readlines()
count = 1
for oneline in fdata_ls:
if oneline._contains_("," + s_n + ","):
# write date
count = 2
y = oneline.split(",")
tv = StringVar()
tv.set(y[11])
ot_name = Label(base, text="Room No.", font=("Arial 20 bold"),
bg="silver")
ot_name.place(x=1020, y=400)
ot = Entry(base, width=15, textvariable=tv, font=("Arial 20
bold"), justify=CENTER)
ot.place(x=1250, y=400)
add_btn = Button(base, text="Add Visitor", font=("Arial 20
bold"), command=add_visitor)
add_btn.place(x=1100, y=500)
break
fobj.close()
if count == 1:
tv = StringVar()
tv.set("Invalid Name")
ot = Entry(base, width=15, textvariable=tv, font=("Arial 20 bold"),
fg="red")
ot.place(x=1250, y=200)
def view_info():
canvas = Canvas(base, bg='silver', height=675, width=1215)
canvas.place(x=320, y=105)
def all_girl_info():
canvas = Canvas(base, bg='silver', height=675, width=810)
canvas.place(x=715, y=105)
h1 = Label(base, text="Information Of Students", font=("Arial 20
bold"), bg="dark slate grey", fg="white",
padx=270, pady=5)
h1.place(x=720, y=105)
students = []
f1 = open("student_info.txt", "r")
all_lines = f1.readlines()
for i in all_lines:
temp = str(i)
one_line = temp.split(',')
t = []
t.append(one_line[11])
t.append(one_line[1])
t.append(one_line[0])
t.append(one_line[6])
students.append(t)
x1co = 800
y1co = 200
x2co = 900
x3co = 1160
x4co = 1380
flag = 1
for i in students:
y = i
c = 0
while c <= 2:
label = Label(base, text=y[0], font=("Arial 15 bold"),
bg="silver", fg="black")
label.place(x=x1co, y=y1co)
label2 = Label(base, text=y[1], font=("Arial 15 bold"),
bg="silver", fg='black')
label2.place(x=x2co, y=y1co)
label3 = Label(base, text=y[2], font=('Arial 15 bold'),
bg="silver", fg='black')
label3.place(x=x3co, y=y1co)
label4 = Label(base, text=y[3], font=("Arial 15 bold"),
bg="silver", fg="black")
label4.place(x=x4co, y=y1co)
c = c + 1
y1co = y1co + 50
if flag > 8:
break
def room_wise():
canvas = Canvas(base, bg='silver', height=675, width=810)
canvas.place(x=715, y=105)
l1 = Label(base, text="Enter Room No.", font=("Arial 20 bold"),
bg="silver", fg="black")
l1.place(x=750, y=150)
l1_entry = Entry(base, width=10, font=("Arial 20 bold"))
l1_entry.place(x=1000, y=150)
l1_entry.focus()
def search():
r_no = str(l1_entry.get())
f1 = open("student_info.txt", "r")
all_lines = f1.readlines()
r_info = []
for i in all_lines:
temp = str(i)
one_line = temp.split(',')
if one_line[11] == r_no:
temp = []
temp.append(one_line[10])
temp.append(one_line[1])
temp.append(one_line[0])
temp.append(one_line[6])
r_info.append(temp)
h1 = Label(base, text="Information Of Students", font=("Arial 20
bold"), bg="dark slate grey",
fg="white", padx=270, pady=5)
h1.place(x=720, y=250)
for i in r_info:
y = i
c = 0
while c <= 2:
label = Label(base, text=y[0], font=("Arial 15 bold"),
bg="silver", fg="black")
label.place(x=x1co, y=y1co)
label2 = Label(base, text=y[1], font=("Arial 15 bold"),
bg="silver", fg='black')
label2.place(x=x2co, y=y1co)
label3 = Label(base, text=y[2], font=('Arial 15 bold'),
bg="silver", fg='black')
label3.place(x=x3co, y=y1co)
label4 = Label(base, text=y[3], font=("Arial 15 bold"),
bg="silver", fg="black")
label4.place(x=x4co, y=y1co)
c = c + 1
y1co = y1co + 100
if flag > 2:
break
def leave_application():
canvas = Canvas(base, bg='silver', height=675, width=1210)
canvas.place(x=320, y=105)
h1 = Label(base, text="Leave Application", bg="dark slate grey",
font=("Arial 20 bold"), fg="white",
padx=485, pady=10)
h1.place(x=320, y=105)
def leave_info():
i = str(id_entry.get())
n = str(n_entry.get())
r = str(r_entry.get())
m = str(m_entry.get())
reas = str(reason_entry.get())
rdate = str(date_entry.get())
current_date = date()
fopen = open("leave_applications.txt", "a")
fopen.write(i + "," + n + "," + r + "," + m + "," + reas + "," +
current_date + "," + rdate + "," + "\n")
fopen.close()
success = Label(base, text="Submit Successfully..!", font=("Arial 20
bold"), fg="green", bg="white")
success.place(x=700, y=700)
def login():
id = str(user_entry.get())
key = str(pass_entry.get())
if id == "Manager" and key == "@hms2024":
main()
else:
user_entry.focus()
user_entry.delete(0, END)
pass_entry.delete(0, END)
fail = Label(base, text="Wrong Username Or Password...!", font=("Arial 30
bold"), bg="silver", fg="red")
fail.place(x=450, y=540)
login_btn = Button(base, text="Login", font=("Arial 25 bold"), bg="lightseagreen",
fg="white", command=login)
login_btn.place(x=650, y=440)
base.mainloop()