您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 人事档案/员工关系 > JAVA彩票系统需求分析及功能实现
JAVA彩票系统需求分析及功能实现系统分析根据游戏玩法及系统要求,分析出系统中有哪些类,每个类中应该有哪些属性和方法。1.主函数类RunAt:调用其它的类来实现游戏属性:无方法:无2.双色球类ShuangSeQiu:代表双色球,包含双色球对象的相关功能3.22选5类Five_Twentytwo:代表22选5,提供对22选5对象的相关功能4.彩票管理机构,实现彩票的销售,摇奖,兑奖,机选号码等:(一)双色球的管理(1)接受用户的彩票购买:允许用户输入一组号码,购买彩票;也可以直接机选号码(2)摇奖:产生中奖号码,并打印(3)兑奖:显示你的中奖结果(二)22选5的管理(同上)5.其他的类(1)菜单显示类(2)排序工具类:实现号码的排序(3)转换工具类:实现将整型的号码数组转换成对应的字符串的形式,便于输出和处理三、系统设计1.双色球类设计ShuangseQiu应该提供的功能有:(1)检查单个号码的合法性,01~16,01~33(2)检查用户输入的6个号码的合法性.(是不是6个号码,每个号码是否合法,有没有重复的等等)(3)随机产生中奖号码,产生的号码不能重复(3)兑奖功能,比较用户购买的号码和中奖号码,并显示中奖结果类的属性类的方法2.22选5类的设计3.彩票管理机构类设计Process对于双色球应该提供的功能有:(1)接受输入的6个红球号(2)接受输入的1个蓝球号(3)机选号码(4)摇奖,即产生中奖号码(5)兑奖,即打印中奖信息对于22选5应该提供的功能:与上类似,不提供接受输入篮球号的功能,其他均相同4.菜单类设计(略)5.工具类的设计(1)数组排序类设计(2)整型数组转换成字符串的类设计双色球类:packagecom.mstanford.lotery_system.lottery;importcom.mstanford.lotery_system.unil.Order;publicclassShuangSeQiu{staticfinalStringSTART=01;//彩票最小号staticfinalStringLEND=16;//篮球最大号staticfinalStringHEND=33;//红球最大号inti;//数组下表,要在不同的方法中使用,所以定义成全局的intr[]=newint[6];//彩民买双色球的前6位号码publicStringckeckNumber(Stringnumber,Stringmax){//checkNumber()判断每个号码的合法性Stringnumbers=;if(number.length()!=2){returnnull;}else{if(number.compareTo(START)0||number.compareTo(max)0){returnnull;}else{numbers=numbers+number+;}}returnnumbers;}//checkLast()判断蓝球是否合法publicbooleancheckLast(Stringnumber){if(ckeckNumber(number,LEND)==null){//调用本类方法returnfalse;}else{returntrue;}}//checkEquals()判断号码是否重复publicbooleancheckEquals(String[]strArry,intlength){for(inti=0;ilength;i++){for(intj=0;ji;j++){if(strArry[i].equals(strArry[j])){returnfalse;}}}returntrue;}//getWinningNumbers()获取中奖号码,按升序排列PublicString[]getWinningNumbers(Orderorder,com.mstanford.lotery_system.unil.ArryIntToStringais){//产生6个1-33的随机数,且不能有重复for(i=0;i6;i++){r[i]=(int)(Math.random()*33+1);//去掉重复的数compare();}//升序排列r=order.orderAsc(r);//把整型数组转换成字符串String[]six=ais.intToString(r);//定义长度为7的字符串数组String[]seven=newString[7];//产生第七个中奖号码intsev=(int)(Math.random()*16+1);if(sev10){seven[6]=+0+String.valueOf(sev);}else{seven[6]=++String.valueOf(sev);}for(inti=0;isix.length;i++){seven[i]=six[i];}returnseven;}//去掉重复的数publicvoidcompare(){//compare()获取中奖号码有重复号,重新生成for(intj=0;ji;j++){if(r[j]==r[i]){r[i]=(int)(Math.random()*33+1);//因为新产生的随机数也可能与前面其他的数相等//所以递归调用此方法compare();}}}//prizes(),判断中奖情况publicStringprizes(String[]win,String[]buy){StringBufferwinner=newStringBuffer();Stringrank=;//统计前六位中奖情况intbefordsix=0;//最后一位是否中奖intlast=0;//判断前六位有几位相同for(inti=0;iwin.length-1;i++){for(intj=0;jbuy.length-1;j++){if(buy[j].trim().equals(win[i].trim())){befordsix++;winner=winner.append(buy[j]+);}}}//判断最后一位是否相同if(buy[6].equals(win[6])){last=1;winner=winner.append(buy[6]);}//判断是几等奖switch(befordsix){case6:if(last==1){rank=6+1:一等奖!;}else{rank=6+0:二等奖!;}break;case5:if(last==1){rank=5+1:三等奖!;}else{rank=5+0:四等奖!;}break;case4:if(last==1){rank=4+1:四等奖!;}else{rank=4+0:五等奖!;}break;case3:if(last==1){rank=3+1:五等奖!;}else{rank=没有中奖!;}break;case2:if(last==1){rank=2+1:六等奖!;}else{rank=没有中奖!;}break;case1:if(last==1){rank=1+1:七等奖!;}else{rank=没有中奖!;}break;case0:if(last==1){rank=0+1:七等奖!;}else{rank=没有中奖!;}break;}winner.append(,);winner.append(rank);returnwinner.toString();}//验证用户输入的前6位红球号码是否合法。publicString[]buyLotter(StringbuyNumber){Stringbuy[]=newString[7];String[]buy1=buyNumber.split();if(buy1.length!=6){//输入的数如果不是6为退出系统System.out.println(输入号码少于六位,请重新执行程序);returnnull;}else{//输入的号码个数正确//依次把输入的数字读入到buy1数组中for(intj=0;jbuy1.length;j++){//判断号码是否符合标准Stringb=ckeckNumber(buy1[j],HEND);if(b==null){System.out.println(输入错误,请重新执行程序选票!);//退出整个应用程序returnnull;}else{//判断是否有重复的数if(checkEquals(buy1,j+1)==false){System.out.println(输入号码有重复,请重新执行程序选票!);//退出整个应用程序returnnull;}}}for(intj=0;jbuy1.length;j++){buy[j]=buy1[j];}}returnbuy;}}22选5类:packagecom.mstanford.lotery_system.lottery;importcom.mstanford.lotery_system.unil.ArryIntToString;importcom.mstanford.lotery_system.unil.Order;publicclassFive_Twentytwo{staticfinalStringSTART=01;//彩票最小号privatestaticfinalStringHEND=22;//彩票最大号inti;//数组下表,要在不同的方法中使用,所以定义成全局的intr[]=newint[5];//彩民买22选5的前5位号码publicStringckeckNumber(Stringnumber,Stringmax){Stringnumbers=;if(number.length()!=2){returnnull;}else{if(number.compareTo(START)0||number.compareTo(max)0){returnnull;}else{numbers=numbers+number+;}}returnnumbers;}//判断数组中数否有重复元素publicbooleancheckEquals(String[]strArry,intlength){for(inti=0;ilength;i++){for(intj=0;ji;j++){if(strArry[i].equals(strArry[j])){returnfalse;}}}returntrue;}//产生中奖号码,按升序排列publicString[]getWinningNumbers(Orderorder,ArryIntToStringais){//产生5个1-22的随机数,且不能有重复for(i=0;i5;i++){r[i]=(int)(Math.random()*22);//去掉重复的数compare();}//升序排列order.orderAsc(r);//把整型数组转换成字符串String[]Five=ais.intToString(r);//定义长度为5的字符串数组returnFive;}//去掉重复的数publicvoidcompare(){//把刚产生的中奖号与前面的进行对比,如果相同则重新生成for(intj=0;ji;j++){if(r[j]==r[i]){r[i]=(int)(Math.random()*22+1);//因为新产生的随机数也可能与前面其他的数相等//所以递归调用此方法compare();}}}//中奖情况publicStringprizes(String[]win,String[]buy){StringBufferwinner=newStringBuffer();Stringrank=;intbefordfive=0;for(inti=0;iwin.length-1;i++){for(intj=0;jbuy.length-1;j++){if(buy[j].trim().equals(win[i].trim())){befordfiv
本文标题:JAVA彩票系统需求分析及功能实现
链接地址:https://www.777doc.com/doc-2069932 .html