基于Python开发高校教务系统

基于Python开发高校教务系统 一,需求分析 1,1 业务场景 高校教务系统用户分为三种: 管理员 , 教师 , 学生

本文包含相关资料包-----> 点击直达获取<-------

基于Python开发高校教务系统

一、需求分析

1.1 业务场景

高校教务系统用户分为三种: 管理员 教师 学生

这也是根据现实大学生中的教务系统的情况,以及自己的一些想象,在此基础上开发以 Python 语言为基础开发了这一款“高校教务系统”管理类型的软件。下面介绍一下三种用户的不同业务类型。

  • 管理员业务 :主要包括教务信息管理(学院信息管理、学系信息管理、教师信息管理、班级信息管理、学生信息管理);个人信息管理(修改资料、修改密码);课程信息管理(开课管理、选课管理);成绩管理(开启考试、成绩录入、查看成绩);公告(发布公告、查看公告);系统(回到首页、退出系统)。
  • 教师业务 :主要包括个人信息管理(个人信息、修改密码);课程管理(开课管理、学生选课管理);上课安排(查看课表、学生签到情况);课程考核(考试安排、成绩录入、查看成绩);评教管理(查看学生评教);公告(发布公告、查看公告);系统(回到首页、退出系统)。
  • 学生业务 :个人信息管理(个人信息、修改密码);课程管理(选课系统、个人选课情况);上课安排(查看课表、学生签到);课程考核(查看考试时间、查看成绩);评教管理(查看学生评教);公告(查看公告);系统(回到首页、退出系统)。

1.2 业务属性

  • 管理员:账号、密码、姓名、身份类型、找回密码、联系方式。
  • 教师:教工号、姓名、性别、密码、找回密码、联系方式、所在学院,以及开课业务、签到业务、公告业务、成绩管理业务、评教业务等。
  • 学生:学号、姓名、性别、密码、找回密码、学院、班级,以及选课业务、签到业务、公告业务、成绩相关业务、评教业务等。
  • 学院:学院编号、学院名、学院楼、学院班级数、学院学上人数、简介。、
  • 学系:学系编号、所在学院、以及学院领导名。
  • 班级:班级号、班级名、所在学院、所在学系、班级人数、班级简介。
  • 开课:课程号、课程名、任课老师、课程学分、课程学时、星期几、第几节上课、上课教室、考试时间、学生对课程的评教、课程的平时成绩占比、课程的期末成绩占比。
  • 选课:学生学号、课程号、学生的签到次数、平时成绩、期末成绩、总评。
  • 公告:发布者的 ID、发布内容、发布时间。

1.3 业务逻辑图

开始界面:

一共有三种不同的身份登录高校教务系统,分别是:管理员登录,教师登录,学生登录。如果是新用户的话,还可以注册账号登录,这里注册账号部分,只提供教师与学生账号的注册。

管理员的业务逻辑图:

教师的业务逻辑图:

学生的业务逻辑图:

二、系统设计

2.1 数据库设计

  • 管理员表:(账号、密码、姓名、身份类型、找回密码、联系方式)。
  • 教师表:(教工号、姓名、性别、密码、找回密码、联系方式、所在学院)。
  • 学生表:(学号、姓名、性别、密码、找回密码、学院、班级)。
  • 学院表:(学院编号、学院名、学院楼、学院班级数、学院学上人数、简介)。
  • 学系表:(学系编号、所在学院、以及学院领导名)。
  • 班级表:(班级号、班级名、所在学院、所在学系、班级人数、班级简介)。
  • 开课表:(课程号、课程名、任课老师、课程学分、课程学时、星期几、第几节上课、上课教室、考试时间、学生对课程的评教、课程的平时成绩占比、课程的期末成绩占比)。
  • 选课表:(学生学号、课程号、学生的签到次数、平时成绩、期末成绩、总评成绩)。
  • 公告表:(发布者的 ID、发布内容、发布时间)。
  • 签到表:(学号、课程号、签到时间、签到日期)。

部分建表:

教师表:

开课表:

选课表:

学生表:

2.2 系统功能实现分析

管理员功能实现

学院信息管理:主要是对学院表的添加、修改、删除等功能,初始化时将学院表里面的数据读出放到界面的表格里面。事件响应主要包括:点击单元格后将点击行的数据放到界面的相应的控件里面。然后可以对选择数据进行修改等操作。

学系信息管理、教师信息管理、班级信息管理:这里的基本操作和学院信息的管理差不多,这里主要添加了一个功能切换按钮,就是可以改变当前状态为添加还是修改。当点击单元格、不同按钮时,需要设置一下所有按钮的使能情况,这样才能符合功能的需要。

学生信息管理:这里在上面信息管理的基础上添加了多条件筛选功能,可以通过学院、学系、班级来筛选学生信息。(由于不同的学院的学系和班级是不同的,所有当用户在选择学院后,系统会根据用户选择自动填充学系下拉框,选择学系后,根据学系所有班级填充班级筛选下拉框)。

修改资料:对管理员的基本信息进行数据库操作即可(这里需要注意的是:不是所有信息都可以修改的,比如:ID 这类固定的是不能修改的)。

修改密码:这一部分需要加多重验证,原密码错误不能修改密码,新密码和确定密码不相同不能修改密码,新密码为空不能修改密码。

开课管理,选课管理,开启考试,成绩录入,查看成绩,发布公告,查看公告:作为管理员,这里主要是对教师的开课进行管理,基本功能和教师权限差不多(由于篇幅原因,这里统一在教师业务实现分析介绍)。

教师功能实现

个人信息管理:对教师表基本信息的修改。

修改密码:与前面管理员的密码修改方式一样。

开课管理:教师可以添加开设新的课程(填写下方控件内容,然后点击新增,保证填写数据类型正确时,就会将新开课程添加到数据库的开课表中);这里也设置了一个切换状态的按钮,这个是用来切换操作类型是添加课程还是修改课程信息;修改和删除按钮只能在点击课程为自己所开设的情况下才能对其进行修改和删除操作;界面上方有两个查看按钮:查看自己开课情况、查看全部老师开课情况。

学生选课情况:可以通过不同的课程号来查看本课程的学生选课情况,数据库里面有一个选课表,当学生添加选课时,数据可更新后,这里就可以实时显示。

教师查看课表:课程表是通过一个表格控件实现的,我们从数据库里面获得老师所开的所有课程,分别拿到课程名、上课地点、星期几,第几节等信息,这样就可以根据所拿到的信息,在视图中显示出来。

学生签到情况:在数据库中有了一个专门纪录签到的表,老师可以通过不同的课程号来查看本课程的学生签到情况:学生学号,姓名,学院,班级,以及签到时间。还可以通过条件筛选,也可以查看所有课程的学生签到情况。

考试安排:任课老师可以对自己的所开设的课程的考试信息进行设置和修改,主要是对数据库中的开课表进行操作,任课老师可以设置课程的考试时间,考试地点,开始形式等相关信息。

成绩录入:教师可以通过课程号来筛选选课学生的成绩单,也可以筛选全部学生的成绩单,将筛选出来的结果在界面上显示出来,这里是对学生表、选课表、开课表三表的查询操作。点击单元格后,可以将所点击行的信息,用一个字符串保存下来,然后在界面的下面以提示的形式显示。导入成绩的实现,这里我写了一个专门用来读写文件的类,当用户点击导入成绩按钮后,用户可以选择自己需要导入的成绩名单,只要格式正确就会将结果显示到界面的表格视图中,这个时候名单并没有导入数据库,界面上的导入按钮会变成确定导入按钮,当教师点击确定导入按钮后,才会导入数据库。这里会出现这么一种情况:成绩名单中有这名同学,而学生表中没有这名同学,这样就会导致界面上就筛选不出这名同学的信息,但在成绩表中会出现这位同学的成绩,当然这也是符合现实需要的。

查看成绩:这里就是对选课表里面的成绩部分的相关信息进行操作,按不同的需要,将筛选的结果显示到界面上。

学生评价情况:在学生评教后,教师可以查看全校的教师的评教情况,主要是对教师开课表进行筛选显示操作。

公告:教师和管理员可以发布公告,在数据库中建立了一个公告表,当教师或者管理员发布公告时,就是对这个公告表进行插入(包括发布者姓名、发布时间、发布内容等信息)。

查看公告:对公告内容在界面显示。

返回主页:跟换主界面的主画板,将里面的内容清空。

退出系统:直接关闭程序。

学生功能实现

个人信息:读取学生表,显示所需内容。

修改密码:这里和前面教师的修改密码方法一样的。

学生选课:点击单元格,显示点击行的信息到下方的空间框中。查看全部老师开课情况,这时新增选课按钮启用,退选课程按钮禁用,当用户查看自己选课情况时,三个按钮全部开启,可以退选自己所选课程。

个人选课情况:在数据库的选课表中筛选出学号为自己的选课纪录,然后显示到自己界面,可以单击查看详情。

查看课表:根据自己的选课情况,将自己的选课在课表中填充起来,方法和教师的课表生成方法类似。

学生签到:我设置的签到原则是,一个学生,每天只能签到一次。所有在数据库中我建立了一个签到表(课程号、学号、签到的具体时间(这个时间用来在界面显示学生签到的具体时间,不是主键),签到的日期(这为一个主键,这个就是用来实现上面的需求防止学生一天同一门课多次签到))。

查看考试时间:对自己所选课程的考试时间进行查看。

成绩查看:学生可以查看自己所选课程的成绩。

学生评教:学生可以对自己所选课程进行评教,评价等级可以为好评或者差评,当为好评时,将老师开设课程的评教等级加一,当为差评时,将本门课程的评教等级在原来的基础上减去一。

查看公告:查看管理员和教师所发布的公告。

返回主页,退出系统。

三、关键技术介绍

界面切换的设置

程序开始进入登录界面,用户选择不同的身份登录,登录成功后加载不同的主界面,我为三种不同的身份写了三个不同的主界面。主界面功能通过菜单栏来控制,然后根据用户选择的情况将不同功能的面板加载到界面上,将原来的面板界面覆盖掉。

点击单元格或者不同按钮,需要填充文本框或者启用或者禁用启用按钮。

这一部分就是获得点击行所需要的信息,保存下来后,填充到相应的控件。

教师或者老师生成课表

初始化准备数据:

获得课程在课表中所在的位置:

获得课程位置后,在二维界面中显示出来:

导入成绩

首先获得文件模态框选择后的文件路径:

写了一个类(文件读写相关的类),有一个专门用来读 EXCL 文件(成绩单)的方法,将所读出的数据返回给主界面,在主界面中显示出来,这时的成绩数据被没导入到数据库中,界面导入按钮变成“确定导入”按钮,点击后,才会真正写入到数据库中去。

学生签到

学生评教

学生可以对自己所选课程进行评价,包括好评与差评,首先需要选择自己需要评教的课程,然后点击好评按钮或者差评按钮,两个按钮的实现差不多,就是对数据开课表中的课程评价修改即可。

篇幅原因,这里就不介绍了。

四、软件说明书

登录界面和注册界面:

管理员界面:

学生信息管理界面:

教师界面:

教师开课管理:

学生管理:

学生评教:

五、结论与展望

结论 :整个课程设计大作业开发周期一周左右的时间完成,其中包括:开始的界面规划,数据库的设计,代码的编程,Bug 的修改,功能的补充,实验报告的完成等。整个过程还是很投入的,这次课程设计代码量 3000-4000 行左右,功能也比较的齐全,算是一个比较完整的项目了。在做这种项目的过程中最重要的一个环节就是,开始就要规划好自己的界面功能什么的,在思路清晰的前提下,整个开发过程速度会很快的。在这个课程设计前面也跟着老师做了 Django 的图书管理系统,本来我这个教务系统也可以用 Django 来写的,但是为了学习更多的知识点,以及体验 wxpython,我选择了这个。这个项目界面比较的多,由于这个 wx 的界面可视化不是很好(不像 C#直接将控件拉到界面中就好了),所有做起来有点小麻烦,不过有很多的界面相似性比较的高,可以直接复制一下改改。

未完成功能或展望 :由于时间原因,项目还有一些功能没有实现,比如:很多界面都需要添加导入数据和导出数据的操作;在登录成功后不能切换账号(只能退出系统重新登录);管理员和教师,管理员和学生之间的业务关系体现的不好,还需要好好理一下。

参考资料

  • 学 Python 划重点五(处理 Excel、Word、Pdf 实例) 链接

  • 数据库时间更新 链接

  • wx 的表格控件调节宽和高https://bbs.csdn.net/topics/50009834?list=613484

参考文献

  • 基于B/S架构的高校教务管理系统的设计与实现(电子科技大学·王瑞琦)
  • 基于Spring和MVC的高校教务管理系统设计和实现(电子科技大学·徐可)
  • 高校教务管理系统的设计与实现(东北大学·郝闻达)
  • 山东电子职业技术学院教务管理系统的设计与实现(山东大学·朱彦斐)
  • 高校教学管理系统的设计和实现(复旦大学·蒙冲)
  • 教务管理系统的设计与实现(电子科技大学·薛东亮)
  • 基于J2EE的高校教务管理系统的分析与设计(厦门大学·覃玉玲)
  • 电力职业学院教务管理系统的设计与实现(电子科技大学·骆玉)
  • 山东科技学院教务管理系统的设计与实现(山东大学·王珂)
  • 彭州成长教育教学交互平台的设计与实现(电子科技大学·曾付华)
  • 电力职业学院教务管理系统的设计与实现(电子科技大学·骆玉)
  • 基于B/S架构的高校教务管理系统的设计与实现(电子科技大学·王瑞琦)
  • 基于.NET的高校学生成绩管理系统的设计与实现(西安电子科技大学·浪花)
  • 基于J2EE的高校教务管理系统的分析与设计(厦门大学·覃玉玲)
  • 基于SSH的教务管理系统的设计与实现(电子科技大学·冯鹏)

本文内容包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主题。发布者:毕业设计驿站 ,原文地址:https://bishedaima.com/yuanma/35788.html

相关推荐

发表回复

登录后才能评论