0% found this document useful (0 votes)
20 views

Emp Project

Uploaded by

Anureet kaur
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
20 views

Emp Project

Uploaded by

Anureet kaur
Copyright
© © All Rights Reserved
Available Formats
Download as DOC, PDF, TXT or read online on Scribd
You are on page 1/ 40

MAXFORT SCHOOL

PROJECT FILE
SUBJECT: INFORMATICS PRACTICES
SESSION : 2023-2024
TOPIC: EMPLOYEE MANAGEMENT SYSTEM

SUBMITTED BY: SUBMITTED TO:


ANUREET KAUR CBSE
LAKSHITA BAGGA
BOARD ROLL NO’s:
CERTIFICATE
This is to certify that Anureet Kaur and Lakshita
Bagga, Roll No’s.
of Class XII Session 2023-24 have prepared the
project file as per the prescribed Practical Syllabus
of Informatics Practices Subject Code-065 , Class XII
AISSCE(CBSE) under my supervision.
It is the original work done by him/her. His/her
work is really appreciable.
I wish him/ her a very bright success.

Signature of teacher

Signature of External Examiner


______________________
Signature of Principal
ACKNOWLEDGEMENT
I wish to express my deep sense of gratitude and
indebtedness to my teacher “Pinky Gupta”, PGT
Informatics Practices, Maxfort School for his/her
invaluable help, advice and guidance In the
preparation of this practical file.
I am also greatly indebted to our principal
ma’am ,”Dr. Ratna Chakravarty” for his/her valuable
guidance and providing me with the facilities and
requisite laboratory conditions for making this
practical file.
I also extend my thanks to my classmates and
friends who helped to complete this practical file.

ANUREET KAUR
LAKSHITA BAGGA
INDEX:
 INTRODUCTION

 HARDWARE & SOFTWARE

REQUIREMENT

 CSV DATA FILE

 SOURCE CODE

 OUTPUT SCREEN

 BIBLIOGRAPHY
Hardware & Software Requirement

Hardware Requirement
PC/Laptop/MacBook with
Intel core/i3/i5/i7 or any equivalent
With at least 2 GB RAM
10 MB free space on Hard Disk
LCD/LED

Operating System & Compiler


MS Windows/Ubuntu/MacOS

Python IDLE 3.x


OR
colab.research.google.com (gmail account)

and/or
CSV FILE
MS- EXCEL
OR
OPEN OFFICE CALC

EMPLOYEE.CSV
EMPNO NAME GENDER BASIC DA HRA CCA PF TOTAL NET
1 JOHN M 5000 2500 1500 500 600 10100 9500

2 MOHAN M 3000 1500 900 300 360 6060 5700

3 SOHAN M 2000 1000 600 200 240 4040 3800

4 RADHA F 5000 2500 1500 500 600 10100 9500

5 GEETA F 6000 3000 1800 600 720 12120 11400


6 SIMRAN F 2500 1250 750 250 300 5050 4750

7 PRIYA F 3500 1750 1050 350 420 7070 6650

8 SIMMI F 8000 4000 2400 800 960 16160 15200

9 PREM M 5000 2500 1500 500 600 10100 9500

10 ASHWIN M 6000 3000 1800 600 720 12120 11400

Source
Code
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from tabulate import tabulate
while True:
username=input("Enter User Name : ")
password=input("\nEnter Password : ")
if username == "deepak" and password== "sharma":
print("\nWelcome to EMPLOYEES MANAGEMENT SYSTEM\n")
break
else:
print("Invalid Username or Password")
while True:
print('\t\t *** Employees Data Analysis Project *** ')
print('\n\t\t\t1. Data Analysis')
print('\n\t\t\t2. Data Visualization')
print('\n\t\t\t3. Data Operations')
print('\n\t\t\t4. Exit\n')
choice=int(input('Select your Choice [1-4] : '))
if choice==1:
while True:
print('\t*** EMPLOYEES MANAGEMENT SYSTEM ***\n')
print('*'*50)
print("\n\t\t1. Show Employees Data")
print("\n\t\t2. Show Data Name-Wise")
print('\n\t\t3. Show first nth records')
print("\n\t\t4. Show last nth records")
print("\n\t\t5. Display employee with highest Salary")
print('\n\t\t6. Display employee with lowest Salary')
print("\n\t\t7. For Exit the program\n\n")
choice = int(input("Enter Your Choice [1-7] : "))
if choice == 1:
print("\nEmployees Data :\n\n")
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')

print(tabulate(df,showindex=False,headers=['EMPNO','NAME','GENDER','BASI
C','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
elif choice == 2:
print("\nEmployees Data Name - Wise :\n\n")
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv',usecols =
['NAME','GENDER','BASIC','DA','HRA','CCA','PF','TOTAL','NET'])
df = df.sort_values(by='NAME')
print(tabulate(df,showindex=False,headers=['NAME','GENDER','BASIC','DA','HR
A','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
elif choice == 3:
print("\nFirst N Rows \n\n")
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df = df.sort_values(by='EMPNO')
nth = int(input("How many rows to display? : "))
print(tabulate(df.head(nth),showindex=False,headers=['EMPNO','NAME','GENDE
R','BASIC','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
elif choice == 4:
print("\nLast N Rows \n\n")
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df = df.sort_values(by='EMPNO')
nth = int(input("How many rows to display? : "))
print(tabulate(df.tail(nth),showindex=False,headers=['EMPNO','NAME','GENDER
','BASIC','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
elif choice == 5:
print("\nDisplay employee with highest Salary :\n\n")
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df = df.sort_values(by='NET')
print(tabulate(df.tail(1),showindex=False,headers=['EMPNO','NAME','GENDER','
BASIC','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
elif choice==6:
print("\nDisplay employee with highest Salary :\n\n")
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df = df.sort_values(by='NET')

print(tabulate(df.head(1),showindex=False,headers=['EMPNO','NAME','GENDER'
,'BASIC','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
elif choice==7:
print('Exit to main menu............')
break
else:
print('Invalid Choice, Retry 1/2/3/4/5/6/7')
elif choice==2:
while True:
print('Data Visualization')
print('\n\t1. Plot Line Chart (Name and Basic Salary)')
print('\n\t2. Plot Bar Chart Vertical(Name and Basic Salary)')
print('\n\t3. Plot Bar Horizontal Chart (Name and Basic Salary)')
print('\n\t4. Plot Histogram (Basic Salary)')
print('\n\t5. Exit\n')
choic=int(input('Select your Choice [1-4] : '))

if choic==1:
print('Line Chart')
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df['NAME'] =
['JOHN','MOHAN','SOHAN','RADHA','GEETA','SIMRAN','PRIYA','SIMMI','PR
EM','ASHWIN']
NAME=df["NAME"]
BASIC=df["BASIC"]
plt.ylabel("Basic Salary ----------->")
plt.xlabel("Name -------->")
plt.title("*** Name and Basic Salary ***")
plt.plot(NAME,BASIC, color='r')
plt.grid()
plt.savefig('emp_line.pdf')
plt.show()
elif choic==2:
print('Bar Chart')
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df['NAME'] =
['JOHN','MOHAN','SOHAN','RADHA','GEETA','SIMRAN','PRIYA','SIMMI','PR
EM','ASHWIN']
NAME=df["NAME"]
BASIC=df["BASIC"]
plt.ylabel("BASIC")
plt.title("*** Name and Basic Salary ***")
plt.bar(NAME,BASIC, color='r')
plt.grid()
plt.savefig('emp_bar.pdf')
plt.show()
elif choic==3:
print('Bar Chart')
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df['NAME'] =
['JOHN','MOHAN','SOHAN','RADHA','GEETA','SIMRAN','PRIYA','SIMMI','PR
EM','ASHWIN']
NAME=df["NAME"]
BASIC=df["BASIC"]
plt.xlabel("Basic Salary")
plt.title("Name and Basic Salary")
plt.barh(NAME,BASIC, color='r')
plt.grid()
plt.savefig('emp_barh.pdf')
plt.show()
elif choic==4:
print('Histogram')
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
df['NAME'] = ['JOHN', 'MOHAN','SOHAN','RADHA','GEETA',
'SIMRAN','PRIYA','SIMMI','PREM','ASHWIN']
NAME=df["NAME"]
BASIC=df["BASIC"]
plt.title("Name and Basic Salary")
plt.hist(BASIC, color='r')
plt.grid()
plt.savefig('emp_hist.pdf')
plt.show()

elif choic==5:
print('Exit to main menu........')
break
else:
print('Invalid choice')
elif choice==3:
while True:
print('Data Operations')
print('\n\t1. Add a row to Dataframe')
print('\n\t2. Remove a row to Dataframe')
print('\n\t3. Add a Column to Dataframe')
print('\n\t4. Remove a Column to Dataframe')
print('\n\t5. Exit\n')
choic=int(input('Select your Choice [1-5] : '))
if choic==1:
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
EMPNO = int(input('Employee No : '))
NAME= input('Employee Name : ')
GENDER = input('Gender [M/F/T] : ')
BASIC= int(input('Basic Salary : '))
DA=.50*BASIC
HRA=.30*BASIC
CCA=.10*BASIC
PF=.12*BASIC
TOTAL=BASIC + DA + CCA + PF
NET = TOTAL - PF
cr=df['EMPNO'].count()
df1=pd.DataFrame({"EMPNO":EMPNO,"NAME":NAME,"GENDER":GENDER
, "BASIC":BASIC,"DA":DA,"HRA":HRA,
"CCA":CCA,"PF":PF,"TOTAL":TOTAL, "NET":NET}, index=[cr])
df=df.append(df1)
print(tabulate(df,showindex=False,headers=['EMPNO','NAME','GENDER','BASI
C','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
print('Record added Successfully..............')

elif choic==2:
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')

print(tabulate(df,showindex=False,headers=['EMPNO','NAME','GENDER','BASI
C','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
r=int(input("Enter the Employee Number to be removed : "))
df= df.drop(r-1)
print(tabulate(df,showindex=False,headers=['EMPNO','NAME','GENDER','BASI
C','DA','HRA','CCA','PF','TOTAL','NET'],tablefmt='pretty'))
print('Record deleted Successfully..............')
elif choic==3:
print('Add a Column')
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
print("Add Column DEPARTMENT : ")
df['DEPARTMENT']=['HR','SALES','FINANCE','HR','SALES','FINANCE','HR','
SALES','FINANCE','SALES']
print(tabulate(df,headers=['EMPNO','NAME','GENDER','BASIC','DA','HRA','CC
A','PF','TOTAL','NET','DEPARTMENT'],tablefmt='pretty'))
print('Column added Successfully..............')
elif choic==4:
print('Remove a Column')
df=pd.read_csv('D:\\Deepak\\2023-24\\XII IP\\Projects IP\\
aastha_employees.csv')
C=input("Enter the Column Name to remove : ")
C=C.upper()
df=df.drop(C,axis=1)
print(tabulate(df,tablefmt='pretty'))
print('Column removed Successfully..............')
elif choic==5:
print('Exit to main menu........')
break
else:
print('Invalid choice')
elif choice==4:
print('Exit from menu........')
break
else:
print('Invalid choice')
OUTPUT
SCREENS
Enter User Name : deepak
Enter Password : sharma
Welcome to EMPLOYEES MANAGEMENT SYSTEM
*** Employees Data Analysis Project ***
1. Data Analysis
2. Data Visualization
3. Data Operations
4. Exit
Select your Choice [1-4] : 1
*** EMPLOYEES MANAGEMENT SYSTEM ***
**************************************************
1. Show Employees Data
2. Show Data Name-Wise
3. Show first nth records
4. Show last nth records
5. Display employee with highest Salary
6. Display employee with lowest Salary
7. For Exit the program
Enter Your Choice [1-7] : 1
Employees Data :
*** EMPLOYEES MANAGEMENT SYSTEM ***
**************************************************
1. Show Employees Data
2. Show Data Name-Wise
3. Show first nth records
4. Show last nth records
5. Display employee with highest Salary
6. Display employee with lowest Salary
7. For Exit the program
Enter Your Choice [1-8] : 2
Employees Data Name - Wise :
*** EMPLOYEES MANAGEMENT SYSTEM ***
**************************************************
1. Show Employees Data
2. Show Data Name-Wise
3. Show first nth records
4. Show last nth records
5. Display employee with highest Salary
6. Display employee with lowest Salary
7. For Exit the program
Enter Your Choice [1-8] : 3
First N Rows
How many rows to display? : 4
+-------+-------+--------+-------+------+------+-----+-----+-------+------+
| EMPNO | NAME | GENDER | BASIC | DA | HRA | CCA | PF | TOTAL | NET
|
+-------+-------+--------+-------+------+------+-----+-----+-------+------+
| 1 | JOHN | M | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 |
| 2 | MOHAN | M | 3000 | 1500 | 900 | 300 | 360 | 6060 | 5700 |
| 3 | SOHAN | M | 2000 | 1000 | 600 | 200 | 240 | 4040 | 3800 |
| 4 | RADHA | F | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 |
+-------+-------+--------+-------+------+------+-----+-----+-------+------+
*** EMPLOYEES MANAGEMENT SYSTEM ***
**************************************************
1. Show Employees Data
2. Show Data Name-Wise
3. Show first nth records
4. Show last nth records
5. Display employee with highest Salary
6. Display employee with lowest Salary
7. For Exit the program
Enter Your Choice [1-8] : 4
Last N Rows
How many rows to display? : 3
+-------+--------+--------+-------+------+------+-----+-----+-------+-------+
| EMPNO | NAME | GENDER | BASIC | DA | HRA | CCA | PF | TOTAL |
NET |
+-------+--------+--------+-------+------+------+-----+-----+-------+-------+
| 8 | SIMMI | F | 8000 | 4000 | 2400 | 800 | 960 | 16160 | 15200 |
| 9 | PREM | M | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 |
| 10 | ASHWIN | M | 6000 | 3000 | 1800 | 600 | 720 | 12120 | 11400 |
+-------+--------+--------+-------+------+------+-----+-----+-------+-------+
*** EMPLOYEES MANAGEMENT SYSTEM ***
**************************************************
1. Show Employees Data
2. Show Data Name-Wise
3. Show first nth records
4. Show last nth records
5. Display employee with highest Salary
6. Display employee with lowest Salary
7. For Exit the program
Enter Your Choice [1-8] : 5
Display employee with highest Salary :
+-------+-------+--------+-------+------+------+-----+-----+-------+-------+
| EMPNO | NAME | GENDER | BASIC | DA | HRA | CCA | PF | TOTAL |
NET |
+-------+-------+--------+-------+------+------+-----+-----+-------+-------+
| 8 | SIMMI | F | 8000 | 4000 | 2400 | 800 | 960 | 16160 | 15200 |
+-------+-------+--------+-------+------+------+-----+-----+-------+-------+
*** EMPLOYEES MANAGEMENT SYSTEM ***
**************************************************
1. Show Employees Data
2. Show Data Name-Wise
3. Show first nth records
4. Show last nth records
5. Display employee with highest Salary
6. Display employee with lowest Salary
7. For Exit the program
Enter Your Choice [1-8] : 6
Display employee with lowest Salary :
+-------+-------+--------+-------+------+-----+-----+-----+-------+------+
| EMPNO | NAME | GENDER | BASIC | DA | HRA | CCA | PF | TOTAL | NET
|
+-------+-------+--------+-------+------+-----+-----+-----+-------+------+
| 3 | SOHAN | M | 2000 | 1000 | 600 | 200 | 240 | 4040 | 3800 |
+-------+-------+--------+-------+------+-----+-----+-----+-------+------+
*** EMPLOYEES MANAGEMENT SYSTEM ***
**************************************************
1. Show Employees Data
2. Show Data Name-Wise
3. Show first nth records
4. Show last nth records
5. Display employee with highest Salary
6. Display employee with lowest Salary
7. For Exit the program
Enter Your Choice [1-8] : 7
Exit to Main Menu……….
*** Employees Data Analysis Project ***
1. Data Analysis
2. Data Visualization
3. Data Operations
4. Exit
Select your Choice [1-4] : 2
Data Visualization
1. Plot Line Chart (Name and Basic Salary)
2. Plot Bar Chart Vertical (Name and Basic Salary)
3. Plot Bar Horizontal Chart (Name and Basic Salary)
4. Plot Histogram (Basic Salary)
5. Exit
Select your Choice [1-4] : 1
Line Chart
Data Visualization
1. Plot Line Chart (Name and Basic Salary)
2. Plot Bar Chart Vertical(Name and Basic Salary)
3. Plot Bar Horizontal Chart (Name and Basic Salary)
4. Plot Histogram (Basic Salary)
5. Exit
Select your Choice [1-4] : 2
Bar Chart
Data Visualization
1. Plot Line Chart (Name and Basic Salary)
2. Plot Bar Chart Vertical(Name and Basic Salary)
3. Plot Bar Horizontal Chart (Name and Basic Salary)
4. Plot Histogram (Basic Salary)
5. Exit
Select your Choice [1-4] : 3
Bar Chart
Data Visualization
1. Plot Line Chart (Name and Basic Salary)
2. Plot Bar Chart Vertical (Name and Basic Salary)
3. Plot Bar Horizontal Chart (Name and Basic Salary)
4. Plot Histogram (Basic Salary)
5. Exit
Select your Choice [1-4]: 4
Histogram
Welcome to EMPLOYEES MANAGEMENT SYSTEM
*** Employees Data Analysis Project ***
1. Data Analysis
2. Data Visualization
3. Data Operations
4. Exit
Select your Choice [1-4] : 3
Data Operations
1. Add a row to Dataframe
2. Remove a row to Dataframe
3. Add a Column to Dataframe
4. Remove a Column to Dataframe
5. Exit
Select your Choice [1-5] : 1
Employee No : 101
Employee Name : Rajesh
Gender [M/F/T] : M
Basic Salary : 60000
Record added Successfully..............
Data Operations
1. Add a row to Dataframe
2. Remove a row to Dataframe
3. Add a Column to Dataframe
4. Remove a Column to Dataframe
5. Exit
Select your Choice [1-5] : 2
Add a Column
Add Column DEPARTMENT :
+---+-------+--------+--------+-------+------+------+-----+-----+-------+-------
+------------+
EMPNO NAME GENDER BASIC DA HRA | CCA | PF | TOTAL | NET |
DEPARTMENT |

+---+-------+--------+--------+-------+------+------+-----+-----+-------+-------
+------------+
| 0 | 1 | JOHN | M | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 | HR |
| 1 | 2 | MOHAN | M | 3000 | 1500 | 900 | 300 | 360 | 6060 | 5700 | SALES
|
| 2 | 3 | SOHAN | M | 2000 | 1000 | 600 | 200 | 240 | 4040 | 3800 |
FINANCE |
| 3 | 4 | RADHA | F | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 | HR
|
| 4 | 5 | GEETA | F | 6000 | 3000 | 1800 | 600 | 720 | 12120 | 11400 | SALES
|
| 5 | 6 | SIMRAN | F | 2500 | 1250 | 750 | 250 | 300 | 5050 | 4750 |
FINANCE |
| 6 | 7 | PRIYA | F | 3500 | 1750 | 1050 | 350 | 420 | 7070 | 6650 | HR |
| 7 | 8 | SIMMI | F | 8000 | 4000 | 2400 | 800 | 960 | 16160 | 15200 | SALES
|
| 8 | 9 | PREM | M | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 |
FINANCE |
| 9 | 10 | ASHWIN | M | 6000 | 3000 | 1800 | 600 | 720 | 12120 | 11400 |
SALES |
+---+-------+--------+--------+-------+------+------+-----+-----+-------+-------
+------------+
Column added Successfully..............
Data Operations
1. Add a row to Dataframe
2. Remove a row to Dataframe
3. Add a Column to Dataframe
4. Remove a Column to Dataframe
5. Exit
Select your Choice [1-5] : 4
Remove a Column
Enter the Column Name to remove : GENDER
+---+----+--------+------+------+------+-----+-----+-------+-------+
| 0 | 1 | JOHN | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 |
| 1 | 2 | MOHAN | 3000 | 1500 | 900 | 300 | 360 | 6060 | 5700 |
| 2 | 3 | SOHAN | 2000 | 1000 | 600 | 200 | 240 | 4040 | 3800 |
| 3 | 4 | RADHA | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 |
| 4 | 5 | GEETA | 6000 | 3000 | 1800 | 600 | 720 | 12120 | 11400 |
| 5 | 6 | SIMRAN | 2500 | 1250 | 750 | 250 | 300 | 5050 | 4750 |
| 6 | 7 | PRIYA | 3500 | 1750 | 1050 | 350 | 420 | 7070 | 6650 |
| 7 | 8 | SIMMI | 8000 | 4000 | 2400 | 800 | 960 | 16160 | 15200 |
| 8 | 9 | PREM | 5000 | 2500 | 1500 | 500 | 600 | 10100 | 9500 |
| 9 | 10 | ASHWIN | 6000 | 3000 | 1800 | 600 | 720 | 12120 | 11400 |
+---+----+--------+------+------+------+-----+-----+-------+-------+
Column removed Successfully..............
Data Operations
1. Add a row to Dataframe
2. Remove a row to Dataframe
3. Add a Column to Dataframe
4. Remove a Column to Dataframe
5. Exit
Select your Choice [1-5] : 5
Exit to main menu........
*** Employees Data Analysis Project ***
1. Data Analysis
2. Data Visualization
3. Data Operations
4. Exit
Select your Choice [1-4] : 4
Exit from menu........
BIBLIOGRAPHY

We took the information for our project report from the following
sources:
Reference books:
1. Informatics Practices by Sumita Arora.
2. Complete reference with Python
3. Data Analysis-Python
4. NCERT Text Book
Websites:
 https://www.python.org.in
 https://www.google.com
 https://www.cbseacademic.nic.in
 https://www.Kaggle.com

You might also like