Updated Master Copy
Updated Master Copy
Project Name
CONTENTS
1. Acknowledgement
2. Abstract
3. Introduction.
4. Objective
5. Literature Survey
5.1 Existing System.
5.2 Proposed System.
6. Requirement Specification
6.1 Software Requirement(Tools)
6.2 Hardware Requirement
6.3 Languages using
7. Design
7.1 Architecture Diagram
7.2 Dataflow Diagram
7.3 Use case Diagram
7.4 Sequence Diagram
7.5 E-R Diagram
8) Modules Used
8.1) Admin
8.2) Client
9) Implementation code ‘
9.1)
9.2)
9.3)
10) Testing
10.1) Why Testing
10.2) Types of testing
10.2.1) Unit Testing
10.2.2) Integration Testing
10.2.3)Functional Testing
10.2.4) System testing
10.2.5)White Box Testing
10.2.6)Black Box Testing
11) Advantage
12) Conclusion
ACKNOWLEDGEMENT
DESIGN
A DFD usually comprises of four components. These four components can be represented by
four simple symbols. These symbols can be explained in detail as follows: External entities
(source/destination of data) are represented by squares; Processes (input-processing-output)
are represented by rectangles with rounded corners; Data Flows (Physical or electronic data)
are represented by arrows; and finally, Data Stores (physical or electronic like XML files) are
represented by open-ended rectangles.
A data store stores data passively for later access. A data store responds to requests to store
and access data. It does not generate any operations.
A data store allows values to be accessed in an order different from the order in which they
were generated.
Input flows indicate information or operations that modify the stored data such as adding or
deleting elements or changing values. Output flows indicate information retrieved from the
store; this information can be an entire value or a component of a value.
Data flow
A data flow moves data between processes or between processes and data stores. As such, it
represents a data value at some point within a computation and an intermediate value within a
computation if the flow is internal to the diagram. This value is not changed. The names of
input and output flows can indicate their roles in the computation or the type of the value they
move. Data names are preferably nouns. The name of a typical piece of data, the data aspect,
is written alongside the arrow.
Data Process
Or
A process shows a transformation or manipulation of data flows within the system. The
symbol used is rounded rectangle or oval. A descriptive title is placed in the centre of the
circle.This should be a simple imperative sentence with a specific verb, for example
'maintain customer records' or 'find driver'. E.g.: May be a clerk computing discounts or a
combination of manual and electronic activities.
Source or Sink
Or
An external entity is a source or destination of a data flow which is outside the area of study.
The symbol used is a rectangle or square containing a meaningful and unique identifier.
Only those entities which originate or receive data are represented on a business process
diagram E.g.: May be one customer or a number of customers with transactions (orders).
Processes should be named and numbered for easy reference. Each name should be
representative of the process.
The direction of flow is from top to bottom and from left to right. Data traditionally
flow from the source (upper left corner) to the destination although they may flow
back to a source. One way to indicate this is to repeat the source symbol as a
destination. Since it is used more than once in the DFD, it is marked with a short
diagonal in the lower right corner.
When a process is exploded into the lower-level details, they are numbered.
The names of data stores, sources and destinations are written in capital letters.
Process and data flow names have the first letter of each word capitalized.
DATAFLOW DIAGRAMS:
Level-0:
Admin
User
Kitchen
order
ticket
Staff
Owner
Admin
Add chef
Customer:
If items to change
Cancel order
order
View bill
logout
Staff:
staff
order
Cancel order
Change password
View bill
logout
SOFTWARE LANGUEGE USED
HTML 5
It is next version of 4.5 with advanced features like in-built plug-in auto-resizing, multiple
platform support and rich java script engine.
Hyper Text Mark-up Language, commonly referred to as HTML, is the standard mark-up
language used to create webpages. Along with CSS and JavaScript, HTML is a cornerstone
technology used to create web pages as well as to create user interfaces for mobile and web
applications. Web browsers can read HTML files and render them into visible or audible web
pages. HTML describes the structure of a website semantically pages. HTML describes the
structure of a programming language.
HTML elements form the building blocks of HTML pages. HTML allows images and other
objects to be embedded and it can be used to create interactive forms. It provides a means to
create structured documents by denoting structural semantics for text such as headings,
paragraphs, lists, links, quotes and other items. HTML elements are delineated by tags,
written using angle brackets. Tags such as <img /> and <input /> introduce content into the
page directly. Others such as <p>...</p> surround and provide information about document
text and may include other tags as sub-elements. Browsers do not display the HTML tags, but
use them to interpret the content of the page.
HTML can embed scripts written in languages such as Java scripts which affect the behaviour
of HTML web pages. HTML markup can also refer the browser to Cascading Style Sheets
(CSS) to define the look and layout of text and other material.
The WORLD WIDE WEB CONSORTIUM (W3C), maintainer of both the HTML and the
CSS standards, has encouraged the use of CSS over explicit presentational HTML since
1997.
HTML is a markup language that web browsers use to interpret and compose text, images,
and other material into visual or audible web pages. Default characteristics for every item of
HTML markup are defined in the browser, and these characteristics can be altered or
enhanced by the web page designer's additional use of CSS. . Many of the text elements are
found in the 1988 ISO technical report TR 9537 Techniques for using SGML, which in turn
covers the features of early text formatting languages such as that used by the RUNOFF
command developed in the early 1960s for the CTSS (Compatible Time-Sharing System)
operating system: these formatting commands were derived from the commands used by
typesetters to manually format documents. However, the SGML concept of generalized
markup is based on elements (nested annotated ranges with attributes) rather than merely
print effects, with also the separation of structure and markup; HTML has been progressively
moved in this direction with CSS
It is the mark-up "code" that is read by web browsers like Internet Explorer, Firefox, Safari,
etc., either as straight HTML or a newer, XML version of HTML called XHTML. The
differences between these versions are beyond the scope of these notes. All the "experts"
can't even seem to agree when you can or should use XHTML. Just know that if you use
either, any web browser will be able to display your pages for some time to come. I will use
both, but try to emphasize XHTML, because it makes your pages ready for stuff we haven't
thought up yet.
The html extension is what turns a regular text file into an HTML file. It only needs to be
added at the time you create the file, once it's made simply save the file each time you edit the
code. Save your file in a folder where you can easily find it.
The saved code can be opened and edited from within the text editor (make sure that "All
Files" is selected from the drop-down menu in the editor's dialog box).
To open the webpage in your browser simply go to the folder in which it is saved and click
on the webpage icon.
FEATURES OF HTML:
It is not a programming language.
It is not a data description language.
It is simple to understand and implement.
HTML constructs are very easy to comprehend, and can be used effectively by
anybody.
The methodology used by HTML to mark up information is independent of its
representation on a particular hardware or software architecture.
HTML syntax is a worldwide standard.
.
MYSQL
Structured Query Language (SQL) is the language used to manipulate relational databases.
SQL is tied very closely with the relational model.
JAVASCRIPT
Java script is a fairly simple language which is only suitable for fairly simple tasks. The
language is best suited to tasks which run for a short time and is most commonly used to
manipulate the pieces of the document object model. The idea behind finding JavaScript is to
find a language which could be used to provide client-side in-browser applications but which
was not as complicated as Java.
JavaScript is Netscape's cross-platform, object-oriented scripting language. Core JavaScript
contains a core set of objects, such as Array, Date, and Math, and a core set of language
elements such as operators, control structures, and statements. It is mainly used here for
validation purpose.
BENEFITS OF JAVASCRIPT:
JavaScript has a number of benefits to anyone who wants to make their Web site dynamic.
It is widely supported in Web browsers.
It gives easy access to the document objects and can manipulate most of them.
JavaScript can give interesting animations without the long download times
associated with many multimedia data types.
PYTHON
Python is a widely used high-level programming language known for its simplicity,
readability, and versatility. Created by Guido van Rossum and first released in 1991, Python
has grown to become one of the most popular programming languages, with a large and
active community of developers.
Easy-to-Read Syntax: Python's syntax is designed to be clear and concise, making it easy
for both beginners and experienced developers to read and understand code.
Dynamic Typing: Python is dynamically typed, meaning variable types are determined at
runtime, allowing for flexibility in coding.
Extensive Standard Library: Python comes with a rich standard library that provides a
wide range of modules and packages for various tasks, such as file I/O, networking, data
manipulation, and more.
Large Community and Ecosystem: Python has a vast and active community of developers,
which has contributed to an extensive ecosystem of third-party libraries, frameworks, and
tools that enhance Python's capabilities.
Data Science and Analytics: Python's data manipulation libraries like NumPy, Pandas, and
SciPy, along with visualization tools like Matplotlib and Seaborn, make it a preferred choice
for data analysis, machine learning, and scientific computing.
Automation and Scripting: Python's ease of use and powerful standard library make it an
excellent choice for automating repetitive tasks and scripting.
GUI Development: Python supports various GUI libraries like Tkinter, PyQt, and wxPython,
enabling developers to create graphical user interfaces for desktop applications.
Game Development: Python is used for game development, often in combination with
popular gaming libraries like Pygame.
Networking: Python's built-in networking libraries, such as socket and requests, make it
suitable for developing network-based applications.
Artificial Intelligence and Natural Language Processing: Python is widely used in AI and
NLP applications, leveraging libraries like TensorFlow, Keras, and NLTK.
In summary, Python's simplicity, versatility, and extensive community support have made it a
go-to language for a wide range of applications, from web development to data science and
beyond. Its continued growth and popularity ensure that Python will remain a significant
player in the world of programming for years to come..
DJANGO
Django is a high-level web framework written in Python that follows the Model-View-
Controller (MVC) architectural pattern. It provides a robust and efficient toolkit for building
web applications rapidly and securely. Developed by Django Software Foundation and
released in 2005, Django has since become one of the most popular web frameworks in the
Python ecosystem.
Admin Interface: Django comes with a powerful built-in admin interface. It automatically
generates an admin interface for managing site content and data, making it easy for
developers to handle tasks like data entry, content management, and user management
without writing additional code.
URL Routing: Django's URL dispatcher helps map URLs to appropriate views, making it
easy to define URL patterns and direct user requests to the corresponding view functions.
Form Handling: Django provides form handling capabilities to simplify the process of
creating and validating HTML forms. It includes built-in form classes that assist in rendering
forms and processing user input.
Security Features: Django emphasizes security best practices and provides built-in features
like protection against common web vulnerabilities (e.g., Cross-Site Scripting, Cross-Site
Request Forgery), secure password management, and user authentication.
Web Development: Django is primarily used for building web applications and websites. Its
robust features and rapid development capabilities make it suitable for projects of various
sizes and complexities.
Content Management Systems (CMS): Django's admin interface and flexible database
models make it an excellent choice for building custom content management systems.
E-commerce Platforms: Many e-commerce websites use Django due to its efficient
handling of data models, user authentication, and session management.
Social Media Platforms: Django's user authentication and data management features make it
well-suited for creating social media platforms and community-driven websites.
Backend Services: Django can be used to build RESTful APIs and backend services to
support mobile applications and other client-side applications.
In conclusion, Django's clean design, powerful features, and focus on productivity make it an
ideal choice for developers looking to build robust and scalable web applications. Its active
community, extensive documentation, and large number of third-party packages contribute to
its popularity and continued growth in the web development ecosystem.
Code
Setings.py
"""
Django settings for jobprovider project.
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'jobseeker',
]
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'jobprovider.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'jobprovider.wsgi.application'
# Database
# https://docs.djangoproject.com/en/4.2/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'portal',
'USER': 'root',
'PASSWORD': '',
'HOST': '127.0.0.1',
'PORT': '3306',
}
}
# Password validation
# https://docs.djangoproject.com/en/4.2/ref/settings/#auth-password-validators
AUTH_PASSWORD_VALIDATORS = [
{
'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
},
{
'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
},
]
# Internationalization
# https://docs.djangoproject.com/en/4.2/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_TZ = True
DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField'
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
Urls.py
"""
URL configuration for jobprovider project.
The `urlpatterns` list routes URLs to views. For more information please see:
https://docs.djangoproject.com/en/4.2/topics/http/urls/
Examples:
Function views
1. Add an import: from my_app import views
2. Add a URL to urlpatterns: path('', views.home, name='home')
Class-based views
1. Add an import: from other_app.views import Home
2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
Including another URLconf
1. Import the include() function: from django.urls import include, path
2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
"""
urlpatterns = [
path('admin/', admin.site.urls),
path('',views.showindex,name='showindex'),
path('insertstaff',views.insertstaff,name='insertstaff'),
path('insertrounds',views.insertrounds,name='insertrounds'),
path('insertjobprovider1',views.insertjobprovider1,name='insertjobprovider1'),
path('insertjobseeker',views.insertjobseeker,name='insertjobseeker'),
path('insertjob',views.insertjob,name='insertjob'),
path('insertreviews',views.insertreviews,name='insertreviews'),
path('insertmessage',views.insertmessage,name='insertmessage'),
path('insertselection',views.insertselection,name='insertselection'),
path('insertjobdetails',views.insertjobdetails,name='insertjobdetails'),
path('showlogin',views.showlogin,name='showlogin'),
path('logcheck',views.logcheck,name='logcheck'),
path('changepassword',views.changepassword,name='changepassword'),
path('showstaff',views.showstaff,name='showstaff'),
path('showjobprovider1',views.showjobprovider1,name='showjobprovider1'),
path('showjobseeker',views.showjobseeker,name='showjobseeker'),
path('showjob',views.showjob,name='showjob'),
path('showreviews',views.showreviews,name='showreviews'),
path('showmessage',views.showmessage,name='showmessage'),
path('showrounds', views.showrounds, name='showrounds'),
path('showselection', views.showselection, name='showselection'),
path('showjobdetails', views.showjobdetails,name='showjobdetails'),
path('insertapply',views.insertapply,name='insertapply'),
path('insertdocument',views.insertdocument,name='insertdocument'),
if settings.DEBUG:
urlpatterns += static(settings.MEDIA_URL,document_root=settings.MEDIA_ROOT)
def showlogin(request):
return render(request,"login.html")
def logcheck(request):
if request.method=="POST":
username=request.POST.get("t1")
password = request.POST.get("t2")
count=userlogin.objects.filter(username=username).count()
if count>=1:
udata=userlogin.objects.get(username=username)
request.session['username'] = username
upass=udata.password
utype=udata.utype
if upass==password:
if utype=='jobseeker':
return render(request,'jobseeker_home.html')
if utype=='jobprovider':
return render(request,'jobprovider_home.html')
if utype=='staff':
return render(request,'staff_home.html')
else:
return render(request,'login.html',{'msg':'invalid password'})
else:
return render(request, 'login.html', {'msg': 'invalid username'})
return render(request,'login.html',{'msg':'ok'})
def changepassword(request):
uname=request.session['username']
if request.method == 'POST':
currentpass = request.POST.get('t1', '')
newpass = request.POST.get('t2', '')
confirmpass = request.POST.get('t3', '')
ucheck = userlogin.objects.filter(username=uname).values()
for a in ucheck:
u = a['username']
p = a['password']
if u == uname and currentpass == p:
if newpass == confirmpass:
userlogin.objects.filter(username=uname).update(password=newpass)
base_url=reverse('logcheck')
msg='password has been changed successfully'
return redirect(base_url,msg=msg)
else:
return render(request, 'changepassword.html',{'msg': 'both the usename and
password are incorrect'})
else:
return render(request, 'changepassword.html',{'msg': 'invalid username'})
return render(request, 'changepassword.html')
def insertstaff(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
s6 = request.POST.get("t6")
s7 = request.POST.get("t7")
staff.objects.create(staffid=s1,name=s2,email=s3,password=s4,contact=s5,usertype=s6,create
dat=s7)
p = staff.objects.all().order_by('id').last()
pid = int(p.staffid)+1
return render(request,"staffinfo.html",{'pid':pid})
p = staff.objects.all().order_by('id').last()
pid = int(p.staffid) + 1
return render(request, "staffinfo.html", {'pid': pid})
def showstaff(request):
userdict=staff.objects.all()
return render(request, "viewstaffinfo.html",{'userdict':userdict})
def staff_del(request,pk):
id=staff.objects.get(id=pk)
id.delete()
udata=staff.objects.all()
return render(request,'viewstaffinfo.html',{'udata':udata})
def insertrounds(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
roundsdetails.objects.create(companyid=s1,roundname=s2,details=s3,jobid=s4)
return render(request,"roundsinfo.html")
return render(request, "roundsinfo.html")
def showrounds(request):
userdict=roundsdetails.objects.all()
return render(request, "viewroundsinfo.html",{'userdict':userdict})
def rounds_del(request,pk):
id=roundsdetails.objects.get(id=pk)
id.delete()
udata=roundsdetails.objects.all()
return render(request,'viewroundsinfo.html',{'udata':udata})
def insertjobprovider1(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
s6 = request.POST.get("t6")
s7 = request.POST.get("t7")
s8 = request.POST.get("t8")
jobprovider1.objects.create(jobproviderid=s1,userid=s2,companyname=s3,companywebsite=
s4,companylogo=s5,industry=s6,location=s7,createdat=s8)
p = jobprovider1.objects.all().order_by('id').last()
pid = int(p.jobproviderid) + 1
return render(request, "jobprovider1info.html", {'pid': pid})
p = jobprovider1.objects.all().order_by('id').last()
pid = int(p.jobproviderid) + 1
return render(request, "jobprovider1info.html", {'pid': pid})
def insertapply(request):
uname = request.session['username']
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
today = date.today()
jobapply.objects.create(userid=uname,jobid=s1,companyid=s2,jobtype=s3,applydate=today,s
tatus='New')
def showjobprovider1(request):
userdict=jobprovider1.objects.all()
return render(request, "viewjobprovider1info.html",{'userdict':userdict})
def jobprovider1_del(request,pk):
id=(jobprovider1.objects.get(id=pk))
id.delete()
udata=jobprovider1.objects.all()
return render(request,'viewjobprovider1info.html',{'udata':udata})
def insertjobseeker(request):
if request.method=="POST" and request.FILES['myfile']:
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
myfile = request.FILES['myfile']
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
s6 = request.POST.get("t6")
s7 = request.POST.get("t7")
jobseeker.objects.create(seekerid=s1,userid=s2,resumeupload=myfile,skills=s4,exeperience=
s5,education=s6,createdat=s7)
p = jobseeker.objects.all().order_by('id').last()
pid = int(p.seekerid) + 1
return render(request, "jobseekerinfo.html", {'pid': pid})
p = jobseeker.objects.all().order_by('id').last()
pid = int(p.seekerid) + 1
return render(request, "jobseekerinfo.html", {'pid': pid})
def insertdocument(request):
uname = request.session['username']
if request.method=="POST" and request.FILES['myfile']:
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
myfile = request.FILES['myfile']
documents.objects.create(seekerid=s1,docname=s2,file=myfile)
def showjobseeker(request):
userdict=jobseeker.objects.all()
return render(request, "viewjobseekerinfo.html",{'userdict':userdict})
def jobseeker_del(request,pk):
id=jobseeker.objects.get(id=pk)
id.delete()
udata=jobseeker.objects.all()
return render(request,'viewjobseekerinfo.html',{'udata':udata})
def insertjob(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
s6 = request.POST.get("t6")
s7 = request.POST.get("t7")
s8 = request.POST.get("t8")
s9 = request.POST.get("t9")
s10 = request.POST.get("t10")
job.objects.create(jobid=s1,employerid=s2,title=s3,description=s4,requirements=s5,salaryran
ge=s6,jobtypes=s7,location=s8,postedat=s9,status=s10)
p = job.objects.all().order_by('id').last()
pid = int(p.jobid) + 1
return render(request, "jobinfo.html", {'pid': pid})
p = job.objects.all().order_by('id').last()
pid = int(p.jobid) + 1
return render(request, "jobinfo.html", {'pid': pid})
def showjob(request):
userdict=job.objects.all()
return render(request, "viewjobinfo.html",{'userdict':userdict})
def job_del(request,pk):
id=job.objects.get(id=pk)
id.delete()
udata=job.objects.all()
return render(request,'viewjobinfo.html',{'udata':udata})
def insertreviews(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
s6 = request.POST.get("t6")
reviewsandrating.objects.create(reviewid=s1,employerid=s2,seekerid=s3,rating=s4,review=s
5,createdat=s6)
p = reviewsandrating.objects.all().order_by('id').last()
pid = int(p.reviewid) + 1
return render(request, "reviewsinfo.html", {'pid': pid})
p = reviewsandrating.objects.all().order_by('id').last()
pid = int(p.reviewid) + 1
return render(request, "reviewsinfo.html", {'pid': pid})
def showreviews(request):
userdict=reviewsandrating.objects.all()
return render(request, "viewreviewsinfo.html",{'userdict':userdict})
def reviews_del(request,pk):
id=reviewsandrating.objects.get(id=pk)
id.delete()
udata=reviewsandrating.objects.all()
return render(request,'viewreviewsinfo.html',{'udata':udata})
def insertmessage(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
messages.objects.create(messageid=s1,senderid=s2,recieverid=s3,message=s4,sentat=s5)
p = messages.objects.all().order_by('id').last()
pid = int(p.messageid) + 1
return render(request, "messageinfo.html", {'pid': pid})
p = messages.objects.all().order_by('id').last()
pid = int(p.messageid) + 1
return render(request, "messageinfo.html", {'pid': pid})
def showmessage(request):
userdict=messages.objects.all()
return render(request, "viewmessageinfo.html",{'userdict':userdict})
def message_del(request,pk):
id=messages.objects.get(id=pk)
id.delete()
udata=messages.objects.all()
return render(request,'viewmessageinfo.html',{'udata':udata})
def insertselection(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
s6 = request.POST.get("t6")
selectiondetails.objects.create(companyid=s1,jobid=s2,userid=s3,details=s4,packagedetails=s
5,startdate=s6)
return render(request,"selectioninfo.html")
return render(request, "selectioninfo.html")
def showselection(request):
userdict=selectiondetails.objects.all()
return render(request, "viewselectioninfo.html",{'userdict':userdict})
def selection_del(request,pk):
id=selectiondetails.objects.get(id=pk)
id.delete()
udata=selectiondetails.objects.all()
return render(request,'viewselectioninfo.html',{'udata':udata})
def insertjobdetails(request):
if request.method=="POST":
s1=request.POST.get("t1")
s2 = request.POST.get("t2")
s3 = request.POST.get("t3")
s4 = request.POST.get("t4")
s5 = request.POST.get("t5")
s6 = request.POST.get("t6")
s7 = request.POST.get("t7")
s8 = request.POST.get("t8")
s9 = request.POST.get("t9")
s10 = request.POST.get("t10")
jobdetails.objects.create(jobid=s1,companyid=s2,jobtype=s3,category=s4,minqualification=s
5,cutoffdetails=s6,packagedetails=s7,location=s8,dateofapplication=s9,interviewdate=s10)
p = jobdetails.objects.all().order_by('id').last()
pid = int(p.jobid) + 1
return render(request, "jobdetailsinfo.html", {'pid': pid})
p = jobdetails.objects.all().order_by('id').last()
pid = int(p.jobid) + 1
return render(request, "jobdetailsinfo.html", {'pid': pid})
def showjobdetails(request):
userdict=jobdetails.objects.all()
return render(request, "viewjobdetailsinfo.html",{'userdict':userdict})
def jobdetails_del(request,pk):
id=(jobdetails.objects.get(id=pk))
id.delete()
udata=jobdetails.objects.all()
return render(request,'viewjobdetailsinfo.html',{'udata':udata})
models.py(tables)
class userlogin(models.Model):
username=models.CharField(max_length=40)
password=models.CharField(max_length=20)
utype=models.CharField(max_length=20)
class staff(models.Model):
staffid=models.CharField(max_length=40)
name=models.CharField(max_length=40)
email=models.CharField(max_length=100)
password=models.CharField(max_length=40)
contact=models.CharField(max_length=20)
usertype= models.CharField(max_length=20)
createdat= models.CharField(max_length=20)
class jobprovider1(models.Model):
providerid=models.CharField(max_length=40)
userid=models.CharField(max_length=40)
companyname=models.CharField(max_length=40)
companywebsite=models.CharField(max_length=40)
companylogo=models.CharField(max_length=20)
industry= models.CharField(max_length=20)
location= models.CharField(max_length=40)
createdat= models.CharField(max_length=20)
class jobseeker(models.Model):
seekerid=models.CharField(max_length=40)
userid=models.CharField(max_length=40)
resumeupload=models.FileField(upload_to='documents/')
skills=models.CharField(max_length=40)
exeperience=models.CharField(max_length=20)
education=models.CharField(max_length=20)
createdat=models.CharField(max_length=20)
class documents(models.Model):
seekerid=models.CharField(max_length=40)
docname=models.CharField(max_length=100)
file=models.FileField(upload_to='documents/')
class jobapply(models.Model):
userid=models.CharField(max_length=80)
jobid=models.CharField(max_length=40)
companyid=models.CharField(max_length=40)
jobtype=models.CharField(max_length=40)
applydate=models.CharField(max_length=40)
status = models.CharField(max_length=40)
class job(models.Model):
jobid=models.CharField(max_length=40)
employerid=models.CharField(max_length=40)
title=models.CharField(max_length=40)
description=models.CharField(max_length=100)
requirements=models.CharField(max_length=40)
salaryrange=models.CharField(max_length=10)
jobtypes=models.CharField(max_length=20)
location=models.CharField(max_length=40)
postedat=models.CharField(max_length=20)
status=models.CharField(max_length=20)
class reviewsandrating(models.Model):
reviewid=models.CharField(max_length=40)
employerid=models.CharField(max_length=40)
seekerid=models.CharField(max_length=40)
rating=models.CharField(max_length=40)
review=models.CharField(max_length=40)
createdat=models.CharField(max_length=40)
class messages(models.Model):
messageid=models.CharField(max_length=40)
senderid=models.CharField(max_length=40)
recieverid=models.CharField(max_length=40)
message=models.CharField(max_length=40)
sentat=models.CharField(max_length=10)
class roundsdetails(models.Model):
companyid=models.CharField(max_length=40)
roundname=models.CharField(max_length=40)
details=models.CharField(max_length=60)
jobid=models.CharField(max_length=40)
class selectiondetails(models.Model):
companyid=models.CharField(max_length=40)
jobid=models.CharField(max_length=40)
userid=models.CharField(max_length=40)
details=models.CharField(max_length=60)
packagedetails=models.CharField(max_length=60)
startdate=models.CharField(max_length=20)
class jobdetails(models.Model):
jobid=models.CharField(max_length=40)
companyid=models.CharField(max_length=40)
jobtype=models.CharField(max_length=40)
category=models.CharField(max_length=20)
minqualification=models.CharField(max_length=20)
cutoffdetails=models.CharField(max_length=60)
packagedetails=models.CharField(max_length=60)
location=models.CharField(max_length=40)
dateofapplication=models.CharField(max_length=40)
interviewdate=models.CharField(max_length=20)
index.html
<!DOCTYPE html>
{% load static %}
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title></title>
<style type="text/css">
* { box-sizing:border-box; }
body { margin:0px;
padding:0px; }
.nav { background-color:black; }
.nav a { color:white;
text-decoration:none;
padding:5px 10px;
display:inline-block; }
.main { display:flex; }
.left { flex:65%; }
.right { flex:35%;
background-color:linen;
color:darkred;
text-align:justify;
padding:10px;
font-size:20px; }
.footer { padding:5px;
text-align:center;
background-color:orange; }
</style>
</head>
<body>
<div class="header">
<div class="nav">
<a href=""> HOME </a>
<a href=""> ABOUT US </a>
<a href=""> CONTACT US </a>
<a href="{% url 'showlogin' %}"> LOGIN </a>
</div>
<div class="main">
<div class="left">
<img src="{% static 'job.jpeg' %}">
</div>
<div class="right">
<h3> WELCOME TO ONLINE JOB WEBSITE... </h3>
<p> An online job portal is a web-based platform that connects job seekers with
employers, serving as a bridge between those looking for employment opportunities and
companies seeking qualified candidates. It provides users with the ability to search for jobs
based on various criteria such as job title, location, industry, experience level, and more. Job
seekers can create profiles, upload resumes, and apply for jobs directly through the portal.
Meanwhile, employers can post job vacancies, review applications, and manage the
recruitment process efficiently. Many portals also offer additional features like job alerts,
resume-building tools, career advice articles, and interview preparation resources to support
users throughout their job search journey. By digitizing and centralizing the hiring process,
online job portals make it easier, faster, and more accessible for both candidates and
employers to connect and fulfill their professional needs.
</p>
</div>
</div>
<div class="footer">
contact us : [email protected]
</div>
</body>
</html>
Screen Shots
Index.html
Login.html
Adminhome
Userhome
Changepassword
Forgot password
E R DIAGRAM
takes
order bill
Suggestion
get
ma feedback
ke
s
gives
Cust_phno
Takes m
Customer
m order 1 1
Email_id
Cust_na
captain
Cust_id address
details
designatio chek
details
name booking
address
phno
Email Order
id details menu
photo bill
IMPLEMENTION CODE
TESTING
The purpose of testing is to discover errors. Testing is the process of trying to discover every
conceivable fault or weakness in a work product. It provides a way to check the functionality
of components, sub-assemblies, assemblies and/or a finished product it is the process of
exercising software with the intent of ensuring that the Software system meets its
requirements and user expectations and does not fail in an unacceptable manner. There are
various types of test. Each test type addresses a specific testing requirement.
TYPES OF TESTING:
UNIT TESTING
Unit testing involves the design of test cases that validate that the internal program logic is
functioning properly, and that program input produces valid outputs. All decision branches
and internal code flow should be validated. It is the testing of individual software units of the
application .it is done after the completion of an individual unit before integration. This is a
structural testing, that relies on knowledge of its construction and is invasive. Unit tests
perform basic tests at component level and test a specific business process, application,
and/or system configuration. Unit tests ensure that each unique path of a business process
performs accurately to the documented specifications and contains clearly defined inputs and
expected results.
INTEGRATION TESTING
Integration tests are designed to test integrated software components to determine if they
actually run as one program. Testing is event driven and is more concerned with the basic
outcome of screens or fields. Integration tests demonstrate that although the components were
individually satisfaction, as shown by successfully unit testing, the combination of
components is correct and consistent. Integration testing is specifically aimed at exposing
the problems that arise from the combination of components.
FUNCTIONAL TEST
Functional tests provide a systematic demonstration that functions tested are available as
specified by the business and technical requirements, system documentation, and user
manuals.
Business process flows; data fields, predefined processes, and successive processes must be
considered for testing. Before functional testing is complete, additional tests are identified
and the effective value of current tests is determined.
SYSTEM TEST
System testing ensures that the entire integrated software system meets requirements. It tests
a configuration to ensure known and predictable results. An example of system testing is the
configuration oriented system integration test. System testing is based on process descriptions
and flows, emphasizing pre-driven process links and integration points.
INTEGRATION TESTING
Software integration testing is the incremental integration testing of two or more integrated
software components on a single platform to produce failures caused by interface defects.
The task of the integration test is to check that components or software applications, e.g.
components in a software system or – one step up – software applications at the company
level – interact without error.
Testing the links that call the Change Username & password, Migration and
Synchronization screens etc.
The username should be retained throughout the application in the form of hidden
variables or by using cookies.
If the login user does not have enough privileges to invoke a screen, the link should
be disabled.
Any modification in the Master server should be reflected in the Slave server.
The XML file should retrieve only the records, which have been modified.
Test Results: All the test cases mentioned above passed successfully. No defects
encountered.
ACCEPTANCE TESTING
User Acceptance Testing is a critical phase of any project and requires significant
participation by the end user. It also ensures that the system meets the functional
requirements.
Test Results: All the test cases mentioned above passed successfully. No defects
encountered.
ADVANTAGES
Display screen is present at the kitchen, so that the chef should be able to see what a
particular has ordered. All the ordered items are displayed on the screen giving the
table number below. They should be sufficiently large to be seen by chef at a
reasonable distance.
Wastage of paper is avoided as our implementation is working just on tablet and does
not need any paper work. e.g.-For taking the order, we are not using papers. Also, our
menu card would be digitized.
A customer going into restaurant does not has to wait for the waiters to take the order.
As soon as he occupies a seat, he would order whatever he needs.
As soon as the order is ready, it would be notified to the customer. So, there would
not be any issue of late delivery in spite of the food being ready.
There will be a tablet on each table. This will allow the customers to browse the food
items for the time they wish.
This will allow the customers to browse the food items the way the customer wish.
Customer can enter the feedback about the service and the food served.
CONCLUSION
"Conclusively, the Kitchen Order Ticket has proven to be an essential tool for seamless
restaurant operations. The role it plays in providing a clear, concise, and legible version of the
customer's order to the kitchen staff cannot be overemphasized. It's an effective means to
ensure order accuracy, minimize communication errors, and enhance the overall dining
experience for the customer. Additionally, it aids in inventory control, efficient billing, and
offers valuable insights for operational improvements. Thus, the effective use and
management of KOTs are crucial to any successful food service establishment."
First and foremost, the KOT system serves as a bridge that seamlessly connects the diverse
elements of a culinary establishment. By digitizing and streamlining the process of order
entry, transmission, and preparation, the system minimizes the potential for
miscommunication and errors. The visual display of orders on kitchen screens ensures that
each dish is prepared accurately, expediting service and enhancing overall efficiency.
Furthermore, the KOT system has a profound impact on the customer experience. With real-
time updates on order status and timely delivery of meals, patrons are treated to a smoother
and more enjoyable dining journey. Reduced waiting times, precise order fulfillment, and the
ability to accommodate customization requests contribute to heightened satisfaction and the
cultivation of positive reviews and repeat business.
The integration of modern technology, such as mobile and cloud-based solutions, brings
newfound flexibility to the management of kitchen orders. Accessibility from various devices
and locations empowers restaurant managers and chefs to monitor and oversee operations
remotely, ensuring that quality and standards are upheld even in their absence.
While the KOT system offers an array of advantages, its successful implementation is not
without challenges. Overcoming resistance to technology adoption, ensuring proper staff
training, and addressing initial implementation costs require careful planning and strategic
management. However, the potential benefits far outweigh these challenges, as evidenced by
the growing body of research and success stories in the industry.
As we peer into the future, the trajectory of Kitchen Order Ticket systems continues to
evolve. The potential integration of AI-driven predictive analytics promises to revolutionize
kitchen operations, paving the way for even greater efficiency, resource optimization, and an
enhanced customer experience. In this dynamic landscape, the KOT system stands as a
testament to the remarkable potential of technology to redefine traditional practices and
elevate the art of culinary management.
REFERENCES
1. https://wiki.python.org/moin/ReferenceBooks
2. https://docs.python.org/3/reference/index.html
3. https://python-reference.readthedocs.io/en/latest/intro.html
4. https://realpython.com/python-application-layouts/
5. https://docs.djangoproject.com/en/4.2/intro/tutorial01/
6. https://www.interviewbit.com/blog/django-projects/
7. www.questionsanswered.net/tech/learn-python-on-my-own
8. www.ask.com/news/need-know-using-free-project-spreadsheet
9. https://www.colaninfotech.com/python/developer
10. www.reference.com/world-view/strip-python-a096fc712d9fc865