西双版纳傣族自治州网站建设_网站建设公司_百度智能云_seo优化
2026/1/14 11:14:34 网站建设 项目流程

选题系统

1 开发环境与开发工具

1.1 开发环境

(1)开发语言:Java13、Python3.7、Node.js12.13.1

(2)开发设备系统:Windows10

(3)数据库系统软件:MySQL8.0、Redis3.2

(4)JavaWeb 框架:SpringBoot2.3.0

(5)Java 数据库框架:ORM 持久层框架 MyBatis-Plus3.3.2

(6)PythonWeb 框架:Flask1.1.1

(7)Python 数据库框架:基于 PyMySQL 的 Web-MySQL

(8)前端框架:基于 webpack 的 Vue.js 脚手架 Vue-CLI

(9)UI 库:基于 Vue.js 的 ViewUI

1.2 开发工具

(1)前端 SPA 页面开发工具:VisualStudioCode

(2)Java 后端开发工具:IntelliJIDEAUltimate

(3)Java 依赖管理器:Maven3.6

(4)Python 后端开发工具:PyCharmProfessional

(5)数据库工具:MySQLWorkbench8.0CE

(6)项目版本管理工具:Git、GitHub、GitHubDesktop

(7)URL 接口测试工具:Postman

2 开发日志

表 2.1

时间

成员姓名

任务

完成情况

第 1 周

林洁彬

需求分析

良好

谢铭轩

需求分析

良好

第 2 周

林洁彬

功能分析与系统设计

良好

谢铭轩

功能分析与系统设计

良好

第 3 周

林洁彬

SPA 界面开发

良好

谢铭轩

画 E-R 图和功能图

良好

第 4 周

林洁彬

SPA 界面开发

良好

谢铭轩

创建数据库

良好

第 5 周

林洁彬

Java 后端功能实现

良好

谢铭轩

测试系统功能功能

良好

第 6 周

林洁彬

Java 后端功能实现

良好

谢铭轩

测试系统功能功能

良好

第 7 周

林洁彬

功能测试与 Python 功能实现

良好

谢铭轩

撰写报告

良好

第 8 周

林洁彬

系统完善与撰写报告

良好

谢铭轩

撰写报告

良好

3 系统分析

3.1 需求分析

毕业设计选题系统是一个用于毕业学生进行毕业设计选题和导师管理课题的系统,作为一个高校使用的系统,有着许多用户的使用,对于不同用户,使用的操作系统可能不同,在平台拥有的权限也不同,因此本系统设计了 3 种用户,分别是系统管理员、导师、毕业学生。

不同用户的功能如下:

(1)系统管理员:能够添加用户和修改用户信息。

(2)导师:需要能够发布课题,并且可以对课题进行管理,导师需要处理学生对课题的申请,在处理后能够查看申请的处理记录,导师对于已通过的学生,可以查看学生的信息。

(3)学生:需要查询可以选择的课题和可以选择的导师,可以申请课题,考虑到有学生提出自己课题的情况,学生也可以根据导师对自选课题的要求向指定导师申请自己的课题,同时也可以查询自己的申请记录以及申请情况,学生也可以查询自己通过的课题的信息和导师的信息。

3.2 功能分析

系统的功能图如下所示:

图 3.1 系统功能图

4 系统设计

4.1 数据库概念结构设计

毕业设计选题系统根据功能设计,规划出 6 个实体,分别是学生实体,导师实体,课题实体

学生实体包括的属性有:学号、姓名、年级、院系、专业、班级,如图 3.2 所示:

图 3.2 学生实体图

导师实体包括的属性有:工号、姓名、指导专业、职称、职位、联系方式,如图 3.3 所示:

图 3.3 导师实体图

课题实体包括的属性有:课题号、课题名、来源、类型、限选专业、课题介绍,如图 3.4 所示:

图 3.4 课题实体图

各个实体间联系的 E-R 图如图 3.5 所示:

图 3.5 系统 E-R 图

4.2 数据库逻辑结构设计

本系统数据存放于 MySQL8.0 数据库中,根据需求分析的功能设计和实体设计,设计了 10 个数据表,数据库的表结构如下:

(1)管理员表(admin):

该表用于存放管理员的登陆信息,该表结构如表 3.1 所示:

表 3.1 管理员表

字段名

描述

数据类型

允许为空

AdminID

管理员登陆 ID

CHAR(12)

PK

Password

登陆密码

VARCHAR(30)

(2)院系表(department):

该表用于存储院系信息,该表结构如表 3.2 所示:

表 3.2 院系表

字段名

描述

数据类型

允许为空

DeptID

院系编号

CHAR(12)

PK

DeptName

院系名

VARCHAR(20)

(3)专业表(profession):

该表用于存储专业信息,该表结构如表 3.3 所示:

表 3.3 专业表

字段名

描述

数据类型

允许为空

ProfID

专业编号

CHAR(12)

PK

ProfName

专业名

VARCHAR(20)

DeptID

所属院系编号

CHAR(12)

FK

(4)职位表(position):

该表用于存储导师职位信息,该表结构如表 3.4 所示:

表 3.4 职位表

字段名

描述

数据类型

允许为空

PositionID

职位编号

INT

PK、AI

PositionName

职位名称

VARCHAR(10)

(5)职称表(rank):

该表用于存储导师职称信息,该表结构如表 3.5 所示:

表 3.5 职称表

字段名

描述

数据类型

允许为空

RankID

职称编号

INT

PK、AI

RankName

职称名称

VARCHAR(10)

(6)学生表(student):

该表用于存储学生用户的信息,该表结构如表 3.6 所示:

表 3.6 学生表

字段名

描述

数据类型

允许为空

SID

学号

CHAR(12)

PK

SName

真实姓名

VARCHAR(10)

Grade

年级

YEAR(4)

ProfID

专业编号

CHAR(12)

FK

ClassNumber

班号

INT

Password

登陆密码

VARCHAR(30)

(7)导师表(teacher):

该表用于存储导师用户的信息,该表结构如表 3.7 所示:

表 3.7 导师表

字段名

描述

数据类型

允许为空

TID

工号

CHAR(12)

PK

TName

姓名

VARCHAR(10)

PositionID

职位编号

INT

FK

RankID

职称编号

INT

FK

GuideProfID

指导专业编号

CHAR(12)

FK

Phone

联系电话

CHAR(11)

Email

联系邮箱

VARCHAR(30)

TopicDemand

自选课题要求

VARCHAR(800)

Password

密码

VARCHAR(30)

(8)课题信息表(topic_info):

该表用于存储课题的信息,该表结构如表 3.8 所示:

表 3.8 课题信息表

字段名

描述

数据类型

允许为空

TopicID

课题编号

CHAR(12)

PK

TopicName

课题名

VARCHAR(30)

Introduction

课题介绍

VARCHAR(800)

TID

导师工号

CHAR(12)

FK

TypeID

课题类型

INT

FK

Source

课题来源

ENUM('0','1')

(9)课题类型表(topic_type):

该表用于存储课题的可选的类型,表结构如表 3.9 所示:

表 3.9 课题类型表

字段名

描述

数据类型

允许为空

TypeID

类型编号

INT

PK、AI

TypeName

类型名称

VARCHAR(20)

(10)课题申请表(application):

该表用于存储课题的申请信息,该表结构如表 3.10 所示:

表 3.10 课题申请表

字段名

描述

数据类型

允许为空

SID

申请学生编号

CHAR(12)

PK、FK

TopicID

申请课题编号

CHAR(12)

PK、FK

ApplyTime

申请时间

DATETIME

Status

申请状态

ENUM('0','1','2','3','4')

4.3 数据库的实施

毕业设计选题系统的数据是存储于 MySQL 数据库中,其中数据库对象表名为:管理员表、专业表、院系表、职位表、职称表、学生表、导师表、课题信息表、课题申请表,系统包含的表如表 3.9 所示:

表 3.11 数据库表总汇表

序号

表名

描述

1

admin

管理员表

2

department

院系表

3

profession

专业表

4

position

职位表

5

rank

职称表

6

student

学生表

7

teacher

导师表

8

topic_info

课题信息表

9

topic_type

课题类型表

10

application

课题申请表

系统的数据库关系图在本地使用 MySQL 官方数据库工具 MySQLWorkbench8.0CE 生成。数据库关系图如图 3.6 所示:

图 3.6 数据库关系图

5 系统实现

5.1 系统实现的技术方案

系统采用前后端分离的开发方式,由 axios.js 向后端 URL 接口发送 HTTP 请求获取数据,并通过 vue.js 来修改页面数据。

前端为一个单独 SPA 项目,采用前端 JavaScript 框架 Vue-CLI、UI 库 ViewUI 和 HTTP 请求库 axios.js 进行开发,项目单独运行于 Node.js 之上。

后端利用 Java 和 Python 搭建了两个 Web 服务,提供接口给前端进行请求。采用了 SpringBoot 和 Flask 两个 Web 框架来搭建后端 Web 项目,两个项目与前端分开运行。

数据库使用了 MySQL 来存储数据,并用 Redis 来存储临时数据和用户的登陆信息。Java 操作数据库采用了 ORM 框架 MyBatis-Plus,Python 则是采用个人基于 PyMySQL 开发的 Web-MySQL 连接包。

5.2 登陆功能的实现

登陆界面由 ViewUI 的组件构成,验证码由 Python 的 PIL 库生成,用户只需要在本界面需要输入正确的账号、密码、验证码完成登陆,如图 5.1 和图 5.2。

图 5.1 用户登陆界面

图 5.2 管理员登陆界面

5.3 管理员功能实现

在管理员的功能中,分为添加用户和管理用户两个模块。添加用户分为添加单个学生或单个导师和上传 Excel 表格从文件导入两个部分;管理用户包括修改用户信息和删除用户。

5.3.1 添加学生用户

添加学生需要输入学号、姓名,选择年级、院系、专业、班号,所有用户的初始密码都是 123456,也可在在添加前进行修改。如果填写的信息不正确或者没有填选必须项,界面会提示错误信息,如图 5.3 所示,添加成功时界面会提示添加成功,如图 5.4 所示。

图 5.3 添加学生错误信息提示图

图 5.4 添加学生成功图

5.3.2 添加导师用户

添加导师需要填写导师工号、姓名,选择指导专业,密码和添加学生的表单一样。而对于导师账号,可以选填职位、职称、电话、邮箱,不填写提交时默认为“无”,并且和添加学生一样,填写的信息不正确将会有错误提示,如图 5.5 和图 5.6 所示。

图 5.5 添加导师错误信息提示图

图 5.6 添加导师成功图

5.3.3 从文件导入用户

用户导入功能使用 Python 实现,可在界面选择.xls 或者.xlsx 文件上传,上传完后台将会读取表格数据,将表格中的用户信息存入数据库,并在页面提示添加成功的用户数和失败数,以及失败原因,如图 5.8 和图 5.9。

图 5.8 导入学生例图

图 5.9 导入导师例图

5.3.4 用户查询页面

在账号信息管理页面,可以查询学生用户和导师用户,并且可以根据条件对用户进行筛选,也可以输入学号或者工号进行模糊查询,如图 5.10 和图 5.11 所示。

图 5.10 学生用户查询界面

图 5.11 导师用户查询界面

5.3.5 用户信息修改

在账户信息管理页面,点击对应用户的修改按钮,会弹出对话框,可在对话框对用户信息进行修改,如果选择完信息没有进行修改,点击确认按钮将不会发生任何事件,当信息被修改时,将会提示修改结果,如图 5.12.

图 5.12 用户信息修改页面

5.3.5 删除用户

在账户信息管理页面,点击对应用户的删除按钮,将会弹出确认框,如果确认删除用户,将会删除与该用户相关包括申请记录在内的所有数据,并提示删除结果,如图 5.13 和图 5.14。

图 5.13 用户删除确认框

图 5.14 删除结果提示

5.4 导师功能模块

5.4.1 修改信息

导师用户登陆将会进入个人信息页,同时页可以通过右上角图标下拉点击个人信息进入此页面,导师用户可以在此页面进行个人信息的修改,直接在需要修改的内容上进行修改,点击保存修改即可完成修改,如图 5.15,点击修改密码将会弹出密码修改框,输入正确的旧密码和新密码,点击确认即可完成修改,如图 5.16 所示。

图 5.15 导师消息修改

图 5.16 导师密码修改

5.4.2 添加课题

导师可在我的课题下的添加课题界面添加课题,输入课题名称和选择课题类型,以及课题介绍,每名导师只能添加 20 个课题,点击添加后将会提示添加结果,如图 5.17 所示。

图 5.17 课题添加页面

5.4.3 课题管理

导师可在我的课题下的课题管理对查看课题,如图 5.18 所示,并可以点击对应课题的修改按钮修改课题信息,如图 5.19 所示,也可以点击删除按钮删除课题,删除课题将会把与该课题相关的数据删除,并解除选题关系,如图 5.20 所示。

图 5.18 导师课题管理页面

图 5.19 课题信息修改框

图 5.20 课题删除确认框

5.4.4 申请处理

导师可在申请管理下的学生申请处理,查看学生对课题的申请,如图 5.21 所示,点击对应申请的查看按钮,可以查看该申请所申请的课题的信息和申请学生的信息,如图 5.22 和图 5.23 所示。

图 5.21 学生申请处理界面

图 5.22 申请的课题信息

图 5.23 申请的学生信息

导师可以点击对应申请中操作的同意按钮来同意该申请,同意申请后,该学生对其它课题的申请将会被系统取消,其它学生对该课题的申请,也会被系统取消,如图 5.24 所示,点击拒绝按钮将会拒绝该申请,如图 5.25 所示。

图 5.24 接收申请确认框

图 5.25 拒绝申请确认框

5.4.5 申请处理记录

导师可在申请管理下的申请处理查询查看对申请的处理记录,在处理记录中可以看到申请的部分信息和申请结果,如图 5.26 所示。

图 5.26 申请处理记录页面

5.4.6 指导学生查询

导师可在指导学生信息界面查看通过申请的学生,信息包括学生的基本信息和所选的课题名称,如图 5.27 所示。

图 5.27 指导学生信息页面

5.5 学生功能

5.5.1 导师课题申请

学生用户可在课题申请下的导师课题申请界面,选择导师和导师的课题进行申请,当学生对该课题已经有申请了将无法再次申请,如果学生已经有通过的课题也无法对其它课题进行申请,如图 5.28 所示。

图 5.28 课题申请失败

5.5.2 学生课题申请

学生可在自选课题页面申请自己的课题,当选择完导师将会显示该导师对自选课题的要求,学生填写完课题信息后点击提交申请即可进行申请,如图 5.29 所示。

图 5.29 自选课题申请页面

5.5.3 申请记录查询

学生用户可在课题申请下的申请记录查询查看自己的申请记录和申请结果,如图 5.30 所示。

图 5.30 申请记录页面

5.5.4 可选课题浏览

学生可在课题浏览下的课题浏览查看自己可以选择的课题的信息,如图 5.31 所示。

图 5.31 可选课题浏览页面

5.5.4 已通过课题浏览

学生可在课题浏览下的已通过课题查看自己通过的课题的信息,如果还没有通过的课题将会提示“还没有通过的课题,快去申请课题吧”,如图 5.32 所示。

图 5.32 已通过课题页面

5.5.5 可选导师浏览

学生可在导师浏览下的所有导师信息查看自己可以选择的导师的信息,如图 5.33 所示。

图 5.33 所有导师信息页面

5.5.6 学生的导师信息

学生可在导师浏览下的我的导师信息查看当前自己的导师的基本信息,如图 5.34 所示。

图 5.34 我的导师信息页面

5.6 总结

通过本次小型软件开发实战,我认识到了需求分析和设计的重要性,一个项目不先好好做设计,很容易在中途出现很多问题。从功能设计到 E-R 图再到数据库逻辑结构设计,我认识到了很多项目开发前的设计准备以及它们的作用。

本次系统开发,第一次采用前后端分离的项目开发方式,抛弃原生 Html5 和 JavaScript,不采用嵌入 Vue.js,而是采用了 Vue-CLI 脚手架和 ES6 标准进行开发,使用 Axios.js 发送网络异步请求。在本次项目中,前端源码几乎为.vue 文件,vue 代码量达到了 3000 多行,前端和后端分开开发,就像是一个独立的项目一样,第一次感受到了前端界面在动态页面中也可以作为一个单独项目开发。对我来说,本次采用 Vue-CLI 开发 SPA 界面在这么短的时间内是一次很大的挑战。

从设计到开发的过程中,感谢彭义春老师对我们系统的指导,为我们指出系统界面的不足之处,告诉我了我们一个系统设计功能的时候需要注意哪些问题,希望以后还可以得到老师的指导,不断完善不足的地方,不断提升自己。

经过这一个多月的课程设计,我充分认识到了自身的不足,了解到自己掌握的知识还是太基础了,真到实战的时候就远远不够。同时也学习到了很多东西,也算是有了实战开发的相关经验。在这过程中,我发现仅仅依靠课堂上的知识是远远不够的,有很多需要用到的知识是我没接触过的,这也导致我花费了大量时间在上网查资料上。而且自身的基础薄弱也给设计过程设置了很大的阻碍。平时学习的时候对知识理解不够清晰透彻,就导致在实战中不能灵活运用,不能很好的解决问题。这就要通过不断地实践和学习加深理解,让自己知识运用更熟练。

这次的课程实际过程很艰难,中间有一段时间甚至有点坚持不下去,万幸最终还是顺利完成了。不管面对的是什么困难,总得有信心,有坚持,这样才有机会成功。

6 参考文献

[1]胡同江.Vue.js 从入门到项目实战[M].北京:清华大学出版社,2019.10:113-198.

[2]杨开振.SpringBoot2.x 深入浅出[M].北京:人民邮电出版社,2018.8:135-143.

[3]李辉.FlaskWeb 开发实战:入门、进阶与原理解析[M].北京:机械工业出版社,2018.8:21-49.

[4]邱书洋.Redis 缓存技术研究及应用[D].2016.

[5]沈剑翘,陈泽椿.Vue.js 在构建系统前端 SPA 的应用[J].科技创新与应用,2020.

♻️ 资源

大小:4.30MB

➡️资源下载:https://download.csdn.net/download/s1t16/87404235

注:更多内容可关注微信公众号【神仙别闹】,如当前文章或代码侵犯了您的权益,请私信作者删除!

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询