银行排队叫号系统模拟Word文档下载推荐.docx
- 文档编号:17074281
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:33
- 大小:60.37KB
银行排队叫号系统模拟Word文档下载推荐.docx
《银行排队叫号系统模拟Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《银行排队叫号系统模拟Word文档下载推荐.docx(33页珍藏版)》请在冰豆网上搜索。
支持多道手续的自动转移。
支持多套派号机及打印机以满足业务大厅有多个出入口的自然环境。
目前,排队机在现代社会的各行各业都有应用,如:
银行、保险等金融行业营业大厅,移动、联通、电信等通信行业营业大厅,医院、工商、税务、邮政、机场、餐饮等营业大厅。
为用户带来了极大的方便。
1.2设计目标及内容
银行取号机(叫号机)到处可见,也就是我们在生活中经常看到的排队机,它给用户带来了很大的方便。
银行取号模拟系统,模拟了取号排队的功能,至于完全的模拟需要硬件与软件的结合。
本模拟系统的最终目标是:
实现叫号机的基本功能,即用户到达后可以叫号,工作人员登录进入系统后可以对用户进行办理业务,管理员对用户及工作人员的相关信息进行统计。
取号模拟系统是根据叫号机的原理,实现叫号机软件方面的功能,模拟从用户到达到办理完业务离开的整个流程,其中包括了工作人员的工作流程。
主要研究内容分两个模块,首先,用户模块:
研究用户排队的统计情况。
其次,工作人员模块:
工作人员管理模块:
主要是对用户及工作人员的相关信息进行统计,如:
当前被叫取用户的编号。
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
但它们是有区别的,最大的区别可能就是一个是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=-1;
tempNum=ser.getComm().delete();
}catch(Exceptione1)
{
无人排队"
}
ser.getDisplay().setText("
请普通用户"
tem
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 银行 排队 叫号 系统 模拟