Placement Management System
Placement Management System
Placement Management System
MAJOR PROJECT
BY
Abstract
Introduction
• Background
• Problems with Existing Software
• About project
• Objective of the project
• Scope of the Project
• Advantages
Feasibility Study
• Operational Feasibility
• Technical Feasibility
• Financial and Economic Feasibility
• Functional requirements
• Non-Functional requirements
• Performance requirements
• Hardware and Software requirements
Software Analysis
• DFD
• Use case Diagram
• Sequence Diagram
Software Design
• Schema Design
• Data Dictionary
• ER Diagram
Implementation
Output Conclusion
Bibliography
Abstract
The web application will help all the final year students to access all the
information regarding placements and meet their recruitment goals. And as
well as on the other hand the web application will be valuable to the Training
and Placement officers too.
Students and TPOs will find this app robust as any other best social media apps
being used by most of us today.
INTRODUCTION
▪ Background
This project is aimed at developing a web application for the Training and
Placement Department of Colleges. The system is a web application that
can be accessed throughout the organization with proper login provided.
This system can be used as a web application for the Training and
Placement Officers (TPO) of the college to manage the student’s
information with regard to placement. Students logging should be able to
upload their information in the form of a CV. The key feature is that it is a
onetime registration. Our project provides the facility of maintaining the
details of the students. Administrator logging in may also see information
put up by the students. This will also help in fast access procedures in
placement related activities.
▪ Advantages
The Benefits and Advantages of Placement Management System are:
▪ Operational Feasibility
It is to find out whether the current work practices and procedures support a
new system.
Also, social factors i.e. how the organizational changes will affect the working
lives of those affected by the system.
▪ Technical Feasibility
Our project is a complete web-based application. The main technologies
and tools that are associated with it are:
o HTML
o CSS
o BOOTSTRAP (FRAMEWORK)
o JAVASCRIPT
o NODE JS
o MONGO DB ATLAS (CLOUD BASED DATABASE)
o VISUAL STUDIO CODE
o GOOGLE CHROME BROWSER
Each of these technologies listed above are freely available and the technical
skills required are manageable. Time limitations of the product development
and the ease of implementing using these technologies are synchronized.
The application is the fact that it has been developed on Windows 10 platform
and a high configuration of 4GB RAM on Intel i3 core processor. This is
technically feasible.
▪ Financial and Economic Feasibility
Being a web application, our project doesn’t have an associated hosting cost.
We will follow the freeware software standards. No cost will be charged
from the potential customers. And In the fast-paced world today there is a
great need of online social networking facilities. Thus, the benefits of this
project in the current scenario make it financially and economically feasible.
SOFTWARE REQUIREMENT SPECIFICATION
▪ Functional Requirements
• This section describes the functional requirements of the system for those
requirements which are expressed in the natural language style. A Student
should be able to login to the system through the first page of the
application, and he/she should be able to access all the information
related to placement drives and all the new updates by TPO’s.
• Student must fill all the required information during registration,
without filling all the details he/she will not get access to the
homepage of the website.
• An administrator (TPO) can also login into the web application and
update various information regarding placement drives and notify all the
students logged into the system, He or She must also be able to access
all the student information and update them if required.
• Whenever administrator updates new drive information, all the students
that match the company’s eligibility criteria must be informed on their
registered email address.
▪ Non-Functional Requirements
Usability
Reliability
• The system is more reliable because of the qualities that are inherited from
the chosen platform Node JS. The codebase built with Node JS is more reliable.
Supportability
Implementation
Interface
• The user interface is based on the web browser. The application is developed
using jQuery and HTML along with BOOTSTRAP framework for styling.
▪ Performance requirements
o The completely separate business logic at server side from the student
interface ensures good performance.
o The system exhibits high performance because it is well optimized. The
business logic is clearly separate from the UI.
Database: Mongo DB
Software:
-Visual Studio Code: Visual Studio Code is a free source-code editor made
by Microsoft for Windows, Linux and macOS. Features include support for
debugging, syntax highlighting, intelligent code completion, snippets,
code refactoring, and embedded Git.
SOFTWARE ANALYSIS
▪ Data Flow
Diagram DFD Level 0:
DFD Level 1:
DFD Level 2:
▪ Use case Diagram
A Use case is a description of set of sequence of actions, graphically it is
rendered as an ellipse with solid line including only its name. Use case
diagram is a behavioral diagram that shows a set of use cases and actors
and their relationship. It is an association between the use cases and actors.
An actor represents a real-world object.
Update
Details
Check
Login/ Updates
Register
User
Materials
Change
password
Use case diagram for TPO
Change
password
Update
Details
Add
Login/ Students
Register
Admin
Notify
Students
▪ Schema Design
The schema is a skeleton structure that represents the logical view of
the database as a whole.
▪ Sample Of Data Models
1. Drive Model
2. Student Model
▪ ER Diagram
IMPLEMENTATION
1. app.js
2. const express = require('express')
3. const ejs = require('ejs')
4. const mongoose = require('mongoose')
5. const bodyparser = require('body-parser')
6. const expressLayouts= require('express-ejs-layouts')
7. const app = express()
8.
9. let my_data;
10.
11.//importing database models
12.const student = require('./model/student_model')
13.const drive = require('./model/drive_model')
14.
15.//mongodb atlas connection string
16. const URI = "mongodb+srv://dm_user123:[email protected]
t/myFirstDatabase?retryWrites=true&w=majority"
17.
18.//mongoose database connection
19.mongoose.connect(URI, {useNewUrlParser: true, useUnifiedTopology: true})
20. .then(console.log("Database connected.."))
21. .catch(err=> console.log(err));
22.
23.//setting the view engine
24.app.set('view engine', 'ejs')
25.
26.//middlewares
27.app.use(express.urlencoded({extended: false}))
28.app.use(expressLayouts)
29.app.use('/assets', express.static(__dirname + '/assets'));
30.
31.//routes
32.app.get('/home', (req, res) => {
33. res.render('home')
34.})
35.
36.app.get('/stud_reg', (req, res) => {
37. res.render('stud_reg')
38.})
39.
40.app.post('/stud_reg', (req, res) => {
41. const {name,streams,backs,ssc_perc,hsc_perc,grad_perc,email,password,p
assword2}=req.body;
42. let errors= [];
43.
44. //Validation
45. //check required fields
46.if(!name || !email || !password || !password2 || !backs || !ssc_perc |
| !hsc_perc || !grad_perc){
47. errors.push({msg:"Please fill all the required fields."})
48. }
49.
50. //check passwords match
51. if(password!==password2){
52. errors.push({msg: 'Passwords do not match.'})
53. }
54.
55. //check pass len
56. if(password.length<6){
57. errors.push({msg:`Password must'be of 6 characters.` })
58. }
59.
60. if(errors.length>0){
61. res.render('stud_reg', {errors})
62. } else {
63. student.findOne({ email: email })
64. .then(user => {
65. if (user) {
66. errors.push({ msg: 'Email already exists' })
67.
68. res.render('stud_reg', {errors})
69.
70. } else {
71. const newUser = new student({
72. name: name,
73. stream: streams,
74. backlog: backs,
75. ssc_perc: ssc_perc,
76. hsc_perc: hsc_perc,
77. grad_perc: grad_perc,
78. email: email,
79. password: password
80. });
81. newUser
82. .save()
83. .then(user => {
84. res.redirect('/stud_log');
85. })
86. .catch(err => console.log(err));
87. }
88. });
89. }
90.})
91.
92.app.get('/stud_log', (req, res) => {
93. res.render('stud_log')
94.})
95.
96.app.post('/stud_log', (req, res) => {
97. let errors= []
98. const {email, password} = req.body
99.
100. if(!email || !password){
101. errors.push({msg:"Please fill all the required fields."})
102. res.render('stud_log', {errors})
103. }else{
104. student.findOne({email:email})
105. .then(data =>{
106. if(!data){
107. errors.push({msg: "Email address is not register
ed.."})
108. res.render('stud_log', {errors})
109. }
110. if(data.password==password){
111. my_data = data
112. res.render('stud_home', {data})
113. }else{
114. errors.push({msg: "Wrong password"})
115. res.render('stud_log', {errors })
116. }
117. })
118. .catch( err => console.log(err))
119. }
120. })
121.
122. app.get('/admin_log', (req, res) => {
123. res.render('admin_log')
124. })
125.
126. //admin credentials
127. const user_id = "[email protected]"
128. const admin_password ="admin123@bppimt"
129.
130. app.post('/admin_log', (req, res) => {
131. let errors = []
132. const {email, password} = req.body
133. if(!email || !password){
134. errors.push({msg: "Please fill all the required fields."})
135. res.render('admin_log', {errors})
136. }
137.
138. if(email===user_id && admin_password===password){
139. res.render('admin_home');
140. }else{
141. errors.push({msg: "Enter the correct credentials.."})
142. res.render('admin_log', {errors})
143. }
144. })
145.
146. app.get('/admin_home', (req, res)=>{
147. res.render('admin_home')
148. })
149.
150. app.get('/new_drive', (req, res) => {
151. res.render('drive_post')
152. })
153.
154. app.post('/new_drive', (req, res) => {
155. const {drive_id, comp_name, role, salary, perc_criteria, back_cr
iteria, test_date, link} = req.body
156. let errors = []
157. let message = []
158. if(!drive_id || !comp_name || !role || !salary|| !perc_criteria
| !back_criteria || !test_date || !link){
159. errors.push({msg: "Please fill all the required fields"})
160. res.render('drive_post', {errors})
161. }else{
162. drive.findOne({drive_id:drive_id})
163. .then(data =>{
164. if( data){
165. errors.push({msg: "This drive already exists"})
166. res.render('drive_post', {errors})
167. }else{
168. let new_drive = new drive({
169. drive_id:drive_id,
170. company_name: comp_name,
171. job_role: role,
172. package: salary,
173. perc_criteria: perc_criteria,
174. back_criteria: back_criteria,
175. test_date: test_date,
176. apply_link: link
177. })
178.
179. new_drive.save()
180. .then( data => {
181. message.push({msg: "Drive update succesf
ully posted!"})
182. res.render('admin_home', {message})
183. })
184. .catch( err => console.log(err))
185. }
186. })
187. }
188. })
189.
190. app.get('/stud_home', (req, res)=>{
191. const data = my_data
192. res.render('stud_home', {data})
193. })
194. app.get('/students', (req, res)=>{
195. student.find()
196. .then(data =>{
197. res.render('students', {data})
198. })
199. .catch(err => console.log(err))
200. })
201.
202. app.get('/drive_update', (req, res) => {
203. drive.find()
204. .then(data => {
205. res.render('drive_updates', {data})
206. })
207. .catch(err => console.log(err))
208. })
209. //server listener
210. app.listen(3000, (req, res) => {
211. console.log('Listening on server port: 3000!');
212. })
213.
Templates
</body>
</html>
Database models
1. StudentModel.js
2. const mongoose= require('mongoose')
3.
4. const student_schema = new mongoose.Schema({
5. name:{
6. type: String,
7. required: true
8. },
9. stream:{
10. type: String,
11. required: true
12. },
13. backlog:{
14. type: Number,
15. required: true
16. },
17. ssc_perc:{
18. type: Number,
19. required: true
20. },
21. hsc_perc:{
22. type: Number,
23. required: true
24. },
25. grad_perc:{
26. type: Number,
27. require: true
28. },
29. email:{
30. type: String,
31. required: true,
32. unique: true
33. },
34. password:{
35. type: String,
36. required: true
37. }
38.})
39.
40.const students = mongoose.model('students', student_schema)
41.
42.module.exports = students
2. DriveModel.js
const mongoose= require('mongoose')
module.exports = drives
Sample Output
1. Welcome Page
➢
www.google.com
➢
www.wikipedia.org
➢
dbdiagram.io
➢
geeksforgeeks.org