Automobile Repairing System
Automobile Repairing System
This is to certify that the Project work entitled “AUTOMOBILE SHOP” is carried out
by (MITEN CHANDEL ). A student of PGDCA at ( B . M C O L L A G E ) is
hereby approved as a credible work in the discipline of Computer Science and
Information Technology for the award of degree of Post Graduate Diploma in Computer
Application during the year 2024-2025 from Hemchand Yadav Vishwavidyalaya,
Durg(C.G.).
Head of Department:
(MR.RAVIKANT)
CERTIFICATE
This is to certify that the Project work entitled “AUTOMOBILE SHOP” submitted to
the B.M COLLAGE by M I T E N C H A N D E L Roll No 2 5 3 6 4 7 1 0 2 0 , in partial
fulfillment for the requirements relating to nature and standard of award of Post
Graduate Diploma in Computer Application degree by, Hemchand Yadav
Vishwavidyalaya, Durg (C.G.) for the academic year 2024-2025.
This project work has been carried out under my guidance.
Guide Name
(MR.RAVIKANT)
CERTIFICATE OF EVALUATION
This is to certify that the Project work entitled " AUTOM O B I L E S H O P " is
carried out by MITEN CHANDEL, a student of P G D C A at B.M COLLAGE after proper
evaluation and examination, is hereby approved as a credible work in the discipline
of Computer Science and Information Technology and is done in a satisfactory
manner for its acceptance as a requisite for the award of degree of Post Graduate
Diploma in Computer Application during the year 2024- 2025 from Hemchand
Yadav Vishwavidyalaya, Durg ( C.G.).
This is to certify that the Project work entitled “AUTOMOBILE SHOP” which is
submitted by me in partial fulfillment for the award of degree of Post Graduate
Diploma in Computer Application at (B.M COLLAGE), comprises the original work
carried out by me.
I further declare that the work reported in this project has not been submitted
and will not be submitted, either in part or in full for the award of any other degree
or diploma in this Institute or any other Institute or University.
I would also like to thanks to the faculty member who provided me the
resources such as Internet connection, Computer System, Working environment
etc.
I would also like to thanks to the organizations which is not the part of the
college but it helped me a lot to complete this project. Even the project was not being
possible to build without their help.
Project Synopsis
Objectives:-
The objective of this project is to simplify and automate the process of
Automobile repairing shop, including customer and vehicle information, inventory, and
employee management. This includes automating processes to enhance productivity, reduce
errors, and improve customer satisfaction. Ultimately, the goal is to create a user-friendly and
scalable system that allows service centers to operate more efficiently and grow.
Scope:-
An automobile repairing system project can encompass various scopes, ranging from simple
inventory management to comprehensive workshop management and scheduling. The project
could involve developing a software system to manage vehicle details, customer records, invoices
or bill details and report for vehicle, customer and bill.
Technology Used:
1. Python
1.1. Tkinter
2. Database
2.1 MySQL
Abstract
The purpose of Automobile Repairing System is to automate the existing manual system by
the help of computerized equipment’s and full-fledged computer software, fulfilling their
requirements, so that their valuable data/information can be stored for a longer period with easy
accessing and manipulation of the same. The required software and hardware are easily available
and easy to work with.
Automobile Repairing System, as described above, can lead to error free, secure, reliable,
and fast management system. It can assist the user to concentrate on their other activities rather to
concentrate on the record keeping. Thus, it will help organization in better utilization of resources.
The organization can maintain computerized records without redundant entries. That means that
one need not be distracted by information that is not relevant, while being able to reach the
information.
The aim is to automate its existing manual system by the help of computerized equipment’s
and full-fledged computer software, fulfilling their requirements, so that their valuable
data/information can be stored for a longer period with easy accessing and manipulation of the
same. Basically, the project describes how to manage for good performance and better services for
the clients.
MAIN REPORT
Objective:-
The objective of this project is to simplify and automate the process of Automobile
repairing shop, including customer and vehicle information, inventory, and employee
management. This includes automating processes to enhance productivity, reduce errors, and
improve customer satisfaction. Ultimately, the goal is to create a user-friendly and scalable system
that allows service centers to operate more efficiently and grow.
Scope:-
An automobile repairing system project can encompass various scopes, ranging from simple
inventory management to comprehensive workshop management and scheduling. The project
could involve developing a software system to manage vehicle details, customer records, invoices
or bill details, and report for vehicle, customer and bill.
Main Pages and functions in the system
The main objective of the Project on Automobile Repairing System is to manage the details of
Vehicle, Customer, Maintenance, Bill and their reports. It manages all the information about
Vehicle, Vehicle Type, Company, Customer. The project is totally built at administrative end and
thus only the administrator is guaranteed the access. The purpose of the project is to build an
application program to reduce the manual work for managing the Vehicle, Customer,
Maintenance, Bill and their reports. It tracks all the details about the Vehicle, Customer and Bill.
Provides the searching facilities based on various factors. Such as Vehicle, Customer, Service.
Automobile Repairing System also manage the Vehicle details for Repairing, Customer
details, problems.
Editing, Adding and Updating of Records is improved which results in proper resource
management of Automobile.
The old manual system was suffering from a series of drawbacks. Since whole of the system
was to be maintained with hands the process of keeping, maintaining and retrieving the
information was very tedious and lengthy. The records were never used to be in a systematic order.
there used to be lots of difficulties in associating any particular transaction with a particular
context. If any information was to be found it was required to go through the different registers,
documents there would never exist anything like report generation. There would always be
unnecessary consumption of time while entering records and retrieving records. One more problem
was that it was very difficult to find errors while entering the records. Once the records were
entered it was very difficult to update these records.
The reason behind it is that there is lot of information to be maintained and must be kept in mind
while running the business. For this reason, we have provided features Present system is partially
automated (computerized), actual existing system is quite laborious as one has to enter same
information at three different places.
With the implementation of computerized system, the task of keeping records in an organized
manner will be solved. The greatest of all is the retrieval of information, which will be at the
click of the mouse. So, the proposed system helps in saving the time in different operations and
making information flow easy giving valuable reports.
Definition Of Problem
During evening time or on some occasion when the customer number’s is very
high and every one wants to get vehicle as soon as possible. But due to less
number of worker they have to wait for a long time. And sometimes the vehicle
get exchange of customers. All this have to suffer by the customer which had a great
impact on shop's finance growth.
Also the worker have to frequently ask in the shop for the availability of the time. If it
is time available then it's perfect but if it is not available then the customer
gets disappointment.
To overcome this problem i have made this application which will eradicate all this
problem by servicing the vehicle of the customer's, after which customer can easily
get their vehicle.
The employee can check the application from the different pages so that he came
to know about the vehicle or servicing details.
System Analysis And Design
Following figures show the overview of the system and user interfaces that are
created using Python, Tkinter and MySQL for database. system.
Modeling During the system requirements and design activity, systems may be
modeled as a set of components and relationships between these
components. These are normally illustrated graphically in a system architecture
model that gives the reader an overview of the system organization. System
modeling helps to give more detailed system specifications which are in
form of graphical representations that can describe problem to be solved
or the system that is to be developed.
The language selected for the development is Python, Tkinter, MySQL for
creating an attractive Application system. Tkinter helps to design
interactive components within application system. The following diagram
illustrates the main components of the project. And also Custom Tkinter is used to
describe the presentation of pages including colors, layout and fonts. The
language selected for the development is MySQL, Python for creating an attractive
pages in system. Tkinter helps to design interactive components within this system.
The following diagram illustrates the main components of the project. is used to
describe the presentation of pages including colors, layout and fonts. MySQL is
used as the database management system.
Selected Software Development Life Cycle and system architecture is V model
and service oriented architecture. The study of alternative methods with the
relevant diagrams associated and the proper justification of the selected one is
as bellow.
Problem
identification
System
design
implement
Testing And
Maintenance
Hardware & Software Environment
Software Requirements:
Hardware Requirements:
Processor Pentium IV or Higher
RAM 512MB
Hard Disk 120GB
Monitor 15” color monitor
Keyboard 106 keys keyboard
ERD
DFD
Level 0:
Automobile
Customer Service Mechanic
Level 1:
View Database
Service
Request
Customer Service
Mechanic
Work
Done
Input And Output Screening
The design of output is the most important task of any system. During output design,
developers identify the type of outputs needed, and consider the necessary output
controls and prototype report layouts.
b) Adaptive maintenance:
Currently the software is designed for only windows operating system means it
is not adaptive. Users may require it to work on different operating systems such as
MAC OS, Linux, Unix etc. The required software can be produced to fulfill the
requirements of the user by using the python module 'Tkinter'.
c) Perfective maintenance :
The software for now uses a Command line user interface that may bore
the user using it. The option for Themes can be added the near future
with support of more modules. We can enhance the speed of speech
recognition but in future the feature can be added.
d) Preventive maintenance:
The software may be updated to support the operating systems like Mac OS, Linux,
Unix etc
Process involved
After completion of the requirements analysis, the development team can then
proceed to the next level of making out a product design to be followed throughout
the development process.
iii) Coding:
After the phase of product design, the development team moves on to the stage of
coding and implementation. Some companies prefer to outsource the coding
activities, and many times also the previous step of Product Design, to a third-
party software development company.
iv) Testing:
After the step of coding and implementation, the programmer can then proceed
to integration and validation testing. This phase potential bugs in the
product, and if any, these are corrected. The software programmer should
perform unit or module testing. The next stage of testing would be Integration
testing. Here the interaction between the individual modules and/or external
systems are tested. After integration testing Validation testing will be
performed, testing the end software product based on the requirements and
UI/UX design, from an end- user point of view.
v) Deployment of product :
Once the software product passes the testing phase, deployment of the
product can ensue. Once the product is ready, the first batch is out and to the
public. That is known as Beta testing. If any changes are required due to
customer feedback, or any bugs not seen during the testing phase arises, they can
be corrected and implemented during this phase of software development.
Deployment normally involves setting up a so called 'Production' server on which
the software will run. Such a server can be one of the company's own servers or it
can be in the 'cloud' by using for example opened Amazon Web Services or
Microsoft Azure.
Methodology:
The main methodology used in testing the software is Manual Testing.
Manual Testing:
Manual testing is a software testing process in which test cases are executed
manually without using any automated tool. All test cases executed by the tester
manually according to the end user's perspective. It ensures whether the
application is working, as mentioned in the requirement document or not. Test
cases are planned and implemented to complete almost 100 percent of the
software application. Test case reports are also generated manually.
There are various methods used for manual testing. The methods chosen
for testing are:-
1. White Box Testing
2. Black Box Testing
The white box testing contains various tests, which are as follows:-
1. Path testing
2. Loop testing
3. Condition testing
4. Testing based on the memory perspective
5. Test performance of the program
Step 2: In the second step, the tester creates a positive test scenario and an
adverse test scenario by selecting valid and invalid input values to check that
the software is processing them correctly or incorrectly.
Step 3: In the third step, the tester develops various test cases such as decision
table, all pairs test, equivalent division, error estimation, cause- effect graph, etc.
Step 4: The fourth phase includes the execution of all test cases.
Step 5: In the fifth step, the tester compares the expected output against the
actual output.
Step 6: In the sixth and final step, if there is any flaw in the software, then it
is cured and tested again.
Black box Testing involves two types of testing :-
a) Functional testing:
Functional testing involves testing the application against the business
requirements. It incorporates all test types designed to guarantee each part of a
piece of software behaves as expected by using uses cases provided by the design
team or business analyst.
1. Unit testing
2. Integration testing
3. System testing
4. Acceptance testing
b) Non-functional testing:
Non-functional testing methods incorporate all test types focused on the
operational aspects of a piece of software.
Python:
Python is an interpreted, object-oriented, high-level programming language with
dynamic semantics. Its high-level built in data structures, combined with
dynamic typing and dynamic binding, make it very attractive for Rapid Application
Development, as well as for use as a scripting or glue language to connect
existing components together. Python's simple, easy to learn syntax emphasizes
readability and therefore reduces the cost of program maintenance. Python
supports modules and packages, which encourages program modularity and
code reuse. The Python interpreter and the extensive standard library
are available in source or binary form without charge for all major platforms,
and can be freely distributed. Often, programmers fall in love with Python
because of the increased productivity it provides. Since there is no compilation
step, the edit-test- debug cycle is incredibly fast. Debugging Python programs is
easy: a bug or bad input will never cause a segmentation fault. Instead, when the
interpreter discovers an error, it raises an exception. When the program
doesn't catch the exception, the interpreter prints a stack trace.
A source level debugger allows inspection of local and global variables,
evaluation of arbitrary expressions, setting breakpoints, stepping through the code
a line at a time, and so on. The debugger is written in Python itself, testifying
to Python's introspective power. On the other hand, often the quickest way to
debug a program is to add a few print statements to the source: the fast edit-
test-debug cycle makes this simple approach very effective.
Tkinter:
The tkinter package (“Tk interface”) is the standard Python interface to the
TCL/Tk GUI toolkit. Both Tk and tkinter are available on most Unix platforms,
including macOS, as well as on Windows systems. Running python -m tkinter
from the command line should open a window demonstrating a simple Tk interface,
letting you know that tkinter is properly installed on your system, and also
showing what version of TCL/Tk is installed, so you can read the TCL/Tk
documentation specific to that version. Tkinter supports a range of TCL/Tk versions,
built either with or without thread support. The official Python binary release
bundles TCL/Tk 8.6 threaded. See the source code for the _tkinter module for
more information about supported versions. Tkinter is not a thin wrapper, but adds a
fair amount of its own logic to make the experience more pythonic. This
documentation will concentrate on these additions and changes, and refer
to the official TCL/Tk documentation for details that are unchanged. The tkinter
package (“Tk interface”) is the standard Python interface to the TCL/Tk GUI toolkit.
Both Tk and tkinter are available on most Unix platforms, including macOS, as well
as on Windows systems.
Running python -m tkinter from the command line should open a window
demonstrating a simple Tk interface, letting you know that tkinter is properly
installed on your system, and also showing what version of Tcl/Tk is installed, so
you can read the Tcl/Tk documentation specific to that version.
Tkinter supports a range of Tcl/Tk versions, built either with or without thread
support. The official Python binary release bundles Tcl/Tk 8.6 threaded. See the
source code for the _tkinter module for more information about supported
versions. Tkinter is not a thin wrapper, but adds a fair amount of its own logic to
make the experience more pythonic. This documentation will concentrate on
these additions and changes, and refer to the official Tcl/Tk documentation for
details that are unchanged. Note Tcl/Tk 8.5 (2007) introduced a modern set
of themed user interface components along with a new API to use them. Both old
and new APIs are still available. Most documentation you will find online still uses
the old API and can be woefully outdated. See also TkDocs Extensive tutorial on
creating user interfaces with Tkinter. Explains key concepts, and illustrates
recommended approaches using the modern API. Tkinter 8.5 reference: a GUI for
Python Reference documentation for Tkinter 8.5 detailing available classes,
methods, and options. Tcl/Tk Resources: Tk commands Comprehensive reference
to each of the underlying Tcl/Tk commands used by Tkinter. Tcl/Tk Home
Page Additional documentation, and links to Tcl/Tk core development. Books:
Modern Tkinter for Busy Python Developers
By Mark Roseman. (ISBN 978-1999149567) Python and Tkinter Programming
Architecture
Tcl/Tk is not a single library but rather consists of a few distinct modules, each
with separate functionality and its own official documentation. Python’s binary
releases also ship an add-on module together with it.
Tcl:
Tcl is a dynamic interpreted programming language, just like Python. Though it
can be used on its own as a general-purpose programming language, it is most
commonly embedded into C applications as a scripting engine or an interface
to the Tk toolkit. The Tcl library has a C interface to create and manage one or
more instances of a Tcl interpreter, run Tcl commands and scripts in those
instances, and add custom commands implemented in either Tcl or C. Each
interpreter has an event queue, and there are facilities to send events to it and
process them. Unlike Python, Tcl’s execution model is designed around
cooperative multitasking, and Tkinter bridges this difference (see Threading
model for details).
Tk :
Tk is a Tcl package implemented in C that adds custom commands to
create and manipulate GUI widgets. Each Tk object embeds its own Tcl
interpreter instance with Tk loaded into it. Tk’s widgets are very customizable,
though at the cost of a dated appearance. Tk uses Tcl’s event queue to generate
and process GUI event.
Ttk:
Themed Tk (Ttk) is a newer family of Tk widgets that provide a much better
appearance on different platforms than many of the classic Tk widgets. Ttk is
distributed as part of Tk, starting with Tk version 8.5. Python bindings are
provided in a separate module tkinter.ttk.
About Database MySQL
Most MySQL is free and open-source software under the terms of the GNU General
Public License, and is also available under a variety of proprietary licenses. MySQL
was owned and sponsored by the Swedish company MySQL AB, which was bought
by Sun Microsystems (now Oracle Corporation) In 2010, when Oracle acquired
Sun, Widenius forked the open-source MySQL project to create MariaDB.
MySQL has stand-alone clients that allow users to interact directly with a MySQL database
using SQL, but more often, MySQL is used with other programs to implement applications that
need relational database capability. MySQL is a component of the LAMP web
application software stack (and others), which is an acronym for Linux, Apache,
MySQL, Perl/PHP/Python. MySQL is used by many database-driven web applications,
including Drupal, Joomla, phpBB, and WordPress. MySQL is also used by many
popular websites, including
Facebook, Flickr, MediaWiki, Twitter, and YouTube.
Source Code & Output
root =Tk()
root.geometry('680x360')
root.title("AUTOMOBILE REPAIRING SYSTEM")
root.configure(background='white')
img = ImageTk.PhotoImage(Image.open("A_Login.png"))
canv.create_image(40,70, anchor=NW,image=img)
def submit_code():
t1=entry_1.get()
t2=entry_2.get()
mycursor=mydb.cursor()
mycursor.execute ("select * from login_tb where loginid='"+t1+"' and pwd =
'"+t2+"' ")
records=mycursor.fetchall()
a=0
for row in records:
a=1
if(a==1):
tkinter.messagebox.showinfo("Message","Login Successfully")
root.destroy();
os.system('python A_Dashboard.py')
else:
tkinter.messagebox.showinfo("Message","Invaild LoginID or Password")
def back():
root.destroy();
label_0=Label(root,text="Login form",width=40,font=("bold",20),bg='white')
label_0.place(x=50,y=32)
label_1=Label(root,text="Login ID",width=20,font=("bold",10),bg='white')
label_1.place(x=300,y=125)
entry_1 = Entry(root)
entry_1.place(x=420,y=125)
label_2=Label(root,text="Password",width=20,font=("bold",10),bg='white')
label_2.place(x=300,y=155)
entry_2=Entry(root,show="*")
entry_2.place(x=420,y=155)
btn_login=Button(root,text='Login',width=10,bg='brown',fg='white',command=submi
t_code)
btn_login.place(x=370,y=200 )
btn_reg=Button(root,text='Exit',width=10,bg='brown',fg='white',command=back)
btn_reg.place(x=490,y=200)
root.mainloop()
def btn_mechanic_code():
root.destroy();
os.system('python A_Mechanic.py')
def btn_service_code():
root.destroy();
os.system('python A_Service.py')
def btn_workentry_code():
root.destroy();
os.system('python A_Workentry.py')
def btn_workdone_code():
root.destroy();
os.system('python A_Workdone.py')
def btn_report_code():
root.destroy();
os.system('python A_Report.py')
def btn_logout_code():
root.destroy();
os.system('python A_Login.py')
def create_frame():
welcome_fm=Frame(root,width=600,height=436,bg='white',highlightbackground=bg
_color,highlightthickness=3)
welcome_fm.place(x=20,y=20)
bg_color='red'
fg_color='white'
root = Tk()
root.title('AUTOMOBILE REPAIRING SYSTEM')
root.geometry('640x480')
root.configure(background='white')
create_frame()
root.mainloop()
def btn_back_code():
root.destroy();
os.system('python A_Dashboard.py')
def create_frame():
def btn_new_code():
mycursor=mydb.cursor()
mycursor.execute("select count(mech_id) from mechanic_tb")
records=mycursor.fetchall()
c=0
for row in records:
c=int(str(row[0]))
c=c+1201
entry_1.delete(0, END)
entry_1.insert(0,str(c))
def btn_insert_code():
t1=entry_1.get()
t2=entry_2.get()
t3=entry_3.get()
t4=entry_4.get()
t5=entry_5.get()
t6=entry_6.get()
t7=entry_7.get()
t8=entry_8.get()
mycursor=mydb.cursor()
mycursor.execute("insert into mechanic_tb
values('"+t1+"','"+t2+"','"+t3+"','"+t4+"','"+t5+"','"+t6+"','"+t7+"','"+t8+"')")
mydb.commit()
tkinter.messagebox.showinfo("Message","Mechanic Added Successfully")
clear_code()
def clear_code():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_3.delete(0, END)
entry_4.delete(0, END)
entry_5.delete(0, END)
entry_6.delete(0, END)
entry_7.delete(0, END)
entry_8.delete(0, END)
welcome_fm=Frame(root,width=900,height=440,bg='white',highlightbackground=bg
_color,highlightthickness=3)
headline_lb=Label(welcome_fm,text='MECHANIC FORM',font='bold
15',bg=bg_color,fg=fg_color)
headline_lb.place(x=0,y=0,width=900)
btn_account=Button(welcome_fm,text='NEW MECHANIC',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_new_code)
btn_account.place(x=100,y=140)
btn_account=Button(welcome_fm,text='SAVE MECHANIC',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_insert_code)
btn_account.place(x=100,y=200)
btn_account=Button(welcome_fm,text='BACK DASHBOARD',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_back_code)
btn_account.place(x=100,y=260)
#-----------------------Row 1--------------------------------------------------------
label_1=Label(welcome_fm,text="Mechanic
ID",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=80)
entry_1=Entry(welcome_fm,highlightthickness=1,width=28)
entry_1.place(x=400,y=105)
entry_1.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_2=Label(welcome_fm,text="Mechanic
Name",width=20,anchor='w',font=("bold",12),bg='white').place(x=640,y=80)
entry_2=Entry(welcome_fm,highlightthickness=1,width=28)
entry_2.place(x=640,y=105)
entry_2.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 2--------------------------------------------------------
label_3=Label(welcome_fm,text="Email
ID",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=150)
entry_3=Entry(welcome_fm,highlightthickness=1,width=28)
entry_3.place(x=400,y=175)
label_4=Label(welcome_fm,text="Phone
No",width=20,anchor='w',font=("bold",12),bg='white').place(x=640,y=150)
entry_4=Entry(welcome_fm,highlightthickness=1,width=28)
entry_4.place(x=640,y=175)
entry_4.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 3--------------------------------------------------------
label_5=Label(welcome_fm,text="Address",width=20,anchor='w',font=("bold",12),b
g='white').place(x=400,y=220)
entry_5=Entry(welcome_fm,highlightthickness=1,width=28)
entry_5.place(x=400,y=245)
entry_5.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_6=Label(welcome_fm,text="Experience",width=20,anchor='w',font=("bold",12)
,bg='white').place(x=640,y=220)
entry_6=Entry(welcome_fm,highlightthickness=1,width=28)
entry_6.place(x=640,y=245)
entry_6.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 4--------------------------------------------------------
label_7=Label(welcome_fm,text="Salary",width=20,anchor='w',font=("bold",12),bg=
'white').place(x=400,y=290)
entry_7=Entry(welcome_fm,highlightthickness=1,width=28)
entry_7.place(x=400,y=315)
entry_7.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_8=Label(welcome_fm,text="About
Mechanic",width=20,anchor='w',font=("bold",12),bg='white').place(x=640,y=290)
entry_8=Entry(welcome_fm,highlightthickness=1,width=28)
entry_8.place(x=640,y=315)
entry_8.config(highlightbackground = "grey", highlightcolor= entry_border_color)
welcome_fm.place(x=20,y=20)
bg_color='red'
fg_color='white'
entry_border_color='red'
root = Tk()
root.title('AUTOMOBILE REPAIRING SYSTEM')
root.geometry('940x480')
root.configure(background='white')
create_frame()
root.mainloop()
def create_frame():
def get_mechenic_code():
mydb=mysql.connector.connect(host="localhost",user="root",passwd="",database="a
utomobilereparining_db")
mycursor=mydb.cursor()
mycursor.execute("select name from mechanic_tb")
records=mycursor.fetchall()
acc_no=['Select Mechanic']
for row in records:
acc_no.append(str(row[0]))
combo_11['values'] = acc_no
def btn_new_code():
mycursor=mydb.cursor()
mycursor.execute("select count(work_id) from worksheet_tb")
records=mycursor.fetchall()
c=0
for row in records:
c=int(str(row[0]))
c=c+1201
entry_1.delete(0, END)
entry_1.insert(0,str(c))
entry_2.delete(0, END)
dt=datetime.today().strftime('%d-%m-%Y')
entry_2.insert(0,str(dt))
def btn_insert_code():
t1=entry_1.get()
t2=entry_2.get()
t3=entry_3.get()
t4=entry_4.get()
t5=entry_5.get()
t6=entry_6.get()
t7=entry_7.get()
t8=entry_8.get()
t9=entry_9.get()
t10=entry_10.get()
t11=combo_11.get()
mycursor=mydb.cursor()
mycursor.execute("insert into worksheet_tb
values('"+t1+"','"+t2+"','"+t3+"','"+t4+"','"+t5+"','"+t6+"','"+t7+"','"+t8+"','"+t9+"','"+t
10+"','"+t11+"','','','Pending')")
mydb.commit()
tkinter.messagebox.showinfo("Message","Details Added Successfully")
clear_code()
def clear_code():
entry_1.delete(0, END)
entry_2.delete(0, END)
entry_3.delete(0, END)
entry_4.delete(0, END)
entry_5.delete(0, END)
entry_6.delete(0, END)
entry_7.delete(0, END)
entry_8.delete(0, END)
entry_9.delete(0, END)
entry_10.delete(0, END)
combo_11.current(0)
welcome_fm=Frame(root,width=900,height=520,bg='white',highlightbackground=bg
_color,highlightthickness=3)
headline_lb=Label(welcome_fm,text='WORK-ENTRY FORM',font='bold
15',bg=bg_color,fg=fg_color)
headline_lb.place(x=0,y=0,width=900)
btn_account=Button(welcome_fm,text='NEW WORK',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_new_code)
btn_account.place(x=100,y=150)
btn_account=Button(welcome_fm,text='SAVE WORK',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_insert_code)
btn_account.place(x=100,y=250)
btn_account=Button(welcome_fm,text='BACK DASHBOARD',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_back_code)
btn_account.place(x=100,y=350)
#-----------------------Row 1--------------------------------------------------------
label_1=Label(welcome_fm,text="Work
ID",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=80)
entry_1=Entry(welcome_fm,highlightthickness=1,width=28)
entry_1.place(x=400,y=105)
entry_1.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_2=Label(welcome_fm,text="Checkin
Date",width=20,anchor='w',font=("bold",12),bg='white').place(x=640,y=80)
entry_2=Entry(welcome_fm,highlightthickness=1,width=28)
entry_2.place(x=640,y=105)
entry_2.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 2--------------------------------------------------------
label_3=Label(welcome_fm,text="Manufacturers",width=20,anchor='w',font=("bold",
12),bg='white').place(x=400,y=150)
entry_3=Entry(welcome_fm,highlightthickness=1,width=28)
entry_3.place(x=400,y=175)
entry_3.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_4=Label(welcome_fm,text="Model",width=20,anchor='w',font=("bold",12),bg=
'white').place(x=640,y=150)
entry_4=Entry(welcome_fm,highlightthickness=1,width=28)
entry_4.place(x=640,y=175)
entry_4.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 3--------------------------------------------------------
label_5=Label(welcome_fm,text="Registration
No",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=220)
entry_5=Entry(welcome_fm,highlightthickness=1,width=28)
entry_5.place(x=400,y=245)
entry_5.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_6=Label(welcome_fm,text="Fuel
Type",width=20,anchor='w',font=("bold",12),bg='white').place(x=640,y=220)
entry_6=Entry(welcome_fm,highlightthickness=1,width=28)
entry_6.place(x=640,y=245)
entry_6.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 4--------------------------------------------------------
label_7=Label(welcome_fm,text="Owner
Name",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=290)
entry_7=Entry(welcome_fm,highlightthickness=1,width=28)
entry_7.place(x=400,y=315)
entry_7.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_8=Label(welcome_fm,text="Contact
No",width=20,anchor='w',font=("bold",12),bg='white').place(x=640,y=290)
entry_8=Entry(welcome_fm,highlightthickness=1,width=28)
entry_8.place(x=640,y=315)
entry_8.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 5--------------------------------------------------------
label_9=Label(welcome_fm,text="Email",width=20,anchor='w',font=("bold",12),bg='
white').place(x=400,y=360)
entry_9=Entry(welcome_fm,highlightthickness=1,width=28)
entry_9.place(x=400,y=385)
entry_9.config(highlightbackground = "grey", highlightcolor= entry_border_color)
label_10=Label(welcome_fm,text="Address",width=20,anchor='w',font=("bold",12),
bg='white').place(x=640,y=360)
entry_10=Entry(welcome_fm,highlightthickness=1,width=28)
entry_10.place(x=640,y=385)
entry_10.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 6--------------------------------------------------------
label_11=Label(welcome_fm,text="Mechanic
Name",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=430)
combo_11=ttk.Combobox(state="readonly",values=["Select Mechanic"],width=25)
combo_11.current(0)
combo_11.place(x=425,y=478)
get_mechenic_code()
welcome_fm.place(x=20,y=20)
bg_color='red'
fg_color='white'
entry_border_color='red'
root = Tk()
root.title('AUTOMOBILE REPAIRING SYSTEM')
root.geometry('940x560')
root.configure(background='white')
create_frame()
root.mainloop()
def btn_back_code():
root.destroy();
os.system('python A_Dashboard.py')
def create_frame():
def get_work_code():
mycursor=mydb.cursor()
mycursor.execute("select work_id from worksheet_tb where status='Pending'")
records=mycursor.fetchall()
acc_no=['Select Work ID']
for row in records:
acc_no.append(str(row[0]))
combo_1['values'] = acc_no
entry_13.delete(0, END)
dt=datetime.today().strftime('%d-%m-%Y')
entry_13.insert(0,str(dt))
def get_workdetail_code():
t1=combo_1.get()
mycursor=mydb.cursor()
mycursor.execute("select * from worksheet_tb where work_id='"+t1+"'")
records=mycursor.fetchall()
for row in records:
entry_2['text']=str(row[1])
entry_3['text']=str(row[2])
entry_4['text']=str(row[3])
entry_5['text']=str(row[4])
entry_6['text']=str(row[5])
entry_7['text']=str(row[6])
entry_8['text']=str(row[7])
entry_9['text']=str(row[8])
entry_10['text']=str(row[9])
entry_11['text']=str(row[10])
def btn_insert_code():
t1=combo_1.get()
t12=entry_12.get()
t13=entry_13.get()
mycursor=mydb.cursor()
mycursor.execute("update worksheet_tb set
services='"+t12+"',handover_date='"+t13+"',status='Complete' where
work_id='"+t1+"' ")
mydb.commit()
tkinter.messagebox.showinfo("Message","Details Added Successfully")
clear_code()
def clear_code():
combo_1.current(0)
entry_2.delete(0, END)
entry_3.delete(0, END)
entry_4.delete(0, END)
entry_5.delete(0, END)
entry_6.delete(0, END)
entry_7.delete(0, END)
entry_8.delete(0, END)
entry_9.delete(0, END)
entry_10.delete(0, END)
entry_11.delete(0, END)
welcome_fm=Frame(root,width=900,height=600,bg='white',highlightbackground=bg
_color,highlightthickness=3)
headline_lb=Label(welcome_fm,text='WORK-DONE FORM',font='bold
15',bg=bg_color,fg=fg_color)
headline_lb.place(x=0,y=0,width=900)
btn_account=Button(welcome_fm,text='GET WORK DETAIL',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=get_workdetail_code)
btn_account.place(x=100,y=220)
btn_account=Button(welcome_fm,text='WORK DONE',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_insert_code)
btn_account.place(x=100,y=320)
btn_account=Button(welcome_fm,text='BACK DASHBOARD',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_back_code)
btn_account.place(x=100,y=420)
#-----------------------Row 1--------------------------------------------------------
label_1=Label(welcome_fm,text="Work
ID",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=80)
combo_1=ttk.Combobox(state="readonly",values=["Select Work ID"],width=25)
combo_1.current(0)
combo_1.place(x=422,y=128)
label_2=Label(welcome_fm,text="Checkin
Date",width=20,fg='gray',anchor='w',font=("bold",12),bg='white').place(x=640,y=80)
entry_2=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_2.place(x=640,y=105)
#-----------------------Row 2--------------------------------------------------------
label_3=Label(welcome_fm,text="Manufacturers",width=20,fg='gray',anchor='w',fon
t=("bold",12),bg='white').place(x=400,y=150)
entry_3=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_3.place(x=400,y=175)
label_4=Label(welcome_fm,text="Model",width=20,fg='gray',anchor='w',font=("bold
",12),bg='white').place(x=640,y=150)
entry_4=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_4.place(x=640,y=175)
#-----------------------Row 3--------------------------------------------------------
label_5=Label(welcome_fm,text="Registration
No",width=20,fg='gray',anchor='w',font=("bold",12),bg='white').place(x=400,y=220)
entry_5=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_5.place(x=400,y=245)
label_6=Label(welcome_fm,text="Fuel
Type",width=20,fg='gray',anchor='w',font=("bold",12),bg='white').place(x=640,y=22
0)
entry_6=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_6.place(x=640,y=245)
#-----------------------Row 4--------------------------------------------------------
label_7=Label(welcome_fm,text="Owner
Name",width=20,fg='gray',anchor='w',font=("bold",12),bg='white').place(x=400,y=29
0)
entry_7=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_7.place(x=400,y=315)
label_8=Label(welcome_fm,text="Contact
No",width=20,fg='gray',anchor='w',font=("bold",12),bg='white').place(x=640,y=290)
entry_8=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_8.place(x=640,y=315)
#-----------------------Row 5--------------------------------------------------------
label_9=Label(welcome_fm,text="Email",width=20,fg='gray',anchor='w',font=("bold
",12),bg='white').place(x=400,y=360)
entry_9=Label(welcome_fm,text="______________",width=20,anchor='w',font=("bo
ld",12),bg='white')
entry_9.place(x=400,y=385)
label_10=Label(welcome_fm,text="Address",width=20,fg='gray',anchor='w',font=("b
old",12),bg='white').place(x=640,y=360)
entry_10=Label(welcome_fm,text="______________",width=20,anchor='w',font=("b
old",12),bg='white')
entry_10.place(x=640,y=385)
#-----------------------Row 6--------------------------------------------------------
label_11=Label(welcome_fm,text="Mechanic
Name",width=20,fg='gray',anchor='w',font=("bold",12),bg='white').place(x=400,y=43
0)
entry_11=Label(welcome_fm,text="______________",width=20,anchor='w',font=("b
old",12),bg='white')
entry_11.place(x=400,y=455)
label_12=Label(welcome_fm,text="Services",width=20,anchor='w',font=("bold",12),
bg='white').place(x=640,y=430)
entry_12=Entry(welcome_fm,highlightthickness=1,width=28)
entry_12.place(x=640,y=455)
entry_12.config(highlightbackground = "grey", highlightcolor= entry_border_color)
#-----------------------Row 7--------------------------------------------------------
label_13=Label(welcome_fm,text="Handover
Date",width=20,anchor='w',font=("bold",12),bg='white').place(x=400,y=500)
entry_13=Entry(welcome_fm,highlightthickness=1,width=28)
entry_13.place(x=400,y=525)
entry_13.config(highlightbackground = "grey", highlightcolor= entry_border_color)
get_work_code()
welcome_fm.place(x=20,y=20)
bg_color='red'
fg_color='white'
entry_border_color='red'
root = Tk()
root.title('AUTOMOBILE REPAIRING SYSTEM')
root.geometry('940x640')
root.configure(background='white')
create_frame()
root.mainloop()
def btn_reportmechanic_code():
root.destroy();
os.system('python A_ReportMechanic.py')
def btn_reportservice_code():
root.destroy();
os.system('python A_ReportService.py')
def btn_reportworkentry_code():
root.destroy();
os.system('python A_ReportWorkentry.py')
def btn_back_code():
root.destroy();
os.system('python A_Dashboard.py')
def create_frame():
welcome_fm=Frame(root,width=600,height=400,bg='white',highlightbackground=bg
_color,highlightthickness=3)
headline_lb=Label(welcome_fm,text='REPORT SECTION',font='bold
15',bg=bg_color,fg=fg_color)
headline_lb.place(x=0,y=0,width=600)
btn_account=Button(welcome_fm,text='MECHANIC REPORT',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_reportmechanic_code)
btn_account.place(x=350,y=100)
btn_transaction=Button(welcome_fm,text='SERVICES
REPORT',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_reportservice_code)
btn_transaction.place(x=350,y=160)
btn_report=Button(welcome_fm,text='WORKSHEET
REPORT',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_reportworkentry_code)
btn_report.place(x=350,y=220)
btn_logout=Button(welcome_fm,text=' BACK TO
DASHBOARD',width=22,font='bold
13',bg=bg_color,fg=fg_color,command=btn_back_code)
btn_logout.place(x=350,y=280)
welcome_fm.place(x=20,y=20)
bg_color='red'
fg_color='white'
root = Tk()
root.title('AUTOMOBILE REPAIRING SYSTEM')
root.geometry('640x450')
root.configure(background='white')
create_frame()
root.mainloop()
def btn_back_code():
root.destroy();
os.system('python A_Report.py')
def create_frame():
def get_transaction_code():
mycursor=mydb.cursor()
mycursor.execute("select ser_id,service,charge,description from Service_tb")
records=mycursor.fetchall()
for row in records:
tree.insert("", END, values=row)
welcome_fm=Frame(root,width=760,height=600,bg='white',highlightbackground=bg
_color,highlightthickness=3)
welcome_fm.place(x=20,y=20)
bg_color='red'
fg_color='white'
entry_border_color='red'
root = Tk()
root.title('AUTOMOBILE REPAIRING SYSTEM')
root.geometry('800x640')
root.configure(background='white')
create_frame()
root.mainloop()
User Interface / Output
Login Page:-
Dashboard Page:-
Mechanic Page:-
Service Page:-
Work Entry Page:-
Work-Done Page:-
Report Page:-
Mechanic Report:-
Work entry Report:-
Conclusion
The main goals and objectives of the study was to create a dynamic
application in order to assist in the management of customers records and
help to find a required details in a shop by using modern technology.
[1] https://stackoverflow.com/
[2]https://google.com/
[3]https://www.mysql.org/
[4]]https://www.python.org/
[5] https://pypi.org/project/customtkinter/0.3/