Aditya Project
Aditya Project
Aditya Project
International School
INTERNATIONAL SCHOOL
Indira Nagar, Kalyanpur, Kanpur
SESSION 2022-2023
PROJECT
File
By: Aditya Tiwari
Class: 12th A
Team Members:
Aditya Tiwari Roll no:
Vishal Singh Subject: Computer Science
Bhavishya Soni
Submitted to: Mr. HariKishan
Acknowledgement
Aditya Tiwari
12 A
ABSTRACT
information for all the websites you use and generating random passwords
for users. The user will have the access to add, update and remove his details
It’s an GUI based application simple and easy to use. It has a lot’s of
can be stored for various applications and details required for maintaining
email id.
You would not get any problem while using it because it’s simple and
user friendly UI will make your work easy, faster and gives you a better
result.
TABLE OF CONTENTS
Table of Contents
1. INTRODUCTION
1.1. Basic introduction of Project
1.2. Objective and Scope
1.3. Tools and Technologies used
2. SYSTEM ANALYSIS
2.1. System Requirements Specification
3. SYSTEM DESIGN
3.1. Modules
3.2. Data Flow Diagram
3.3. Data Base Design
3.4. Screen Shots
3.5. Coding
4. TESTING
6. CONCLUSION
7. REFERENCES
CHAPTER 1
INTRODUCTION
INTRODUCTION
Password Manager is a GUI based application that allows users to store and
Not only do password managers help securely house your passwords, but
they can also generate passwords that are unique and complex, which makes
them more difficult to crack or guess. It also simplifies your life by making
account access easier for you and more diffifcult for hackers. You don’t have
to memorize any passwords except for the password to your password manager.
That means you can actually follow unpleasant but useful security advice, like
never reusing a password and always using long, strong and complex passwords.
[1]
1.2 Objectives and scope:
In this project, we will build an application which will store the User’s
password, as well as other information, in one convenient location with one
master password. Python Features and methods are used to implement in this
project. Today, people have a large number of passwords for social media sites,
work logins, shopping pages, online banking and much more. While it is
important to use strong passwords and to use different passwords on each site,
it can be a difficult task to remember all them. With a password manager, you
simply enter the GUI app, provide the master password you set for the password
manager in that software, then log in to the GUI app and the username and
password will be stored for you. However, the primary purpose of
this project to make Password Manager application user-friendly so that any
individual can interact with the system.
[2]
1.3 Tools And Technologies:
Python: -
A Graphical User Interface (GUI) is the first thing your user sees and interacts
with when he opens your application or website. Having a good GUI goes a long
way in increasing your platform’s reputation and user count. A user interface
usually includes a host of visual elements like icons, buttons, graphics, displayed
text, and several other forms of input, like checkbox, text input boxes, and such.
Tkinter :
Often referred to as the go-to GUI toolkit by a majority of Python developers,
to the Tk GUI toolkit with its Python bindings. The name Tkinter comes from Tk
interface. Tkinter was written by Fredrik Lundh and it is free software released
installs of Python.
MySQL:
of "My", the name of co-founder Michael Widenius's daughter, and "SQL", the
data into one or more data tables in which data types may be related to each
other these relations help structure the data. SQL is used to create, modify and
extract data from the relational database, as well as control user access to the
database.
[4]
CHAPTER 2
SYSTEM ANALYSIS
[5]
SYSTEM ANALYSIS
Hardware Requirements
Memory Space:
Minimum - 32 MB
Recommended - 64 MB
Software Requirements
DEVELOPING LANGUAGE -
BACKEND - PYTHON
DATABASE - MY SQL
[6]
CHAPTER 3
SYSTEM DESIGN
[7]
SYSTEM DESIGN
3.1 Modules:
d) SignUp: With the SignUp module, you can quickly and easily create a
Account for Password Manager GUI app. So you can access its feature.
e) Login: This module validates the user, and returns an error statement if it
doesn’t find the specified user in the data base.
a) User: User privileges are provided to the user, where he is able to to store
and generate random passwords.
i. Add Data: This module provides features for adding the
password or other details of user in the database. The user must
register/signup himself first, so that he is able to login and store
or generate a random password for his online accounts.
ii. Update Data: This module enables the user to update his existing
data. If he wants update his data that he has already stored in the database.
[8]
iii. Remove Data: When an user wants to remove his data from his
database, he is able to do it with the help of this module and is able to successfully
remove
that specific data.
[9]
3.2 Data Flow Diagram:
[10]
3.3 Database Design:
[11]
3.4 Screenshots:
[12]
[13]
3.5 CODING:
INTRO PAGE:
root = Tk()
root.geometry("1590x800+0+0")
root.title("demo")
root.config(bg="#ea5455")
def lg_in():
root.destroy()
import register
btn_img = ImageTk.PhotoImage(file="button_sign-u.png")
des = Label (text="It Gives you a easy access to store,generate, and manage\n
your "
[14]
"passwords for local applications and online services.", font=("helvetica", 25,
des.place(x=330, y=350)
bg="#ea5455")
sign_up_btn.place(x=650, y=550)
root.mainloop()
SignUp Page:
import mysql.connector
root = Tk()
root.geometry("1590x800+0+0")
root.title("demo")
root.config(bg="#ea5455")
img_reg = PhotoImage(file="images/button_sign_up.png")
[15]
lbl_sign_up = Label(text="SIGN UP", font=("times new roman", 30, "bold"),
bg="white", fg="black")
lbl_sign_up.place(x=690, y=70)
username.place(x=600, y=200)
user_mail.focus()
paswd.place(x=600, y=330)
def regs():
[16]
elif new_pswd.get() != cnfrm_pswd.get():
else:
try:
db = mysql.connector.connect(
host='localhost',
user='root',
passwd='root',
database="password_manager")
cur = db.cursor()
(user_mail.get(), new_pswd.get()))
db.commit()
db.close()
root.destroy()
import log_in
except EXCEPTION as e:
reg_btn.place(x=600, y=560)
[17]
root.mainloop()
Login Page:
import mysql.connector
root = Tk()
root.geometry("1590x800+0+0")
root.title("PASSWORD MANAGER")
root.config(bg="#ea5455")
def login():
else:
try:
db = mysql.connector.connect(
[18]
host='localhost',
user='root',
passwd='root',
database="password_manager")
cur = db.cursor()
(email_txt.get(), paswd_txt.get()))
KEY AUTO_INCREMENT")
if row is None:
else:
root.destroy()
import main
except EXCEPTION as e:
[19]
frame1.place(x=550, y=30, width=500, height=740)
btn_login = PhotoImage(file="images/button_log-in.png")
title.place(x=710, y=80)
label.place(x=600, y=200)
email_txt.focus()
pass_lbl.place(x=600, y=320)
sign_in.place(x=610, y=500)
root.mainloop()
[20]
Password Manager:
import pyperclip
import mysql.connector
import string
def clear():
website_entry.delete(0, END)
password_entry.delete(0, END)
mail_entry.delete(0, END)
username_entry.delete(0, END)
def save():
website = website_entry.get()
username = username_entry.get()
password = password_entry.get()
[21]
mail_id = mail_entry.get()
else:
if is_ok:
try:
db = mysql.connector.connect(
host='localhost',
user='root',
passwd='root',
database="password_manager")
cur = db.cursor()
db.commit()
db.close()
fetch_data()
[22]
clear()
except EXCEPTION as e:
def update():
website = website_entry.get()
username = username_entry.get()
password = password_entry.get()
mail_id = mail_entry.get()
try:
db = mysql.connector.connect(
host='localhost',
user='root',
passwd='root',
database="password_manager")
cur = db.cursor()
db.commit()
db.close()
[23]
fetch_data()
clear()
except EXCEPTION as e:
def delete():
website = website_entry.get()
db = mysql.connector.connect(
host='localhost',
user='root',
passwd='root',
database="password_manager")
cur = db.cursor()
(website,))
db.commit()
db.close()
fetch_data()
clear()
window = Tk()
[24]
window.geometry("1590x800+0+0")
window.title("PASSWORD MANAGER")
window.config(bg="#ea5455")
frame1.place(x=20, y=30)
frame2.place(x=30, y=150)
frame3.place(x=650, y=140)
def check():
upper = upper_var.get()
lower = lower_var.get()
number = number_var.get()
symbol = symbol_var.get()
ps = ''”
if upper == 'on':
[25]
ps += string.ascii_uppercase
if lower == 'on':
ps += string.ascii_lowercase
if number == 'on':
ps += string.digits
if symbol == 'on':
ps += string.punctuation
else:
generate_entry.delete(0, END)
return ps
def generate(ev):
pswrd = check()
password = ''
generate_entry.delete(0, END)
password_entry.delete(0, END)
generate_entry.insert(0, password)
password_entry.insert(0, password)
pyperclip.copy(password)
[26]
upper_var = StringVar()
lower_var = StringVar()
number_var = StringVar()
symbol_var = StringVar()
label.place(x=100, y=80)
bd=0, command=generate)
slider.place(x=100, y=140)
onvalue='on', offvalue='off')
upper_check.place(x=380, y=130)
upper_check.select()
onvalue='on', offvalue='off')
lower_check.place(x=380, y=180)
[27]
lower_check.select()
onvalue='on', offvalue='off')
number_check.place(x=525, y=130)
number_check.deselect()
onvalue='on', offvalue='off')
symbol_check.place(x=525, y=180)
symbol_check.deselect()
add_image = ImageTk.PhotoImage(file="button_add.png")
update_img = ImageTk.PhotoImage(file="button_update.png")
delete_img = ImageTk.PhotoImage(file="button_delete.png")
[28]
title.place(x=590, y=60)
web_label.place(x=40, y=50)
username_label.place(x=40, y=150)
password_label.place(x=40, y=250)
mail_label.place(x=40, y=350)
website_entry.focus()
[29]
username_entry = Entry(frame2, width=40, font=("helvetica", 15),
relief="ridge", borderwidth=1)
add_btn.place(x=15, y=480)
update_btn.place(x=210, y=480)
delete_btn.place(x=410, y=480)
[30]
# ==================== Treeview================
def get_cursor(event):
cursor_row = password_tree.focus()
contents = password_tree.item(cursor_row)
row = contents['values']
clear()
website_entry.insert(0, row[0])
username_entry.insert(0, row[1])
password_entry.insert(0, row[2])
mail_entry.insert(0, row[3])
frame4.place(x=650, y=420)
style = ttk.Style()
style.configure("Treeview", rowheight=28)
password_tree.tag_configure('oddrow', background='white')
password_tree.tag_configure('evenrow', background='#ffcccb')
password_tree.column("website", width=140)
[31]
password_tree.heading("username", text="Username", anchor="w")
password_tree['show'] = 'headings'
password_tree.pack(expand=True, fill=BOTH)
password_tree.bind("<ButtonRelease-1>", get_cursor)
def fetch_data():
count = 0
db = mysql.connector.connect(
host='localhost',
user='root',
passwd='root',
database="password_manager")
cur = db.cursor()
rows = cur.fetchall()
if len(rows) != 0:
password_tree.delete(*password_tree.get_children())
if count % 2 == 0:
[32]
password_tree.insert(parent='', index=END, values=row, tags='evenrow')
db.commit()
else:
db.commit()
count += 1
db.close()
fetch_data()
window.mainloop()
# ---------------Database Creation------------
import mysql.connect
db = mysql.connector.connect(
host='localhost',
user='root',
passwd='root')
cur = db.cursor()
#----------Table Creation----------
import mysql.connect
[33]
db = mysql.connector.connect(
host='localhost',
user='root',
passwd='root',
database="password_manager")
cur = db.cursor()
db.commit()
[34]
CHAPTER 4
TESTING
[35]
SYSTEM TESTING
The testing phase involves testing the system using various test data.
Preparation of test data plays a vital role in the system testing. After preparing
the test data, the system is tested using those test data. Errors are found and
corrected by using the following testing steps and corrections are recorded for
future reference. Thus a series of testing is performed on the system before it is
ready for implementation.
[36]
VERIFICATION & VALIDATION TESTING
Error Guessing:
Error guessing is an ad hoc approach, based on intuition and experience, to
identify tests that are considered likely to expose errors. The basic idea is to
make a list of possible errors or error-prone situations and then develop tests
based on the list.
• Empty or null lists/ strings
• Zero instances/ occurrences
• Blanks or null characters in strings
• Negative numbers.
Features to be tested
TEST RESULTS:
All the test cases mentioned above passed successfully. No defects encountered.
[37]
CHAPTER 5
IMPLEMENTATION
&
MAINTENANCE
[38]
SYSTEM IMPLEMENTATION & MAINTENANCE
In implementation, the training for the system user, how to work with this
software should be given. The development of operating procedure to repair and
enhance the system should be done. The installation new computers with
required hardware and software specification are to be performed, if the present
system is working manually. If the hardware specification of the present system
is below the recommended specification the existing system should be replaced
with new one or up gradation of the existing system should be done. It is
necessary to check whether the required application should be working
properly.
Implementation is the stage in the project where the theoretical design is turned
in to a working system and is giving confidence on the new system for the
users, which will work efficiently and effectively. It involves careful planning
investigation of the current system and its constraints. If the implementation
neither is nor carefully planned it can cause confusion. Thus it can be
considered as the most crucial stage in achieving a successful new system and
in giving the users confidence that the new system will work be effective. It is
[39]
during the implementation phase the system takes shape.
MAINTENANCE
The software life cycle processes essentially depicts maintenance as one of the
primary life cycle processes, and describes maintenance as the process of a
software product undergoing modification to code and associated
documentation due to a problem or the need for improvement. The objective is
to modify the existing software product while preserving its integrity.
[40]
and operating a help-desk.
● Host Modifications
● Organization changes
• Correct faults
• Implementation enhancement
[41]
6. CONCLUSION
This project is designed for the users who surf through internet a lot and create a
number of online accounts and they can’t keep track or memorize all of their
online acconts login details. That’s where our Password Manager comes in use
it helps them to houses all their passwords in encrypted database. Even it helps
in generating a stronger, random and complex passwords which makes them
more difficult to crack or guess. Thus, you can have easy access for your
accounts and more difficult for hackers.
Future Enhancement:
This project has very vast scope in future. As the user’s requirement is always
going to be changed which is not static. Project can be updated as per the user
requirement and it is very flexible in terms of expansion. The enhancement of
the project can easily be made without changing the programming structure.
• Enhancement of UI of application
Advantages:
[42]
• Password manager can generate random passwords for each
account.
[43]
7. REFERENCES
1) https://www.python.org/doc/
2) https://docs.python.org/3/library/tk.html
3) https://www.udemy.com/course/100-days-of-code/
4) https://stackoverflow.com
[44]