整体介绍:毕业设计管理子系统
- 开发环境:JavaGUI,MYSQL
- 项目角色:GUI页面设计,JAVA内容开发,数据库语句编写
项目描述:这个项目是一个论文管理系统,用于协调管理员、导师和学生之间的互动。管理员负责系统的整体维护和用户管理,导师负责论文指导和评审,而学生则参与选题和查看成绩。系统旨在简化论文流程管理,提高教学效率。以下为具体内容。
一、需求说明及功能分析
1.1可行性分析
①经济可行性
该管理系统的设计使用的是Eclipse开发平台进行代码编写、运行和调试,该软件可以免费的获得。 因此,在经济上本系统的开发是可行的。
②管理可行性
对系统进行管理只需要拥有计算机和互联网即可,互联网已经是生活必不可少的东西。由于本系统是由PC机作为服务器的,系统用户对系统操作都很方便,因此系统在管理上也是可行的。
1.2功能需求
①管理员功能需求
系统管理员作为系统维护的主体,在系统中的主要任务和操作有以下的方面:
·管理员登录:管理员需要登录后可以进入系统进行操作。
·管理发布题目:查看、添加、删除。
·导师管理。 管理员可以对导师进行管理(查看、添加、删除各个信息)。
·学生管理。 管理员可以对学生进行管理(查看、添加、删除各个信息)。
·管理员管理。 管理员可以对管理员进行管理(查看、添加、删除各个信息)。
②导师用户功能需求
老师作为系统的二级管理员,具有以下功能:
·用户登录。
·负责毕业论文的指导:查看、添加、删除所要指导的论文题目。
·修改个人信息。
·论文撰写过程中的评阅,输入学生成绩:查看,添加,无法修改。
③学生用户功能需求
学生作为系统普通用户,具有以下功能:
·用户登录。
·可以参加论文(设计)选题:添加,修改。
·修改个人信息。
·查看最终的成绩分布:仅查看。
二、概念结构设计
1、概念设计
根据需求分析的数据项和数据结构以及画出的功能模块图,可以规划出本系统的三大类用户:系统管理员、学生(毕业)和导师。由于管理员、学生和导师的权限和操作功能大不相同,因此在本系统中需要分别进行数据记录,首先需要如下3个用户数据实体。
·学生数据实体:学号,学生密码,姓名,性别,毕业设计编号,导师编号,总评成绩。
·导师数据实体: 导师编号,导师密码,姓名,性别,专业编号,职称,所在系,联系电话
·管理员数据实体:管理员编号,管理员密码,姓名,性别,专业编号,联系电话。
在程序初始化时添加一个初始化管理员,然后按照需求添加数据库,根据需求,因此还要包括如下的几个数据实体:
·成绩数据实体:学号,导师编号,平时成绩,答辩成绩,论文成绩,最终成绩。
·毕业设计数据实体:导师编号,姓名,毕业设计编号,毕业设计名称,毕业设计类型。
·毕业设计题目数据实体:毕业设计编号,毕业设计名称,毕业设计类型。
2、 E-R图设计
管理员实体、导师实体、学生实体等各实体的E-R图。具体如下图所示。
三、逻辑结构设计
1、数据库关系模型:
表1毕业设计管理子系统的相关属性列表
2、数据字典
为了使该系统的各数据表的含义更加清晰,对其功能做如下描述
表2成绩表
字段名 | 类型 | 宽度 | 可空 | 主键 | 默认值 |
学号 | char | 13 | √ | ||
导师编号 | char | 13 | √ | ||
平时成绩 | char | 4 | √ | ||
论文成绩 | char | 4 | √ | ||
答辩成绩 | char | 4 | √ | ||
最终成绩 | char | 4 | √ |
表3毕业设计
字段名 | 类型 | 宽度 | 可空 | 主键 | 默认值 |
导师编号 | char | 6 | √ | ||
姓名 | char | 8 | √ | ||
毕业设计编号 | char | 6 | √ | ||
毕业设计名称 | char | 30 | √ | ||
毕业设计类型 | char | 10 | √ | ||
学号 | char | 13 | √ |
表4毕业设计题目
字段名 | 类型 | 宽度 | 可空 | 主键 | 默认值 |
毕业设计编号 | char | 6 | √ | ||
毕业设计名称 | char | 30 | |||
毕业设计类型 | char | 10 |
表5管理员
字段名 | 类型 | 宽度 | 可空 | 主键 | 默认值 |
管理员编号 | char | 13 | √ | ||
管理员密码 | char | 6 | |||
姓名 | char | 8 | |||
性别 | char | 2 | |||
专业编号 | char | 6 | |||
联系电话 | char | 12 | √ |
表6导师
字段名 | 类型 | 宽度 | 可空 | 主键 | 默认值 |
导师编号 | char | 13 | √ | ||
导师密码 | char | 6 | |||
姓名 | char | 8 | |||
性别 | char | 2 | |||
专业编号 | char | 6 | |||
所在系 | char | 10 | √ | ||
职称 | char | 10 | √ | ||
联系电话 | char | 12 | √ |
表7学生
字段名 | 类型 | 宽度 | 可空 | 主键 | 默认值 |
学号 | char | 13 | √ | ||
学生密码 | char | 6 | |||
姓名 | char | 8 | |||
性别 | char | 2 | |||
毕业设计便号 | char | 6 | √ | ||
导师编号 | char | 6 | √ | ||
总评成绩 | char | 4 | √ |
四、数据库物理设计与实施
1、创建数据库:
CREATE DATABASE IF NOT EXISTS sjk;
2、创建表:
CREATE TABLE IF NOT EXISTS 毕业设计 (
导师编号 VARCHAR(6),
姓名 VARCHAR(8),
毕业设计编号 VARCHAR(6) ,
毕业设计名称 VARCHAR(30),
学号 VARCHAR(13),
毕业设计类型 VARCHAR(10));
CREATE TABLE IF NOT EXISTS 毕业设计题目 (
毕业设计编号 VARCHAR(6) PRIMARY KEY,
毕业设计名称 VARCHAR(30) NOT NULL,
毕业设计类型 VARCHAR(10) NOT NULL);
CREATE TABLE IF NOT EXISTS 管理员 (
管理员编号 VARCHAR(13) PRIMARY KEY,
管理员密码 VARCHAR(6) NOT NULL,
姓名 VARCHAR(8) NOT NULL,
性别 VARCHAR(2) NOT NULL,
专业编号 VARCHAR(6) NOT NULL,
联系电话 VARCHAR(12));
CREATE TABLE IF NOT EXISTS 导师 (
导师编号 VARCHAR(13) PRIMARY KEY,
导师密码 VARCHAR(6) NOT NULL,
姓名 VARCHAR(8) NOT NULL,
性别 VARCHAR(2) NOT NULL,
专业编号 VARCHAR(6) NOT NULL,
职称 VARCHAR(10),
所在系 VARCHAR(10),
联系电话 VARCHAR(12));
CREATE TABLE IF NOT EXISTS 学生 (
学号 VARCHAR(13) PRIMARY KEY,
学生密码 VARCHAR(6) NOT NULL,
姓名 VARCHAR(8) NOT NULL,
性别 VARCHAR(2) NOT NULL,
毕业设计编号 VARCHAR(6),
导师编号 VARCHAR(6) ,
总评成绩 VARCHAR(4));
CREATE TABLE IF NOT EXISTS 成绩 (
学号 VARCHAR(13) PRIMARY KEY,
导师编号 VARCHAR(13) ,
平时成绩 VARCHAR(4),
论文成绩 VARCHAR(4),
答辩成绩 VARCHAR(4),
最终成绩 VARCHAR(4));
五、数据操作及实现(源代码及查询截图)
源代码分析
1.Graduation选择页面
“系统主页面”,启动后,首先执行Mysql类以进行必要的数据库操作。随后,将展示名为“毕业设计管理系统”的用户界面窗口。此窗口内含有一个容器,我们称其为container。在container上,我们设计了四个按钮:学生登录、导师登录、管理员登录及退出,具体效果如图1Graduation选择页面所示。
用户可根据需求点击相应的按钮。一旦按钮被选中,当前窗口将关闭,同时释放系统资源。此后,系统将根据用户选择执行相应类的main方法。
1.1学生登录页面
“学生登录页面”,在系统主页面选择“学生登录”按钮后,将打开一个新的页面,我们称之为“学生登录页面”。在这个页面中,用户需要输入账号和密码。用户输入的账号和密码将被传递给authenticateUser()方法,该方法将与数据库中的存储数据进行比较。
如果数据库中存储的账号和密码与用户输入的一致,那么用户将成功登录,打开“学生功能选择页面”并关闭当前窗口,释放系统资源。如果数据库中没有找到匹配的账号和密码,那么系统会通过变量f控制页面的循环,并提示用户输入的账号或密码错误。
此外,这个页面还包含一个“返回”按钮,允许用户在输入错误的账号或密码后返回“系统主页面”,重新尝试登录,具体效果如图1.1学生登录页面所示。
1.1.1学生功能选择页面
“学生功能选择页面”,在成功匹配后,系统将执行“学生功能选择页面”。首先,系统会创建一个新的页面,我们称之为“学生功能选择页面”。在这个页面上,系统会添加一个容器,这个容器将承载四个按钮:选题、查询成绩、修改密码和返回登录页面。
这四个按钮各自对应着不同的功能。用户可以通过点击这些按钮来选择他们想要执行的操作。一旦用户点击了某个按钮,这个页面将会关闭,同时释放一部分系统资源。
当用户点击“返回登录页面按钮”时,系统会关闭当前窗口并释放系统资源,同时返回到“学生登录页面”,以便用户继续其他操作,具体效果如图1.1.1学生功能选择页面所示。
1.1.1.1 学生选题页面
在“学生功能选择页面”选择“选题”按钮后,系统将启动以下流程:
(1)通过Connection connection = DriverManager.getConnection(url, username, password);语句,与数据库建立连接。此步骤确保了后续数据库操作的顺利进行。
(2)创建一个表格模型,该模型包含导师编号、姓名、毕业设计编号、毕业设计名称、毕业设计类型等字段。这个表格模型会根据从毕业设计表中查询得到的数据(学号为NULL及没有被选择的题目)进行填充。
(3)创建一个可滚动的表格面板,并将上述表格加入其中。此设计使得用户可以方便地浏览表格内容。
(4)创建一个名为panel2的面板,并为其设置绝对布局。然后,使用JSplitPane将panel2和滑动面板合并为一个整体。这种布局方式可以有效地利用屏幕空间。
(5)在这个合并后的面板上,再次进行分割,形成三个区域:顶部为滑动表格,中间为面板panel2,底部为面板panel。这样的布局使得用户可以同时看到多个组件。
(6)查询学生表中登录账号的导师编号和毕业设计编号。如果存在数据,则在panel2中添加相应的标签以显示用户的选择;如果不存在数据,则在panel2中添加“你还未选择导师及题目,请在下方进行选择”的标签。
(7)向panel面板添加文本框,以便用户输入导师编号和毕业设计编号。同时,添加确定和返回按钮供用户进行选择。
(8)当用户选择确定按钮后,先判断学生是否已经选题,若已选题,则弹出对话框提醒用户已经选题,若没有选题,则调用informationConsistent( )方法判断用户输入的数据是否真实存在。若存在,则通过SQL语句在成绩表中修改对应学号的导师编号,并在学生表中修改对应学号的导师编号和毕业设计编号以及填写毕业设计表中对应的题目所在的学生编号。若不存在,则弹出对话框提醒用户“添加/修改失败,请重试”。
(9)当用户选择返回按钮后,清除panel中文本框的内容,打开“学生功能选择页面”并关闭当前窗口,释放系统资源。
具体效果如图1.1.1.1 学生选题页面所示。
1.1.1.2 学生查询成绩页面
“学生选题页面”,在“学生功能选择页面”点击“选题”按钮后,系统首先,通过Connection connection = DriverManager.getConnection(url, username, password);建立与数据库的连接,确保数据的传输和交互。
接着,系统会查询成绩表中与学生学号相匹配的数据,并将这些数据赋值给相应的变量,以便进行后续处理。
随后,系统会判断这些变量是否为空。若变量不为空,则意味着学生有相关成绩记录。此时,系统将利用JTextArea创建的多行只读文本区域来清晰展示学生的成绩信息,让学生一览无余地了解自己的学业表现。
然而,若系统发现变量为空,这通常意味着学生尚未完成毕业设计的相关任务。在这种情况下,系统会在页面上醒目地添加一个标签来提醒用户。这个标签上名为“你暂时还未完成毕业设计,详情请咨询导师”。
页面还包含一个“返回”按钮,当用户点击后,系统会打开“学生功能选择页面”并关闭当前窗口,释放系统资源。
具体效果如图1.1.1.2 学生查询成绩页面所示
1.1.1.3 学生修改密码页面
“学生修改密码页面”将在“学生功能选择页面”点击“修改密码”按钮后显示,系统将先建立与数据库的连接,确保数据的交互和传输。
接着,系统会在页面上添加多个文本框,用于接受用户输入,以及多个对应的描述标签,解释用户需要输入什么信息。同时,页面上会有一个“确定”按钮和一个“返回”按钮,供用户选择操作。
当用户点击“确定”按钮时,系统会首先判断输入的旧密码是否与数据库中存储的登录密码一致。如果旧密码与登录密码不一致,系统会提醒用户修改失败,建议他们重新尝试。
如果旧密码与登录密码一致,系统会进一步判断用户输入的两次新密码是否一致。如果两次输入的新密码不一致,系统会提醒用户修改失败,建议他们重新尝试。
如果旧密码与登录密码一致,且两次输入的新密码一致,系统将更新学生表中对应学生的学生密码,并提醒用户修改成功。
当用户点击“返回”按钮时,系统会关闭当前窗口并释放系统资源,同时返回到“学生功能选择页面”,以便用户继续其他操作。
具体效果如图1.1.1.3 学生修改密码页面所示。
1.2导师登录页面
“导师登录页面”是系统中的一个特定功能页面,当在“系统主页面”选择“导师登录”按钮后,该页面会被执行。与学生登录页面类似,导师登录页面也要求用户输入相应的登录信息。
然而,与学生登录页面的主要区别在于,导师登录页面在验证用户输入时调用的是不同的数据库查询方法。在学生登录页面中,系统会查询学生表以比对输入的数据,确保登录信息的准确性。而在导师登录页面中,系统会查询导师表以进行类似的比对操作。
具体效果如图1.2导师登录页面所示。
1.2.1 导师功能选择页面
“导师功能选择页面”当成功匹配导师的登录信息后,系统将跳转到该页面。这个页面与学生登录页面类似,但在功能按钮上存在一些区别。
具体来说,导师功能选择页面的四个按钮是:选择题目、毕设评定、个人信息管理、返回登录页面。
特别需要注意的是,虽然“返回登录页面按钮”一致,但是当用户点击“返回登录页面按钮”时,系统会将他们带回到“导师登录页面”,而不是“学生登录页面”。这是为了确保导师能够重新登录并继续他们的操作,而不是返回到学生角色的登录页面。
具体效果如图1.2.1导师功能选择页面所示。
1.2.1.1 导师选题页面
在“导师功能选择页面”选择“选择题目”按钮后,系统将启动以下流程:
(1)与数据库建立连接
(2)创建一个表格模型1,其中包含了毕业设计编号、毕业设计名称、毕业设计类型等字段。这个表格模型会根据从毕业设计题目表中查询得到的数据进行填充,同时,系统还创建一个名为panel的面板,并为其设置绝对布局。
(3)系统查询数据库中的“毕业设计表”,检查登录账号的导师编号是否存在相关数据。如果存在数据,系统将创建一个新的表格模型2,其中包含了导师编号、姓名、毕业设计编号、名称和类型等字段,并根据查询到的数据进行填充。接下来,使用JSplitPane将两个滑动面板合并为一个整体,并与panel面板合并,形成三个区域:顶部为滑动表格1,中间为滑动表格2,底部为面板panel。如果不存在数据,则创建一个名为panel2的面板,并为其设置绝对布局。然后使用JSplitPane将panel、滑动模型1和panel2合并,形成三个区域:顶部为滑动表格1,中间为panel2,底部为面板panel。在panel2中,系统会添加一个标签,提示导师“你还未选择导师及题目,请在下方进行选择”。
(4)向panel面板添加文本框,以便用户输入毕业设计编号。同时,还提供确定、删除和返回三个按钮供用户进行选择。
(5)当导师点击确定按钮后,系统会首先调用informationConsistent()方法来验证输入的毕业设计编号是否真实存在。如果不存在,系统会弹出对话框提醒导师“添加失败,请输入正确的毕业设计编号”。如果编号存在,系统会进一步通过information()方法来判断该毕设是否已经被选择。如果已经被选择,则会提醒导师“添加失败,已选择该毕业设计”。如果编号存在且尚未被该导师选择,系统将在数据库中插入相关信息。
(6)当导师选择返回按钮后,清除panel中文本框的内容,打开“导师功能选择页面”并关闭当前窗口,释放系统资源。
(7)当导师选择删除按钮后,系统会通过information()方法判断该毕设编号是否已经被导师选择。如果已经选择,则在“毕业设计表”中将其删除并提醒导师删除成功;如果不存在或尚未被选择,则提醒导师“删除失败,请输入您已选择的毕业设计编号”。
具体效果如图1.2.1.1导师选题页面
1.2.1.2毕设评定页面
在“导师功能选择页面”选择“毕设评定”按钮后,系统将启动以下流程:
(1)与数据库建立连接,为确保流畅的数据交互,系统与数据库建立稳定的连接。
(2)系统创建两个表格模型。表格模型1包含学号、姓名、毕业设计编号、平时成绩、论文成绩、答辩成绩和最终成绩等字段,用于展示已有成绩的学生信息;表格模型2则主要用于展示尚未评定成绩的学生信息,包含学号、姓名和毕业设计编号等字段。这两个表格模型都会被加入到滑动面板中。
(3)系统创建一个名为panel2的面板,并为其设置绝对布局,以确保界面元素的准确显示。
(4)通过联合查询学生表和成绩表,系统判断学生是否有平时成绩。若有,数据将被填入表格模型1;若没有,数据则会被填入表格模型2。
(5)使用界面设计工具,系统将三个面板整合为一个统一的界面,形成三个主要区域:顶部展示滑动表格1(已有成绩的学生信息),中间展示滑动表格2(尚未评定成绩的学生信息),底部则为panel2面板。
(6)在panel2面板中,系统添加文本框以及相应的提醒功能,方便导师输入学生的成绩信息。界面还提供“添加”和“返回”两个按钮供导师操作。
(7)当导师点击“添加”按钮后,系统会首先查询对应学号的学生是否已存在成绩。若存在,则提示导师“已完成该学生成绩评定”;若不存在,系统会在成绩表中插入导师输入的数据,并相应地更新学生表中的总评成绩,同时提示用户“完成评定”。
(8)当导师选择“返回”按钮后,当前窗口会关闭,并返回到“导师功能选择页面”,同时释放系统资源,确保程序的稳定运行。
具体效果如图1.2.1.2毕设评定页面所示。
1.2.1.3 个人信息管理页面
在“导师功能选择页面”选择“个人信息管理”按钮后会执行该页面,功能与“学生修改密码页面”类似,唯一不同的是新增了一个更新手机号的功能。
具体效果如图1.2.1.3个人信息管理页面所示。
1.3管理员登录页面
“管理员登录页面”是系统中的一个特定功能页面,当在“系统主页面”选择“管理员登录”按钮后,该页面会被执行。与学生登录页面类似,管理员登录页面也要求用户输入相应的登录信息。
然而,与学生登录页面的主要区别在于,管理员登录页面在验证用户输入时调用的是不同的数据库查询方法。在学生登录页面中,系统会查询学生表以比对输入的数据,确保登录信息的准确性。而在管理员登录页面中,系统会查询管理员表以进行类似的比对操作。
具体效果如图1.3管理员登录页面所示。
1.3.1管理员功能选择页面
“管理员功能选择页面”当成功匹配管理员的登录信息后,系统将跳转到该页面。这个页面与学生登录页面类似,但在功能按钮上存在一些区别。
具体来说,管理员功能选择页面的五个按钮是:学生管理、题目发布、自我管理、返回登录页面。
特别需要注意的是,虽然“返回登录页面按钮”一致,但是当用户点击“返回登录页面按钮”时,系统会将他们带回到“管理员登录页面”,而不是“学生登录页面”。这是为了确保管理员能够重新登录并继续他们的操作,而不是返回到学生角色的登录页面
具体效果如图1.3.1管理员功能选择页面所示。
1.3.1.1学生管理页面
在“管理员功能选择页面”选择“学生管理”按钮后,系统将启动以下流程:
(1)与数据库建立连接,为确保流畅的数据交互,系统与数据库建立稳定的连接。
(2)系统创建一个表格模型。表格模型包含学号、学生密码、姓名、性别、毕业设计编号、导师编号、总评成绩等字段,查询学生表填充该表格模型,用于展示已有的学生信息。这个表格模型会被加入到滑动面板中。
(3)系统创建一个名为panel的面板,并为其设置绝对布局,以确保界面元素的准确显示。
(4)使用界面设计工具,系统将俩个面板整合为一个统一的界面,顶部展示滑动表格,底部则为panel2面板。
(5)在panel面板中,系统添加文本框以及相应的提醒功能,方便管理员输入学生的信息。界面还提供“添加”、“返回”和“删除”三个按钮供导师操作。
(6)当导师点击“添加”按钮后,系统会首先会验证输入的数据是否符合要求。如果不符合,系统会弹出对话框提醒管理员“存在必填项未填写,请补齐”。如果符合要要求,则系统会进一步判断该学生是否已存在。如果已经存在,则会提醒导师“该编号已经存在学生,请重试”。如果按照要求填写并且学生还并不存在,系统将在数据库中插入相关信息。
(7)当导师选择返回按钮后,系统会打开“导师功能选择页面”并关闭当前窗口,释放系统资源。
(8)当导师点击“删除”按钮后,系统会首先会验证输入的数据是否符合要求。如果不符合,系统会弹出对话框提醒管理员“学号为必填项未填写,请补齐”。如果符合要要求,则系统会进一步判断该学生是否已存在。如果已经存在,则会提醒导师“删除失败,不存在该编号的学生”。如果按照要求填写并且学生还并不存在,系统将在数据库中插入相关信息。
具体效果如图1.3.1.1学生管理页面所示。
1.3.1.2导师管理页面
在“管理员功能选择页面”选择“导师管理”按钮后,系统将跳转到该页面。这个页面与学生管理页面类似,只是在数据库中修改的表不同。
具体效果如图1.3.1.2导师管理页面所示。
1.3.1.3 自我管理页面
在“管理员功能选择页面”选择“自我管理”按钮后,系统将跳转到该页面。这个页面与学生管理页面类似,只是在数据库中修改的表不同。
具体效果如图1.3.1.3自我管理页面所示。
1.3.1.4 题目发布页面
在“管理员功能选择页面”选择“题目发布”按钮后,系统将跳转到该页面。这个页面与学生管理页面类似,只是在数据库中修改的表不同。
具体效果如图1.3.1.4题目发布页面所示。
六、源码
通过百度网盘分享的文件:毕业设计管理子系统源码
链接:https://pan.baidu.com/s/1ZQYmAy_Nzu1HzbjUrFpDow?pwd=2ukc
提取码:2ukc