涉及技术:Javascript Ajax MySQL Servlet JDBC CSS
PS:如果您需要这个系统的源码 可以联系我 无偿提供 我也会发在github
PS:我没啥开发经验,java也很菜,平时大都敲深度学习的代码,有啥问题可以交流
环境
- 运行环境:最好是java jdk 1.8
- IDE环境:IDEA
- tomcat环境:Tomcat 7.x,8.x,9.x版本均可
- 数据库:MySql 5.7版本;
- 是否Maven项目:否;
技术栈
- 后端:Spring + SpringMVC + Mybatis
- 前端:JSP + CSS + JavaSpcript + jQuery
数据库的查询和更新
- DBO中,executeQuery方法接收一个SQL查询语句作为参数,并返回一个ResultSet对象,该对象包含了从数据库中获得的所有满足查询条件的数据记录
- DBO中,executeUpdate方法同样接收一个SQL语句作为参数,并返回一个整数值,表示被影响的行数
- ComBean中,使用了DBO封装底层数据库的细节,以支持分页显示数据列表功能
整个实现过程中,Servelet、ComBean和DBO是核心部分
Servlet主要用于处理HTTP请求。它通过调用ComBean类中的方法来操作数据库,进行数据的增删改查等操作。
ComBean主要用于封装一些常见的数据库操作方法,例如执行SQL语句、查询数据库中的数据等。它提供了一些简便的方法,可以方便地进行数据库操作。在实际开发中,可以将ComBean类作为一个工具类来使用,方便地进行数据库操作。
DBO是一个数据库操作类,主要用于执行SQL语句并返回结果。它提供了一些基本的方法,例如执行查询、插入、更新和删除等操作。在实际开发中,可以通过调用DBO类中的方法来进行数据库操作,而不需要编写过多的SQL语句。
这三者之间的联系是:AdminServlet通过调用ComBean类中的方法来操作数据库;而ComBean中的方法则是通过调用DBO类的方法来实现数据库操作。它们三者之间的关系是一种嵌套的调用关系。
这个系统是数据库的课程设计,那么我先用数据库课程中的知识来对该系统进行分析
需求分析
高校科研管理所涉及的事务比较复杂,涉及到科研人员、管理人员等对科研信息的查询统计等。所涉及的系统既要有利于相关管理又要有利于科研人员的申报填写。所以本系统的用户包括:科研人员(教师,研究生)、科研秘书、科研管理人员、系统管理员。
下面分别对这四个角色的功能进行描述:
系统管理员
- 系统管理员通过输入登录账号(username)、登录密码(password)以及选择正确的用户身份(sf)进入科研管理系统;
- 系统管理员可以查看所有的科研人员、科研秘书、科研管理员和单位。不但能够对以上用户进行修改,查询和删除,还可以通过填写账号、密码、姓名、职称、学历等信息来增加不同的用户群体;
- 数据库的备份相当重要,在四种用户中,只有系统管理员具有备份数据库的功能,将数据库及时备份到指定的路径D:\db.sql,以便出现突发情况后恢复数据库;
- 系统管理员具有系统日志管理和数据导出的功能,能够查看到所有用户登录系统的记录,导出所有项目的详细情况。
进入系统后登陆管理员账号进入管理员页面。管理员主要功能如下(图3-1为管理员用例图):
a. 密码信息管理
b. 科研管理人员管理
c. 单位信息管理
d. 科研秘书管理
e. 科研人员管理
f. 系统数据管理
用例图如下: 懒得画标准的用例图了 这个也表述的比较清楚
科研管理人员
- 科研管理人员通过输入登录账号(username)、登录密码(password)以及选择正确的用户身份(sf)进入科研管理系统;
- 科研管理员可以修改个人信息,如:用户姓名、职称信息、联系电话等;
- 科研管理员能够查看所有的科研项目和科研成果,能够下载并查看科研人员提交的项目申请书;
- 科研管理人员具有对已经通过申报的项目进行评分的功能;
- 科研管理人员可对某个时间段的项目进行统计,显示统计结果。
进入系统后登陆科研管理人员账户进入页面,主要功能如下(图3-2为用例图):
a. 密码信息管理
b. 个人信息管理
c. 科研项目管理
d. 科研成果管理
e. 学术活动管理
f. 项目评价管理
g. 项目年度统计
用例图如下:
科研秘书
- 科研秘书通过输入登录账号(username)、登录密码(password)以及选择正确的用户身份(sf)进入科研管理系统;
- 科研秘书可以对自己的用户信息进行修改,如密码信息等;
- 科研秘书可以对科研人员申报的项目和成果进行审批和评价等操作,当秘书审核意见为‘好’,通过审核之后,该项目才会进入项目中检和结题管理。由于这个操作会影响科研人员的项目是否能够进入中检和结题,故此功能不应面向科研人员开放;
- 对于科研秘书,系统还需给该用户群体提供项目中期和项目结题的管理功能,秘书可以进行中检审核和结题验收审核的操作,系统会显示检查情况;
- 科研秘书可以对通知信息进行查看、修改和删除操作,能够审批科研人员所申请的学术活动,同时具有在科研系统上发布通知的功能;
- 科研秘书还应该具备修改文件信息的权限,能够重新上传文件信息或者新增文件;
- 秘书可以删除已有的统计信息
进入系统后登陆科研秘书账户进入页面,主要功能如下(图3-3为用例图):
a. 密码信息管理
b. 个人信息管理
c. 科研项目管理
d. 科研成果管理
e. 通知信息管理
f. 文件信息管理
g. 反馈信息管理
h. 学术活动管理
i. 项目中检管理
j. 项目终结管理
用例图如下:
科研人员
科研人员是科研管理系统的主要使用群体,除了不能参与项目审批决策等部分功能外,系统应给用户展示一个全面的功能界面,以便科研人员进行申报、查询、查看通知等操作
- 科研人员通过输入登录账号(username)、登录密码(password)以及选择正确的用户身份(sf)进入科研管理系统;
- 科研人员可以对自己的用户信息进行修改,如职务信息,用户姓名等;
- 对科研人员,最重要的需求是实现科研项目申报、查询和修改以及科研成果的申报、管理和查询。科研人员可填写编号、名称、类别、时间等信息,上传申请项目书文件来申报自己的科研项目和成果;
- 科研人员还可以在系统上查看学校发布的学术活动以及其他类型的通知,科研人员自己也可向学校的科研系统提交发布学术活动的申请;
- 科研人员可以在查看信息的一个汇总情况,以便更加清晰地了解文件信息、科研项目的申报概况
进入系统后登陆科研人员账户进入科研人员页面,主要功能如下(图3-4为用例图):
a. 密码信息管理
b. 个人信息管理
c. 团队管理
d. 科研项目管理
e. 科研成果管理
f. 学术活动管理
g. 通知信息管理
h. 文件信息查看
i. 反馈信息管理
用例图如下:
在确定了系统管理员、科研管理人员等功能后就可以构建高校科研管理系统的用例图了,整个系统的用例图如图所示:
数据库逻辑设计
E-R图
E-R图再熟悉不过了,数据库的考试中也是必考的知识点,这里就不用文字介绍了:
没有画太复杂,简单表示清楚就可以了(我懒)
数据字典
本部分讲述了系统设计过程中用到的数据信息,对各类字段、数据类型、长度和备注信息展开详细的介绍,数据字典如下表所示:
用户表
项目成果表
部分信息表
统计信息表
活动信息表
日志信息表
通知信息表
文件信息表
项目信息表
数据库逻辑结构设计
数据流图
由于科研项目、科研成果、通知信息、学术活动等在大体框架下的处理形式是类似的,只是存在细节不同,这里为了节省篇幅,以科研项目数据的处理为例绘制数据流图,如下所示:
表的建立
又到了经典的sql语句时刻,本来想直接建立的,但想到是数据库的课设,也罢,还是手敲sql吧,就当复习了。
根据系统需求分析,将系统的实现直接定位在更好的适合各层次人员的需求和操作,系统的所有初始化数据均采用界面录入的方法,由各类人员分工完成。根据我校的实际情况,我将科研人员基本信息、论文信息、科研项目信息、成果信息、学术活动信息、通知信息、文件信息等作为系统的初始化数据,为个人和院系查询、统计、打印,科研处操作、加工、管理、集成等工作提供基本的数据平台。主要数据表格设计如下:
1 | -- 1.用户信息表admin (职工号,姓名,用户名,密码,职务,职称,所属部 门,电话,创建时间,身份) |
用户信息表(职工号,姓名,用户名,密码,职务,职称,所属部门,电话,创建时间,身份)
1 | DROP TABLE IF EXISTS `admin`; |
项目成果表(序号,成果名称,负责人,类别,级别,备注,文件 url,用户,发表时间,单位,审核,意见)
1 | DROP TABLE IF EXISTS `cg`; |
单位信息表(编号,单位名称,备注)
1 | DROP TABLE IF EXISTS `dw`; |
科研项目表(序号,项目编号,项目名称,负责人,项目类别,完成单位,立项时间,拟定期限,经费金额,是否审核,中检情况,验收情况,审核意见,评分)
1 | DROP TABLE IF EXISTS `xm`; |
统计信息表(序号,系别名称,项目数,单位,时间,备注)
1 | DROP TABLE IF EXISTS `tongji`; |
活动信息表(序号,名称,备注,时间,用户,单位,审核结果,意见)
1 | DROP TABLE IF EXISTS `hd`; |
日志信息表(序号,用户,身份,时间,IP 地址)
1 | DROP TABLE IF EXISTS `rz`; |
通知信息表(序号,名称,详情,时间,用户,单位)
1 | DROP TABLE IF EXISTS `tz`; |
文件信息表(序号,名称,url,备注,时间,用户,单位)
1 | DROP TABLE IF EXISTS `wj`; |
在上述表格中,加下划线字段代表主键,加斜体字段代表外键。
其中科研人员信息表之所以选择(职工号,姓名)作为主键,考虑到姓名经常作为查询、操作条件,并在相关表中作为科技人员的重要描述和限制;为了避免数据录入的无序状况,数据库表之间建立了严格的参照完整性,并且对所有表都分配了操作权限,并将错误信息及时反馈给操作人员,科研人员信息表、论文信息表、论著信息表通过“职工号”建立参照完整性关系,在录入论文、论著等项目成果时,作者必须是本单位职工,如果科研人员信息表不存在该员工,便给出错误提示,提示检查是否是合法职工,如果是,便可以在科研人员信息表中添加该员工信息后录入论文、论著信息,否则,拒绝录入,“职工号”又为组合查询提供了连接条件支持;同时将科研项目表、科研成果表中“负责人”和科研人员信息表中的“姓名”建立主键、外键参照完整性关系,项目课题的申报负责人也必须是本单位某部门的职工;申报人员,必须是科研人员信息表中某一职工;所有表的主键设置都加上“姓名”字段,目的是为了符合人们的常规习惯,常以某个专业人员姓名作为操作、查询条件,科研人员信息表与其他相关表格建立参照完整性为了限制科研、 论文、论著、成果、奖励等信息的科学合法性,同时有利于统计和查询;只有完善的参照完整性,才能使得数据库中数据具有一致性和互操作性。
触发器设计
科研计划表验收项目时自动修改项目的验收标志为“验收通过”
1 | CREATE TRIGGER `test` BEFORE UPDATE ON `cg` FOR EACH ROW begin |
当有新的项目申请时,自动更新统计表中的统计信息
1 | CREATE TRIGGER `tongji` AFTER INSERT ON `xm` FOR EACH ROW begin |
当有项目被删除时,自动更新统计表中的统计信息
1 | CREATE TRIGGER `shanchu` AFTER DELETE ON `xm` FOR EACH ROW begin |
储存过程设计
存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行。它有如下优点:
(1)允许模块化程序设计。存储过程一旦创建,以后即可在程序中调用任意多次 。
(2)可以减少网络通信流量,一个需要数百行 SQL 代码的操作可以通过一条执行过程代码的语句执行,而不需要在网络中发送数百行代码。
(3)允许更快执行。存储过程只在第一次执行时需要编译且被存储在存储器中,其他次执行不必由数据引擎再编译,提高了执行速度。
(4)可作为安全机制使用。即时对于没有直接执行存储过程中语句的权限的用户,也可授予他们执行该存储过程的权限。由上可知,存储过程具有独特的便利性,准确性和及时性,因此根据该系统的功能要求,设计了如下的存储过程。
添加部门管理存储过程
1 | create procedure [dbo].[insert_department] |
删除部门管理存储过程
1 | create procedure [dbo].[delete_department] |
添加科研人员存储过程
1 | create procedure [dbo].[insert_teacher] |
删除科研人员存储过程
1 | create procedure [dbo].[delete_teacher] |
添加科研项目存储过程
1 | create procedure [dbo].[insert_project] |
删除科研项目存储过程
1 | create procedure [dbo].[delete_project] |
科研项目查询
1 | create procedure [dbo].[check_project] |
数据库物理设计
索引
为项目信息表建立索引
1 | CREATE INDEX Index_xm ON xm(id); |
为成果信息表建立索引
1 | CREATE INDEX Index_cg ON cg(id); |
为统计信息表建立索引
1 | CREATE INDEX Index_tongji ON tongji (id); |
为用户信息表建立索引
1 | CREATE INDEX Index_admin ON admin(id); |
为通知信息表建立索引
1 | CREATE INDEX Index_tongzhi ON tz(id); |
为活动信息表建立索引
1 | CREATE INDEX Index_hd ON hd(id); |
为日志信息表建立索引
1 | CREATE INDEX Index_rz ON rz(id); |
为单位信息表建立索引
1 | CREATE INDEX Index_dw ON dw(id); |
视图设计
视图不仅可以简化用户对数据的理解,也可以操作。那些被经常使用的查询可以被定义为视图,从而使得用户不必为以后的操作每次指定全部的条件。
view_Research 视图
创建视图 view_Research 可以使通过教师的或编号或院系来查询科研项目。
1 | CREATE VIEW view_Research |
view_WORK 视图
创建 view_WORK 视图是为了可以通过院系或教师的或编号来查询教师的项目成果的详细信息。
1 | CREATE VIEW view_WORK |
view_Prize 视图
创建视图 view_Prize 是为了可以通过院系或教师的编号或来查询老师项目的获奖情况。
1 | CREATE VIEW view_Prize |
安全机制
数据库系统的安全机制是用于实现数据库的各种安全策略的功能集合,正是由这些安全机制来实现安全模型,进而实现保护数据库系统安全的目标。保证数据库安全的安全机制一般包括: 用户的标识与鉴别、存取控制、数据库加密、推理控制和审计跟踪等等。在本系统的设计实现中,有以下几种方式用于数据库的安全防护:
用户身份鉴别
用户标识与鉴别是安全系统的第一道防线,以防止非法用户访问系统。在本高校科研管理系统中,用户身份标识与鉴别是数据库管理系统对访问者授权的前提,科研信息的数据库系统建立了严格的用户标识与鉴别机制。用户标识是指用户向系统出示自己的身份证明,这在系统里我们系采用最简单的方法,即输入用户 ID 和密码,系统验证其是否合法。标识机制用于唯一标志进 入系统的每个用户的身份,因此必须保证用户身份的唯一-性。 鉴别是指系统检查验证用户的身份证明,用于检验用户身份的合法性。标识和鉴别功能保证了只有合法的用户才能访问科研管理系统中的资源。
用户存取控制
科研信息数据库中存放着许多数据,也有很多不同的用户。实际上,大多数用户只需要访问数据库中的一部分数据,允许用户对所有数据无限制地访问是不安全的,因此这里通过权限来控制用户对数据的访问。存取控制的目的是确保用户对数据库只能进行经过授权的有关操作,防止非法用户进入系统以及合法用户对系统资源的非法使用。
存取控制机制主要包括两部分:
①定义用户权限,并将用户权限登记到数据字典中。用户对某一数据对象的操作权利称为权限。某个用户应该具有何种权限是在科研管理系统设计中我们给出了合理的设定,通过统一的权限设置保证这些决定的执行。定义用户的权限分别授予不同的角色,这些定义经过编译后存放在数据字典中,按需调用。
②合法权限检查。
每当用户发出存取数据库的操作请求后(请求一般应包括操作类型、操作对象和操作用户等信息),查找数据字典,根据安全规则进行合法权限检查,若用户的操作请求超出了定义的权限,系统将拒绝执行此项操作。
网页及服务器端设计
这一部分主要是在网页端设计时,通过前端代码 Javascript 进行首次效验,然后通过服务器端的函数进行检查,并最后在数据库中通过 check 语句查询信息实现系统的保护。
应用程序设计
功能模块
本系统整体的功能结构图如下所示,主要分为以下功能,在功能分析模块已经介绍过了,这里不在赘述:
界面设计
本次科研管理系统的界面设计主要分为 4+1 种,分别为四种用户身份登录后所能看到的不同信息展示和登录界面设计。
初始登录界面设计
①登录界面左上角设计了“高校科研管理系统”表示系统的功能和适用场景,字符使用黑体白色风格,比较显眼。
②右上角设置了“欢迎光临”字样,符合我们通常所用系统的人性化设计,提升用户系统的体验感。
③这一处用来输入用户的登录账号和密码,密码采用隐藏格式,以防密码信息不小心泄漏。
④此处用来选择用户的身份,如果身份选择和数据库中账号所对应的身份不一致,则会导致登录失败。
⑤这一点是登录按钮设计,在以上信息输入均为正确时,点击此按钮即可跳转到对应的用户界面。
科研人员界面设计
在各个用户展示界面的左侧一栏设置功能栏,主要分为 8 个功能模块,四种用户身份登录下的页面布局大体一致,差异在于功能栏中所包含的功能不同,下面将进行详细介绍。
①此处是用户的密码信息和个人信息修改的模块,四种用户身份下这里的界面展示是一致的,后文将不再重复赘述。
②第二处是科研项目的申报、查询设计,这里分模块进行集成展示,比较符合人们的使用习惯。
③第三处是科研成果的申报、管理和查询功能界面设计,整体和科研项目模块的设计基本一致。
④第四处是学术活动相关功能的界面设计,这里将学术活动的申请、查询、管理集成在一个模块,便于使用。
⑤第五处是通知信息的界面设计,将通知信息的查看和搜索、查询集成在一个功能栏进行展示使用。
⑥第六处是文件信息的设计,“文件信息查看”功能栏下,包括信息查看和搜索查询等界面模块,点击可进行跳转。
⑦第七处是统计信息展示界面的设计,这里将统计信息管理、查询集成在一个栏目,点击对应子栏进行界面跳转。
⑧第八处展示的是众多跳转界面中的一个(项目查询界面),采用了清晰明了的表格化设计,符合用户的认知习惯。
⑨第九处设计位于界面的右上角,这里展示当前用户的用户名、身份,可以单击最右侧注销退出按钮退出登录或者切换账号。
科研秘书界面设计
(界面设计相同部分这里为了节省篇幅不在重复赘述,只对不同的设计部分加以说明)
① 这一部分的大体设计和前述基本一致,只是跳转界面后包含的功能存在差异(比如项目管理模块就多了审批、评价等等这些功能)
②第二处是项目中期检查的管理界面,普通科研用户界面不存在这一功能栏,这里集成了中检管理和查询。
③第三处是项目终结信息管理的界面设计,集成了终结信息(验收情况)的查询和管理。
科研管理人员界面设计
(这部分同样只对不同的设计部分加以展示说明)
①第一处的设计和科研秘书的功能界面没有太多区别,只是在项目的管理界面多了项目评分的功能设计。
②第二处是对项目评价的管理和查询功能的集成,点击跳转之后可以选择特定的项目进行文字评价。
③第三处是对项目年度信息统计功能的集成,点击跳转之后可以查看到各系项目的统计信息。
④第四处跳转之后的信息栏展示,依然采用表格化设计。
⑤第五处和其余界面一致,展示的用户身份和注销登录按钮。
系统管理员界面设计
①第一处的设计用来修改系统管理员的个人密码信息,并通过接口送入数据库进行更新。
②第二处是对科研管理人员的界面功能设计,跳转之后可以增加、删除、修改科研管理人员信息。
③第三处是对管理部门信息的界面功能设计,跳转之后可以增加、删除、修改管理院系信息。
④第四处是管理科研秘书的功能界面设计,将科研秘书的管理、查询、添加集成在一个功能栏下。
⑤第五处是管理普通科研用户的功能界面设计,将科研用户的管理、查询、添加集成在一个功能栏下。
⑥第六处是对系统数据备份、数据导出、日志管理功能的集成设计,可以在对应模块跳转之后执行数据的存储与备份。
事物设计
添加用户信息
1 | INSERT INTO `admin` VALUES ('8', 'xxxry4', '111', '任六', '助理', '硕士研究生 1', '数学系', '13232321228', '2022-06-30', '科研人员'); |
查询项目(其他表的查询事务类似)
1 | "select * from xm where username='" + username |
删除成果(其他表的删除事务类似)
1 | delete from cg where bianhao='" |
添加成果信息
1 | INSERT INTO `cg` VALUES ('3', '1487335131243', '测试成果名称', '刘泽', |
统计项目信息
1 | select count(*) |
添加单位信息
1 | INSERT INTO `dw` VALUES ('1', '信息系', 'test'); |
修改信息表的列名
1 | ALTER TABLE admin CHANGE address dw CHAR(50) DEFAULT 0; |
添加活动信息
1 | INSERT INTO `hd` VALUES ('2', '关于举办百家讲坛的申请', '测试', |
添加日志信息
1 | INSERT INTO `rz` VALUES ('2', 'admin', '系统管理员', '2022-06-18 |
添加通知信息
1 | INSERT INTO `tz` VALUES ('2', '测试通知标题', '测试通知内容', |
添加文件信息
1 | INSERT INTO `wj` VALUES ('2', '测试文件名称', 'upfile/1.doc', '测试文 |
添加项目信息
1 | INSERT INTO `xm` VALUES ('28', '1656554104730', '冶金2', '葛久松', ' |
测试和运行
登录主界面测试
科研人员功能测试
我们首先以科研人员的身份登录,科研人员账号是 libaolu,密码 111,登录后的主界面:
科研项目管理:在线申报、查询查看修改:
科研成果管理:科研成果申报,查看编辑
学术活动管理:学术活动申请、查看、修改等:
管理人员发布的通知信息按名称查询:
项目统计信息查看:
科研秘书功能测试
接下来我们以科研秘书的身份登录,用户名:xxxms,密码 111
登录后主页面
科研项目管理:审批、删除等
科研成果审批查看:
文件信息管理:文件修改查看新增
文件信息上传
学术活动管理:审核、查看、修改
学术活动审批
项目中期检查:
项目结题:
科研管理人员功能测试
接下来我们以科研管理人员的身份登录:用户名:kygl,密码 111
登录后的主界面:
科研管理人员除了可以查看可向项目、科研成果、学术活动外,还可以评价项目成果:
按时间段查看项目申报信息
系统管理员功能测试
接下来我们按照系统管理员登录,用户名:admin,密码 111
登录后的主界面:
系统管理员可以管理科研人员、科研秘书、科研管理人信息、还有一些系统功能比如日志、数据库维护等操作
数据备份
查看系统日志
数据导出
总结
还没验收,希望有好消息吧~
- 本文作者: 李宝璐
- 本文链接: https://libaolu312.github.io/2023/06/08/“数据库课设-高校科研系统开发记录”/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!