Python + MySQL 实现教务管理系统
1. 系统概述
教务管理系统是一套高校专用管理系统,主要用于解决信息化办公流程、学生管理、课程管理、教职工管理等相关问题。教务管理系统的设计和开发不仅能够极大地提高管理效率和工作效率,也能够为后续教学改革和教学研究提供有力的技术支持。
本文将介绍如何使用Python和MySQL实现教务管理系统,主要包括以下几个方面:
- Python与MySQL的连接;
- MySQL数据库表的设计;
- 教务管理系统的主要功能模块实现。
2. Python与MySQL的连接
在Python中通过pymysql
模块来实现连接MySQL数据库。
示例代码:
import pymysql
# 连接MySQL数据库
db = pymysql.connect("localhost", "username", "password", "database")
# 获取游标对象
cursor = db.cursor()
# 执行SQL语句
sql = "SELECT * FROM student"
cursor.execute(sql)
# 获取查询结果
results = cursor.fetchall()
# 输出查询结果
for row in results:
print(row)
# 关闭游标和数据库连接
cursor.close()
db.close()
3. MySQL数据库表的设计
教务管理系统比较复杂,需要设计多个数据库表来存储不同类型的数据。以下是一些比较常用的表:
学生表
学生表主要用于存储学生的基本信息,包括学号、姓名、性别、出生日期等。
示例表结构:
CREATE TABLE student (
id INT NOT NULL AUTO_INCREMENT,
sno VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL,
gender CHAR(2) NOT NULL,
birthday DATE NOT NULL,
PRIMARY KEY (id)
)
教师表
教师表主要用于存储教职工的基本信息,包括工号、姓名、性别、出生日期、职称等。
示例表结构:
CREATE TABLE teacher (
id INT NOT NULL AUTO_INCREMENT,
tno VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL,
gender CHAR(2) NOT NULL,
birthday DATE NOT NULL,
professional_title VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
)
课程表
课程表主要用于存储课程的基本信息,包括课程编号、课程名称、任课教师等。
示例表结构:
CREATE TABLE course (
id INT NOT NULL AUTO_INCREMENT,
cno VARCHAR(20) NOT NULL,
name VARCHAR(20) NOT NULL,
tno VARCHAR(20) NOT NULL,
PRIMARY KEY (id)
)
成绩表
成绩表主要用于存储学生的考试成绩,包括学号、课程编号、成绩等。
示例表结构:
CREATE TABLE score (
id INT NOT NULL AUTO_INCREMENT,
sno VARCHAR(20) NOT NULL,
cno VARCHAR(20) NOT NULL,
score INT NOT NULL,
PRIMARY KEY (id)
)
4. 教务管理系统的主要功能模块实现
教务管理系统包括多个模块,主要有学生管理、教师管理、课程管理、成绩管理等。以下是这些模块的详细实现。
学生管理
学生管理主要包括以下功能:
- 学生信息的增加、删除、修改、查询;
- 学生成绩的导入、导出。
示例代码:
# 学生信息的增加
def add_student(sno, name, gender, birthday):
sql = "INSERT INTO student(sno, name, gender, birthday) VALUES('%s', '%s', '%s', '%s')" % (sno, name, gender, birthday)
try:
cursor.execute(sql)
db.commit()
print("添加成功!")
except:
db.rollback()
# 学生信息的删除
def delete_student(sno):
sql = "DELETE FROM student WHERE sno='%s'" % sno
try:
cursor.execute(sql)
db.commit()
print("删除成功!")
except:
db.rollback()
# 学生信息的修改
def update_student(sno, name, gender, birthday):
sql = "UPDATE student SET name='%s', gender='%s', birthday='%s' WHERE sno='%s'" % (name, gender, birthday, sno)
try:
cursor.execute(sql)
db.commit()
print("修改成功!")
except:
db.rollback()
# 学生信息的查询
def query_student(sno):
sql = "SELECT * FROM student WHERE sno='%s'" % sno
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print(row)
# 学生成绩的导入
def import_score(filename):
with open(filename, "r") as f:
for line in f:
line = line.strip()
if line:
sno, cno, score = line.split(",")
sql = "INSERT INTO score(sno, cno, score) VALUES('%s', '%s', '%d')" % (sno, cno, int(score))
cursor.execute(sql)
db.commit()
print("导入成功!")
# 学生成绩的导出
def export_score(filename):
sql = "SELECT student.sno, student.name, course.name, score.score FROM student, course, score WHERE student.sno=score.sno AND course.cno=score.cno"
cursor.execute(sql)
results = cursor.fetchall()
with open(filename, "w") as f:
for row in results:
f.write(",".join([str(x) for x in row]) + "\n")
print("导出成功!")
教师管理
教师管理主要包括以下功能:
- 教师信息的增加、删除、修改、查询。
示例代码:
# 教师信息的增加
def add_teacher(tno, name, gender, birthday, professional_title):
sql = "INSERT INTO teacher(tno, name, gender, birthday, professional_title) VALUES('%s', '%s', '%s', '%s', '%s')" % (tno, name, gender, birthday, professional_title)
try:
cursor.execute(sql)
db.commit()
print("添加成功!")
except:
db.rollback()
# 教师信息的删除
def delete_teacher(tno):
sql = "DELETE FROM teacher WHERE tno='%s'" % tno
try:
cursor.execute(sql)
db.commit()
print("删除成功!")
except:
db.rollback()
# 教师信息的修改
def update_teacher(tno, name, gender, birthday, professional_title):
sql = "UPDATE teacher SET name='%s', gender='%s', birthday='%s', professional_title='%s' WHERE tno='%s'" % (name, gender, birthday, professional_title, tno)
try:
cursor.execute(sql)
db.commit()
print("修改成功!")
except:
db.rollback()
# 教师信息的查询
def query_teacher(tno):
sql = "SELECT * FROM teacher WHERE tno='%s'" % tno
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print(row)
课程管理
课程管理主要包括以下功能:
- 课程信息的增加、删除、修改、查询;
- 选课与退课功能。
示例代码:
# 课程信息的增加
def add_course(cno, name, tno):
sql = "INSERT INTO course(cno, name, tno) VALUES('%s', '%s', '%s')" % (cno, name, tno)
try:
cursor.execute(sql)
db.commit()
print("添加成功!")
except:
db.rollback()
# 课程信息的删除
def delete_course(cno):
sql = "DELETE FROM course WHERE cno='%s'" % cno
try:
cursor.execute(sql)
db.commit()
print("删除成功!")
except:
db.rollback()
# 课程信息的修改
def update_course(cno, name, tno):
sql = "UPDATE course SET name='%s', tno='%s' WHERE cno='%s'" % (name, tno, cno)
try:
cursor.execute(sql)
db.commit()
print("修改成功!")
except:
db.rollback()
# 课程信息的查询
def query_course(cno):
sql = "SELECT * FROM course WHERE cno='%s'" % cno
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print(row)
# 选课
def select_course(sno, cno):
sql = "INSERT INTO score(sno, cno) VALUES('%s', '%s')" % (sno, cno)
try:
cursor.execute(sql)
db.commit()
print("选课成功!")
except:
db.rollback()
# 退课
def unselect_course(sno, cno):
sql = "DELETE FROM score WHERE sno='%s' AND cno='%s'" % (sno, cno)
try:
cursor.execute(sql)
db.commit()
print("退课成功!")
except:
db.rollback()
成绩管理
成绩管理主要包括以下功能:
- 成绩的录入、修改、查询;
- 成绩的统计与排名。
示例代码:
# 成绩的录入
def add_score(sno, cno, score):
sql = "INSERT INTO score(sno, cno, score) VALUES('%s', '%s', '%d')" % (sno, cno, score)
try:
cursor.execute(sql)
db.commit()
print("录入成功!")
except:
db.rollback()
# 成绩的修改
def update_score(sno, cno, score):
sql = "UPDATE score SET score='%d' WHERE sno='%s' AND cno='%s'" % (score, sno, cno)
try:
cursor.execute(sql)
db.commit()
print("修改成功!")
except:
db.rollback()
# 成绩的查询
def query_score(sno, cno):
sql = "SELECT score FROM score WHERE sno='%s' AND cno='%s'" % (sno, cno)
cursor.execute(sql)
results = cursor.fetchall()
for row in results:
print(row)
# 成绩的统计与排名
def score_statistics(cno):
sql = "SELECT AVG(score), MAX(score), MIN(score), COUNT(*) FROM score WHERE cno='%s'" % cno
cursor.execute(sql)
results = cursor.fetchall()[0]
print("平均分:%f,最高分:%d,最低分:%d,参考人数:%d" % (results[0], results[1], results[2], results[3]))
sql = "SELECT student.sno, student.name, score.score FROM student, score WHERE student.sno=score.sno AND score.cno='%s' ORDER BY score DESC" % cno
cursor.execute(sql)
results = cursor.fetchall()
print("排名结果:")
for i, row in enumerate(results):
print("%d\t%s\t%s\t%d" % (i+1, row[0], row[1], row[2]))
总结
本文主要介绍了使用Python和MySQL实现教务管理系统的方法与思路,包括Python与MySQL的连接、MySQL数据库表的设计、教务管理系统的主要功能模块实现。本文中所给出的代码示例仅供参考,具体实现时需要根据实际情况进行修改和完善。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python+mysql实现教务管理系统 - Python技术站