抽奖程序需求分析抽奖程序功能描述抽奖程序在联欢会由抽奖.docx
- 文档编号:29097344
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:17
- 大小:254.14KB
抽奖程序需求分析抽奖程序功能描述抽奖程序在联欢会由抽奖.docx
《抽奖程序需求分析抽奖程序功能描述抽奖程序在联欢会由抽奖.docx》由会员分享,可在线阅读,更多相关《抽奖程序需求分析抽奖程序功能描述抽奖程序在联欢会由抽奖.docx(17页珍藏版)》请在冰豆网上搜索。
抽奖程序需求分析抽奖程序功能描述抽奖程序在联欢会由抽奖
需求分析
3.1.抽奖程序功能描述
抽奖程序在联欢会由抽奖活动主持人输入奖票号码范围,并指定获奖等级后,在给定的号码范围内产生一个随机号码,作为该获奖等级的一个中奖号码。
如果产生的中奖号码与已产生的中奖号码重复,则给出明确的提示,放弃这个号码。
可随时显示或查询抽奖结果。
程序功能:
⑴抽奖工作人员可以输入不同的抽奖号范围,选择不同的中奖等级。
⑵本抽奖程序为随机抽取中奖号,如果产生了重复的中奖号将丢弃。
⑶产生的中奖号和对应的中奖等级记录在一个数据库文件中。
⑷可随时显示中奖记录。
⑸输入一个有效的奖票号码,能查询该奖票是否中奖。
3.2.抽奖程序用例模型
抽奖程序用例模型
3.3.抽奖程序静态模型和动态模型
3.3.1.静态模型
抽奖程序初步的类图如图所示,各类的功能说明如下。
GUI(图形用户界面):
识别用户的命令,接收用户的输入,显示程序的结果。
Recorder(记录员):
记录中奖信息。
Chooser(抽奖者):
抽出中奖号码。
Printing(显示对象):
显示中奖信息。
Searching(查询对象):
为奖票持有者查询中奖情况。
Checking(公证人):
验证奖票的有效性。
还有Ticket(奖票)、Records(中奖信息)等。
系统构件:
程序只有一个模块,无须构件图。
抽奖程序中有一个模块,安装在一台个人电脑上,没有必要专画一张部署图。
抽奖程序初步的类图
3.3.2.动态模型
抽奖程序初步的活动图及其泳道图分别如图如图所示
a.抽出中奖号码的活动 b.显示中奖信息的活动 c.查询中奖情况的活动
抽奖程序初步的活动图
抽出中奖号码活动的泳道图
显示中奖信息活动的泳道图
查询中奖情况活动的泳道图
3.4.运行环境和用户
⑴设备需求:
电脑(PIIICPU,256MB内存)。
⑵操作系统:
WindowsXP。
无须其他支撑软件。
⑶用户界面:
Windows风格界面。
⑷使用者可以是抽奖的操作人员、兑奖人员或奖票持有者。
3.5.条件与限制
⑴程序的中奖号码逐个产生,产生的顺序由操作者人工控制,这是用户的需求。
⑵抽奖的时间、地点与兑奖的时间、地点不同,所以要将抽奖结果保存在硬盘中。
⑶本程序中限于内部使用,所以对数据库的操作比较简单。
3.5.功能需求
3.5.1.能够输入抽奖号码
3.5.2.能随机产生中奖号码
3.5.3.能显示中奖信息
3.5.4.能查询中奖者的信息
3.6.性能需求
3.6.1.时间要求
用户单击开始抽奖后,程序1秒内调出“正在产生中奖号码的界面”,显示翻滚的随机奖票号码。
用户单击“选定中奖号码”到获取中奖号码的响应时间为1秒。
显示抽奖的记录,查询中奖记录,弹出时间在2秒之内。
3.6.2.数据精度要求
本程序全部为整数。
中奖等级有4等级。
最小奖票号为1,最大奖票号为99999999
3.7.属性需求
3.7.1.正确性:
本程序要求不会产生最小和最大号码之外的数字。
3.7.2.可靠性:
一般条件下,不会死机。
3.7.3.效率:
各个操作在1——20秒之内完成。
3.7.4.完整性:
如果出现意外情况(如掉电)要求数据能够保存下来。
3.7.5.易使用性:
界面符合Windows风格,能对照画面提示直接操作。
3.7.6.可维护性:
如果有错误时,能快速修复。
3.7.7.可测试性:
设计时尽可能减少测试各项功能的工作量。
3.7.8.复用性:
尽量选用已有的类来节省编写时间,设计尽量模块化,方便以后复用。
3.7.9.安全保密性;因为本程序主要是在娱乐活动中用,没有特别的安全性要求。
3.7.10.可理理解性:
要求程序中的按钮、提示信息直观,一看就懂。
3.7.11.可移植性:
要求能在PC机,手提电脑上通用。
3.7.12.互联性:
没有互联要求。
3.8.数据需求
3.8.1.静态数据
最大奖票号、最小奖票号、奖票。
3.8.2.动态数据
中奖记录、中奖奖票号、中奖等级。
3.8.3.数据文件描述
中奖记录;用数据库来保存中奖记录的中奖奖票号和中奖记录。
3.8.4.数据字典
⑴奖票=1{数字}5
⑵中奖等级=1{数字}2
⑶最大奖票号=1{数字}5
⑷最小奖票号=1{数字}5
⑸中奖奖票号=1{数字}5
⑹中奖记录=1{中奖奖票号 中奖等级}n
四.系统分析与设计
4.1.根据前面的需求分析,开发初步的类图
先从谈话中筛选名词,去掉重复的或者应该作为属性的名词,得到如下的可能成为系统中类的名词:
图形用户界面(GUI),记录员(Recorder),抽奖者(Chooser),奖票(Ticket),中奖信息(Records),公正人(Checking),查询员(Searching),显示信息(Printing),抽奖规则(Rule)。
抽奖程序初步的类图如图所示
4.2.分析类的层次,填充类的信息
4.2.1.分析出类的属性,方法以及类的继承关系,找出哪些类要自己开发,哪些类可以继承或购买,并决定从何处继承。
4.2.2.GUI类可以由JAVA产生。
Ticket类只有一个属性,即票号(Number)。
Records类是Ticket类的继承类,增加一个属性,即中奖等级(Lever);按照数据与操作封装在一起的原则,给Records类增加一个写入中奖记录的方法(AddRecord)和一个打印中奖记录的方法(Printing),以及一个查询中奖情况的方法(Searching)。
抽奖程序细化的类图如下
4.3.分析系统用例,得到系统的构件
4.3.1.抽奖程序的用例模型增加到4个用例,抽出中奖号码用例包含查询中奖信息用例,显示中奖记录用例包含显示中奖记录。
下面对各个用例进行深入分析,得到各个用例的顺序图。
抽出一个中奖号码用例的顺序图
查询中奖情况用例的顺序列图
打印中奖记录用例的顺序列图
4.3.2.系统的数据构件。
需求分析阶段已得到系统中有一个存放中奖信息的数据库文件。
4.3.3.系统的软件构件。
因为这个程序很简单,不用经过复杂的架构设计。
系统中所有构件都驻留在同一个目录下,可直接给出构件及主要算法。
前面顺序图已经清楚地表明系统中各个对象间的交互,下面具体设计每个类的方法。
利用随机函数,产生一个介于最大奖票号码和最小奖票号码范围内的一个随机数据,作为预备中奖号码,查询中奖情况,如果该号码重复中奖,显示重复号码处理对话框有主持人现场决定该号码有效或无效。
如选择有效,则增加一条记录;如选择无效,则返回等待中奖号码产生界面。
4.3.4.界面设计。
系统显然要包括一组用户界面,在需求分析中初步确定的界面包是可行的,现对它进行细化和微小的调整,得到如图所示界面设计图。
抽奖程序界面流(a)
抽奖程序界面流(b)
4.4.设计测试用例
设计测试用例是按照需求所确定的用例模型,设计一组输入数据,一组预期的输出数据,供测试阶段的测试程序的功能是否满足拥护需求。
测试用例1:
MaxNumber=5,Minnumber=1,抽出10个号码,不允许重复、测试显示中奖信息、测试查询中奖情况。
测试用例2:
MaxNumber=1000,Minnumber=1,五个中奖等级,特等奖、一等奖、二等奖、,三等奖、没有其他的奖,不许重复。
抽出20个中奖人数,测试抽奖情况与实际是否相符,测试显示功能,测试查询功能。
系统的分析与设计工作,不再获得更进一步的信息,这时可暂时停止这个工作。
从这个简单的分析与设计实例中可以看出,在统一软件的开发过程中,需求捕获、分析与设计三个核心工作流相互间的联系是无缝的。
从初级阶段到细化阶段,系统分析人员和设计人员对待开发系统的了解越来越深入,需求捕获、分析与设计等工作流也经过了多次迭代。
五.系统实现
5.1.用户界面的实现
抽奖程序是实现对用户应用的一个简单程序,在此程序中将有5个主要Java文件分别创建程序界面。
5.2.主类的界面:
Chou
5.2.1.此界面中可以选择抽奖的等级及要输入抽奖的范围,若最小奖票号小于最大奖票号则会提示你重新输入,若有非法数字输入也会弹出警告的对话框。
5.2.2.主方法中包含产生随机数的方法(Math.random())并且能产生不断滚动的数字。
此界面还有查询、显示全部信息的功能。
5.3.选定号码的类:
Xuan
此类主要是选定一个号码,并且选中的号码与数据库已存在的数据进行比较。
若有已经抽过奖的号码,则弹出一个对话框,放弃这个数字。
5.4.中奖界面的类:
Zhong
若选中的号码在数据库中不存在,则会在此界面中显出中奖号码与中奖等级。
此界面还有选择下一次抽等级的功能。
5.5.查询界面的类:
ChaXong
此类主要是为用户查询中奖信息提供方便,通过连接数据库完成此功能。
5.6.显示界面的类:
Xian
此类负责显示数据库中的全部信息,并且有返回主界面的功能。
5.7.主类的部分代码:
publicvoidactionPerformed(ActionEvente){
t1.setText(ch.getSelectedItem());
deng=t1.getText();
if(e.getSource().equals(name5)){
try{
flags1=true;
min=Integer.parseInt(t2.getText());
max=Integer.parseInt(t3.getText());
}catch(NumberFormatExceptione1){//输入非数字时的异常处理
Stringtitle="警告";
Stringmsg="输入非法字符或没有字符";
newCuo(ob1,title,msg);
}
}
if(flags1==true){
if(e.getSource().equals(name5)){
if(max<=min){//最大奖票号小于最小奖票号时的处理
Stringtitle="警告";
Stringmsg="范围有误";
newFan(ob1,title,msg);}
else{
this.dispose();
newXuan("幸运等你拿");}
}
}
if(e.getSource().equals(name6)){
this.dispose();
newXian("幸运等你拿");
}
deng=t1.getText();
try{Xuan.t1.setText(deng);
}catch(Exceptione2){
}
if(e.getSource().equals(name7)){
this.dispose();
newChaXong("查询结果");
}
}
publicstaticvoidmain(String[]args){
newSplashWindow();//欢迎界面
StringID=null;
Chouob=newChou("幸运等你拿");
ob1=ob;
while(flags){//产生随机数
longresult1=0;
longresult=0;
result=(long)(max*Math.random()+0.5);
while(result result=(long)(max*Math.random()+0.5); } Stringssh=String.valueOf(result); try{Xuan.t2.setText(ssh); }catch(Exceptione){ } try{ Thread.sleep(100); }catch(Exceptione2){} } 连接数据库的部分代码: try{ Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); }catch(ClassNotFoundExceptionce){ System.out.println(ce); } try{ connect=DriverManager.getConnection("jdbc: odbc: Test"); st=connect.createStatement(); rset=st.executeQuery("Select*fromtab"); while(rset.next()){ StringID=rset.getString("中奖等级"); Stringname=rset.getString("中奖号码"); p1.setBackground(newColor(211,203,203)); p1.setForeground(newColor(255,0,0)); p1.add(newLabel(ID,Label.CENTER)); p1.add(newLabel(name,Label.CENTER)); } }catch(SQLExceptionse){ }finally{ try{ if(rset! =null) rset.close(); if(st! =null) st.close(); if(connect! =null) connect.close(); }catch(SQLExceptionse){
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽奖 程序 需求 分析 功能 描述 联欢会