Professional Documents
Culture Documents
Administration DBMS
Administration DBMS
1. Certificate 1
2. Certificate of approval
2
3. Declaration 3
4. Acknowledgement 4
5. Objective & Scope of the Project 6
6. Theoretical Background 8
7. Definition of Problem 21
8. System Analysis & User Requirements 22
9. System Planning (PERT Chart) 23
10. Methodology adopted, System Implementation & Details of H/W& S/W used 25
11. Detailed Life Cycle of the Project 26
12. ERD, DFD 29
16. User/Operational Manual (security aspects, access rights, back up, controls, etc.) 58
18. Conclusions 61
19. references 63
1. Objective & Scope
1.1 Objective
This is a web oriented application allows us to access the whole information about the
college, staffs, students, facilities etc. This application provides a virtual tour of Campus.
Here we will get the latest information about the students and staffs. This generic
application designed for assisting the students of an institute regarding information on the
courses, subjects, classes, assignments, grades and timetable. It also provides support that
a faculty can also check about his daily schedule, can upload assignments, and notices to
the students. Here administrator will manage the accounts of the student and faculties,
makes the timetable, and upload the latest information about the campus.
1.2 Scope
College information: Through this service one can access the complete
information about the college campus such as courses available, admission
procedure, placements, college events, achievements etc.
Student tracking: Any company or any organization that want to check the
summary about the student of the college, so that they will be able to choose the
particular students for their campus placement And for that purpose they will be
given a particular link through which they can access the information required.
Student attendance status: It gives the attendance status of students. Faculty will
update the attendance periodically and can be seen by students and parents.
Exam Notification: This facility notifies students and parents about examination
schedule.
Events: It will give information about different events that will be conducted by
college time to time. Information about these events will be updated by
administrator.
Today in colleges student details are entered manually. The student details in
separate records are tedious task. Referring to all these records and updating is needed.
There is a chance for more manual errors.
Problems in existing system:
The development of the new system contains the following activities, which try to
automate the entire process keeping in view of the database integration approach.
The system makes the overall project management much easier and flexible.
It provides high level of security using different protocols like https etc.
3. Problem Definition
Management System.
4. System analysis & planning v/s user requirement
The following requirements are raised during the analysis of the needs of the users:
A Person Should be able to login to the system through the first page of the
Application.
The Administrator can create users as per user requirement.
Admin can upload the data for a particular Student. On successful completion of
upload, user (Student/Parent/Faculty) can view reports.
A general user will have access to see the status of particular Student id number.
Student (user) can use all the facilities, same as which are provided to him in the
college.
Student can see attendance, notices, grades, report and other facilities in updated
manner.
There will be a separate page for every student as his account in which he can get
notices, attendance, grades, assignments etc.
Parent can just view the record of student with the username and password
provided.
Faculty can give the attendances and notices for the students.
The administrator verifies all these reports and generates them for users to view
them.
After analyzing the requirements of the task to be performed, the next step is to analyze
the problem and understand its context. The first activity in the phase is studying the
existing system and other is to understand the requirements and domain of the new
system. Both the activities are equally important, but the first activity serves as a basis of
giving the functional specifications and then successful design of the proposed system.
Understanding the properties and requirements of a new system is more difficult and
requires creative thinking and understanding of existing running system is also difficult,
improper understanding of present system can lead diversion from solution.
In the flexibility of the uses the interface has been developed a graphics concept in mind,
associated through a browses interface. The GUI’S at the top level have been categorized
as
The operational or generic user interface helps the users upon the system in transactions
through the existing data and required services. The operational user interface also helps
the ordinary users in managing their own information helps the ordinary users in
managing their own information in a customized manner as per the assisted flexibilities.
1. College information: Through this service one can access the complete
information about the college campus such as courses available, admission
procedure, placements, college events, achievements etc.
2. Student tracking: Any company or any organization that want to check the
summary about the student of the college, so that they will be able to choose the
particular students for their campus placement And for that purpose they will be
given a particular link through which they can access the information required.
3. Student attendance status: It gives the attendance status of students. Faculty will
update the attendance periodically and can be seen by students and parents.
4. Student’s performance in exams: This facility provides the performance of the
student in each exam which is conducted by university or college such as midterm
performance. Marks obtained by students in exams will be updated by faculties
that can be access by students and parents.
5. Exam Notification: This facility notifies students and parents about examination
schedule.
6. Events: it will give information about different events that will be conducted by
college time to time. Information about these events will be updated by
administrator.
7. Online assignments: This service provides the facility to faculty to upload
assignments and to students to submit these assignments online.
8. Information about staff: It will help in maintaining complete information about
college faculty members such as their department, cadre, date of joining, salary,
etc. Administrator will register new faculties and remove their account when they
leave the college.
Stability testing checks to see if the software can continuously function well in or
above an acceptable period. This activity of Non Functional Software Testing is
often times referred to as indurations test.
Usability testing is needed to check if the user interface is easy to use and
understand.
Security testing is essential for software which processes confidential data and to
prevent system intrusion by hackers.
Activity Diagram:
Feasibility Study:
CODING
Login Page:- It begins with the landing page where student,staff and administrator login
module are available.
2) STAFF MODULE:- The staff can update the information regarding the student's
attendance, internal marks of the students and any information regarding the subjects they
handle. They can also view the student details for better understanding the student
performance and improve the efficiency of the student.
3) Admin:- This is the main module that has to be managed by the HOD of the
Computer department. Here the admin can admit new students, remove any if
they have left the college or anything, add and remove the staff members .Next he
can see the list of students manage their attendance view marks send notifications
it will be like the notice section of the college in which the College activities,
Exam dates and any other important message can be share by the students and
also check complains sent by the students so action can be taken in time.
import sys,sqlite3,time
from PyQt5 import QtGui
class DBHelper():
def __init__(self):
self.conn=sqlite3.connect("sdms.db")
self.c=self.conn.cursor()
self.c.execute("CREATE TABLE IF NOT EXISTS student(sid
INTEGER,Sname TEXT,dept INTEGER,year INTEGER,course_a
INTEGER,course_b INTEGER,course_c INTEGER)")
self.c.execute("CREATE TABLE IF NOT EXISTS faculty(fid
INTEGER,f_name TEXT,course INTEGER,dept INTEGER,class_room
INTEGER)")
self.c.execute("CREATE TABLE IF NOT EXISTS Course(cid
INTEGER,c_name INTEGER,faculty TEXT,credit INTEGER,type
INTEGER,slot INTEGER,No_enrolled INTEGER)")
def searchStudent(self,sid):
if not self.data:
QMessageBox.warning(QMessageBox(), 'Error', 'Could not find any
student with roll no '+str(sid))
return None
self.list=[]
for i in range(0,7):
self.list.append(self.data[i])
self.c.close()
self.conn.close()
showStudent(self.list)
def deleteRecord(self,sid):
try:
self.c.execute("DELETE from student WHERE sid="+str(sid))
self.conn.commit()
self.c.close()
self.conn.close()
QMessageBox.information(QMessageBox(),'Successful','Student is
deleted from the database.')
except Exception:
QMessageBox.warning(QMessageBox(), 'Error', 'Could not delete student
from the database.')
class Login(QDialog):
def __init__(self, parent=None):
super(Login, self).__init__(parent)
self.userNameLabel=QLabel("Username")
self.userPassLabel=QLabel("Password")
self.textName = QLineEdit(self)
self.textPass = QLineEdit(self)
self.buttonLogin = QPushButton('Login', self)
self.buttonLogin.clicked.connect(self.handleLogin)
layout = QGridLayout(self)
layout.addWidget(self.userNameLabel, 1, 1)
layout.addWidget(self.userPassLabel, 2, 1)
layout.addWidget(self.textName,1,2)
layout.addWidget(self.textPass,2,2)
layout.addWidget(self.buttonLogin,3,1,1,2)
self.setWindowTitle("Login")
def handleLogin(self):
if (self.textName.text() == '' and
self.textPass.text() == ''):
self.accept()
else:
QMessageBox.warning(
self, 'Error', 'Bad user or password')
def showStudent(list):
sid=0
dept = ""
year = ""
sname = ""
course_a = ""
course_b = ""
course_c = ""
sid=list[0]
sname=list[1]
if list[2]==0:
dept="Mechanical Engineering"
elif list[2]==1:
dept="Chemical Engineering"
elif list[2]==2:
dept="Software Engineering"
elif list[2]==3:
dept="Biotech Engineering"
elif list[2]==4:
dept="Computer Science and Engineering"
elif list[2]==5:
dept="Information Technology"
if list[3]==0:
year="1st"
elif list[3]==1:
year="2nd"
elif list[3]==2:
year="3rd"
elif list[3]==3:
year="4th"
if list[4]==0:
course_a="DBMS"
elif list[4]==1:
course_a="OS"
elif list[4]==2:
course_a="CN"
elif list[4]==3:
course_a="C++"
elif list[4]==4:
course_a="JAVA"
elif list[4]==5:
course_a="PYTHON"
elif list[4]==6:
course_a="THERMO"
elif list[4]==7:
course_a="MACHINE"
elif list[4]==8:
course_a="CELLS"
elif list[4]==9:
course_a="DS"
elif list[4]==10:
course_a="CRE"
elif list[4]==11:
course_a="MICROBES"
elif list[4]==12:
course_a="FERTILIZER"
if list[5]==0:
course_b="DBMS"
elif list[5]==1:
course_b="OS"
elif list[5]==2:
course_b="CN"
elif list[5]==3:
course_b="C++"
elif list[5]==4:
course_b="JAVA"
elif list[5]==5:
course_b="PYTHON"
elif list[5]==6:
course_b="THERMO"
elif list[5]==7:
course_b="MACHINE"
elif list[5]==8:
course_b="CELLS"
elif list[5]==9:
course_b="DS"
elif list[5]==10:
course_b="CRE"
elif list[5]==11:
course_b="MICROBES"
elif list[5]==12:
course_b="FERTILIZER"
if list[6]==0:
course_c="DBMS"
elif list[6]==1:
course_c="OS"
elif list[6]==2:
course_c="CN"
elif list[6]==3:
course_c="C++"
elif list[6]==4:
course_c="JAVA"
elif list[6]==5:
course_c="PYTHON"
elif list[6]==6:
course_c="THERMO"
elif list[6]==7:
course_c="MACHINE"
elif list[6]==8:
course_c="CELLS"
elif list[6]==9:
course_c="DS"
elif list[6]==10:
course_c="CRE"
elif list[6]==11:
course_c="MICROBES"
elif list[6]==12:
course_c="FERTILIZER"
elif list[6]==13:
course_c="PLANTS"
elif list[6]==14:
course_c="MOBLIE APP"
table=QTableWidget()
tableItem=QTableWidgetItem()
table.setWindowTitle("Student Details")
table.setRowCount(7)
table.setColumnCount(2)
table.setItem(0, 0, QTableWidgetItem("Roll"))
table.setItem(0, 1, QTableWidgetItem(str(sid)))
table.setItem(1, 0, QTableWidgetItem("Name"))
table.setItem(1, 1, QTableWidgetItem(str(sname)))
table.setItem(2, 0, QTableWidgetItem("Department"))
table.setItem(2, 1, QTableWidgetItem(str(dept)))
table.setItem(3, 0, QTableWidgetItem("Year"))
table.setItem(3, 1, QTableWidgetItem(str(year)))
table.setItem(4, 0, QTableWidgetItem("Slot A"))
table.setItem(4, 1, QTableWidgetItem(str(course_a)))
table.setItem(5, 0, QTableWidgetItem("Slot B"))
table.setItem(5, 1, QTableWidgetItem(str(course_b)))
table.setItem(6, 0, QTableWidgetItem("Slot C"))
table.setItem(6, 1, QTableWidgetItem(str(course_c)))
table.horizontalHeader().setStretchLastSection(True)
table.show()
dialog=QDialog()
dialog.setWindowTitle("Student Details")
dialog.resize(500,300)
dialog.setLayout(QVBoxLayout())
dialog.layout().addWidget(table)
dialog.exec()
class AddStudent(QDialog):
def __init__(self):
super().__init__()
self.dept=-1
self.year=-1
self.sid=-1
self.sname=""
self.course_a=-1
self.course_b=-1
self.course_c=-1
self.btnCancel=QPushButton("Cancel",self)
self.btnReset=QPushButton("Reset",self)
self.btnAdd=QPushButton("Add",self)
self.btnCancel.setFixedHeight(30)
self.btnReset.setFixedHeight(30)
self.btnAdd.setFixedHeight(30)
self.yearCombo=QComboBox(self)
self.yearCombo.addItem("1st")
self.yearCombo.addItem("2nd")
self.yearCombo.addItem("3rd")
self.yearCombo.addItem("4th")
self.branchCombo = QComboBox(self)
self.branchCombo.addItem("Mechanical")
self.branchCombo.addItem("Chemical")
self.branchCombo.addItem("Software")
self.branchCombo.addItem("Biotech")
self.branchCombo.addItem("Computer Science")
self.branchCombo.addItem("Information Technology")
self.cACombo = QComboBox(self)
self.cACombo.addItem("DBMS")
self.cACombo.addItem("OS")
self.cACombo.addItem("CN")
self.cACombo.addItem("C++")
self.cACombo.addItem("JAVA")
self.cACombo.addItem("PYTHON")
self.cACombo.addItem("THERMO")
self.cACombo.addItem("MACHINE")
self.cACombo.addItem("CELLS")
self.cACombo.addItem("DS")
self.cACombo.addItem("CRE")
self.cACombo.addItem("MICROBES")
self.cACombo.addItem("FERTILIZER")
self.cACombo.addItem("PLANTS")
self.cBCombo = QComboBox(self)
self.cBCombo.addItem("DBMS")
self.cBCombo.addItem("OS")
self.cBCombo.addItem("CN")
self.cBCombo.addItem("C++")
self.cBCombo.addItem("JAVA")
self.cBCombo.addItem("PYTHON")
self.cBCombo.addItem("THERMO")
self.cBCombo.addItem("MACHINE")
self.cBCombo.addItem("CELLS")
self.cBCombo.addItem("DS")
self.cBCombo.addItem("CRE")
self.cBCombo.addItem("MICROBES")
self.cBCombo.addItem("FERTILIZER")
self.cBCombo.addItem("PLANTS")
self.cCCombo = QComboBox(self)
self.cCCombo.addItem("DBMS")
self.cCCombo.addItem("OS")
self.cCCombo.addItem("CN")
self.cCCombo.addItem("C++")
self.cCCombo.addItem("JAVA")
self.cCCombo.addItem("PYTHON")
self.cCCombo.addItem("THERMO")
self.cCCombo.addItem("MACHINE")
self.cCCombo.addItem("CELLS")
self.cCCombo.addItem("DS")
self.cCCombo.addItem("CRE")
self.cCCombo.addItem("MICROBES")
self.cCCombo.addItem("FERTILIZER")
self.cCCombo.addItem("PLANTS")
self.cCCombo.addItem("MOBILE APP")
self.rollLabel=QLabel("Roll No")
self.nameLabel=QLabel("Name")
self.cALabel = QLabel("Slot A")
self.yearLabel = QLabel("Current Year")
self.cBLabel = QLabel("Slot B")
self.branchLabel = QLabel("Branch")
self.cCLabel=QLabel("Slot C")
self.rollText=QLineEdit(self)
self.nameText=QLineEdit(self)
self.grid=QGridLayout(self)
self.grid.addWidget(self.rollLabel,1,1)
self.grid.addWidget(self.nameLabel,2,1)
self.grid.addWidget(self.yearLabel, 3, 1)
self.grid.addWidget(self.branchLabel, 4, 1)
self.grid.addWidget(self.cALabel, 5, 1)
self.grid.addWidget(self.cBLabel, 6, 1)
self.grid.addWidget(self.cCLabel,7,1)
self.grid.addWidget(self.rollText,1,2)
self.grid.addWidget(self.nameText,2,2)
self.grid.addWidget(self.yearCombo, 3, 2)
self.grid.addWidget(self.branchCombo, 4, 2)
self.grid.addWidget(self.cACombo, 5, 2)
self.grid.addWidget(self.cBCombo, 6, 2)
self.grid.addWidget(self.cCCombo,7,2)
self.grid.addWidget(self.btnReset,9,1)
self.grid.addWidget(self.btnCancel,9,3)
self.grid.addWidget(self.btnAdd,9,2)
self.btnAdd.clicked.connect(self.addStudent)
self.btnCancel.clicked.connect(self.Close)
self.btnReset.clicked.connect(self.reset)
self.setLayout(self.grid)
self.setWindowTitle("Add Student Details")
self.resize(500,300)
def Close(self):
self.close()
def reset(self):
self.rollText.setText("")
self.nameText.setText("")
def addStudent(self):
self.year=self.yearCombo.currentIndex()
self.dept=self.branchCombo.currentIndex()
self.sid=int(self.rollText.text())
self.sname=self.nameText.text()
self.course_a=self.cACombo.currentIndex()
self.course_b=self.cBCombo.currentIndex()
self.course_c=self.cCCombo.currentIndex()
self.dbhelper=DBHelper()
self.dbhelper.addStudent(self.sid,self.sname,self.dept ,self.year ,self.course_a
,self.course_b ,self.course_c )
class Window(QMainWindow):
def __init__(self):
super().__init__()
self.rollToBeSearched=0
self.vbox = QVBoxLayout()
self.text = QLabel("Enter the roll no of the student")
self.editField = QLineEdit()
self.btnSearch = QPushButton("Search", self)
self.btnSearch.clicked.connect(self.showStudent)
self.vbox.addWidget(self.text)
self.vbox.addWidget(self.editField)
self.vbox.addWidget(self.btnSearch)
self.dialog = QDialog()
self.dialog.setWindowTitle("Enter Roll No")
self.dialog.setLayout(self.vbox)
self.rollForDelete = 0
self.vboxDelete = QVBoxLayout()
self.textDelete = QLabel("Enter the roll no of the student")
self.editFieldDelete = QLineEdit()
self.btnSearchDelete = QPushButton("Search", self)
self.btnSearchDelete.clicked.connect(self.deleteRecord)
self.vboxDelete.addWidget(self.textDelete)
self.vboxDelete.addWidget(self.editFieldDelete)
self.vboxDelete.addWidget(self.btnSearchDelete)
self.dialogDelete = QDialog()
self.dialogDelete.setWindowTitle("Delete Record")
self.dialogDelete.setLayout(self.vboxDelete)
self.picLabel=QLabel(self)
self.picLabel.resize(150,150)
self.picLabel.move(120,10)
self.picLabel.setScaledContents(True)
self.picLabel.setPixmap(QtGui.QPixmap("user.png"))
layout.addWidget(self.picLabel, 0, 0) # Choose row and column for every
widget
self.btnEnterStudent.move(15,170)
self.btnEnterStudent.resize(180,40)
self.btnEnterStudentFont=self.btnEnterStudent.font()
self.btnEnterStudentFont.setPointSize(13)
self.btnEnterStudent.setFont(self.btnEnterStudentFont)
self.btnEnterStudent.clicked.connect(self.enterstudent)
layout.addWidget(self.btnEnterStudent, 1, 0)
self.btnDeleteRecord.move(205,170)
self.btnDeleteRecord.resize(180, 40)
self.btnDeleteRecordFont = self.btnEnterStudent.font()
self.btnDeleteRecordFont.setPointSize(13)
self.btnDeleteRecord.setFont(self.btnDeleteRecordFont)
self.btnDeleteRecord.clicked.connect(self.showDeleteDialog)
layout.addWidget(self.btnDeleteRecord, 1, 1) #2222
self.btnShowStudentDetails.move(15, 220)
self.btnShowStudentDetails.resize(180, 40)
self.btnShowStudentDetailsFont = self.btnEnterStudent.font()
self.btnShowStudentDetailsFont.setPointSize(13)
self.btnShowStudentDetails.setFont(self.btnShowStudentDetailsFont)
self.btnShowStudentDetails.clicked.connect(self.showStudentDialog)
layout.addWidget(self.btnShowStudentDetails, 2, 0)
w = QWidget()
w.setLayout(layout)
self.setCentralWidget(w) # setting the layout to central window
self.setFixedSize(400,280)
self.setWindowTitle("Student Database Management System")
def enterstudent(self):
enterStudent=AddStudent()
enterStudent.exec()
def showStudentDialog(self):
self.dialog.exec()
def showDeleteDialog(self):
self.dialogDelete.exec()
def showStudent(self):
if self.editField.text() is "":
QMessageBox.warning(QMessageBox(), 'Error','You must give the roll
number to show the results for.')
return None
showstudent = DBHelper()
showstudent.searchStudent(int(self.editField.text()))
def deleteRecord(self):
if self.editField.text() is "":
QMessageBox.warning(QMessageBox(), 'Error','You must give the roll
number to show the results for.')
return None
delrecord = DBHelper()
delrecord.deleteRecord(int(self.editFieldDelete.text()))
if __name__ == '__main__':
app = QApplication(sys.argv)
login = Login()
if login.exec_() == QDialog.Accepted:
window = Window()
window.show()
sys.exit(app.exec_())
CONCLUSION
This paper assists in automating the existing manual system. This is a paperless work. It can
be monitored and controlled remotely. It reduces the man power required. It provides
accurate information always. Malpractice can be reduced. All years together gathered
information can be saved and can be accessed at any time. The data which is stored in the
repository helps in taking intelligent decisions by the management. So it is better to have a
Web Based Information Management system. All the stakeholders, faculty and management
can get the required information without delay. This system is essential in the
colleges/hostels and universities.