ImageVerifierCode 换一换
格式:DOCX , 页数:36 ,大小:497.79KB ,
资源ID:17323656      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/17323656.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(12基于CS的JAVA多线程队列牌号系统的设计与实现Word下载.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

12基于CS的JAVA多线程队列牌号系统的设计与实现Word下载.docx

1、随着科技的不断发展,人们要求办事的效率越来越高,牌号系统在这种情况下应运而生。1.1 牌号系统的介绍牌号系统在现今的服务行业还是个比较新鲜的名词,利用这种先进的牌号系统管理模式将网络技术、通信技术相结合,采用TCP/IP通信连接,使企业的服务机构通过网络与顾客通信,完成对顾客的管理。牌号系统实现每个客户端可以迅速建立与服务器端的实时通信连接,并且操作互动的业务。顾客不仅可以进行取号业务,还可以进行一些其它操作,业务员除了进行业务处理还可以对数据库进行一些增删改查等操作。随着网络编程技术研究的不断深入和完善,国内外越来越多的企业己经开始使用牌号系统,如中国建设银行和上海长海医院等相关部门已开始使

2、用,并且取得了相当的业绩和成果。1.2 选题背景及意义时间等于金钱,这句话是这个飞速发展时代的真实写照,随着科技的不断发展,人们越来越要求办事的效率,讨厌把宝贵的时间花在一些排队的事情上。我国是一个人口众多的国家,各大银行,邮局,医院等营业大厅常常人满为患,排着长队等着办理业务,这种局面常常使人们怨声载道。随着社会的发展,特别是信息技术的发展,计算机已经在社会的各个方面凸显出来。原始呆板固化的排队等候方式转变为基于计算机管理与控制的舒适、休闲的等候方式。由于原始的排队等候方式存在不方便、不安全等缺点,而基于计算机管理与控制的舒适、休闲的等候方式完全可以解决这些弊端,人们不仅可以自由安排等待时间

3、,而且可以轻松的享受其他服务,这方式不仅提高了业务员的工作效率,也提高了其业务素质。1.3 国内外研究现状分析随着市场规模的扩大,经过详细的调查,国内外越来越多的企业己经开始使用牌号系统。目前国际上已有许多人员致力于这方面的研究与开发,而这方面的方法与文献也是层出不穷。随着技术的越来越先进,各研究人员研究开发牌号系统所采用的技术也各不相同:如基于C/S架构的Java多线程技术、基于arm技术的等等。在国外,牌号系统早已普及应用到各个服务领域,他们所应用的也是先进的如智能型、多媒体式的牌号系统。而在我国,相对来说,在各大银行应用比较广泛,而在医院,却是最近一两年内才开始使用的。虽然比国外研究应用

4、得晚,但是随着服务行业发展的脚步,牌号系统在我国的应用也会越来越普及。 基于Java技术的不断发展,牌号系统涉及的领域越来越广,它的复杂性也会变得越来越高,与此同时随着各种硬件的不断发展以及Web技术的发展,牌号系统也会越来越多的应用在不同领域。因此,对于牌号系统仍需要继续研究,下一步应对Web服务以及面向对象的方法和技术进行深入研究。鉴于牌号系统的Oracle数据库管理系统这方面,没有专门涉及安全性的探讨研究,但这一特性的研究必不可少,特别是在企业管理这一类高敏感的系统中,因而这也是下一步工作的重点问题。1.4 本文的组织结构第2章 系统开发环境及相关技术理论:系统开发的主要平台,C/S简介

5、、Soket简介及JAVA多线程技术介绍。第3章 系统分析:从牌号系统的两大功能方面对系统进行了功能需求分析;通过经济、操作和技术三个方面对系统可行性进行了分析。第4章 系统的总体设计:包括系统功能结构、系统各子功能模块的设计和系统总及各实体用例图设计。第5章 系统的详细设计:描述了各实体及其属性,系统E-R图,数据库物理结构设计和系统安全性设计。第6章 系统的实现:根据系统的执行流程分析给出了系统结构流程图,并一一实现了各功能模块。最后是结论,主要写本论文的主要工作内容、创新点及所存在的缺点,和本次论文设计的心得体会。2系统开发环境及相关技术理论介绍2.1系统开发环境 开发平台:MyEcli

6、pse操作系统:WindowsXP数据库服务器:Oracle9i/10g使用技术:Java GUI、JDBC、Socket、Xml2.2 系统相关技术介绍2.2.1 C/S的简介传统的应用体系结构模式主要有两种:C/S(Client/Server)结构模式B/S(Browser/ Server)结构模式。C/S(Client/Server)结构,即大家熟知的客户机和服务器结构。它是软件系统体系结构,通过它可以充分利用两端硬件环境的优势,将任务合理分配到Client端和Server端来实现,降低了系统的通讯开销。目前大多数应用软件系统都是C/S形式的两层结构,由于现在的软件应用系统正在向分布式的

7、Web应用发展,Web和Client/Server应用都可以进行同样的业务处理,应用不同的模块共享逻辑组件;因此,内部的和外部的用户都可以访问新的和现有的应用系统,通过现有应用系统中的逻辑可以扩展出新的应用系统。这也就是目前应用系统的发展方向。C/S体系结构的优点:(1) 应用服务器运行数据负荷较轻。最简单的C/S体系结构的数据库应用由两部分组成,即客户应用程序和数据库服务器程序。二者可分别称为前台程序与后台程序。运行数据库服务器程序的机器,也称为应用服务器。一旦服务器程序被启动,就随时等待响应客户程序发来的请求;客户应用程序运行在用户自己的电脑上,对应于数据库服务器,可称为客户电脑,当需要对

8、数据库中的数据进行任何操作时,客户程序就自动地寻找服务器程序,并向其发出请求,服务器程序根据预定的规则作出应答,送回结果,应用服务器运行数据负荷较轻。(2) 数据的储存管理功能较为透明。在数据库应用中,数据的储存管理功能,是由服务器程序和客户应用程序分别独立进行的,前台应用可以违反的规则,并且通常把那些不同的(不管是已知还是未知的)运行数据,在服务器程序中不集中实现,例如访问者的权限,编号可以重复、必须有客户才能建立定单这样的规则。所有这些,对于工作在前台程序上的最终用户,是“透明”的,他们无须过问(通常也无法干涉)背后的过程,就可以完成自己的一切工作。在客户服务器架构的应用中,前台程序不是非

9、常“瘦小”,麻烦的事情都交给了服务器和网络11 。2.2.2 Socket的简介Socket 是一种软件形式的抽象,用于表达两台机器间一个连接的“终端”。在java中创建一个Socket,用它建立与其他机器的连接。从Socket得到的结果是一个InputStream以及OutputStream或Reader和Writer,以便将连接作为一个I/O流对象对待。这有两个基于数据流的套接字类:一个是ServerSocket,服务器用它“侦听”进入的连接;另一个是Socket,客户用他初始化一次连接。一旦客户(程序)申请建立一个套接字连接,ServerSocket就会返回(通过accept()方法)一

10、个对应的服务器端套接字,以便进行直接通信。可以利用getInputStream()以及getOutputStream()每个套接字产生对应的InputStream和OutputStream对象。这些数据流必须封装到缓冲区内。在牌号系统中采用了TCP/IP协议,这样实现了点对点通信等功能6。2.2.3 JAVA多线程技术(1)多线程多线程编程技术是Java语言的重要特点。多线程编程的含义是将程序任务分成几个并行的子任务。特别是在网络编程中,有很多功能是可以并发执行的。比如网络传输速度较慢、用户输入速度较慢,则可以用两个独立的线程去完成这两个功能,而不影响正常的显示或其它功能7。多线程是与单线程比

11、较而言的,普通的Windows采用单线程程序结构,其工作原理是:主程序有一个消息循环,不断从消息队列中读入消息来决定下一步所要干的事情,一般是针对一个函数,只有等这个函数执行完之后,主程序才能接收另外的消息来执行。比如子函数功能是在读一个网络数据,或读一个文件。只有等读完这个数据或文件才能接收下一个消息。在执行这个子函数过程中你什么也不能干。但往往读网络数据和等待用户输入有很多时间处于等待状态,多线程则可以解决这个问题。(2)线程创建的方法1)从一个自定义的类中创建一个对象,这个类扩展了Thread类。2)使用接口。在java中,用于创建线程的接口是Runable1。(3) 多线程在牌号系统中

12、的应用为了实现多用户同时在线服务采用了多线程机制,在实际应用中启动一个业务端产生一个线程。业务端分布在不同的机器上,同时进行业务处理。多线程解决了并发执行造成的死锁问题。并实现了多用户同时在线处理。3 系统分析3.1 功能需求分析牌号系统从界面上看主要实现两个方面的功能:(1)取号 客户按键反馈给服务器,然后服务器从数据库获得一个号反馈给顾客,这就完成了取号的过程,在顾客取号的可视化界面上顾客可以查询当前取号总人数,也可查询到已处理的人数,在顾客想放弃当前的号票时也可以对号票进行删除,顾客还可以在可视化界面看到自己的取票信息和需要等待的人数。(2)叫号 业务员按键反馈给服务器,服务器拿到取号时

13、存储在数据库中的数据,进行业务处理,在这个过程中业务员可以进行对顾客人数的查询,还可以对不需要进行处理的票号进行删除,也可以充当管理员的角色对数据库进行删除。业务员还可以查看顾客的取票情况,以及票号的业务的处理情况。3.2 可行性分析3.2.1 经济可行性该系统对操作环境没有太多要求,系统的开发不需要很强的经济支持,就其功能和给企事业单位带来的方便来说,是完全可行的。3.2.2 操作可行性目前计算机已经普及到所有的单位及大部分家庭,不仅在企事业单位,即使足不出户也能通过网络对单位和人员进行统一管理。本系统的使用者有三类人,第一是客户;第二是银行柜员;第三是银行管理人员,对于这三类人员使用本系统

14、都是可行的。本系统操作非常简单,不需要进行培训只需阅读说明书就可以进行操作。3.2.3 技术可行性本系统采用Java语言编写,它是一种简单的,面向对象的编程语言,具有多线程,分布式,跨平台等特性。它有自己的安全机制,并且移植性很好。在数据库方面采用了Oracle 10g,其灵活性,安全性和易用性为数据库编程提供了良好的条件。在数据持久化层,选用了JDBC,开发者掌握这些技术就可以具备开发此系统的能力,另外,此系统对开发环境的要求,都是大部分Java程序员进行软件开发使用的开发环境,所以,技术方面也是可行的。4 系统总体设计4.1 系统功能结构根据以上章节所做需求分析对系统进行功能设计,得如图4

15、-1所示的功能模块图。图4-1 系统功能模块图4.2 系统各子功能模块设计该系统功能从服务器端和客户端角度来说可分以下两大模块,具体每一个模块又分为几个小模块:(1) 服务器端1)取号功能:打开服务器与终端进行通信。由于把服务器设置到了用户的一端,所以在服务器端进行取号,然后把号存到数据库中。2)统计功能:数据访问层从数据库中查出所有取票人数和等待人数在服务器端界面显示。3)弃号功能:丢弃当前取票顾客的牌号。4)查询功能:顾客可以从此处了解到所有顾客的取票情况及被处理状况。5)通知功能:从服务器端获得牌号,通过服务器端通知*用户到*工作台办理业务。(2) 客户端同一时刻允许多个工作台办理业务。

16、用户通过在服务器端的通知功能知道去哪个工作台办理业务,工作台显示正在为哪个号码的用户办理业务。1)登录功能:业务员从此处登录,业务员的姓名,密码是事先录入数据库的。2) 叫号功能:业务员点击处理按钮触发事件发送信息给服务器,服务器从数据库拿到号票,返回给业务员进行业务处理。3) 统计功能:数据访问层从数据库查询总取票人数和查询未处理人数在业务端显示。4)移除功能:业务员可以移除数据库中所有的记录,也可以选择移除某条记录。5)查询功能:业务员可以查询所有顾客的取票情况及业务员对票号的处理情况,这块主要为了能够及时掌握顾客取票信息及业务员处理情况。4.3 系统总体及各实体用例图设计4.3.1 系统

17、体系结构设计图4-2 系统体系结构4.3.2 系统逻辑模型图4-3 系统逻辑模型4.3.3 业务员用例图图4-4 业务员用例图4.3.4 客户用例图图4-5 客户用列图5 系统详细设计5.1 各实体及其属性这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。根据上面的设计规划出的实体有顾客信息实体、业务端信息实体、业务员信息实体、自动出号信息实体。各个实体及其关系描述如下:图5-1 业务端信息实体及其属性图图5-2 业务员信息实体图图5-3 顾客信息实体图图5-4 自动出号信息实体图5.2系统E-R图图5-5 实体之间关系E-R

18、图5.3数据库物理结构设计在上面的实体以及实体之间关系的基础上,形成各个表格之间的关系。牌号系统数据库中的各个表的设计结果如下表所示(每个表格表示数据库中的一个表)。(1) 顾客信息表customer_tbl表customer_tbl用来保存顾客取票信息,结构如表5-1所示。表5-1 customer_tbl的结构字段名字段类型中文描述备注非空主键IdNUMBER唯一标识nextId顾客牌号UniquetakeDateDate取票日期type服务类型1:vip 2:普通flag处理标记(2) 业务端信息表work_tbl表work_tbl用来保存业务端信息,结构如表5-2所示。表5-2 wor

19、k_tbl的结构processDate处理日期workId服务台编号(3) 业务员信息表workmen_tbl表workmen_tbl用来表示业务员信息,结构如表5-3所示。表5-3 workmen_tbl的结构namevarchar2(20)用户名password密码(4) 自动出号信息srt_tbl表srt_tbl用来产生唯一的号票信息,表结构如表5-4所示表5-4 srt_tbl的结构NUMBER(20)tyepNUMBER(7)5.4系统安全性设计(1)数据因素:系统数据库中包含多个表信息,所以在系统与数据库的连接上,直接封装到代码中,由于java的安全机制比较好,所以数据信息在存储和

20、传递过程中不可见。(2)硬件及物理因素:系统硬件及安全环境安全可靠,包括机房设施、计算机主体、存储系统、数据通信设备设施等方面是安全的。(3)存储安全:通过oracle的数据库安全设置,连接数据库需要用户名和密码,保证了数据库的安全性3。6系统实现6.1系统结构流程图6.1.1 服务端根据系统的执行流程分析,可得服务器系统结构流程如图6-1所示。图6-1 服务器系统结构流程图6.1.2 客户端根据系统的执行流程分析,可得客户端系统结构流程如图6-2所示。图6-2 客户端系统结构流程图6.2 各功能模块的实现6.2.1 系统主界面的实现(1)服务器主界面的实现用户在取号的时候必须先启动服务器,才

21、能进行取号。服务器端主界面如图 6-3所示。图6-3 服务器端主界面服务器端主界面采用菜单式风格,用户可以根据需求进行取号,查询,删除等功能。界面主要采用了Grid Layout,Flow Layout,BorderLayout等布局管理器来对界面进行布局的。(2)客户端界面的实现客户端是为业务员设计的以下是客户端登录界面如图6-4所示。图6-4 业务员登录界面客户端业务处理界面如图6-5所示。图 6-5 业务处理界面客户端业务处理界面也采用了菜单式风格,采用了布局管理器对界面进行布局管理,其中在显示这一项里采用了JTable设计的设计界面如下图6-6所示。图6-6 员工处理情况界面部分实现代

22、码如下:界面信息的显示的实现,在这里调用了Dao层的方法获得需要的信息 String colHeads = 服务台编号, 服务类型处理时间顾客票号 ; IWorkDao dao = (IWorkDao) BeanFactory.getPojo(workDao); List list = dao.loadAllWork(); Object data = new Objectlist.size()4; for (int i = 0; i list.size(); i+) datai0 = list.get(i).getWorkId(); datai1 = list.get(i).getType()

23、; if(list.get(i).getType()=1) datai1=vip用户; else普通用户 datai2 = list.get(i).getProcessDate(); datai3 = list.get(i).getNextId(); JTable table = new JTable(data, colHeads);6.2.2 服务器端取号的实现在整个系统中取号是一个至关重要的环节,也是设计它的目的所在。它的实现与其他模块紧密相连,它在Server端实现的,取号分为两个服务类型:vip业务和普通业务。首先在数据库里建立srt_tbl这张表,它用来存储自动生成的客户牌号。它里面

24、设置两个字段,一个是nextId,一个是type类型。nextId是用来标识顾客的牌号的,而type则是用来表示顾客所要选取的服务类型,vip业务和普通业务。当点击其中的一个业务时它就会产生一个牌号,这个牌号是通过在dao层的一个方法实现的,dao层通过JDBC连接数据库实现数据的持久化。在取完号的同时调用Dao层的saveID()方法把这个信息保存在cuntomer_tbl表中。(1) vip会员取号如图6-7所示。图6-7 vip用户取号界面实现代码如下:1) 产生号票 num = dao.nextID(1); Customer customer = new Customer(num, 1);2) 把顾客取到的号票存储到数据库中,调用find

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1