Python实现学校管理系统攻略
简介
学校管理系统通常包括学生信息管理、教师信息管理、课程信息管理、班级信息管理等模块。本文将介绍如何使用Python实现一个简单的学校管理系统。
准备工作
开发学校管理系统需要使用到以下几个方面的知识:
- Python基础编程知识
- 数据库基础知识
- GUI编程
实现步骤
1. 设计数据库
学校管理系统需要设计数据库来存储学生、教师、班级、课程等信息。可以使用MySQL等数据库进行实现。
以下是一个简单的学校管理系统的数据库设计:
CREATE TABLE `students` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`gender` varchar(10) DEFAULT NULL,
`class` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `teachers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`age` int(11) DEFAULT NULL,
`gender` varchar(10) DEFAULT NULL,
`class` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `courses` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`teacher` varchar(50) DEFAULT NULL,
`class` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
CREATE TABLE `classes` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(50) DEFAULT NULL,
`teacher` varchar(50) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4;
2. 编写Python代码连接数据库
使用Python需要安装pymysql等数据库驱动。
import pymysql
class Database:
host = 'localhost'
user = 'root'
password = 'password'
db = 'school'
def __init__(self):
self.connection = pymysql.connect(host=self.host, user=self.user, password=self.password, db=self.db)
self.cursor = self.connection.cursor()
def execute(self, sql):
self.cursor.execute(sql)
self.connection.commit()
def query(self, sql):
self.cursor.execute(sql)
return self.cursor.fetchall()
3. 编写GUI程序
使用Python的tkinter库可以快速实现GUI程序。
以下是一个简单的学校管理系统的GUI程序
from tkinter import *
from database import Database
class Application:
def __init__(self, master):
self.master = master
self.master.title('学校管理系统')
self.db = Database()
self.label = Label(self.master, text='学生信息管理').pack()
self.frame = Frame(self.master).pack()
self.label_name = Label(self.frame, text='姓名').grid(row=0, column=0)
self.name = StringVar()
self.entry_name = Entry(self.frame, textvariable=self.name).grid(row=0, column=1)
self.label_age = Label(self.frame, text='年龄').grid(row=1, column=0)
self.age = IntVar()
self.entry_age = Entry(self.frame, textvariable=self.age).grid(row=1, column=1)
self.label_gender = Label(self.frame, text='性别').grid(row=2, column=0)
self.gender = StringVar()
self.gender.set('男')
self.entry_gender = OptionMenu(self.frame, self.gender, '男', '女').grid(row=2, column=1)
self.label_class = Label(self.frame, text='班级').grid(row=3, column=0)
self.classes = ['1班', '2班', '3班']
self.class_var = StringVar()
self.class_var.set('1班')
self.entry_class = OptionMenu(self.frame, self.class_var, *self.classes).grid(row=3, column=1)
self.save_button = Button(self.frame, text='保存', command=self.save_student).grid(row=4, column=0)
self.query_button = Button(self.frame, text='查询', command=self.query_student).grid(row=4, column=1)
self.result_label = Label(self.master, text='查询结果:').pack()
self.result_listbox = Listbox(self.master)
self.result_listbox.pack()
def save_student(self):
sql = "INSERT INTO students (name, age, gender, class) VALUES ('{}', '{}', '{}', '{}')".format(self.name.get(), self.age.get(), self.gender.get(), self.class_var.get())
self.db.execute(sql)
def query_student(self):
sql = "SELECT * FROM students WHERE class='{}'".format(self.class_var.get())
result = self.db.query(sql)
self.result_listbox.delete(0, END)
for row in result:
self.result_listbox.insert(END, row)
if __name__ == '__main__':
root = Tk()
app = Application(root)
root.mainloop()
示例说明
以下是两个学校管理系统程序的示例说明:
示例一:查询某班级的学生信息
- 在GUI程序中选择班级
- 点击查询按钮
- 系统会显示该班级的学生信息
示例二:添加新的学生信息
- 在GUI程序中输入学生姓名、年龄、性别、班级
- 点击保存按钮
- 系统将保存该学生的信息到数据库
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python实现学校管理系统 - Python技术站