Download as doc, pdf, or txt
Download as doc, pdf, or txt
You are on page 1of 17

INDEX

S. NO CONTENTS

1 RATIONAL

2 COURSE OUTCOMES ADDRESSED

3 LITERATURE REVIEW

4 ACTUAL METHODOLOGY FOLLOWED

5 OUTPUTS OF THE MICRO-PROJECT

6 LEARNING OUT / SKILL DEVELOPED OF THIS MICRO-


PROJECT
7 AREA OF FUTURE IMPROVEMENT
RATIONAL:

The Student Records System (SRS) provides online access to information about
students and courses, and how this information interacts. For example, how the class
rosters and students’ transcripts connect. The data you see are live data: all changes to a
student’s record take effect immediately the information is entered.

Student record System can be used by education institutes to maintain the records
of students easily. Achieving this objective is difficult using a manual system as the
information is scattered, can be redundant and collecting relevant information may be
very time consuming. All these problems are solved using this project.

The objective of Student information System is to allow the administrator of any


organization to edit and find out the personal details of a student and allows the student to
keep up to date his profile .It’ll also facilitate keeping all the records of students, such as
their id, name, mailing address, phone number, DOB etc. So, all the information about a
student will be available in a few seconds. Overall, it’ll make Student Information
Management an easier job for the administrator and the student of any organization.
The main purpose of this SRS document is to illustrate the requirements of the project
Student information System and is intended to help any organization to maintain and
manage its student’s personal data.

COURSE OUTCOMES ADDRESSED:

a) Display message on screen using Python script on IDE.


b) Develop python program to demonstrate use of Operators
c) Develop functions for given problem.
d) Develop class and object for given problem.
System Requirements/Specifications:

1. Hardware Specifications:
Processor | Intel i5
Hard Disk | 1TB HDD
RAM | 4GB RAM

2. Software Specifications:
Operating System | Window 10, 7
User interface | Python
Database | MySQL
Editors | PyCharm
Documentation Tool | MS Office
Server | Tomcat
Apache7.0 , Xampp

LITERATURE REVIEW:

1. According to old software system said that there was a time in the primitive and
barbarian days before computer, the amount of information shepherded by a group
of people could be collected in the Management of the Student.
2. It gets to a stage when the data are too much to be managed in the minds of the
elders.
3. Help to improve the Student services.
4. Increase the rate at which Tasks are completed accurately.
5. In the application of the informative systems. the concept of students record
system, their history, components, types and their applications in a real-world
situation to solve problems
ACTUAL METHODOLOGY FOLLOWED:

First, we collect information about the Students Record System.


Second, we collect Specification from website though the internet.
Student Management
Create student profiles with unlimited custom categories and fields including
demographic data, enrollment, roll number, schedule and more, and share academic
records with faculties, and administrators.
Objective of the model
1. The use of automated student database management system in place of papers.
2. Obtaining a college web portal should provide all data and upgrade data time
to time which should also improves transparency.
3. The web portal should reduce the time consumption in assessing data.
4. One system operator will be enough for deploying and maintaining data thus
reduces the number of workers in the office staff.
SOFTWARE DEVELOPMENT LIFE CYCLE(SDLC)
The student web portal is nothing but a web application. The development of this web
application is done by following the steps in a software development life cycle. Thus,
a right SDLC should be selected, and generally for web applications we us agile
methodology. The steps involve are requirement analysis, designing, coding,
deploying and maintenance.
Agile Software Development Model (ASDM)
It is based on iterative and incremental development, where requirements and
solutions evolve through collaboration between cross- functional teams. It can be used
with any type of the project, but it needs more involvement from customer and to be
interactive. Also, it can be used when the customer needs to have some functional
requirement ready. So, this agile development is used with continuous focus on
functional and non- functional requirement of the system and setting a logical and
simplified solution to staff management problem and student accessibility problem.
The phases involved in agile software development model are as follows

Implementation / Coding Phase


PyCharm:
PyCharm is the most popular IDE used for Python scripting language. PyCharm offers
some of the best features to its users and developers in the following aspects −
1. Code completion and inspection
2. Advanced debugging
3. Support for web programming and frameworks such as Django and Flask

TKinter:
Python offers multiple options for developing GUI (Graphical User Interface).
Out of all the GUI methods, tkinter is the most commonly used method. It is a
standard Python interface to the Tk GUI toolkit shipped with Python. Python
with tkinter is the fastest and easiest way to create the GUI applications.
Creating a GUI using tkinter is an easy task.
To create a tkinter app:

Importing the module – tkinter


1. Create the main window (container)
2. Add any number of widgets to the main window
3. Apply the event Trigger on the widgets.

XAMPP
XAMPP is a light-weight easy to install bundle that will allow you to do local
development on websites in case you don't have a server hosted already. Also,
I'm being biased here, because frankly I believe in open source (ironical that I
have a mac). Also, I like to scratch and build upwards so that in the long run it
helps me learn better rather than just following manuals and documentation.
Since this post is for absolute beginners, it's good to start out with XAMPP
which does the basic task of setting out the environment for you so you can
start building stuff right away.

Apache Web Server:


It is a web server that allows you to host your websites or any other content for
that matter. Apache is available for UNIX as well as WINDOWS. Some of the
most common server-side languages supported by Apache are - PHP, Python
and Perl. It is free of charge.

MySQL:
It is the world's most popular open source database. It is a Relational Database
Management System (RDBMS) - data and its relationships are stored in the
form of tables that can be accessed by the use of MySQL queries in almost any
format that the user wants.

Codding:
from tkinter import *
import tkinter.ttk as ttk
import pymysql
from tkinter import messagebox
class Student:
def __init__(self, root):
self.root = root
root.title("Student Record System")
root.geometry("1400x850+0+0")
lbl = Label(root, text=" STUDENT RECORD SYSTEM ", font=("time new
roman", 40, "bold"), bg="magenta",fg="black")
lbl.pack(side=TOP, fill=X)

# ------------------Declaration Variables-----------------------------
self.roll_var = StringVar()
self.name_var = StringVar()
self.enroll_var = StringVar()
self.gender_var = StringVar()
self.branch_var = StringVar()
self.mobile_var = StringVar()
self.email_var = StringVar()
self.address_var = StringVar()
self.search_by = StringVar()
self.search_txt = StringVar()
# --------------------Manage Details------------------------------
manage_frame = Frame(self.root, bd=4, relief=RIDGE, bg="cyan")
manage_frame.place(x=10, y=100, width=450, height=700)

m_title = Label(manage_frame, text="Manage Student", font=("time new roman",


30, "bold"), bg="cyan")
m_title.grid(row=0, columnspan=2, pady=10)

lbl_roll = Label(manage_frame, text="Roll no.", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_roll.grid(row=1, column=0, pady=10, sticky="w")
txt_roll = Entry(manage_frame, textvariable=self.roll_var, font=("time new roman",
15, "bold"), bd=5,relief=GROOVE)
txt_roll.grid(row=1, column=1, pady=10, padx=20, sticky="w")

lbl_enroll = Label(manage_frame, text="Enroll No.", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_enroll.grid(row=2, column=0, pady=10, sticky="w")
txt_enroll = Entry(manage_frame, textvariable=self.enroll_var, font=("time new
roman", 15, "bold"), bd=5,relief=GROOVE)
txt_enroll.grid(row=2, column=1, pady=10, padx=20, sticky="w")

lbl_name = Label(manage_frame, text="Full Name", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_name.grid(row=3, column=0, pady=10, sticky="w")
txt_name = Entry(manage_frame, textvariable=self.name_var, font=("time new
roman", 15, "bold"), bd=5,relief=GROOVE)
txt_name.grid(row=3, column=1, pady=10, padx=20, sticky="w")

lbl_branch = Label(manage_frame, text="Branch", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_branch.grid(row=4, column=0, pady=10, sticky="w")
combo_branch = ttk.Combobox(manage_frame,
textvariable=self.branch_var,width=19, font=("time new roman", 14,
"bold"),state='readonly')
combo_branch['values'] = ("CO6I", "CO4I", "CO21")
combo_branch.grid(row=4, column=1, pady=10, padx=20, sticky="w")

lbl_gender = Label(manage_frame, text="Gender", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_gender.grid(row=5, column=0, pady=10, sticky="w")
combo_gender = ttk.Combobox(manage_frame,
textvariable=self.gender_var,width=19, font=("time new roman", 14,
"bold"),state='readonly')
combo_gender['values'] = ("male", "female", "Other")
combo_gender.grid(row=5, column=1, pady=10, padx=20, sticky="w")

lbl_email = Label(manage_frame, text="Email ID", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_email.grid(row=6, column=0, pady=10, sticky="w")
txt_email = Entry(manage_frame, textvariable=self.email_var, font=("time new
roman", 15, "bold"), bd=5,relief=GROOVE)
txt_email.grid(row=6, column=1, pady=10, padx=20, sticky="w")

lbl_contact = Label(manage_frame, text="Mobile No.", font=("time new roman",


20, "bold"), bg="cyan")
lbl_contact.grid(row=7, column=0, pady=10, sticky="w")
txt_contact = Entry(manage_frame, textvariable=self.mobile_var, font=("time new
roman", 15, "bold"), bd=5,relief=GROOVE)
txt_contact.grid(row=7, column=1, pady=10, padx=20, sticky="w")

lbl_address = Label(manage_frame, text="Address", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_address.grid(row=8, column=0, pady=10, sticky="w")
self.txt_address = Text(manage_frame, width=32, height=4, font=("time new
roman", 10))
self.txt_address.grid(row=8, column=1, pady=10, padx=20, sticky="w")

# --------------------Button Frame----------------------------
btn_frame = Frame(manage_frame, bd=4, relief=RIDGE, bg="cyan")
btn_frame.place(x=15, y=570, width=420)
addbtn = Button(btn_frame, text="ADD", width=10, height=2,
command=self.add_students).grid(row=0, column=0,padx=10, pady=10)
deletebtn = Button(btn_frame, text="DELETE", width=10, height=2,
command=self.delete_data).grid(row=0, column=1,padx=10,pady=10)
updatebtn = Button(btn_frame, text="UPDATE", width=10, height=2,
command=self.update_data).grid(row=0, column=2,padx=10,pady=10)
clearbtn = Button(btn_frame, text="CLEAR", width=10, height=2,
command=self.clear).grid(row=0, column=3,padx=10, pady=10)

# --------------------Detail Frame-----------------------
detail_frame = Frame(self.root, bd=4, relief=RIDGE, bg="cyan")
detail_frame.place(x=500, y=100, width=840, height=700)

lbl_search = Label(detail_frame, text="Search By", font=("time new roman", 20,


"bold"), bg="cyan")
lbl_search.grid(row=0, column=0, pady=10, sticky="w")

combo_search = ttk.Combobox(detail_frame, width=10,


textvariable=self.search_by,font=("time new roman", 14, "bold"), state='readonly')
combo_search['values'] = ("roll_no","enroll_no", "name","branch")
combo_search.grid(row=0, column=1, pady=10, padx=20, sticky="w")

txt_search = Entry(detail_frame, textvariable=self.search_txt,width=10, font=("time


new roman", 14, "bold"), bd=5,relief=GROOVE)
txt_search.grid(row=0, column=2, pady=10, padx=20, sticky="w")

searchbtn = Button(detail_frame, text="Search", width=10, height=2,


command=self.search_data).grid(row=0,column=3,padx=10,pady=10)

showallbtn = Button(detail_frame, text="Show All", width=10, height=2,


command=self.fetch_data).grid(row=0, column=4 ,padx=10,pady=10)
# ----------------Table Frame------------------------
table_frame = Frame(detail_frame, bd=4, relief=RIDGE, bg="cyan")
table_frame.place(x=10, y=70, width=810, height=620)

scroll_x = Scrollbar(table_frame, orient=HORIZONTAL)


scroll_y = Scrollbar(table_frame, orient=VERTICAL)
self.student_table = ttk.Treeview(table_frame, columns=(
"roll", "enroll", "name", "branch", "gender", "email", "mobile", "address"),
xscrollcommand=scroll_x.set,
yscrollcommand=scroll_y.set)

scroll_x.pack(side=BOTTOM, fill=X)
scroll_y.pack(side=RIGHT, fill=Y)
scroll_x.config(command=self.student_table.xview)
scroll_y.config(command=self.student_table.yview)
self.student_table.heading("roll", text="Roll No")
self.student_table.heading("name", text="Name")
self.student_table.heading("enroll", text="Enroll No.")
self.student_table.heading("branch", text="Branch")

self.student_table.heading("gender", text="Gender")
self.student_table.heading("email", text="Email ID")
self.student_table.heading("mobile", text="Mobile No.")
self.student_table.heading("address", text="Address")
self.student_table.column("roll", width=3)
self.student_table.column("name", width=40)
self.student_table.column("enroll", width=10)
self.student_table.column("branch", width=7)
self.student_table.column("gender", width=7)
self.student_table.column("email", width=90)
self.student_table.column("mobile", width=20)
self.student_table.column("address", width=100)
self.student_table['show'] = 'headings'
self.student_table.pack(fill=BOTH, expand=1)
self.student_table.bind("<ButtonRelease -1>", self.get_cursor)
self.fetch_data()

def add_students(self):
if self.roll_var.get()=="" or self.enroll_var.get()=="" or self.name_var.get()=="" or
self.branch_var.get()=="" or self.gender_var.get()=="":
messagebox.showerror("Error","All Fields are Required")
else:
con = pymysql.connect(host="localhost", user="root", password="",
database="stud")
cur = con.cursor()
cur.execute("insert into students values(%s,%s,%s,%s,%s,%s,%s,%s)",
(self.roll_var.get(),
self.enroll_var.get(),
self.name_var.get(),
self.branch_var.get(),
self.gender_var.get(),
self.email_var.get(),
self.mobile_var.get(),
self.txt_address.get('1.0', END)
))
con.commit()
self.fetch_data()
self.clear()
con.close()
messagebox.showinfo("Success","Record has been inserted")
def fetch_data(self):
con = pymysql.connect(host="localhost", user="root", password="",
database="stud")
cur = con.cursor()
cur.execute("select * from students")
rows = cur.fetchall()
if len(rows) != 0:
self.student_table.delete(*self.student_table.get_children())
for row in rows:
self.student_table.insert('', END, values=row)
con.commit()
con.close()

def clear(self):
self.roll_var.set("")
self.enroll_var.set("")
self.name_var.set("")
self.branch_var.set("")
self.gender_var.set("")
self.email_var.set("")
self.mobile_var.set("")
self.txt_address.delete('1.0', END)

def get_cursor(self, ev):


cursor_row = self.student_table.focus()
contents = self.student_table.item(cursor_row)
row = contents['values']
self.roll_var.set(row[0])
self.enroll_var.set(row[1])
self.name_var.set(row[2])
self.branch_var.set(row[3])
self.gender_var.set(row[4])
self.email_var.set(row[5])
self.mobile_var.set(row[6])
self.txt_address.delete('1.0', END)
self.txt_address.insert(END, row[7])

def update_data(self):
con = pymysql.connect(host="localhost", user="root", password="",
database="stud")
cur = con.cursor()
cur.execute("update students set enroll_no=%s,name=%s,branch=%s,gender=
%s,email=%s,mobile=%s,address=%s where roll_no=%s ",(
self.enroll_var.get(),
self.name_var.get(),
self.branch_var.get(),
self.gender_var.get(),
self.email_var.get(),
self.mobile_var.get(),
self.txt_address.get('1.0', END),
self.roll_var.get()
))
con.commit()
self.fetch_data()
self.clear()
con.close()

def delete_data(self):
con = pymysql.connect(host="localhost", user="root", password="",
database="stud")
cur = con.cursor()
cur.execute("delete from students where roll_no=%s", self.roll_var.get())
con.commit()
con.close()
self.fetch_data()
self.clear()

def search_data(self):
con = pymysql.connect(host="localhost", user="root", password="",
database="stud")
cur = con.cursor()
cur.execute("select * from students where "+str(self.search_by.get())+ " LIKE '%"
+str(self.search_txt.get())+ "%'")
rows = cur.fetchall()
if len(rows) != 0:
self.student_table.delete(*self.student_table.get_children())
for row in rows:
self.student_table.insert('', END, values=row)
con.commit()
con.close()

root = Tk()
ob = Student(root)
root.mainloop()
OUTPUTS OF THE MICRO-PROJECT:

Fig1. Home page

Fig2. Database
LEARNING OUT / SKILL DEVELOPED OF THIS MICRO-
PROJECT:

1. How to use of PyCharm, connectivity with database and Apache server


software for the project.
2. Improvement in control and performance:
3. The system is developed to cope up with the current issues and problems
of Student record. The system can add students
4. Save cost: After computerized system is implemented less human force
will be required to maintain the student record thus reducing the overall
cost.

AREA OF FUTURE IMPROVEMENT:


The following is just a sample of future opportunities that would help sustain the
portal for undergraduates: -
1. One can upgrade this project to store Students attendances.
2. The portal can be used to take day to day attendance and automatically
send an SMS to the students and their parent.
3. One can deploy this web application into mobile android application and
be used in smaller devices like mobile phones, tablets and notepads.
4. In future web portal can be combined with the university internal and
external web sites. So that all courses in the university will have single
web app.
5. Students can directly fill a resume forum system will use artificial
intelligence and sent the resume to companies as per student requirement
and eligibility criteria
6. The present system may be further upgraded in future even maintain the
activities in hostel like hostel mess bill and attendance system even in
hostels.

You might also like