基于java+Socket+Java GUI的银行排号系统设计与实现(毕业论文+程序源码)
大家好,今天给大家介绍基于java+Socket+Java GUI的银行排号系统设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦。需要下载开题报告PPT模板及论文答辩PPT模板等的小伙伴,可以进入我的博客主页查看左侧最下面栏目中的自助下载方法哦
文章目录:
1、项目简介
- 银行排号系统是为解决一些服务业营业大厅排队问题而设计的,它能够有效地提高工作人员的工作效率,也能够使顾客合理的安排等待时间,让顾客感到服务的公平公正。论文首先讨论了排号系统的背景、意义、应用现状以及研究与开发现状。本文在对C/S架构、Socket网络编程技术、Java线程编程等相关技术理论做了简单的论述。结合工程项目,具体论述了排号系统的需求分析、整体设计以及系统数据库的设计,其中包括业务流程图、系统用例图、功能结构图、数据流程图、以及系统数据库的E-R图的分析和描述。其次,论文着重讨论了C/S架构的排号系统的设计和实现。在论文中详细地论述了排号系统的数据库设计与系统实现的各个步骤,并对原型系统作了简要介绍。最后,论文对主要完成的工作进行了总结,并提出了研究的不足之处以及对今后研究的展望。
2、资源详情
项目难度:中等难度
适用场景:相关题目的毕业设计
配套论文字数:9110个字30页
包含内容:整套源码+完整毕业论文+答辩PPT+辅导视频+运行截图
3、关键词:
C/S架构 Java多线程 排号系统 Socket网络编程4、毕设简介
提示:以下为毕业论文的简略介绍,项目源码及完整毕业论文下载地址见文末。
引言
省略
论文的第一章介绍了系统分析,重点介绍了系统的可行性分析,系统的需求分析,其中包括业务流程图、系统用例图、逻辑模型图、体系结构图等;第二章介绍了系统的整体设计,重点介绍了开发设计思想,系统详细功能设计及系统总体框架等;第三章介绍了系统的数据库设计,重点介绍了数据库的概念设计及逻辑结构设计等,其中包括ER图、数据字典表等;第四章介绍了系统的实现,主要介绍了一些所用到的关键技术、系统程序执行流程、以及系统的实现,其中分别介绍了系统主界面实现、服务端取号的实现、客户端业务处理的实现、Dao层实现等,文中详细论述了系统实现的各个步骤;第五章对本人的工作做出了总结并展望后继的工作。
2 系统分析
2.1 系统初步调查
省略
2.2 系统可行性分析
2.2.1 经济可行性
省略
2.2.2 操作可行性
省略
2.2.3 技术可行性
本系统采用Java语言编写,它是一种简单的,面向对象的编程语言,具有多线程,分布式,跨平台等特性。它有自己的安全机制,并且移植性很好。在数据库方面采用了Oracle 10g,其灵活性,安全性和易用性为数据库编程提供了良好的条件。在数据持久化层,选用了JDBC,开发者掌握这些技术就可以具备开发此系统的能力,另外,此系统对开发环境的要求,都是大部分Java程序员进行软件开发使用的开发环境,所以,技术方面也是可行的。
2.3 系统开发环境概述
2.3.1 硬件环境
本系统采用单机操作方式,基本配置如下;
处理器:Intel® Core™2 Duo CPU T6400@2.00GHz
硬盘空间:200GB
内存:2G
显示器:NVIDIA GeForce 9300M GS
2.3.2 软件环境
采用C/S架构,使用Eclipse运行环境
开发平台:MyEclipse
操作系统:Windows 7
数据库服务器:Oracle 10g
使用技术:Java GUI、JDBC、Socket、Xml
2.4 系统需求分析
2.4.1 业务流程分析
在调研过程中,已了解到所涉及的业务流程如图2-1所示
图2-1业务流程图
2.4.2 系统体系结构设计
图 2-2系统体系结构
2.4.3 系统逻辑模型
图 2-3 系统逻辑模型
2.5 系统需求定义
2.5.1 客户用例图
图 2-3 客户用例图
2.5.2 业务员用例图
图 2-3 业务员用列图
3.系统总体设计
3.1 系统设计目的与任务
省略
3.2 开发设计思想
排号系统从界面上看主要实现两个方面的功能:
(1)取号 客户按键反馈给服务器,然后服务器从数据库获得一个号反馈给顾客,这就完成了取号的过程,在顾客取号的可视化界面上顾客可以查询当前取号总人数,也可查询到已处理的人数,在顾客想放弃当前的号票时也可以对号票进行删除,顾客还可以在可视化界面看到自己的取票信息和需要等待的人数。
(2)叫号 业务员按键反馈给服务器,服务器拿到取号时存储在数据库中的数据,进行业务处理,在这个过程中业务员可以进行对顾客人数的查询,还可以对不需要进行处理的票号进行删除,也可已充当管理员的角色对数据库进行删除。业务员还可以查看顾客的取票情况,以及票号的业务的处理情况。
排号系统的特点:
(1)可操作性
界面简易,使用通用的菜单式风格,使用直观,操作简便。
(2) 容量大
支持联网,不限制取号数量,可满足大型客流场所的使用。
(3)高性能
系统的所有对象都存放到数据库中,表示逻辑与业务逻辑相互分离,保证系统的处理能力。
(4)伸缩性
它能适应不同的应用环境,对于只实现基本功能的服务大厅,如银行系统,可以采用微机控制的排号系统,无需单独配置系统电脑,即可实现自动排队叫号的功能。
(5)可靠性
能保证长时间的正常运行,同时系统有比较好的安全机制,提高了安全性能。
3.3 系统总体设计框架
据以上章节所做需求分析对系统进行功能设计,见系统功能模块图如图3-1所示:
图3-1 系统的总体功能模块图
3.4 系统功能详细设计
该系统功能从服务器端和客户端角度来说可分以下两大模块,具体每一个模块又分为几个小模块:
(1) 服务器端
1)取号功能:打开服务器与终端进行通信。由于把服务器设置到了用户的一端,所以在服务器端进行取号,然后把号存到数据库中。
2)统计功能:数据访问层从数据库中查出所有取票人数和等待人数在服务器端界面显示。
3)删除功能:删除当前取票顾客的排号。
4)查询功能:顾客可以从此处了解到所有顾客的取票情况及被处理状况。
5)通知功能:从服务器端获得排号,通过服务器端通知用户到工作台办理业务。
(2) 客户端
同一时刻允许多个工作台办理业务。用户通过在服务器端的通知功能知道去哪个工作台办理业务,工作台显示正在为哪个号码的用户办理业务。
1) 登录功能:业务员从此处登录,业务员的姓名,密码是事先录入数据库的。
2) 叫号功能:业务员点击处理按钮触发事件发送信息给服务器,服务器从数据库拿到号票,返回给业务员进行业务处理。
3)统计功能:数据访问层从数据库查询总取票人数和查询未处理人数在业务端显示。
4) 删除功能:业务员可以删除数据库中所有的记录,也可以选择删除某条记录。
5) 查询功能:业务员可以查询所有顾客的取票情况及业务员对号票的处理情况,这块主要为了能够及时掌握顾客取票信息及业务员处理情况。
4.数据库设计
4.1 数据库需求分析
通过对排号系统内容和数据流程分析,设计的数据项和数据结构如下:
(1)顾客信息。包括的数据项有顾客ID,顾客排号、取号时间、服务类型、状态标志等。
(2)业务端信息。包括的数据项有业务ID、处理时间、服务台编号、属于那种服务类型,服务的顾客票号。
(3)业务员信息。包括的数据项有业务员姓名、业务员密码。
(4)自动出号信息。包括的数据项有ID、服务类型。
有了上面的数据结构、数据项和数据流程,就可以进行下面的数据库设计。
4.2 数据库概念设计
这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。根据上面的设计规划出的实体有顾客信息实体、业务端信息实体、业务员信息实体、自动出号信息实体。各个实体的E-R图及其关系描述如下:
图 4-1 业务端信息实体E-R图
图 4-2 业务员信息实体E-R图
图 4-3顾客信息实体E-R图
图 4-4 自动出号信息实体E-R图
实体之间关系E-R图:
图 4-5 实体之间关系E-R图
4.3 数据库逻辑结构设计
在上面的实体以及实体之间关系的基础上,形成各个表格之间的关系。排号系统数据库中的各个表的设计结果如下面的几个表格所示,每个表格表示数据库中的一个表。
(1) 顾客信息表customer_tbl
表customer_tbl用来保存顾客取票信息,结构如表4-1所示。
表 4-1 customer_tbl的结构
(2) 业务端信息表work_tbl
表work_tbl用来保存业务端信息,结构如表4-2所示。
表 4-2 work_tbl的结构
(3) 业务员信息表workmen_tbl
表workmen_tbl用来表示业务员信息,结构如表4-3所示。
表 4-3 workmen_tbl的结构
(4) 自动出号信息srt_tbl
表srt_tbl用来产生唯一的号票信息,表结构如表4-4所示
表4-4 srt_tbl的结构
4.4 系统安全性设计
(1)数据因素:系统数据库中包含多个表信息,所以在系统与数据库的连接上,直接封装到代码中,由于java的安全机制比较好,所以数据信息在存储和传递过程中不可见。
(2)硬件及物理因素:系统硬件及安全环境安全可靠,包括机房设施、计算机主体、存储系统、数据通信设备设施等方面是安全的。
(3)存储安全:通过oracle的数据库安全设置,连接数据库需要用户名和密码,保证了数据库的安全性[14]。
5.系统的实现
5.1 系统的总体概述
排号系统采用java GUI设计的界面,它通过scoket实现点对点的通信,在实现过程中,客户取号的一端设置成了server端,业务员处理一端设置成了client端,所以必须先启动server端,才能启动client端。在整个系统中server端实现了顾客的取号功能和一些查询删除功能,client端实现了业务员登录和叫号处理以及一些查询删除功能。
5.2 系统相关技术简介
5.2.1 C/S的简介
传统的应用体系结构模式主要有两种:C/S(Client/Server)结构模式B/S(Browser/ Server)结构模式。
C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是C/S形式的两层结构,由于现在的软件应用系统正在向分布式的Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向
省略
5.2.2 Socket的简介
Socket 是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。在java中创建一个Socket,用它建立与其他机器的连接。从Socket得到的结果是一个InputStream以及OutputStream或Reader和Writer,以便将连接作为一个I/O流对象对待。这有两个基于数据流的套接字类:一个是ServerSocket,服务器用它“侦听”进入的连接;另一个是Socket,客户用他初始化一次连接。一旦客户(程序)申请建立一个套接字连接,ServerSocket就会返回(通过accept()方法)一个对应的服务器端套接字,以便进行直接通信。可以利用getInputStream()以及getOutputStream()每个套接字产生对应的InputStream和OutputStream对象。这些数据流必须封装到缓冲区内。在排号系统中采用了TCP/IP协议,这样实现了点对点通信等功能[3]。
5.2.3 JAVA多线程技术
(1)多线程[17]
多线程编程技术是Java语言的重要特点。多线程编程的含义是将程序任务分成几个并行的子任务。特别是在网络编程中,你会发现很多功能是可以并发执行的。比如网络传输速度较慢、用户输入速度较慢,你可以用两个独立的线程去完成这两个功能,而不影响正常的显示或其它功能。
多线程是与单线程比较而言的,普通的Windows采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是针对一个函数,只有等这个函数执行完之后,主程序才能接收另外的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件。只有等读完这个数据或文件才能接收下一个消息。在执行这个子函数过程中你什么也不能干。但往往读网络数据和等待用户输入有很多时间处于等待状态,多线程利用这个特点将任务分成多个并发任务后,就可以解决这个问题。
(2)线程创建的方法[16]
1)从一个自定义的类中创建一个对象,这个类扩展了Thread类。
2)使用接口。在java中,用于创建线程的接口是Runable。
(3) 多线程在排号系统中的应用
为了实现多用户同时在线服务采用了多线程机制,在实际应用中启动一个业务端产生一个线程。业务端分布在不同的机器上,同时进行业务处理。多线程解决了并发执行造成的死锁问题。并实现了多用户同时在线处理。
5.3 系统的执行流程图
以下是系统的执行流程如5-1所示
图5-1 服务器端系统执行流程(一)
图5-1 客户端系统执行流程(二)
5.4 系统主界面的实现
5.4.1 服务器主界面的实现
用户在取号的时候必须先启动服务器,才能进行取号。服务器端主界面如图 5-2所示
图5-2 服务器端主界面
服务器端主界面采用菜单式风格,用户可以根据需求进行取号,查询,删除等功能。界面主要采用了Grid Layout,Flow Layout,BorderLayout等布局管理器来对界面进行布局的。
5.4.2 客户端界面的实现
客户端是为业务员设计的以下是客户端登录界面如图5-3所示
图5-3 业务员登录界面
客户端业务处理界面如图5-4所示
图5-4 业务处理界面
5.5 服务器端取号的实现
在整个系统中取号是一个至关重要的环节,也是设计它的目的所在。它的实现与其他模块紧密相连,它在Server端实现的,取号分为两个服务类型:vip业务和普通业务。首先在数据库里建立srt_tbl这张表,它用来存储自动生成的客户牌号。它里面设置两个字段,一个是nextId,一个是type类型。nextId是用来标识顾客的牌号的,而type则是用来表示顾客所要选取的服务类型,vip业务和普通业务。当点击其中的一个业务时它就会产生一个牌号,这个牌号是通过在dao层的一个方法实现的,dao层通过JDBC连接数据库实现数据的持久化。在取完号的同时调用Dao层的saveID()方法把这个信息保存在cuntomer_tbl表中。
(1)vip会员取号如图5-6
图5-6 vip用户取号界面
(2) 普通会员取号如图5-7
图5-7普通用户取号界面
普通会员的取号的实现跟vip会员一样这里就不详细标注说明。
5.6 客户端业务处理的实现
这个模块的实现主要是在不同的业务员登录后选择了服务台以后才开始业务处理,业务处理的实现首先是server端调用socketThread这个多线程类,在这个类的run方法里调用了service层的unProcess(int type)方法从数据库中拿到nextId(牌号),client端从server端的输出流里获得牌号,进行处理。处理的时候会显示提示信息。
1)业务处理如图5-8所示
图5-8 业务处理界面(一)
5.7 Dao层的实现
Dao层是整个系统的关键所在,它是实现与数据库交互的桥梁,在这层里,主要是对一些数据的增删改查,它使用了JDBC作为与数据库连接的桥梁,配合一些pojo类来完成与数据库的交互,使业务逻辑层能够调用它来完成业务逻辑。Dao层也是所谓的Dao模式,它采用了接口机制,在这一层只完成与数据库的交互,实现了低耦合。
6 结语
本系统可解决排队混乱问题。主要包括两大模块,十个小功能。主要是实现取号,叫号功能。在取号的设计中用到了高低值算法,也使用了多线程技术,目的是可以使多个业务员同时在线进行业务处理。系统中还使用了XML解析、资源配置文件,与以前的同类系统相比,它把容易变动的信息写到配置文件中,需要更改的时候只要改动配置文件中的信息就可以,不需要改动已封装好的代码,实现低耦合的特性,并且重用性也很好。
省略
致谢
省略
参考文献
[1] 罗骏,何羽.SQL实用简明教程.北京.清华大学出版社.2004:1-6
[2] 邵荣.Java编程实践指南.北京.清华大学出版社.2003:20-25
[3] Bruce Eckel.Java编程思想.北京.机械工业出版社.2005:312-356
[4] 李诚,王兵.Java2简明教程.北京.清华大学出版社.2004:334-338
[5] 王克宏,张炳文.Java语言SQL接口——JDBC编程技术.北京.清华大学出版社.2001:234-262
[6] 刘巍,唐学兵.利用Java的多线程技术实现数据库的访问.计算机应用.2002,(12):121-123
[7] 雍俊海.JAVA程序设计教程.北京.清华大学出版社.2007
[8]Oram,Andy.Database programming with JDBC & Java paperback book.O’Reilly & Associates.Inc.2000
[9] Cay S. Horstmann ,Gary Cornell .Core Java 2 Volume I – Fundamentals.Seventh
Edition.2004
[10]Cay S. Horstmann ,Gary Cornell.Core Java 2 Volume II - Advanced
Features.Seventh Edition.2004
[11] Bruce Eckel .Thinking in java 4.Prentice Hall PTR.2006-02-15
[12] 阎宏.Java与模式.北京.电子工业出版社.2002
[13] ORACLE公司.ORACLE 8i 初学者指南.www.china-public.com
[14] 中科永联高级技术培训中心.http://www.itisedu.com/phrase/200604237235.html
[15] 赖万钦.Java 多线程探讨.福建电脑.2007,(7):13-14
[16] 姜景根,李祥.基于Java的多线程并发服务器的设计与应用.电脑与信息技
术.2007,1 5(1):16-17
[17]刘惠萍,刘亮亮,张力.C/S模式下的三层架构.科技信息.2006,(6):
20-25
[18] Brian Goetz .Exploiting ThreadLocal to enhance scalability.IBM中国.
http://www.ibm.com/developerworks/.2001-10-01
5、资源下载
本项目源码及完整论文如下,有需要的朋友可以点击进行下载。如果链接失效可点击下方卡片扫码自助下载。
序号 | 毕业设计全套资源(点击下载) |
---|---|
本项目源码 | 基于java+Socket+Java GUI的银行排号系统设计与实现(源码+文档)_Oracle_CS_银行排号系统.zip |
提示:如果下载链接失效可点击下方卡片扫码自助下载。