Student-information-management-system

本项目是一个学生信息管理系统,这个项目是用Python语言实现的,也实现了图形化界面的显示,同时也实现了管理员端,学生端两个登陆入口,同时底层使用的是Redis做的数据持久化。

This project is a student information management system, this project is implemented in Python language, but also to achieve the graphical interface display, but also to achieve the administrator side, the student side of the two login entrance, at the same time the bottom using Redis to do data persistence.


Python学生信息管理系统图形化界面-老师端-学生端项目实现

一,本项目简介

1.1 项目的功能介绍:

本项目是一个有关学生信息管理系统的项目,项目实现语言:Python。相关的功能:

  • 常见的学生信息的增删改查操作。
  • 当查询单个学生的信息时可以在界面上显示学生的一寸免冠照
  • 可以区分期中,期末的成绩
  • 后台使用的是Redis数据库
  • 实现了教师端登陆,学生端登录双页面
  • 可以进行用户密码的修改

1.2 项目涉及到的技术点:

  • Python语言实现相关的逻辑
  • tkinter页面设计,图片处理等相关的Python库
  • Python对接Redis数据库实现数据的相关操作

二,项目结构,环境及展示

2.1 项目结构

当前项目

  • img(存储相关图片资源的目录)
  • InitData.py(为数据库初始化学生数据使用,用于做实验)
  • Main.py(运行项目的入口文件)
  • LoginPage.py(实现老师,学生登录的功能实现文件)
  • StudentManager.py(老师端功能实现页面)
  • StudentOnly.py(学生端功能实现页面)

2.2 项目环境

2.2.1 Python环境

我使用的是 Anaconda 的本地继承环境,内置 Python3.6.5的版本

C:\Users\云梦归遥>python -V
Python 3.6.5 :: Anaconda, Inc.
2.2.2 相关的Python库
  • tkinter
  • redis
  • json
  • pillow
2.2.3 数据持久化实现-Redis数据库

  • 官网下载,傻瓜式安装即可

  • 如果有需要还可以下载一个Redis的可视化工具,就是你可以切实的,直观的看到和管理数据库,以及相关的数据的一个图形化界面工具

2.3 项目展示

2.3.1 登录页面

2.3.2 老师(管理员)页面

2.3.3 学生端页面

三,项目各个部分细节

3.1 首先是 InitDada.py,

这个文件为我们做简单的实验演示提供了一些初始化的数据,当运行此文件就会对接到Redis数据库,然后我们就可以真正的运行我们的项目了
import redis
import jsondb2 = redis.Redis(host='127.0.0.1', port=6379, db=3, decode_responses=True)
db1 = redis.Redis(host='127.0.0.1', port=6379, db=2, decode_responses=True)
db0 = redis.Redis(host='127.0.0.1', port=6379, db=1, decode_responses=True)
db2.hset('student', '201512101111', json.dumps({'schoolnumber': '201512101111', 'name': '杨小颖', 'chinese': 89,'math': 84, 'english': 85, 'total': 258}))
db0.hset('student', '201512101111', json.dumps({'schoolnumber': '201512101111', 'name': '杨小颖', 'chinese': 79,'math': 74, 'english': 75, 'total': 228}))
db1.set('201512101111', '123456')
db2.hset('student', '201623202222', json.dumps({'schoolnumber': '201623202222', 'name': '刘小菲', 'chinese': 75,'math': 70, 'english': 96, 'total': 241}))
db0.hset('student', '201623202222', json.dumps({'schoolnumber': '201623202222', 'name': '刘小菲', 'chinese': 65,'math': 60, 'english': 86, 'total': 211}))
db1.set('201623202222', '123456')
db2.hset('student', '201734303333', json.dumps({'schoolnumber': '201734303333', 'name': '关小彤', 'chinese': 100,'math': 100, 'english': 100, 'total': 300}))
db0.hset('student', '201734303333', json.dumps({'schoolnumber': '201734303333', 'name': '关小彤', 'chinese': 90,'math': 90, 'english': 90, 'total': 270}))
db1.set('201734303333', '123456')
db2.hset('student', '201845404444', json.dumps({'schoolnumber': '201845404444', 'name': '华小宇', 'chinese': 60,'math': 60, 'english': 60, 'total': 180}))
db0.hset('student', '201845404444', json.dumps({'schoolnumber': '201845404444', 'name': '华小宇', 'chinese': 50,'math': 50, 'english': 50, 'total': 150}))
db1.set('201845404444', '123456')
这样我们的项目就会既初始化了学生的个人信息,也初始化了用户名,密码等内容,这样就可以正常的进行登陆,以及查询,修改学生信息了。

3.2 准备相关的素材图片,为我们展示学生的个人一寸免冠照提供准备

3.3 接下来就可以愉快的运行我们的完整项目了

3.3.1 Main.py(项目入口文件)

import tkinter as tk
from LoginPage import LoginPageroot = tk.Tk()
root.title('学生信息管理系统')
LoginPage(root)
root.mainloop()

这个文件主要是作为一个引用文件,起到一个引用登录页面的功能,这样直接暴露在外部的细节就会更少,也看起来更加的简洁,美观

3.3.2 LoginPage.py(实际的登录页面)

import tkinter as tk
import tkinter.messagebox
from StudentManager import StudentManager
from StudentOnly import Studentonly
import redis
import jsonclass LoginPage(object):def __init__(self, master=None):self.root = masterself.root.geometry('%dx%d+%d+%d' % (300, 180, 600, 200))self.username = tk.StringVar()self.password = tk.StringVar()self.page = tk.Frame(self.root)self.page.pack()self.create_page()def create_page(self):tk.Label(self.page).grid(row=0, stick=tk.W)tk.Label(self.page, text='账户: ').grid(row=1, stick=tk.W, pady=10)tk.Entry(self.page, textvariable=self.username).grid(row=1, column=1, stick=tk.E)tk.Label(self.page, text='密码: ').grid(row=2, stick=tk.W, pady=10)tk.Entry(self.page, textvariable=self.password, show='*').grid(row=2, column=1, stick=tk.E)tk.Button(self.page, text='登陆', command=self.login_check).grid(row=3, stick=tk.W, pady=10)tk.Button(self.page, text='退出', command=self.page.quit).grid(row=3, column=1, stick=tk.E)def login_check(self):name = self.username.get()secret = self.password.get()db2 = redis.Redis(host='127.0.0.1', port=6379, db=2, decode_responses=True)if name == 'root' and secret == '123456':self.page.destroy()StudentManager(self.root)elif name in db2.keys():mi = db2.get(name)for key in db2.keys():if name == key and secret == mi:self.page.destroy()Studentonly(self.root, name)else:tkinter.messagebox.showinfo(title='错误', message='账号或密码错误!')if __name__ == '__main__':root = tk.Tk()LoginPage(root)root.mainloop()

这个是登录页面的逻辑实现

  • 我将老师端简单的设置用户名为root(因为使用Linux系统习惯了,你们也可以叫admin,什么的)

  • 密码的话就简单的设置了一个“123456”

  • 学生端的登录的话就是直接访问数据库,进行用户名和密码的校验

  • 如果用户名或密码有误,就会弹出对应的提示内容

  • 若果校验成功,就会依照用户名分别进入管理员端和学生端,然后进行相关的操作

3.3.3 StudentManager.py 和 StudentOnly.py (这两个文件主要是分别实现管理员端的逻辑和学生端的逻辑,因为代码内容实在太多,这里就不以展示了。

四.我已经将整个项目开源到GitHub上

  • 因为作为一名程序员,学习了这么多的开源技术,当然也要取之于开源,用之于开源。

  • 希望大家可以多多支持,当爷爷支持大家对我的项目进行不断的修正和补充,增加更多新的功能,然后继续push到GitHub上,不断地进行修正,让它成为一个更加优秀的项目

GitHub项目链接:

  • https://github.com/liuyunfei1/Student-information-management-system.git

Python学生信息管理系统图形化界面-老师端-学生端项目实现相关推荐

  1. python图形化界面开发工具,python如何做图形化界面

    Python tkinter能做出好看的图形界面么 谷歌人工智能写作项目:小发猫 python 图形化界面 使用wxpython,import wxapp = ()win = wx.Frame(Non ...

  2. python中easygui是干嘛用的-Python简单的图形化界面——easygui

    easygui是Python的一个图形化界面的库,使用前需要先添加这个库.在cmd里运行下面命令. pip install easygui1 等待安装完成后就可以使用了. msgbox()--消息弹窗 ...

  3. AidLearning中使用Wizard布局python应用程序图形化界面

    Wizard可以快速构建应用程序的图形化界面,下图是Wizard的工作区域介绍. 第一步:打开AidLearning中的Wizard工具.单击第一个Layout_H容器,选中容器,在右侧属性窗口中将容 ...

  4. Python中Tkinter 图形化界面设计(详细教程)

    Python-Tkinter 图形化界面设计(详细教程) 一.图形化界面设计的基本理解 二. 窗体控件布局 2.1 根窗体呈现示例 2.2 tkinter 常用控件 2.2.1常用控件 2.2.2 控 ...

  5. centos7操作系统图形化界面和命令行界面切换

    centos7操作系统 由图形化界面切换到命令行界面:ctrl+alt+f2+(fn) 由命令行界面切换到图形化界面:ctrl+alt+f1+(fn) 如果是笔记本电脑,输入上述命令时记得加上fn,即 ...

  6. 学校计算机老师关心学生的作文600字,老师对学生的关爱作文(精选3篇)

    老师对学生的关爱作文(精选3篇) 在我们平凡的日常里,大家都经常接触到作文吧,写作文是培养人们的观察力.联想力.想象力.思考力和记忆力的重要手段.相信很多朋友都对写作文感到非常苦恼吧,以下是小编为大家 ...

  7. 学校计算机老师关心学生的作文600字,老师关爱学生的作文三篇

    老师关爱学生的作文三篇 引导语:相信很多人在学校都受过老师的关爱,而有关老师关爱学生的作文要怎么写呢?接下来是小编为你带来收集整理的文章,欢迎阅读! 老师关爱学生的作文一 世界上最伟大的当然是母爱,但 ...

  8. python编写的软件界面-为Python程序添加图形化界面的教程

    Python支持多种图形界面的第三方库,包括: Tk wxWidgets Qt GTK 等等. 但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用. ...

  9. python编程界面怎么打开-为Python程序添加图形化界面的教程

    Python支持多种图形界面的第三方库,包括: Tk wxWidgets Qt GTK 等等. 但是Python自带的库是支持Tk的Tkinter,使用Tkinter,无需安装任何包,就可以直接使用. ...

最新文章

  1. 字节跳动取消大小周后首次发薪,员工炸锅:薪资普降 17%
  2. [LeetCode]#13 3sum
  3. Matlab之while循环语句
  4. echarts指针进度条刻度调整_指针式流量开关
  5. 北风设计模式课程---享元模式
  6. 用dict读取和写入表格_用Python快速处理表格,让你快人一步两步三四部
  7. qt for android 图片可拉伸,qt实现九宫格布局,图片拉伸
  8. 程序员面试金典 - 面试题 04.12. 求和路径(二叉树递归)
  9. Vue 实现 Open Graph 分享预览
  10. [MOSS开发]:带托管代码的infopath2007表单创建, 发布,应用
  11. 腾讯向开放原子开源基金会捐赠TencentOS tiny、TKEStack两大项目!
  12. 经典机器学习系列(十三)【结构化学习】
  13. linux发邮件权限,Linux通过命令行发邮件的步骤
  14. pix2pixhd_图像翻译三部曲:pix2pix, pix2pixHD, vid2vid
  15. ios客户端学习-手机屏幕尺寸
  16. 黑天鹅mobi_破坏我们系统的因素:黑天鹅分类法
  17. Easyui DataGrid Editor
  18. 微软office与WPS Office如此相似,微软为什么不告金山侵权呢?
  19. Android 一定要培训吗,安卓开发需要学什么2
  20. win7无法访问win10计算机,共享服务,教您win10共享文件夹无法访问怎么办

热门文章

  1. qq引流有哪些模式? QQ引流的几种方法
  2. 编写程序,解决鸡兔同笼问题:一个笼子里关着鸡和兔子。问笼中各有多少只鸡和兔?
  3. 电脑图片无损放大怎么操作 ?怎么无损放大图片?
  4. MBA案例分析: 美国西南航空的十年发展战略规划
  5. Matlab 2019a
  6. 树的应用 —— 树、森林与二叉树的转换
  7. Android中layout过程详解
  8. Linux内核中的算法和数据结构
  9. 导航窗格里计算机在桌面下,电脑桌面工具栏如何调到下方
  10. 关系数据库和非关系数据库