编程语言
首页 > 编程语言> > 史上最全面的python学生管理系统教程(二)

史上最全面的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