1系统简介
随着电子技术的普及和快速发展,线上管理系统在各行各业得到了广泛的应用,包括学校、企业等都在实现电子信息化管理,而疫情管理也在这一趋势下转向了电子化、信息化、系统化的管理方式。
相较于传统的人工管理模式,疫情防控管理系统能够极大地提高管理员的管理效率并降低出错的风险。经过编译运行后,疫情防控管理系统的功能能够大幅降低管理员管理过程中出错的概率,并在出现错误时给予相应的提示。通过疫情防控管理系统的管理,成本可以得到有效降低,节省大量的时间成本和人力资源,同时管理员也能够提高管控能力。
因此,通过疫情管理系统,可以解决传统疫情管理中出现的问题,简化管理员的工作,对各种信息进行系统化、电子化的管理,从而提高管理效率,降低管理成本,增强管理的准确性和可靠性。这种转变将为疫情防控带来更高效、更精准的管理手段,为应对未来可能出现的疫情挑战提供更强有力的支持。
1.1需求分析
疫情防控管理系统,能够实现计算机化的疫情防控管理,能够提供方便快速的疫情信息检索功能和统计功能,并且能够对疫情信息和用户信息进行管理。要求系统具备以下特点:
(1)操作简单,易用。
(2)数据存储可靠,具备较高的处理效率。
(3)系统安全、稳定。
(4)开发技术先进、功能完备、扩展性强。
本系统主要实现对疫情防控信息的管理,主要管理用户信息、病毒信息、管理员信息。
(1)用户信息管理:能够对用户的基本信息进行管理,包括新增用户,用户信息的修改;删除用户的信息,查询用户的信息。
(2)病毒信息管理:能够对病毒的基本信息进行管理,包括新增病毒种类,根据国家《现行传染病防治法》规定,对病毒进行分类,将新的病毒信息录入系统中;病毒信息的修改,信息删除。查询病毒的信息等。
(3)系统用户信息管理:能够对系统用户的信息进行管理,包括增加新的系统操作用户,对当前系统用户的密码进行修改,以及删除用户。
1.2 编程环境与工具
根据本系统体系结构特点和使用本系统的用户特点,编程环境与工具的配置如表1-1所示:
表1-1 开发环境表
Tab. 1-1 Development environment table
类别 | 标准配置 |
开发语言 | Java |
开发工具 | IDEA |
开发环境 | JDK 8.0 |
服务器 | Tomcat 8.0 |
数据库 | MySql 5.6 |
数据库连接池 | C3P0 |
前端框架 | BootStrap |
2系统总体设计
按照系统的分析,本系统采用基于B/S架构的系统,系统分为管理员和普通用户两种身份,其中普通用户可以管理个人用户信息,也可·以对是否携带病毒、体温、手机号、出发地、目的地等进行修改操作;系统的管理员需要先登录,然后才能使用系统的各项功能,会涉及相应的信息。
本系统功能分为用户信息管理模块、管理员信息管理模块、基础信息维护模块,系统的功能结构
用户信息管理模块包括用户登录、注册、退出、信息查询和修改功能。系统首页,登录界面的主要功能是让用户输入账号和密码。账号通常是用户在注册时填写的用户名、手机号码或电子邮箱,而密码是用户用于验证身份的秘密字符组合。不同的账号密码对应进入不同的界面,有不同的权限,实现不同的功能。在登录界面中,通常会有两个输入框,分别用于输入账号和密码。 输入框应该具有清晰的标签,以指导用户正确输入信息。
管理员信息管理模块包括管理员登录退出、信息修改及对普通用户的信息进行增删改查,可以实现数据库备份,为保证数据安全本系统采用了数据库备份功能;管理员系统它需要有效地提供疫情数据的收集、汇总、分析和展示等功能,为疫情防控工作提供科学依据和决策支持。
基础信息维护模块包括病毒类别设置、病毒信息添加、以及用户是否携带病毒。
3主要业务流程
对于系统的安全性的第一关,就是用户想要进入系统,必须通过登录窗口,输入自己的登录信息才可以进行登录,用户输入的信息准确无误后才可以进入到操作系统界面,进行功能模块的相对应操作,如果用户输入的信息不正确,则窗口出现提示框,用户登录失败,返回到第一步进行重新输入,如图3-1所示。
图3-1登录流程图
Figure 3-1 Login Flowchart
对于疫情防控管理系统,需要随时添加所需要的数据信息,对于用户添加信息,需要根据添加界面,根据选框的内容进行填写所要添加的数据信息,信息输入完成后判断数据信息是否符合要求,符合要求则添加完成,用户所添加的信息不符合要求,则需要返回到第一步,重新输入数据信息,再进行判断操作,如图3-2所示。
图3-2信息添加流程图
Figure 3-2 Information is added to the Flowchart
4数据库的设计
4.1逻辑数据库设计
用表格列出表的结构及说明表中主要列的作用。
ID | 名称 | 类型 | 是否主键 | 空 | 解释 |
1 | ID | int | 是 | 不能 | 编号 |
2 | username | varchar | 不是主键 | 可以 | 管理员名称 |
3 | password | varchar | 不是主键 | 可以 | 密码 |
4 | phone | varchar | 不是主键 | 可以 | 电话 |
5 | address | varchar | 不是主键 | 可以 | 地址 |
管理员信息表用来存放管理员的信息,包括管理员名称,管理员密码。
ID | 名称 | 类型 | 是否主键 | 空 | 解释 |
1 | ID | int | 是 | 不能 | 编号 |
2 | Name | varchar | 不是主键 | 可以 | 类型 |
类型信息表用来存放病毒类型信息,用来存放病毒类别,病毒名称。
ID | 名称 | 类型 | 是否主键 | 空 | 解释 |
1 | ID | int | 是 | 不能 | 编号 |
2 | name | varchar | 不是主键 | 可以 | 类别 |
3 | author | varchar | 不是主键 | 可以 | 内容 |
4 | publisher | varchar | 不是主键 | 可以 | 发起人 |
5 | isbn | varchar | 不是主键 | 可以 | 书号 |
6 | info | text | 不是主键 | 可以 | 信息 |
7 | pricing | double | 不是主键 | 可以 | 定价 |
8 | is_borrowed | tinyint | 不是主键 | 可以 | 已借贷 |
城市信息用来存放城市信息,包括编号,城市名称,日期。
5系统功能详细实现及效果图
(1)首页
在登录页面通过填写账号、密码等信息完成登录,当用户点击"登录"按钮时,程序会检查用户名和密码是否正确,并根据结果显示相应的消息。如下图所示。
界面设计是实现登录界面的第一步。我们可以使用一个自主设计的Java用户界面工具包。它包含了许多UI组件,如按钮、标签、文本框等。我们可以使用这些组件轻松地构建用户界面。使用JButton组件实现登录操作,用户点击按钮后可以触发登录验证的操作。我们还可以添加文本框和密码框,以便用户输入用户名和密码。另外,我们可以使用JLabel组件显示提示信息,如“请输入用户名”和“请输入密码”,以提高用户友好性。最后,我们可以使用JPanel组件将所有的UI组件放置在一个面板上,以便更好地组织和布局界面。通过这些步骤,我们可以实现一个简单而功能完善的登录界面。
(2)用户登录成功界面
用户登录成功之后,进入以下界面,可以对出发地、目的地、体温以及自身是否携带病毒等信息进行更改;如下图所示:
通过对信息进行比对,找到需要更改的部分后,可以针对这部分信息进行修改。这可能涉及到更新数据库中的记录,编辑文档中的内容,或者修改程序中的变量值等。一旦找到需要更改的信息,可以根据具体情况采取相应的操作,确保信息被正确地修改和更新。这个过程可能需要进行一定的验证和确认,以确保修改的信息是准确的、完整的,并且符合预期的要求。
(3)病毒分类界面
这部分主要展示当前病毒信息详细介绍,让用户对病毒信息获取更加完善;如下图所示。
将我们的信息进行一个输出,输出数据库中的内容可以通过编写查询语句来实现。首先,需要连接到数据库,并构建一个查询语句,以从数据库中检索所需的信息。然后,执行查询,获取结果集,并将结果集中的内容进行输出,可以是在控制台打印、在界面上展示或者写入文件等方式。在输出信息之前,可能需要对结果进行格式化或者加工,以便更好地呈现给用户或者其他系统进行处理。最后,确保输出的信息是准确的、完整的,并且符合预期的要求。
这一部分是用户退出登录界面。如下图所示:
将登录凭证转为失效状态通常需要在数据库中进行更新操作。首先,需要构建一个更新语句,将特定的登录凭证的状态字段设置为失效状态。然后,执行该更新语句,以确保数据库中的登录凭证状态已经被更新。在执行更新操作之前,可能需要进行一些验证,例如验证用户的身份或者权限,确保只有有权的用户才能进行这个操作。另外,还需要确保更新操作是安全的,不会对数据库中的其他数据产生影响。最后,可以通过查询操作来验证登录凭证的状态是否已经成功地被更新为失效状态。
这是使用管理员的账号和密码进行登录之后的界面,这个界面可以对普通用户进行查询、修改和删除以及添加操作。
通过对dao的操作进行对表的增删改查。
这是对病毒种类进行查看、修改、删除
都是通过对dao的一个操作进行的
6总结
通过本次疫情管理系统课程设计报告,我收获了丰富的关于系统设计和开发的知识和经验。首先,我深入了解了疫情管理系统的需求和功能,以及需要处理的数据和数据结构,这使我对系统的整体架构和实现有了更清晰的认识。其次,我学习了如何选择适合的技术和开发工具,并制定了详细的开发计划和时间表,这让我意识到系统开发需要有条不紊的计划和组织。此外,我还深入学习了系统设计的安全性和隐私保护措施,以及如何进行充分的测试和部署,这些是构建高质量系统不可或缺的步骤。
通过本次设计报告,我更加深入地理解了系统设计和开发的过程,以及如何将理论知识与实践相结合。同时,我也意识到了系统设计需要考虑的因素和细节,例如数据的安全性和隐私保护、用户体验和交互性、可扩展性和可维护性等。这些经验将对我未来的系统设计和开发工作产生积极的影响。
总的来说,本次疫情管理系统课程设计报告是一次非常有价值的实践机会,它不仅帮助我巩固了所学知识,还提高了我的系统设计和开发能力。我相信这些经验将对我未来的学习和工作产生积极的推动作用,使我能够更加自信地应对未来的系统设计和开发挑战。(2)不足及原因,以后如何做。
虽然本疫情防控管理系统功能相对来说较为完善,疫情防控管理系统的功能在后续的时候可以进一步完善。主要内容有:
数据可视化是大数据应用技术之一,利用图形对数据进行可视化管理,通过大数据可视化展示系统的信息。对数据进行可视化分析能够更直观地展示出有价值的信息,帮助用户深入地了解数据。当前疫情防控管理系统的数据展示通常是利用表格的形式进行呈现,这种方式虽然能够呈现数据,但对于用户的直观理解和分析有一定的局限性。因此,可以考虑在系统中引入数据可视化技术,例如图表、地图、仪表盘等,将数据以更直观、更易理解的方式展示出来。
综上所述,本次课程设计虽然实现了一个功能相对来说比较完整的疫情防控管理系统,数据展示的时候还存在着不小的缺陷,智能化技术还需进一步地加强,后续可以从智能化和可视化的角度对疫情防控管理系统进行改造。
@WebServlet("/login")
public class LoginServlet extends HttpServlet {
// response.sendRedirect(request.getContextPath() + "/");
AdminService adminService = new AdminService();
UserService userService = new UserService();
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
switch (method) {
case "login-page":
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
break;
case "register-page":
request.getRequestDispatcher("/WEB-INF/views/register.jsp").forward(request, response);
break;
case "register":
String username = request.getParameter("username");
String password = request.getParameter("password");
String phone = request.getParameter("phone");
request.setAttribute("data", userService.register(username, password, phone));
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
break;
case "logout":
CommonUtil.setIdentity(null);
request.getSession().setAttribute("username", null);
request.getSession().setAttribute("user_id", null);
request.getRequestDispatcher("/WEB-INF/views/login.jsp").forward(request, response);
break;
}
}
(2)用户管理增删改查
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String method = request.getParameter("method");
switch (method) {
case "delete":
int id = Integer.parseInt(request.getParameter("id"));
userService.deleteOne(id); request.getRequestDispatcher("/router?page=admin_user_management").forward(request, response);
break;
case "update":
User user = new User();
user.setId(Integer.parseInt(request.getParameter("id")));
user.setUsername(request.getParameter("username"));
user.setPassword(request.getParameter("password"));
user.setPhone(request.getParameter("phone"));
userService.updateOne(user); request.getRequestDispatcher("/router?page=admin_user_management").forward(request, response);
break;
case "condition":
String username = request.getParameter("username");
request.setAttribute("users", userService.selectByUsernameLike(username));
request.getRequestDispatcher("/router?page=admin_user_management").forward(request, response);
break;
case "add":
Result<String> result = userService.register(request.getParameter("username"),
request.getParameter("password"),
request.getParameter("phone"));
if (result.getCode() != 200) {
throw new RuntimeException("重复用户名,添加失败");
}
request.setAttribute("data", result);
request.getRequestDispatcher("/router?page=admin_add_user").forward(request, response);
break;
菜单跳转部分
private static void config() {
driverClassName = "com.mysql.jdbc.Driver";
URL = "jdbc:mysql://localhost:3306/epidemicdata?useUnicode=true&characterEncoding=utf8";
username = "root";
password = "123456";
autoCommit = false;
}
private static boolean load() {
try {
Class.forName(driverClassName);
return true;
} catch (ClassNotFoundException e) {
System.out.println("驱动类 " + driverClassName + " 加载失败");
}
return false;
}