基于IDEA的JavaWeb银行叫号系统

本人不怎么看消息,要资源直接从下面的链接下载

源资源见: https://pan.baidu.com/s/1Vc35QF-SP5NFq1xQJeX1jQ 提取码: 8259 复制这段内容后打开百度网盘手机App,操作更方便哦

基于JavaWeb的银行叫号系统

摘  要:开发一款银行叫号系统,方面银行客户办理业务,按号办理业务,杜绝排队插队现象,减缓客户等待叫号的焦急等待心理。采用JavaWeb的开发技术,利用MVC的设计模式,完全实现页面和逻辑的分离。

关键词:MVC;JavaWeb;叫号服务;

1 项目分析

    1. 背景

随着科学技术的更新迭代和生活水平的日益提高,各行各业激烈角逐,服务质量则在各行各业都代表着行业的质量,服务水平变得愈加重要。

长期以来,人们在银行营业大厅里办理金融业务过多,前拥后挤的排队等候,极大的延误办理业务的顾客,为改善服务质量,创造人性化服务环境,解决客户在办理业务中所遇到的排队、等候、拥挤和混乱等现象,银行排队叫号系统应用而生。

1.2 刷卡取号设计要求

设计一个页面,实现排队叫号功能,用户输入卡号,选定所需的业务类型,数据从客户端传递给后台,后台处理后,返回给客户端显示用户的编号,取票时间,今日已办理人数和未服务人数,同时对基础的页面做一些显示上的优化,维持基本的界面友好性交互。

1.3 数据查询设计要求

前端得到相应的查询条件,例如服务的窗口编号,业务类型等等,数据传递给后端,由后端处理后,返回给客户端在约束条件下所查询列表的各项数据,客户端再显示这些数据。对基础页面做优化。

1.4 所使用软件

采用IntelliJ IDEA做开发平台,使用MYSQL数据库,用可视化数据库软件SQLyog管理数据库。

1.5 数据库设计

1.5.1 业务类型表(work)

用户选择的是业务名称,由业务类型表查询,得到业务编号。

1.5.2 窗口表(windows)

规定一个窗口所处理的业务,窗口的名称,若此叫号系统能完整实现,用户叫号后也应给出相应的窗口编号和窗口名称。

1.5.3 队列表(queue)

我的理解是一个队列表应当存储的是等待服务的用户,在处理完业务以后,由工作人员表示已完成,从队列表中删除,添加到历史表中。

1.5.4 历史表(history)

保存处理完业务的客户信息,包括卡号、取票时间、服务窗口等,工作人员处理完业务后给出业务处理的结束时间,将相应数据添加到此表。

2 刷卡取号实现分析

2.1 各层功能描述

表2-1 文件名和功能描述

文件名

描述

视图层

apply.jsp

用户输入卡号,选择业务类型传递给控制层

apply_end.jsp

显示当前队列编号,尚未服务人数等处理后的信息

bankcss.css

对显示的页面做优化

控制层

applyServlet.java

Servlet,负责连接模型层,传递客户端数据

模型层

bankuser.java

连接数据库,对数据库做相应的查询和更新

2.2 流程分析

用户输入卡号(card),选择业务名称(work_name),卡号和名称传递到控制层,并经由控制层传到模型层,在模型层内,首先加载数据库的驱动,定义数据库的连接地址,用户名和密码。完成访问数据库后,先查询业务类型表(work),根据业务名称(work_name),找到相应的业务编号(work_numb)。再查询历史表(history),将服务结束时间(end)限定为今日,计算出今日已服务的人数,查询队列表(queue),计算出今日未服务的人数,已服务和未服务的人数求和得出得出该用户的编号(id)。将用户编号(id),前台传入的卡号(card),查询出的业务编号(work_numb),以及取票时间(get_time)都求出后,更新队列表(queue),并把数据传递给前端控制层,由控制层提交给指定页面。

2.3 界面展示

 

3数据查询实现分析

3.1 各层功能描述

表2-1 文件名和功能描述

文件名

描述

视图层

Select.jsp

用户选择业务类型等条件传递给控制层

history.jsp

显示历史服务记录

queue.jsp

显示等待队列的记录

selectcss.css

对显示的页面做优化

控制层

SelectServlet.java

处理历史队列查询的数据,连接模型层,传递客户端数据

SelectServlet_queue.java

处理等待队列查询的数据,连接模型层,传递客户端数据

模型层

SelectBean.java

连接数据库,对数据库做相应的查询和更新

3.2 流程分析

用户选择相应的查询条件,当前页面只能提交一个表单,数据传递给相应的控制层,并经由控制层传递给模型层,在模型层内,首先访问数据库,对于不同的控制层调用的函数,做不同的数据库查询操作。由于两个查询前端传过来的数据是业务名称(work_name),所以都要先查询业务类型表(work),得到业务编号(work_numb)。对于查询历史表(history),相应的约束条件包括开始服务时间(start),结束时间(end),窗口编号(work_window),业务编号(work_numb)。对于查询队列表(queue),相应的约束条件有业务编号(work_numb)。查询的结果保存在List对象中,由控制层提交给指定页面。

3.3 界面展示

4遇到的问题和解决方法

4.1 数据库查询

statement对象采用的使SQL语句注入的形式,使用Preparedstatement则是把传入的东西看作数据,但是之前一直没有去深究对于字符类型,字符串类型的这些数据,当用问好表示一个数据时,需不需要加单引号呢?结果是不需要的,用SetString函数即可。这也引出一些学习上的问题,也即书面性的知识,大多数运行到实践中,才能发现一些薄弱点所在,引出一些学习书本知识所注意不到的点。

4.2 radio传输到控制层

Request对象封装的浏览器信息,一般用getParameter函数获取为String类型,radio传过来的参数可以用上述方法,也可以用getParameterValues函数,并且为String[]这样的数组,被选中的值存储为第一个数组元素,而对其他的数组元素的操作都是违法的。

4.3 数据库版本问题

本项目使用的MYSQL数据库是8.0.12版本的,从MYSQL 5.5.45+, 5.6.26+ and 5.7.6+ 这些个版本以后就必须指定SSL 的值true或者false。mysql5.7以及之前的版本则不用进行添加useSSL=false,会默认为false。useSSL=true时,就是一般通过证书或者令牌进行安全验证;useSSL=false时,就是通过账号密码进行连接。

4.4 Date对象的格式问题

在查询今日已服务的人数时,先要得出今日的日期。我选择的方法是用Date的格式化输出函数,只将月和日进行查询,同时对于历史表的end一栏数据也都是月和日的数据,没有分和秒,因为分和秒当日会有很多的数据,统一放在end一栏,数据对于当前功能较为冗余。

但是如果要实现窗口叫号的服务,老师给出的查询语句是”order by 取号时间”,就需要对具体的时间也做上分和秒的记录。

4.5 结果集读取

在对结果集ResultSet进行操作之前,一定要先用ResultSet.next()将指针移动至结果集的第一行,否则将不能读取。

5 总结

参考文献

  1. 张娜. Java Web开发技术教程[M]. 清华大学出版社, 2011.

[2] https://blog.csdn.net/qq_45656077/article/details/119333006/Java获取当前时间,DATE,Calendar

[3] https://blog.csdn.net/qq_37084904/article/details/JDBC(五)——Resultset结果集

  • 2
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值