史上最全面的python学生管理系统教程(二)
作者:互联网
序言
这篇我们来讲该软件的数据保存方式,由于想到要简便快捷,所以我采用了sqlite3数据库,该数据库操作简单方便,而且易于管理,并且SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。它是一个零配置的数据库,这意味着与其他数据库一样,您不需要在系统中配置。就像其他数据库,SQLite 引擎不是一个独立的进程,可以按应用程序需求进行静态或动态连接。SQLite 直接访问其存储文件。我给大家推荐一款小巧的sqlite数据库文件打开的应用:SQLite Spy。百度一下就可以下载。
数据库构造
该软件需求为三位角色:学生,教师,管理员。
为了从简,我把管理员只设置为一位,所以就不再给他设计管理员表了,只设计了三张表,分别为:学生信息表,教师信息表,课程成绩表。
还是那句话,为了从简,我把学生信息表跟教师信息表两张表结构设计的大致一样,这样就可以代码复用了,但是为了好分辨,我还是分别写了两个py文件。
学生信息表结构:
create table if not exists student_info
(
id integer PRIMARY KEY autoincrement,
student_number varchar(12),
student_name varchar(10),
student_passworld varchar(128),
age varchar(2)
)
教师信息表结构:
create table if not exists teacher_info
(
id integer PRIMARY KEY autoincrement,
teacher_number varchar(12),
teacher_name varchar(10),
teacher_passworld varchar(128),
age varchar(2)
)
课程成绩表结构:
create table if not exists student_achievement
(
student_number varchar(12),
student_name varchar(10)
)
因为教师可以添加课程科目,所以初始表比较简单,并且课程表是跟随学生表联动的,当注册一个学生信息时自动创建该学生的课程成绩表。具体构思如下:
教师添加课程:
# 往成绩数据库中添加新的一列科目成绩
def achievement_insertData(subject_name):
hel = achievement_opendb()
hel[1].execute("alter table student_achievement add column "+subject_name+" int")
hel[1].commit()
hel[1].close()
学生表连接课程成绩表:
# 往学生数据库中添加内容
def user_insertData(number,name,pw,age):
achievement_infoData(number,name)#同时插入到课程成绩表
hel = user_opendb()
hel[1].execute("insert into student_info(student_number,student_name, student_passworld,age)values (?,?,?,?)",(number,name,pw,age))
hel[1].commit()
hel[1].close()
半盏清茶℡ 发布了16 篇原创文章 · 获赞 1 · 访问量 1362 私信 关注
标签:教程,varchar,name,管理系统,python,数据库,number,student,hel 来源: https://blog.csdn.net/Cxk___/article/details/103976753