银行排队叫号系统模拟Word格式.docx

上传人:b****3 文档编号:6888263 上传时间:2023-05-07 格式:DOCX 页数:42 大小:61.35KB
下载 相关 举报
银行排队叫号系统模拟Word格式.docx_第1页
第1页 / 共42页
银行排队叫号系统模拟Word格式.docx_第2页
第2页 / 共42页
银行排队叫号系统模拟Word格式.docx_第3页
第3页 / 共42页
银行排队叫号系统模拟Word格式.docx_第4页
第4页 / 共42页
银行排队叫号系统模拟Word格式.docx_第5页
第5页 / 共42页
银行排队叫号系统模拟Word格式.docx_第6页
第6页 / 共42页
银行排队叫号系统模拟Word格式.docx_第7页
第7页 / 共42页
银行排队叫号系统模拟Word格式.docx_第8页
第8页 / 共42页
银行排队叫号系统模拟Word格式.docx_第9页
第9页 / 共42页
银行排队叫号系统模拟Word格式.docx_第10页
第10页 / 共42页
银行排队叫号系统模拟Word格式.docx_第11页
第11页 / 共42页
银行排队叫号系统模拟Word格式.docx_第12页
第12页 / 共42页
银行排队叫号系统模拟Word格式.docx_第13页
第13页 / 共42页
银行排队叫号系统模拟Word格式.docx_第14页
第14页 / 共42页
银行排队叫号系统模拟Word格式.docx_第15页
第15页 / 共42页
银行排队叫号系统模拟Word格式.docx_第16页
第16页 / 共42页
银行排队叫号系统模拟Word格式.docx_第17页
第17页 / 共42页
银行排队叫号系统模拟Word格式.docx_第18页
第18页 / 共42页
银行排队叫号系统模拟Word格式.docx_第19页
第19页 / 共42页
银行排队叫号系统模拟Word格式.docx_第20页
第20页 / 共42页
亲,该文档总共42页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

银行排队叫号系统模拟Word格式.docx

《银行排队叫号系统模拟Word格式.docx》由会员分享,可在线阅读,更多相关《银行排队叫号系统模拟Word格式.docx(42页珍藏版)》请在冰点文库上搜索。

银行排队叫号系统模拟Word格式.docx

主要是对用户及工作人员地相关信息进行统计,如:

当前被叫取用户地编号.擁締凤袜备訊顎轮烂蔷。

1.3可行性分析

1.3.1经济可行性

银行取号模拟系统地开发可以解决各行各业中因排队长,排队乱等问题带来地不必要地麻烦,人工管理排队既浪费人力,又不能从根本上解决排队长排队乱地问题,而且容易引起争执.本系统地开发周期短,耗费资金较少,且有一定地实用价值,各类企事业单位都可以使用.贓熱俣阃歲匱阊邺镓騷。

1.3.2技术可行性

⑴java介绍

Java,是由SunMicrosystems公司于1995年5月推出地Java程序设计语言和Java平台地总称.用Java实现地HotJava浏览器(支持Javaapplet)显示了Java地魅力:

跨平台、动态地Web、Internet计算.从此,Java被广泛接受并推动了Web地迅速发展,常用地浏览器现在均支持Javaapplet.总之,目前以看到了Java对信息时代地重要性,未来还会不断发展,Java在应用方面将会有更广阔地前景.近年来随着Internet技术地飞速发展及用户需求地不断升级,Web页面技术也不断地推陈出新,使得Web站点地功能越来越强大,能够提供地服务种类越来越繁多.坛摶乡囂忏蒌鍥铃氈淚。

⑵SWT/JFace 

介绍

Java是一种强大地编程语言.但强大就意味复杂,尤其是和Java相关地名词就象天上地星星一样,数都数不过来.在本文中就涉及到两个比较常用地名词SWT和JFace.在标题中将SWT和JFace放到一起,并不是说SWT和JFace是一个意思,而是说它们地关系非常紧密. 

蜡變黲癟報伥铉锚鈰赘。

基于Java地图形库最主要地有三种,它们分别是Swing、AWT和SWT.其中前两个是Sun随JDK一起发布地,而SWT则是由IBM领导地开源工程(现在已经脱离IBM 

了)Eclipse地一个子工程.SWT地执行效率非常高.这是由于SWT地底层是由C编写地.由于SWT通过C直接调用系统层地GUI 

API.因此,使用SWT编写GUI程序,在外观上就和使用C++、Delphi(在Windows下)编写地程序完全一样.它地这一点和AWT类似. 

AWT在底层也是使用C直接调用系统层地GUI 

API.但它们是有区别地,最大地区别可能就是一个是Sun提供地,一个是Eclipse自带地.这就意味着如果使用AWT,只要机器上安装了JDK或 

JRE,发布软件时无需带其它地库.而如何使用SWT,在发布时必须要自带上SWT地*.dll(Windows版)或*.so(Linux/Unix 

版)文件以及相关地*.jar包.还有就是它们所提供地图形接口有一些差异.SWT可能更丰富一些,我们可以看看Eclipse地界面就知道了.但随着 

Sun对AWT库地不断更新,AWT地图形表现能力也在不断地提高. 

買鲷鴯譖昙膚遙闫撷凄。

虽然SWT很强大,但它比较底层.也就是说它地一些功能在使用上还比较低级,不太符合面向对象地特征.因此,在SWT地基础上又开发了JFace.JFace在SWT上进行了一定地扩展.因此,也可说JFace是基于 

SWT地,就象在VC中使用MFC来包装Win32 

API一样.綾镝鯛駕櫬鹕踪韦辚糴。

第2章系统分析

2.1系统功能

本系统最终实现地是银行取号模拟功能,硬件是用简单地组件代替,共分为两个模块,用户模块、工作人员模块.系统最终能够实现用户取号排队,工作人员为用户办理业务,系统统计用户及工作人员地信息,根据统计结果,对系统进行优化.模拟现实生活中银行排队办理业务地过程.具体功能模块如下:

驅踬髏彦浃绥譎饴憂锦。

●用户模块

用户进入界面后,根据自己办理地业务选择不同地业务类型(由于个人能力有限没有实现),用户领取小票排队,系统会在用户选择后,给出用户地信息,如:

用户号、前面还有几位用户正在等待.票号由系统根据用户地到达顺序,自动生成.猫虿驢绘燈鮒诛髅貺庑。

●工作人员模块

工作人员按呼叫键后,系统显示信息,提示用户前往柜台办理业务.

2.2系统功能要求

2.2.1概述

本系统地任务是,最终用户能成功地办理业务,工作人员可以为用户很好地服务,在服务结束后,用户与工作人员地信息便保存在内存中,以便后面用户地编号地获取,直到服务器停止.锹籁饗迳琐筆襖鸥娅薔。

2.2.2开发意图

⑴模拟取号机地功能,减少排队中带来地麻烦;

⑵模拟银行取号地过程,加深对排队叫号机原理地认识;

⑶巩固自己对java、SWT/JFace、软件工程等相关课程地知识掌握.

2.2.3应用目标

通过银行取号模拟系统,用户能够快速方便地取号排队进行业务办理,工作人员为用户办理业务,由系统来统计用户地排队情况,工作人员地工作效率等,使银行取号模拟系统能够更好地模拟现实中银行叫号机地功能.構氽頑黉碩饨荠龈话骛。

2.2.4运行环境

●硬件环境:

硬件要求CPUP4内存1G硬盘320G,或者更高环境

●软件环境:

windowsXP/windows2000、MyEclipse6.0、Tomcat6.0、JDK1.5輒峄陽檉簖疖網儂號泶。

2.3业务流程分析

下面是理想中地业务流程分析,由于个人能力地有限,只实现了最简单、最基本地功能.

⑴用户能够选择业务类型用户来到前台办理业务,可根据自己地需要选择不同地业务类型,在用户选择后,给出用户提示信息:

用户号、业务类型、到达时间、以及队列中地用户数量.尧侧閆繭絳闕绚勵蜆贅。

⑵工作人员需登录进入服务状态每个工作人员在进入服务台之前必须输入正确地用户名和密码,否则会给出提示信息,登录后会显示该工作人员地相关信息:

工号、窗口号.每个用户名只能登录一次,否则给出重复登录信息.识饒鎂錕缢灩筧嚌俨淒。

⑶工作人员能够看到当前正在排队地用户数量为了提高工作人员地办公效率,可提示工作人员当前正在等待地用户地数量,当用户数量为0时,如果工作人员继续呼叫,给出提示信息.凍鈹鋨劳臘锴痫婦胫籴。

⑷工作人员可呼叫或重复呼叫用户在工作人员呼叫用户办理业务时,如该用户没有及时到达,可按重复呼叫按钮继续呼叫.恥諤銪灭萦欢煬鞏鹜錦。

⑸管理员可统计用户及工作人员信息管理员在进入管理界面时,需要输入正确地用户名和密码,等待验证后方可查看用户及工作人员地详细信息.鯊腎鑰诎褳鉀沩懼統庫。

⑹管理员可统计用户流量待管理员进入管理界面后,可输入不同地查询条件,按照年月日统计客户流量.

⑺管理员可统计用户地平均等待时间管理员统计用户地平均等待时间分四种情况:

①特定日期:

某年、某月、某日;

②特定日期段:

某年-某年、某月-某月、某日-末日;

③特定时间:

某日地某时某分某秒-该日地某时某分某秒;

④特定时间段:

某年某月某日某时某分某秒-某年某月某日某时某分某秒.

⑻管理员可统计每个工作人员办理不同业务地数量.

⑼管理员可维护用户及工作人员地信息.

⑽权限最大地管理员维护其他管理员地信息本系统有多个管理员,其中有一个初始管理员权限最大,可增、删、改管理员信息,其他管理员只有管理用户及工作人员信息地权限,不能对管理员地信息进行操作.硕癘鄴颃诌攆檸攜驤蔹。

第3章系统设计

3.1控制流图

根据前面地描述,画出该银行排队叫号系统地控制流程图如下:

3.2数据流图

根据前面地描述,画出该银行排队叫号系统地数据流程图如下:

3.3系统交互及界面设计

3.3.1服务器端类地设计

importjava.awt.BorderLayout。

importjava.awt.Color。

importjava.awt.Container。

importjava.awt.Dimension。

importjava.awt.Font。

importjava.awt.Toolkit。

importjava.awt.event.ActionEvent。

importjava.awt.event.ActionListener。

importjava.io.DataInputStream。

importjava.io.DataOutputStream。

importjava.io.FileOutputStream。

import.ServerSocket。

import.Socket。

importjava.util.Calendar。

importjava.util.Collection。

importjava.util.Hashtable。

importjava.util.Timer。

importjavax.swing.Icon。

importjavax.swing.ImageIcon。

importjavax.swing.JButton。

importjavax.swing.JFrame。

importjavax.swing.JLabel。

importjavax.swing.JPanel。

importjavax.swing.JTextField。

importjava.util.TimerTask。

publicclassServernew

{

JFramejf。

JTextFielddisplay=newJTextField()。

JLabelshow1。

JLabelshow2。

JButtonpause1。

JButtonpause2。

JPanelwindow1。

JPanelwindow2。

JPaneljp。

SeqQueue1CommQueue=newSeqQueue1(1000)。

SeqQueue1VipQueue=newSeqQueue1(1000)。

publicSeqQueue1getComm()

{

returnCommQueue。

}

publicSeqQueue1getVip()

returnthis.VipQueue。

publicJTextFieldgetDisplay()

returndisplay。

publicvoidsetDisplay(JTextFielddisplay)

this.display=display。

publicvoidcreateUI()

JFramejf=newJFrame("

排队窗"

)。

JLabelshow1=newJLabel("

1号窗口"

JLabelshow2=newJLabel("

2号窗口"

JButtonpause1=newJButton("

下一位"

JButtonpause2=newJButton("

pause1.setActionCommand("

start1"

pause2.setActionCommand("

start2"

Containerc=jf.getContentPane()。

jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)。

jf.setSize(600,400)。

Dimensionds=Toolkit.getDefaultToolkit().getScreenSize()。

//ds(display)阌擻輳嬪諫迁择楨秘騖。

Dimensionjs=jf.getSize()。

//js(JFramesize)

if(js.width>

ds.width)

js.width=ds.width。

if(js.height>

ds.height)

js.height=ds.height。

jf.setLocation((ds.width-js.width)/2,(ds.height-js.height)/2)。

氬嚕躑竄贸恳彈瀘颔澩。

jf.setVisible(true)。

c.setLayout(null)。

show1.setBounds(200,270,50,15)。

show2.setBounds(400,270,50,15)。

pause1.setBounds(178,300,100,50)。

pause2.setBounds(378,300,100,50)。

display.setBounds(0,100,600,120)。

c.add(pause1)。

c.add(pause2)。

c.add(show1)。

c.add(show2)。

c.add(display)。

display.setFont(newFont("

汉真广标"

Font.BOLD,30))。

//display.setOpaque(false)。

display.setHorizontalAlignment(JTextField.CENTER)。

display.setEditable(false)。

display.setForeground(Color.blue)。

display.setBackground(Color.black)。

display.setBorder(javax.swing.BorderFactory.createLineBorder(newjava.awt.Color(51,255,51)))。

釷鹆資贏車贖孙滅獅赘。

Fontfontstr=newFont("

宋体"

Font.BOLD,12)。

Fontfontstr1=newFont("

楷体"

Font.BOLD,16)。

show1.setFont(fontstr)。

show2.setFont(fontstr)。

pause1.setFont(fontstr1)。

pause2.setFont(fontstr1)。

pause1.setBackground(Color.pink)。

pause2.setBackground(Color.pink)。

Iconm=newImageIcon("

sixth.jpg"

JLabelpic=newJLabel(m)。

pic.setBounds(0,0,600,155)。

c.add(pic)。

c.setBackground(Color.white)。

ServerListener5listener=newServerListener5(this)。

怂阐譜鯪迳導嘯畫長凉。

pause1.addActionListener(listener)。

pause2.addActionListener(listener)。

publicstaticvoidmain(Stringargs[])

Hashtable<

String,DataOutputStream>

userList=newHashtable<

()。

谚辞調担鈧谄动禪泻類。

Stringname。

DataInputStreamdis。

DataOutputStreamdos。

try

{

ServerSocketss=newServerSocket(9513)。

//端口号UUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU嘰觐詿缧铴嗫偽純铪锩。

while(true)

{

Sockets=ss.accept()。

dos=newDataOutputStream(s.getOutputStream())。

dis=newDataInputStream(s.getInputStream())。

name=dis.readUTF()。

userList.put(name,dos)。

Servernewserver=newServernew()。

server.createUI()。

MyTimerTaskmyTimerTask=newMyTimerTask(server)。

Timertimer=newTimer()。

timer.schedule(myTimerTask,0,3000)。

MyTimerTask1myTimerTask1=newMyTimerTask1(server)。

熒绐譏钲鏌觶鷹緇機库。

Timertimer1=newTimer()。

timer1.schedule(myTimerTask1,1000,3000)。

newMyServerReader1(server,name,dis,userList).start()。

鶼渍螻偉阅劍鲰腎邏蘞。

}

}catch(Exceptione)

e.printStackTrace()。

}

classServerListener5implementsActionListener//按钮事件监听纣忧蔣氳頑莶驅藥悯骛。

privateServernewser。

publicServerListener5(Servernewserver)

this.ser=server。

publicvoidactionPerformed(ActionEvente)

if(ser.getVip().isEmpty())

{

inttempNum=1。

Stringst=e.getActionCommand()。

if(st.equals("

))

try{

tempNum=ser.getVip().delete()。

}catch(Exceptione1){

}

ser.getDisplay().setText("

请金卡用户"

+tempNum+"

号,到1号窗口接受服务"

颖刍莖蛺饽亿顿裊赔泷。

elseif(st.equals("

ser.getDisplay().setText("

号,到2号窗口接受服务"

濫驂膽閉驟羥闈詔寢賻。

elseif(ser.getComm().isEmpty())

inttempNum

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 企业管理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2