当前位置:首页>python>升级版Python学生信息管理系统 | 接入SQLite数据库(附完整源码+全功能测试)

升级版Python学生信息管理系统 | 接入SQLite数据库(附完整源码+全功能测试)

  • 2026-09-24 16:17:35
升级版Python学生信息管理系统 | 接入SQLite数据库(附完整源码+全功能测试)

零基础也能上手的Python实战项目,从「内存存储」升级为「数据库持久化存储」,新增用户注册/登录功能,完整覆盖学生信息增删改查全流程!


📖 系统核心升级亮点

相比基础版,本次升级核心变化:

  1. 数据存储:从字典临时存储 → SQLite数据库持久化存储(关闭程序数据不丢失)
  2. 用户体系:新增「注册+登录」功能,支持多用户独立使用
  3. 信息维度:学生信息从4项(学号/姓名/性别/班级)扩展至7项(新增身高/体重/电话)
  4. 功能完整性:补充「修改学生信息」功能,完善退出时的资源释放逻辑

🛠 系统环境与前置准备

运行环境

  • Python 3.x(无需额外安装依赖,SQLite为Python内置库)
  • 数据库文件路径:D:\Desktop\PythonPrograms\database\mydadabase.db(可自行修改代码中路径)

数据库表结构(需提前创建)

-- 用户信息表(userInfos)CREATETABLE userInfos (    用户名 TEXT PRIMARY KEY,    密码 TEXTNOTNULL);-- 学生信息表(stuInfos)CREATETABLE stuInfos (    学号 TEXT PRIMARY KEY,    姓名 TEXTNOTNULL,    性别 TEXTNOTNULL,    班级 TEXTNOTNULL,    身高 TEXTNOTNULL,    体重 TEXTNOTNULL,    电话 TEXTNOTNULL);

📋 完整功能清单

一级功能
二级功能
功能说明
用户管理
注册账号
自定义用户名/密码,用户名唯一,重复注册会提示
用户管理
登录系统
验证用户名+密码,用户名不存在/密码错误均有提示
学生信息管理
新增学生信息
录入学号、姓名、性别、班级、身高、体重、电话,学号为唯一标识
学生信息管理
修改学生信息
按学号定位学生,修改所有信息字段
学生信息管理
删除学生信息
按学号精准删除指定学生信息
学生信息管理
查询学生信息
按学号查询单个学生完整信息
学生信息管理
查询所有信息
展示数据库中所有学生的完整信息
系统操作
退出管理系统
关闭游标、数据库连接,安全退出程序

🧪 全功能测试结果(附输入输出示例)

测试1:用户注册功能

测试场景
输入内容
输出结果
注册新用户
功能序号:2用户名:testuser密码:123456
注册成功!请登录!
注册重复用户名
功能序号:2用户名:testuser密码:654321
用户名已存在,请重新注册!

测试2:用户登录功能

测试场景
输入内容
输出结果
正确登录
功能序号:1用户名:testuser密码:123456
登录成功!进入学生信息管理菜单
用户名不存在
功能序号:1用户名:wronguser密码:123456
用户名不存在!请先注册用户!
密码错误
功能序号:1用户名:testuser密码:111111
密码错误!请重新登录!

测试3:新增学生信息功能

测试场景
输入内容
输出结果
新增有效学生信息
功能序号:1学号:001姓名:张三性别:男班级:七年级1班身高:175cm体重:60kg电话:13800138000
该学生信息新增成功!!!
新增重复学号
功能序号:1学号:001姓名:李四其他信息任意
程序抛出主键重复异常(注:可优化代码增加重复学号提示)

测试4:修改学生信息功能

测试场景
输入内容
输出结果
修改存在的学生信息
功能序号:2要修改的学号:001新姓名:张小三新性别:男新班级:七年级2班新身高:176cm新体重:61kg新电话:13900139000
学生信息修改成功!
修改不存在的学生信息
功能序号:2要修改的学号:002
该学生信息不存在!请先录入系统!

测试5:删除学生信息功能

测试场景
输入内容
输出结果
删除存在的学生信息
功能序号:3要删除的学号:001
学生信息删除成功!
删除不存在的学生信息
功能序号:3要删除的学号:002
该学生信息不存在!请先录入系统!

测试6:查询单个学生信息功能

测试场景
输入内容
输出结果
查询存在的学生信息
功能序号:4要查询的学号:001
查询信息如下:学号:001  姓名:张三  性别:男  班级:七年级1班  身高:175cm  体重:60kg  电话:13800138000
查询不存在的学生信息
功能序号:4要查询的学号:002
该学生信息不存在!请先录入系统!

测试7:查询所有学生信息功能

测试场景
前置条件
输入内容
输出结果
数据库有2条学生信息
已新增001(张三)、002(李四)信息
功能序号:5
查询信息如下:学号:001  姓名:张三  性别:男  班级:七年级1班  身高:175cm  体重:60kg  电话:13800138000学号:002  姓名:李四  性别:女  班级:七年级2班  身高:165cm  体重:48kg  电话:13700137000
数据库无学生信息
未新增任何信息
功能序号:5
不存在学生信息,请先录入!

测试8:退出系统功能

测试场景
输入内容
输出结果
正常退出
功能序号:6
欢迎下次使用!再见!游标、数据库连接关闭,程序终止

📝 完整源码(可直接复制运行)

import sqlite3# 连接SQLite数据库(不存在则自动创建)con = sqlite3.connect(r"D:\Desktop\PythonPrograms\database\mydadabase.db")cursor = con.cursor()  # 创建游标对象,用于执行SQL语句# -------------------------- 第一步:用户注册/登录模块 --------------------------whileTrue:    print()    print("--------------欢迎来到学生信息管理系统------------")    print("1.登录系统\n2.注册账号")    number = input("请输入功能序号:")# 注册账号逻辑if number == "2":        user = input("请输入用户名:")# 查询用户名是否已存在        selectSql = f"""select * from userInfos where 用户名='{user}';"""        cursor.execute(selectSql)        result = cursor.fetchone()if result:            print("用户名已存在,请重新注册!")continue# 重新进入注册/登录选择# 用户名不存在,执行注册        password = input("请输入密码:")        insertSql = f"""insert into userInfos(用户名,密码) values ('{user}','{password}');"""        con.execute(insertSql)        con.commit()  # 提交事务        print("注册成功!请登录!")# 登录系统逻辑elif number == "1":        user = input("请输入用户名:")        password = input("请输入密码:")# 查询用户信息        selectSql = f"""select * from userInfos where 用户名='{user}';"""        cursor.execute(selectSql)        result = cursor.fetchone()  # 返回格式:("用户名","密码")if result:# 验证密码if password == result[1]:                print("登录成功!")break# 登录成功,退出登录循环,进入功能菜单else:                print("密码错误!请重新登录!")else:            print("用户名不存在!请先注册用户!")# 输入错误序号else:        print("请输入正确的功能序号!!!")# -------------------------- 第二步:学生信息管理模块 --------------------------whileTrue:    print()    print("--------------欢迎来到学生信息管理系统------------")    print("1.新增学生信息\t2.修改学生信息\t3.删除学生信息")    print("4.查询学生信息\t5.查询所有信息\t6.退出管理系统")    number = input("请输入功能序号:")# 4. 查询单个学生信息if number == "4":        stuId = input("请输入要查询的学号:")        selectSql = f"""select * from stuInfos where 学号='{stuId}';"""        cursor.execute(selectSql)        result = cursor.fetchone()  # 返回元组:(学号,姓名,性别,班级,身高,体重,电话)if result:            print("查询信息如下:")            print(f"学号:{result[0]}  姓名:{result[1]}  性别:{result[2]}  班级:{result[3]}  身高:{result[4]}  体重:{result[5]}  电话:{result[6]}")else:            print("该学生信息不存在!请先录入系统!")# 5. 查询所有学生信息elif number == "5":        selectSql = f"""select * from stuInfos;"""        cursor.execute(selectSql)        resultList = cursor.fetchall()  # 返回二维列表:[(学号1,...),(学号2,...)]if resultList:            print("查询信息如下:")for result in resultList:                print(f"学号:{result[0]}  姓名:{result[1]}  性别:{result[2]}  班级:{result[3]}  身高:{result[4]}  体重:{result[5]}  电话:{result[6]}")else:            print("不存在学生信息,请先录入!")# 1. 新增学生信息elif number == "1":        stuId = input("请输入学号:")        stuName = input("请输入姓名:")        stuGender = input("请输入性别:")        stuClass = input("请输入班级:")        stuHeight = input("请输入身高:")        stuWeight = input("请输入体重:")        stuTel = input("请输入电话:")        insertSql = f"""insert into stuInfos(学号,姓名,性别,班级,身高,体重,电话)        values ('{stuId}','{stuName}','{stuGender}','{stuClass}','{stuHeight}','{stuWeight}','{stuTel}');        """        con.execute(insertSql)        con.commit()        print("该学生信息新增成功!!!")# 2. 修改学生信息elif number == "2":        stuId = input("请输入要修改的学号:")        selectSql = f"""select * from stuInfos where 学号='{stuId}';"""        cursor.execute(selectSql)        result = cursor.fetchone()if result:            stuName = input("请输入要修改的姓名:")            stuGender = input("请输入要修改的性别:")            stuClass = input("请输入要修改的班级:")            stuHeight = input("请输入要修改的身高:")            stuWeight = input("请输入要修改的体重:")            stuTel = input("请输入要修改的电话:")            updateSql = f"""update stuInfos set 姓名='{stuName}',性别='{stuGender}',班级='{stuClass}',身高='{stuHeight}',体重='{stuWeight}',电话='{stuTel}'  where 学号='{stuId}';"""            con.execute(updateSql)            con.commit()            print("学生信息修改成功!")else:            print("该学生信息不存在!请先录入系统!")# 3. 删除学生信息elif number == "3":        stuId = input("请输入要删除的学号:")        selectSql = f"""select * from stuInfos where 学号='{stuId}';"""        cursor.execute(selectSql)        result = cursor.fetchone()if result:            deleteSql = f"""delete from stuInfos where 学号='{stuId}';"""            con.execute(deleteSql)            con.commit()            print("学生信息删除成功!")else:            print("该学生信息不存在!请先录入系统!")# 6. 退出系统elif number == "6":        print("欢迎下次使用!再见!")        cursor.close()  # 关闭游标        con.close()     # 关闭数据库连接break# 输入错误序号else:        print("请输入正确的功能序号!")

🎯 优化建议(拓展学习)

  1. 安全性优化:当前SQL语句使用字符串拼接,存在SQL注入风险,可改用参数化查询(cursor.execute(sql, (参数1, 参数2)))
  2. 用户体验优化:新增学号重复提示、修改时保留原信息(无需全量输入)、输入格式校验(如电话、身高)
  3. 功能拓展:增加密码加密存储、学生信息导出Excel、分页查询大量数据等功能

### 总结

  1. 该系统基于SQLite实现了用户注册/登录+学生信息增删改查的完整业务流程,数据持久化存储更贴近实际开发场景;
  2. 全功能测试覆盖了正常/异常场景,可直接验证代码的完整性和健壮性;
  3. 源码可直接复制运行,仅需调整数据库路径并提前创建数据表,适合Python初学者学习数据库操作。

关注我不迷路!!!

加我(发源代码和数据库素材)拉你进少儿编程交流群!!!

最新文章

随机文章