Staff Management System PDF
Staff Management System PDF
By
5TH SEM
DR.PRAKASH NAIK
Department Of Computer Science
SMT. SUSHILADEVI DESHMUKH COLLEGE OF ARTS,SCIENCE &
COMMERCE
MAHARASHTRA
YEAR 2024-25
1
CANDIDATE’S DECLARATION
I hereby declare that the project work being presented in this report
entitled “Staff Management System” submitted in the department of Computer
Science, Faculty of Technology, Smt.Sushiladevi Deshmukh College of Arts,
Science & Commerce work is the authentic carried out by me under the guidance
of
Dr.Prakash Naik, Department of Bachelor of Science Computer Science.
2
SMT. SUSHILADEVI DESHMUKH COLLEGE OF ARTS,
Date:
CERTIFICATE
College Seal
3
ACKNOWLEDGEMENT
It gives us great pleasure in expressing our deep sense of gratitude for having
provided us with great infrastructure and well-furnished labs.
DR. PRAKASH NAIK, for having constantly guided and the development of the
project.
4
TABLE OF CONTENTS
SR NO. CONTENTS PAGE NO.
1 Chapter-1
1.1 Introduction 7
1.2 Objective 7
1.4 Benefits 8
1.6 Applicability 10
2 Chapter-2
2.3 Advantages 16
2.4 Disadvantages 17
3 Chapter-3
23
4 Modules 24-25
5 Gantt Chart 26
5
6 Chapter-4
4.1 Frontend 27
4.2 Backend 28
7 Result 52-53
8 Testing 54
9 Chapter-5
5.3 References 60
6
Chapter-1
Introduction
Objective
Due too many data and paperwork that needed to record the employee data
could consume a lot of space in the filling cabinet. The retrieval of data can time
consuming because it must be searched from the filling cabinet.
This will cause waste of resource in term of time and money. In addition, it
would also cause inconvenience and ineffectiveness in daily work. Plus, the
manger will face difficulties when need to update employee working schedule,
report and leave request
7
Technologies Used
1. Python (Tkinter): Tkinter is used for building the GUI, allowing users to
interact with the system through forms and tables.
2. MySQL: MySQL is employed as the relational database management
system (RDBMS) to store staff information.
3. MySQL Workbench: This is used for creating the database and managing
the schema.
Benefits
• By using this system we can easily maintain all the records about every
employee.
8
Target Industries:
• Corporate Offices
• Healthcare Organizations
• Retail and Hospitality
• Educational Institutions
• Non-Profits and NGOs
9
Applicability
10
Chapter-2
Product requirements
12
• Integration: The system must support integration with existing payroll
systems, HR tools, and time-tracking hardware like biometric or RFID
systems.
• Cloud-Based or On-Premises: The system should offer the flexibility to
be hosted either in the cloud or on-premises, depending on the
organization’s preferences and infrastructure.
• APIs for Third-Party Tools: To allow seamless communication between
different business tools (like payroll or task management), the system
should provide APIs for integration.
• Customization: The system should offer customization options to tailor
workflows, reports, and features to the specific needs of the organization.
• Backup and Recovery: The system should have built-in mechanisms for
regular data backups and easy recovery in case of failure or data
corruption.
13
Features
14
7. Employee Self-Service Portal
• Empowers employees to access and manage their own information, such
as viewing schedules, requesting time off, updating personal details, and
checking payslips, reducing the administrative burden on HR staff.
8. Reporting and Analytics
• Provides detailed reports on various metrics such as attendance, employee
turnover, performance, and labor costs. Data analytics enable managers to
make informed decisions and forecast staffing needs.
9. Compliance and Regulatory Features
• Helps ensure compliance with labor laws, tax regulations, and health and
safety standards. It tracks employee work hours, overtime, and leaves,
helping organizations adhere to legal requirements and avoid penalties.
10. Mobile Accessibility
• Many modern staff management systems are mobile-friendly, allowing
employees and managers to access the system from any device,
facilitating real-time updates and greater flexibility.
11. Task and Project Assignment
• Some systems also allow for the assignment and tracking of specific tasks
or projects, enabling better workforce allocation and productivity
tracking.
•
These features make staff management systems highly valuable for streamlining
operations, improving employee satisfaction, and ensuring compliance with
legal regulations.
15
Advantages
16
Disadvantages
While a staff management system offers many benefits, it also has some
potential disadvantages:
While these disadvantages are notable, they can often be mitigated with proper
planning, training, and investment in reliable software.
17
Problem statement
18
Chapter-3
Flow Chart
19
Case diagram
20
ER Diagram
21
User Case Diagram
22
Spiral Model
23
Modules
A Staff Management System typically includes several key modules to help with
the efficient management of employees. Here are the common modules you might
consider for your system:
1. Employee Information Management
• Stores personal and professional details of employees (e.g., name, contact
info, job role, department).
• Provides profile view and edit options.
2. Attendance & Time Tracking
• Tracks employee attendance, leaves, and work hours.
• Offers integration with biometric systems for attendance.
• Manages holidays, shift timings, and overtime.
3. Leave Management
• Allows employees to request and track leave.
• Automates leave approval workflow.
• Provides leave balance and accrual tracking.
4. Payroll Management
• Manages salary computation, including deductions, taxes, bonuses, and
benefits.
• Generates pay slips and tax forms.
• Integrates with time tracking and attendance for automated salary
calculation.
5. Recruitment & Onboarding
• Tracks job openings, applications, and recruitment workflows.
• Manages onboarding processes, from documentation to orientation
schedules.
• Stores applicant data for future reference.
6. Performance Management
24
• Tracks employee performance, appraisals, and feedback.
• Supports goal setting, evaluations, and performance reviews.
• Provides reports on KPIs, targets, and productivity.
7. Training & Development
• Manages training schedules, modules, and certifications.
• Tracks employee participation and progress in training programs.
• Assesses training needs and outcomes.
8. Benefits and Compensation Management
• Manages employee benefits like insurance, retirement plans, and bonuses.
• Tracks eligibility, enrollment, and usage of benefits.
9. Document Management
• Stores employee documents such as contracts, NDAs, and performance
reports.
• Provides secure access to sensitive information.
10. Compliance & Legal Management
• Tracks labor laws, regulatory requirements, and compliance certifications.
• Automates the generation of compliance reports.
• Manages audits and risk assessments.
11. Self-Service Portal
• Enables employees to view personal details, attendance, payroll, and apply
for leaves.
• Facilitates access to forms, policies, and other resources.
12. Analytics and Reporting
• Generates reports on employee data, attendance, performance, and payroll.
• Offers dashboards and insights to support decision-making.
25
Gantt Chart
26
Chapter-4
Frontend
The frontend of the Staff Management System is built using Tkinter, a standard
GUI toolkit for Python. This provides a simple and intuitive interface for users
to interact with the application.
1. User Interface Design:
o The interface includes various widgets such as labels, entry fields,
buttons, and tables (using ttk.Treeview) for displaying data.
o The layout is organized in a grid format to ensure a clean and user-
friendly design.
2. User Input Forms:
o Users can enter staff details (name and department) into input
fields.
o Form validation is performed to ensure that all required fields are
filled before submission.
3. Display Data:
o Staff records are displayed in a table format, allowing users to view
all entries at a glance.
o The Treeview widget is used for this purpose, providing an
organized way to present data.
4. Interactivity:
o Buttons are provided for actions like adding staff, which trigger
backend functions to process data.
o Message boxes (e.g., messagebox.showinfo) are used to provide
feedback to users upon successful actions or errors.
27
Backend
28
Coding
#Login page
def login():
username= entry1.get()
password= entry2.get()
else:
messagebox.showerror('login','Incorrect Username or Password')
root=Tk()
root.configure(bg='lightblue')
29
global entry1
global entry2
30
button.place(x=630, y=420)
root.mainloop()
class Staff:
def __init__(self,root):
self.dep=StringVar()
self.root=root
self.root.geometry("1530x790+0+0")
self.root.title('Staff Management System')
#Variables
self.var_dep=StringVar()
self.var_name=StringVar()
self.var_desig=StringVar()
self.var_doj=StringVar()
self.var_sal=StringVar()
self.var_gen=StringVar()
self.var_dob=StringVar()
self.var_phone=StringVar()
self.var_email=StringVar()
self.var_idprooftype=StringVar()
self.var_idproof=StringVar()
31
self.var_add=StringVar()
self.var_maritial=StringVar()
self.var_country=StringVar()
lbl_title=Label(self.root,text='STAFF MANAGEMENT
SYSTEM',font=('times new roman',37,'bold'),fg='black',bg='lightgray')
lbl_title.place(x=0,y=0,width=1400,height=50)
#LOGO
img_logo=Image.open('photos/staffimg.jpg')
img_logo=img_logo.resize((50,50),Image.Resampling.LANCZOS)
self.photo_logo=ImageTk.PhotoImage(img_logo)
self.logo=Label(self.root,image=self.photo_logo)
self.logo.place(x=270,y=0,width=50,height=50)
#Imageframe
img_frame=Frame(self.root,bd=2,relief=RIDGE,bg='black')
img_frame.place(x=0,y=50,width=1275,height=104)
#1ST img
img1=Image.open('photos/imgg.jpeg')
img1=img1.resize((540,100),Image.Resampling.LANCZOS)
self.photo1=ImageTk.PhotoImage(img1)
self.img_1=Label(img_frame,image=self.photo1)
32
self.img_1.place(x=700,y=0,width=700,height=100)
#2ND img
img2=Image.open('photos/imgg.jpeg')
img2=img2.resize((540,100),Image.Resampling.LANCZOS)
self.photo2=ImageTk.PhotoImage(img2)
self.img_2=Label(img_frame,image=self.photo2)
self.img_2.place(x=0,y=0,width=500,height=100)
#3rd img
img3=Image.open('photos/imgg.jpeg')
img3=img3.resize((540,100),Image.Resampling.LANCZOS)
self.photo3=ImageTk.PhotoImage(img3)
self.img_3=Label(img_frame,image=self.photo3)
self.img_3.place(x=500,y=0,width=500,height=100)
#Main frame
main_frame=Frame(self.root,bd=2,relief=RIDGE,bg='white')
main_frame.place(x=5,y=160,width=1260,height=475)
33
#Upper frame
upper_frame=LabelFrame(main_frame,bd=3,relief=RIDGE,bg='white',text
='Staff Information',font=('times new roman',15,'bold'),fg='teal')
upper_frame.place(x=7,y=0,width=1240,height=245)
#Department
lbl_dep=Label(upper_frame,text='Department',font=('palatino
linotype',12,'bold'),bg='white')
lbl_dep.grid(row=0,column=0,padx=2)
combo_dep=ttk.Combobox(upper_frame,textvariable=self.var_dep,font=('
palatino linotype',12,'bold'),width=18,state='readonly')
combo_dep['value']=('Select
Department','Design','Finance','HR','IT','Maintenance','Marketing','Operations','P
roduction','Sales')
combo_dep.current(0)
combo_dep.grid(row=0,column=1,padx=2,pady=7)
#Name
lbl_name=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Name :',bg='white')
lbl_name.grid(row=1,column=0,padx=2,pady=7)
txt_name=ttk.Entry(upper_frame,textvariable=self.var_name,width=18,fon
t=('palatino linotype',12,'bold'))
txt_name.grid(row=1,column=1,padx=2,pady=7)
34
#Designition
lbl_designition=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Designition :',bg='white')
lbl_designition.grid(row=2,column=0,padx=2,pady=7)
txt_designition=ttk.Entry(upper_frame,textvariable=self.var_desig,width=
18,font=('palatino linotype',12,'bold'))
txt_designition.grid(row=2,column=1,padx=2,pady=7)
#Email
lbl_email=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Email :',bg='white')
lbl_email.grid(row=3,column=2,padx=2,pady=7)
txt_email=ttk.Entry(upper_frame,textvariable=self.var_email,width=18,fon
t=('palatino linotype',12,'bold'))
txt_email.grid(row=3,column=3,padx=2,pady=7)
#Address
lbl_address=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Address :',bg='white')
lbl_address.grid(row=0,column=4,padx=2,pady=7)
txt_address=ttk.Entry(upper_frame,textvariable=self.var_add,width=18,fon
t=('palatino linotype',12,'bold'))
txt_address.grid(row=0,column=5,padx=2,pady=7)
35
#marriage status
lbl_status=Label(upper_frame,text='Maritial Status',font=('palatino
linotype',12,'bold'),bg='white')
lbl_status.grid(row=1,column=4,padx=2,pady=7)
combo_status=ttk.Combobox(upper_frame,textvariable=self.var_maritial,f
ont=('palatino linotype',12,'bold'),width=18,state='readonly')
combo_status['value']=('Select Status','Single','Married')
combo_status.current(0)
combo_status.grid(row=1,column=5,padx=2,pady=7)
#DOB
lbl_address=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Date Of Birth :',bg='white')
lbl_address.grid(row=1,column=2,padx=2,pady=7)
txt_address=ttk.Entry(upper_frame,textvariable=self.var_dob,width=18,fo
nt=('palatino linotype',12,'bold'))
txt_address.grid(row=1,column=3,padx=2,pady=7)
#DOJ
lbl_address=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Date Of Joining :',bg='white')
lbl_address.grid(row=3,column=0,padx=2,pady=7)
txt_address=ttk.Entry(upper_frame,textvariable=self.var_doj,width=18,fon
t=('palatino linotype',12,'bold'))
36
txt_address.grid(row=3,column=1,padx=2,pady=7)
#ID proof
com_txt_proof=ttk.Combobox(upper_frame,textvariable=self.var_idprooft
ype,state='readonly',font=('palatino linotype',12,'bold'),width=18)
com_txt_proof['value']=('Select ID Proof','Aadhar Card','Pan Card','Driving
License')
com_txt_proof.current(0)
com_txt_proof.grid(row=4,column=2,padx=2,pady=7)
txt_proof=ttk.Entry(upper_frame,textvariable=self.var_idproof,width=22,f
ont=('palatino linotype',12,'bold'))
txt_proof.grid(row=4,column=3,padx=2,pady=7)
#gender
lbl_gender=Label(upper_frame,text='Gender',font=('palatino
linotype',12,'bold'),bg='white')
lbl_gender.grid(row=0,column=2,padx=2,pady=7)
combo_gender=ttk.Combobox(upper_frame,textvariable=self.var_gen,font
=('palatino linotype',12,'bold'),width=18,state='readonly')
combo_gender['value']=('Select Gender','Male','Female','Other')
combo_gender.current(0)
combo_gender.grid(row=0,column=3,padx=2,pady=7)
#phone
37
lbl_phone=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Phone No :',bg='white')
lbl_phone.grid(row=2,column=2,padx=2,pady=7)
txt_phone=ttk.Entry(upper_frame,textvariable=self.var_phone,width=18,fo
nt=('palatino linotype',12,'bold'))
txt_phone.grid(row=2,column=3,padx=2,pady=7)
#Country
lbl_con=Label(upper_frame,font=('palatino
linotype',12,'bold'),text='Country :',bg='white')
lbl_con.grid(row=2,column=4,padx=2,pady=7)
txt_con=ttk.Entry(upper_frame,textvariable=self.var_country,width=18,fo
nt=('palatino linotype',12,'bold'))
txt_con.grid(row=2,column=5,padx=2,pady=7)
#CTC
lbl_ctc=Label(upper_frame,font=('palatino linotype',12,'bold'),text='Salary
(CTC) :',bg='white')
lbl_ctc.grid(row=4,column=0,padx=2,pady=7)
txt_ctc=ttk.Entry(upper_frame,textvariable=self.var_sal,width=18,font=('p
alatino linotype',12,'bold'))
txt_ctc.grid(row=4,column=1,padx=2,pady=7)
38
#button frame
button_frame=Frame(upper_frame,bd=5,relief=RIDGE,bg='lightgrey')
button_frame.place(x=980,y=0,width=230,height=207)
btn_add=Button(button_frame,text="Save",command=self.add_data,font=(
'palatino linotype',12,'bold'),width=15,bg='lightblue',fg='black')
btn_add.grid(row=0,column=0,padx=32,pady=5)
btn_add=Button(button_frame,text="Update",command=self.update_data,f
ont=('palatino linotype',12,'bold'),width=15,bg='lightblue',fg='black')
btn_add.grid(row=1,column=0,padx=32,pady=5)
btn_add=Button(button_frame,text="Delete",command=self.delete_data,fo
nt=('palatino linotype',12,'bold'),width=15,bg='lightblue',fg='black')
btn_add.grid(row=2,column=0,padx=32,pady=5)
btn_add=Button(button_frame,text="Clear",command=self.reset_data,font
=('palatino linotype',12,'bold'),width=15,bg='lightblue',fg='black')
btn_add.grid(row=3,column=0,padx=32,pady=5)
#down frame
down_frame=LabelFrame(main_frame,bd=2,relief=RIDGE,bg='white',text
='Staff Information Table',font=('times new roman',15,'bold'),fg='teal')
down_frame.place(x=7,y=245,width=1240,height=215)
#search frame
search_frame=LabelFrame(down_frame,bd=3,relief=RIDGE,bg='lightgrey
',text='Search Staff Information',font=('times new roman',10,'bold'),fg='black')
search_frame.place(x=2,y=0,width=1230,height=55)
39
#search
self.var_com_search=StringVar()
com_txt_search=ttk.Combobox(search_frame,textvariable=self.var_com_s
earch,state='readonly',font=('platino linotype',11,),width=10)
self.var_search=StringVar()
txt_search=ttk.Entry(search_frame,textvariable=self.var_search,font=('plati
no linotype',11,'bold'),width=25)
txt_search.grid(row=0,column=2,padx=7,pady=4)
btn_search=Button(search_frame,text='Search',command=self.search_data,
font=('platino linotype',11,'bold'),width=14,bg='lightblue')
btn_search.grid(row=0,column=3,padx=5)
btn_search=Button(search_frame,text='Show
All',command=self.fetch_data,font=('platino
linotype',11,'bold'),width=14,bg='lightblue')
btn_search.grid(row=0,column=4,padx=5)
40
#===========================STAFF
TABLE=======================
#table frame
table_frame=Frame(down_frame,bd=3,relief=RIDGE,bg='lightgrey')
table_frame.place(x=2,y=60,width=1230,height=135)
scroll_x=ttk.Scrollbar(table_frame,orient=HORIZONTAL)
scroll_y=ttk.Scrollbar(table_frame,orient=VERTICAL)
self.staff_table=ttk.Treeview(table_frame,column=('1','2','3','4','5','6','7','8','9','1
0','11','12','13','14'),xscrollcommand=scroll_x.set,yscrollcommand=scroll_y.set)
scroll_x.pack(side=BOTTOM,fill=X)
scroll_y.pack(side=RIGHT,fill=Y)
scroll_x.config(command=self.staff_table.xview)
scroll_y.config(command=self.staff_table.yview)
self.staff_table.heading('1',text='Department')
self.staff_table.heading('2',text='Name')
self.staff_table.heading('3',text='Designition')
self.staff_table.heading('4',text='Date Of Joining')
self.staff_table.heading('5',text='Salary(CTC)')
self.staff_table.heading('6',text='Gender')
self.staff_table.heading('7',text='Date Of Birth')
self.staff_table.heading('8',text='Phone No')
41
self.staff_table.heading('9',text='E-mail')
self.staff_table.heading('10',text='ID Proof Type')
self.staff_table.heading('11',text='ID Proof')
self.staff_table.heading('12',text='Address')
self.staff_table.heading('13',text='Maritial Status')
self.staff_table.heading('14',text='Country')
self.staff_table['show']='headings'
self.staff_table.column('1',width=100)
self.staff_table.column('2',width=100)
self.staff_table.column('3',width=100)
self.staff_table.column('4',width=100)
self.staff_table.column('5',width=100)
self.staff_table.column('6',width=100)
self.staff_table.column('7',width=100)
self.staff_table.column('8',width=100)
self.staff_table.column('9',width=100)
self.staff_table.column('10',width=100)
self.staff_table.column('11',width=100)
self.staff_table.column('12',width=100)
self.staff_table.column('13',width=100)
self.staff_table.column('14',width=100)
self.staff_table.pack(fill=BOTH,expand=1)
self.staff_table.bind("<ButtonRelease>",self.get_cursor)
42
self.fetch_data()
#================================function
declaration=========================
def add_data(self):
if self.dep.get()==" " or self.var_email.get()=="":
messagebox.showerror('Error','All fields are required')
else:
try:
conn=mysql.connector.connect(host='localhost',username='root',pass
word='Shruti@3100',database='staffmanager')
my_cursor=conn.cursor()
my_cursor.execute('insert into staff
values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)',(
self.var_dep
.get(),
self.var_na
me.get(),
self.var_des
ig.get(),
self.var_doj
.get(),
self.var_sal.
get(),
self.var_gen
.get(),
43
self.var_dob
.get(),
self.var_pho
ne.get(),
self.var_em
ail.get(),
self.var_idp
rooftype.get(),
self.var_idp
roof.get(),
self.var_add
.get(),
self.var_ma
ritial.get(),
self.var_cou
ntry.get(),
))
conn.commit()
self.fetch_data()
conn.close()
messagebox.showinfo('Success','Staff has been
added!',parent=self.root)
except Exception as es:
messagebox.showerror('Error',f'Due to:{str(es)}',parent=self.root)
#fetch data
def fetch_data(self):
conn=mysql.connector.connect(host='localhost',username='root',password
='Shruti@3100',database='staffmanager')
44
my_cursor=conn.cursor()
my_cursor.execute('select * from staff')
data=my_cursor.fetchall()
if len(data)!=0:
self.staff_table.delete(*self.staff_table.get_children())
for i in data:
self.staff_table.insert("",END,values=i)
conn.commit()
conn.close()
#Get cursor
def get_cursor(self,event=""):
cursor_row=self.staff_table.focus()
content=self.staff_table.item(cursor_row)
data=content['values']
self.var_dep.set(data[0])
self.var_name.set(data[1])
self.var_desig.set(data[2])
self.var_doj.set(data[3])
self.var_sal.set(data[4])
self.var_gen.set(data[5])
self.var_dob.set(data[6])
self.var_phone.set(data[7])
45
self.var_email.set(data[8])
self.var_idprooftype.set(data[9])
self.var_idproof.set(data[10])
self.var_add.set(data[11])
self.var_maritial.set(data[12])
self.var_country.set(data[13])
def update_data(self):
if self.dep.get()==" " or self.var_email.get()=="":
messagebox.showerror('Error','All fields are required')
else:
try:
update=messagebox.askyesno('Update','Are you sure to update data?')
if update>0:
conn=mysql.connector.connect(host='localhost',username='root',pa
ssword='Shruti@3100',database='staffmanager')
my_cursor=conn.cursor()
my_cursor.execute('update staff SET
Department=%s,Name=%s,Designition=%s,Date_Of_Joining=%s,Salary(CTC)
=%s,Gender=%s,Date_Of_Birth=%s,Phone_No=%s,Email=%s,Id_Proof_Type
=%s,Address=%s,Maritial_Status=%s,Country=%s, where idproof=%s',(
sel
f.var_dep.get(),
sel
f.var_name.get(),
46
sel
f.var_desig.get(),
sel
f.var_doj.get(),
sel
f.var_sal.get(),
sel
f.var_gen.get(),
sel
f.var_dob.get(),
sel
f.var_phone.get(),
sel
f.var_email.get(),
sel
f.var_idprooftype.get(),
sel
f.var_add.get(),
sel
f.var_maritial.get(),
sel
f.var_country.get(),
47
sel
f.var_idproof.get()
))
else:
if not update:
return
conn.commit()
self.fetch_data()
conn.close()
messagebox.showinfo('Success','Staff Successfully
Updated',parent=self.root)
except Exception as es:
messagebox.showerror('Error',f'Due to:{str(es)}',parent=self.root)
#delete
def delete_data(self):
if self.var_idproof.get()=="":
messagebox.showerror('Error',"All fields are required")
else:
try:
Delete=messagebox.askyesno('Delete','Are you
sure?',parent=self.root)
if Delete>0:
conn=mysql.connector.connect(host='localhost',username='root',pa
ssword='Shruti@3100',database='staffmanager')
48
my_cursor=conn.cursor()
sql='delete from staff where idproof=%s'
value=(self.idproof.get(),)
my_cursor.execute(sql,value)
else:
if not Delete:
return
conn.commit()
self.fetch_data()
conn.close()
messagebox.showinfo('Delete','Staff Successfully
Deleted',parent=self.root)
except Exception as es:
messagebox.showerror('Error',f'Due to:{str(es)}',parent=self.root)
#reset
def reset_data(self):
self.var_dep.set("Select Department")
self.var_name.set("")
self.var_desig.set("")
self.var_doj.set("")
self.var_sal.set("")
self.var_gen.set("")
self.var_dob.set("")
self.var_phone.set("")
self.var_email.set("")
self.var_idprooftype.set("Select Id Proof")
self.var_idproof.set("")
49
self.var_add.set("")
self.var_maritial.set("Maritial Status")
self.var_country.set("")
#search
def search_data(self):
if self.var_com_search.get()=='' or self.var_search.get()=='':
messagebox.showerror('Error','Please select an option')
else:
try:
conn=mysql.connector.connect(host='localhost',username='root',pass
word='Shruti@3100',database='staffmanager')
my_cursor=conn.cursor()
my_cursor.execute('select * from staff where '
+str(self.var_com_search.get())+"LIKE'%"+str(self.var_search.get()+"%'"))
rows=my_cursor.fetchall()
if len(rows)!=0:
self.staff_table.delete(*self.staff_table.get_children())
for i in rows:
self.staff_table.insert("",END,values=i)
conn.commit()
conn.close()
except Exception as es:
messagebox.showerror('Error',f'Due to:{str(es)}',parent=self.root)
if __name__=="__main__":
root=Tk()
50
obj=Staff(root)
root.mainloop()
51
Results
Login Page
Main Page
52
Database
53
Testing
54
Chapter-5
Conclusion
55
staffing needs, identifying potential skill gaps, and proactively managing
employee wellness and engagement. Furthermore, the shift towards cloud-based
and mobile-friendly systems will offer organizations greater flexibility and
scalability, allowing them to manage their staff remotely and more efficiently.
In conclusion, a well-implemented staff management system is an indispensable
tool for modern organizations. It not only optimizes administrative tasks but also
enhances employee satisfaction and organizational performance. As businesses
continue to grow and the workforce becomes more dynamic, these systems will
play an increasingly vital role in managing staff effectively, contributing to long-
term organizational success.
56
Future Scope
57
• Automated Assistance: Virtual assistants or chatbots could provide
employees with instant answers to HR-related questions, reducing the
load on HR staff.
5. Integration with Other Business Tools
• Unified Platforms: Future staff management systems will likely integrate
seamlessly with other business tools (e.g., payroll, CRM, project
management), creating a holistic approach to managing operations.
• Cross-Department Collaboration: Enhanced integration across
departments can improve resource planning, performance reviews, and
collaboration between HR, finance, and operations.
6. Enhanced Security and Compliance
• Blockchain for Data Security: Blockchain technology may be integrated
to ensure secure, tamper-proof records of employee data, ensuring data
integrity and compliance with privacy regulations.
• Global Compliance Management: Systems will evolve to manage
compliance with international labor laws as businesses expand globally,
providing automated updates on regulatory changes.
7. Employee Wellness and Mental Health Tracking
• Health and Well-being Monitoring: Systems could incorporate features
to track employee mental health and well-being, integrating wearable
technology data (e.g., fitness trackers) to monitor stress levels and
productivity.
• Preventive Measures: Early identification of stress or burnout through
analytics will help HR take proactive measures to support employee
wellness.
8. Remote and Hybrid Work Management
• Remote Team Optimization: As remote and hybrid work models grow,
staff management systems will focus on managing distributed teams,
offering tools for virtual collaboration, time tracking, and performance
monitoring.
• Flexibility and Customization: Systems will evolve to support flexible
working hours and shifts, allowing organizations to adapt to diverse
working patterns in real-time.
9. Employee Engagement and Retention Tools
58
• Gamification: Future systems may include gamified elements to enhance
employee engagement, using incentives and rewards for achieving
performance milestones.
• Retention Analytics: Advanced analytics will predict employee turnover
risks, helping HR proactively address retention issues by improving job
satisfaction and career growth opportunities.
10. Sustainability and Green HR
• Eco-Friendly Initiatives: Staff management systems could integrate
sustainability tracking by helping organizations monitor and reduce their
carbon footprint, for instance by optimizing work schedules to reduce
energy use.
• Paperless Operations: Fully digital systems will further reduce the
reliance on paper, contributing to environmentally friendly business
practices.
The future scope of staff management systems is poised to be highly adaptable
and intelligent, empowering organizations to not only streamline their
operations but also enhance employee experience and engagement, all while
leveraging emerging technologies.
59
References
www.google.com
python.org
https://code.visualstudio.com/insiders/
www.youtube.com
60