Python : 使用python实现教务管理系统(GUI界面+数据库)

news2024/12/23 7:51:20

一、设计目的

1.熟悉Python和相关软件的操作。
2.基于本学期所学Python知识,熟练应用掌握,制作符合要求的教务管理系统。
3.会对程序运行中的错误代码进行分析,找出合理的解决方案。
4.掌握tkinter开发流程,布局方法和主要组件;能利用tkinter库实现用户图形界面程序开发 ;
5.掌握使用Python中SQLite数据库创建连接数据库并创建数据表;

二、需求分析

设计一款教务管理系统,实现如下功能:
教务管理系统面向三种身份,系统管理员,教师,学生;不同身份登录进入不同的界面,通过连接SQLite数据库来进行增删改查操作;系统以菜单方式工作,包括信息的录入、浏览、查询、修改、删除、退出等基本功能;

三、设计思路

(1)创建登录界面实现三种身份,系统管理员,教师,学生登录﹔
(2)创建数据库创建表;
(3)设计类和对象;
(4)判断登录的身份:
(4-1)如果登录的是管理员,则进入到管理员界面,可以进行添加教师,学生,查看教师和学生,对教师和学生进行修改和删除;
(4-2)如果登录的是教师用户,则进入到教师主界面,可以添加成绩,包括添加,修改和删除,根据不同需求查看成绩对成绩进行排序,还可以查看学生反馈的意见;
(4-3)如果登录的是学生,则进入到学生后台主界面可以查看成绩,进行问题反馈并保存到txt文件中。
本系统用到的数据库为SQLite数据库。
在这里插入图片描述

四、实验结果及系统运行测试

  1. 运行main.y程序进入到主窗口。
    在这里插入图片描述

  2. 在登录界面有三种身份登录,选择管理员登录,输入账户(admin)和密码(123456),如果账户或密码输入错误则弹出提示框,随后清空输入框。
    在这里插入图片描述
    在这里插入图片描述

  3. 账户和密码输入正确则进入管理员主界面。
    在这里插入图片描述

  4. 点击账户权限管理选择创建教师账号,输入信息,点击创建,弹出提示框添加成功,添加到数据库中。
    在这里插入图片描述

  5. 点击账户权限管理选择创建学生账号,输入信息,点击创建,弹出提示框添加成功,添加到学生数据库中。
    在这里插入图片描述

  6. 点击信息查询按钮进入查询界面,选择查询教师信息,显示刚刚新增的教师信息,点击退出则退出此界面。
    在这里插入图片描述

  7. 点击信息查询按钮进入查询界面,选择查询学生信息,显示刚刚新增的学生信息,点击退出则退出此界面。
    在这里插入图片描述

  8. 点击信息维护按钮进入信息维护界面,选择修改教师信息,输入你要修改的教师工号点击查询在旁边显示原先信息,在文本框输入你要修改的信息,点击修改弹出修改成功信息,点击退出则退出此界面。
    在这里插入图片描述
    在这里插入图片描述

  9. 点击信息维护按钮进入信息维护界面,选择修改学生信息,输入你要修改的学生学号点击查询在旁边显示原先信息,在文本框输入你要修改的信息,点击修改弹出修改成功信息,点击退出则退出此界面。
    在这里插入图片描述
    在这里插入图片描述

  10. 点击信息维护按钮进入信息维护界面,选择删除教师信息,输入你要删除的教师工号点击查询在旁边显示原先信息,点击删除弹出删除成功信息,点击退出则退出此界面。
    在这里插入图片描述
    在这里插入图片描述

  11. 点击信息维护按钮进入信息维护界面,选择删除学生信息,输入你要删除的学生学号点击查询在旁边显示原先信息,点击删除弹出删除成功信息,点击退出则退出此界面。
    在这里插入图片描述

  12. 点击退出登录回到登录界面,选择登录角色为教师,输入数据库中注册的账户和密码,如果账户不存在则提示账号不存在,密码输入错误则弹出提示框,密码正确则提示登录成功进入教师主界面。
    在这里插入图片描述

  13. 登录成功后显示登录用户名称,点击我的可以查看个人信息和修改账号密码。
    在这里插入图片描述

可以查看到当前登录用户的详细信息。
14. 点击修改密码,输入你要修改的新密码,再次输入密码,判断两次密码是否一致,一致则点击修改,成功修改。
在这里插入图片描述

  1. 进入教师主界面选择成绩录入,输入信息,点击成绩录入,成功添加到数据库中。
    在这里插入图片描述

  2. 点击查询按钮,进入到查询界面,默认查询所有科目成绩,用户可以输入学号根据学号查询或者点击查询全部按钮查询所有成绩信息
    在这里插入图片描述

  3. 点击统计按钮,进入到统计界面,点击根据成绩排序,查询全部信息并根据成绩高低进行排序
    在这里插入图片描述

  4. 点击编辑按钮,进入到编辑界面,用户可以进行修改成绩和删除成绩,点击修改成绩弹出新窗口,输入你要修改成绩的学号,点击查询在旁边显示改学号原来的成绩信息,点击修改进行成绩修改。点击删除成绩按钮,和修改类似,点击退出,退出此界面。

在这里插入图片描述
19. 点击意见反馈进入意见反馈界面,点击查看可以看到学生反馈的意见。
在这里插入图片描述
20. 点击退出登录回到登录界面,选择登录角色为学生,输入数据库中注册的账户和密码,如果账户不存在则提示账号不存在,密码输入错误则弹出提示框,密码正确则提示登录成功进入教师主界面。
在这里插入图片描述

  1. 登录成功进入学生管理主界面,在标题栏显示当前登录学生用户名,主界面显示当前网速信息。 在这里插入图片描述

  2. 点击我的可以查看个人信息和修改账号密码。
    在这里插入图片描述

可以查看到当前登录用户的详细信息。
23. 点击修改密码,输入你要修改的新密码,再次输入密码,判断两次密码是否一致,一致则点击修改,成功修改。
在这里插入图片描述

  1. 点击查询按钮,进入查询成绩界面,点击查看可以看到自己的成绩。
    在这里插入图片描述

  2. 点击意见反馈进入意见反馈界面,在输入框输入想要反馈的意见,点击写入,写入到数据库中,当我们切换教师登录时可以查看学生反馈的意见。
    在这里插入图片描述

查到学生反馈的意见。
26. 点击提交作业按钮,进入提交作业窗口,输入学号和姓名,将作业的代码放到输入文本框,点击确定则生成一个.py文件,接着可以输入第二个作业操作同上,作业提交完毕后,点击打包zip,则可以把刚刚生成的.py文件以用户输入的姓名+学号命名打包成zip文件。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
文件夹中已生成作业文件夹
在这里插入图片描述
Zip文件中已保存刚才提交的作业
27. 退出系统

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/113917.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C语言位域

如果程序的结构中包含多个开关量,只有 TRUE/FALSE 变量,如下: struct {unsigned int widthValidated;unsigned int heightValidated; } status; 这种结构需要 8 字节的内存空间,但在实际上,在每个变量中,…

JavaScript游戏开发(4)(笔记)

文章目录八、角色动作状态的管理8.1 准备部分8.2 角色状态改变的基本方式8.3 完善整个代码8.4 存在的问题九、简单的横板动作卷轴游戏9.1 准备部分9.2 输入管理器9.3 状态管理器9.4 背景管理器9.5 敌人管理器9.6 碰撞检测、UI绘制9.7 更多的角色状态与特效9.8 完善游戏附录素材…

跳槽、换房、不忘输出,与你分享我匆忙的 2022~

前些日子下班回家的瞬间,忽然想起去年春节还在跟老爸吐露职场的困境和对房子的无奈。哪曾想过了不到半年的时间竟全部解决,令我不禁感叹人生的捉摸不透。 让我姑且花点文字记录下,与你分享我这一年的匆匆忙忙~ 目录前瞻&#xf…

Listener监听器 | 监听域对象创建和销毁、使用监听器统计网站在线人数

目录 一:监听域对象创建和销毁 1、什么是监听器?监听器有什么用? 2、Servlet规范中提供了哪些监听器? 3、实现一个监听器的步骤 4、HttpSessionBindingListener 5、HttpSessionIdListener & HttpSessionActivationList…

【编译原理】实验二:NFA到DFA

目录 实验二 NFA 到 DFA 一、实验目的 二、预备知识 三、实验内容 NFA向DFA的转换的思路 NFA和DFA之间的联系 NFAToDFA.h 文件 main.c 文件 RegexpToPost.c 文件 PostToNFA.c 文件 NFAFragmentStack.c 文件 PostToNFA.h 文件 NFAFragmentStack.h 文件 NFAStateStack.h 文件 dem…

【C++】使用yaml-cpp操作yaml文件

目录 1 安装yaml-cpp 2 工程结构 (1)test.yaml的内容 (2)CmakeLists.txt (3)代码 3 运行结果 4 报错处理 1 安装yaml-cpp (1)cd 到yaml-cpp下载的目的路径 例如:…

spring之反射机制之Spring-DI核心实现

文章目录前言一、回顾反射机制之反射调用方法1、编写一个方法类SomeService2、通过反射机制调用SomeService类中的方法二、反射机制之Spring-DI核心实现前言 调用一个方法当中含有几个要素? 1、调用哪个对象 2、调用哪个方法 3、调用方法的时候传什么参数 4、方法执…

一文弄懂 React ref

前言 对于 Ref 理解与使用,一些读者可能还停留在用 ref 获取真实 DOM 元素和获取类组件实例层面上 其实 ref 除了这两项常用功能之外,还有很多别的小技巧 通过本篇文章的学习,你将收获 React ref 的基本和进阶用法,并且能够明白…

LeetCode HOT 100 —— 621. 任务调度器

题目 给你一个用字符数组 tasks 表示的 CPU 需要执行的任务列表。其中每个字母表示一种不同种类的任务。任务可以以任意顺序执行,并且每个任务都可以在 1 个单位时间内执行完。在任何一个单位时间,CPU 可以完成一个任务,或者处于待命状态。 然…

使用 SwiftUI 布局协议构建六边形网格,如何制作在六边形网格中显示子视图的通用 SwiftUI 容器

我们将要制作的组件可以作为Swift 包使用。 SwiftUI 非常擅长构建矩形框架的层次结构。随着最近的加入,Grid它变得更好了。然而,今天我们要构建一个疯狂的六边形布局。当然,没有专门的布局类型。所以我们用协议建立我们自己的Layout! 绘制一个六边形 让我们首先为我们的…

在linux中配置redis去中心化集群

目录 前情回顾 一、集群配置 二、启动redis集群 三、检验是否成功 成功! 前情回顾 linux中配置redis主从复制及开启哨兵模式 一、集群配置 查看所有的redis服务进程 ps -ef | grep redis 关闭所有的redis服务(6379,6380,6381) kill -9 99168 kill …

第十章:数据库恢复技术

1、【多选题】下列哪些属于事务的特征: 正确答案: AD 2、【多选题】下列关于故障恢复的说法正确的是: 正确答案: BC 3、【多选题】下列说法错误的是: 正确答案: AB

无线通信网络优化的自动路测系统设计(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 无线通信网络是一个动态的网络,无线网络优化是一项贯穿于整个网络发展全过程的长期工程。在网络建成投入运营以后,…

学习笔记 - Word、WPS分别设置背景色

学习笔记 - Word、WPS分别设置背景色前言实现原理实现步骤模拟背景色1. 插入矩形形状2. 调整矩形:位置、文字环绕、大小。3. 调整颜色实现按节分别设置1. 插入分节符2. 取消“同前节”3. 矩形入进页眉建议场景参考资料前言 Word、WPS 都没有自带此功能。只能统一设…

node.js+uni计算机毕设项目基于微信小程序的校园快递代取平台(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

第十一章:并发控制

1、【多选题】二级封锁协议能够避免数据库哪些一致性问题 正确答案: AB 2、【多选题】下列说法正确的是: 正确答案: ABC 3、【多选题】下列哪些是解决死锁的方法: 正确答案: ABC

node.js+uni计算机毕设项目互联网教育系统小程序(程序+小程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程。欢迎交流 项目运行 环境配置: Node.js Vscode Mysql5.7 HBuilderXNavicat11VueExpress。 项目技术: Express框架 Node.js Vue 等等组成,B/S模式 Vscode管理前后端分离等…

k8s-dashboard布署

k8s-dashboard布署Kubernetes dashboard作用获取Kubernetes dashboard资源清单文件修改并部署kubernetes dashboard资源清单文件访问Kubernetes dashboardKubernetes dashboard作用 通过dashboard能够直观了解Kubernetes集群中运行的资源对象通过dashboard可以直接管理&#x…

标准的晋升 PPT 长什么样子?互联网职场晋升内幕!想升职加薪?得这么干……...

如果你真的想顺利地升职加薪,就得从现在开始,重新系统地理解晋升到底是怎么回事。面评技巧导学你可能会认为, “是金子总会发光的”,只要自己能力达到了, 晋升就是“水到 渠成”的事情。毕竟评委的眼睛都是雪亮的&am…

node中,path.join和path.resolve的区别

1. path.join和path.resolve的区别 path.join 拼接路径能够识别 \ path.resolve 从当前的执行路径,解析出绝对路径不能识别 \ ,会被当成根路径 注意下面的例子,是从当前的执行路径,解析出绝对路径 使用 process.cwd() 可以获取…