import java.io.*; |
import java.util.Random; |
import java.util.regex.Matcher; |
import java.util.regex.Pattern; |
public class buy_caipiao { |
public static void main(String[] args) throws IOException |
{ |
money mon= new money(); |
mon.pp(); //显示欢迎界面 |
mon.save_money( 1 , 0 ); //1表示用户选择存钱,0表示存钱的多少 |
mon.mainshow(); //主菜单 |
} |
} |
class money //决定用户操作类 |
{ |
winning_number win_number= new winning_number(); |
opinion_win ow= new opinion_win(); |
public int yu_e= 0 , save= 0 ,gett= 0 ,b= 1 ,c= 0 ,ccc1= 0 ,moneyshu= 0 ; |
public String zhuan= "" ; |
public void save_money( int ad, int add_money) throws IOException //存钱 |
{ |
if (ad== 0 ) |
{ |
yu_e+=add_money; |
} |
if (ad== 1 ) |
{ |
do { |
System.out.println( "\n\n\t\t##########当前是存钱界面##########\n" ); |
win_number.ppshow(); |
System.out.println( "存钱数目必须是10的倍数并且存钱数目不能超过10000元,不能小于1元。\n请输入金额:(输入后请按回车键)" ); |
BufferedReader din = new BufferedReader( new InputStreamReader(System.in)); |
zhuan=din.readLine(); |
|
|
char [] zhuchar= null ; |
try { |
zhuchar = (zhuan).toCharArray(); |
if (zhuchar.length== 0 ){ //这个方法是以"\n"结束分隔的,如果你直接输入回车的时候,要加判断 |
zhuchar= new char [ 1 ]; |
zhuchar[ 0 ]= '1' ; |
} |
} catch (Exception e) { |
} |
if (zhuchar[ 0 ] == '1' && zhuchar.length == 1 ) |
{ c= 1 ; |
show_cuowu(); |
continue ;} |
try { |
save=Integer.parseInt(zhuan); |
b=save% 10 ; |
if (save<= 10000 &&save>= 10 &&b== 0 ) |
{ |
c= 0 ; |
yu_e+=save; |
System.out.println( "\n存钱成功!" ); |
show_moneyy(); |
} |
else if (save> 0 &&b!= 0 ) |
{ |
c= 1 ; |
System.out.println( "\n\n!!!!!!!!!!!!存钱数目必须是10的倍数,请检查正确后再重新输入!!!!!!!!!!!!!\n\n" ); |
} |
else |
{ |
System.out.println( "\n\n!!!!!!!!!!!!您输入的金额数目超过存钱数目范围,请检查正确后再重新输入!!!!!!!!!!!!!\n\n" ); |
c= 1 ; |
} |
} |
catch (Exception e) |
{ |
c=dddd(zhuan, 0 ); |
} |
} while (c== 1 ); |
} |
} |
public int dddd(String zhuan, int moneyyy) throws IOException //判断用户是否输入正确 |
{ |
int q1= 0 ; |
char [] zhuann = zhuan.toCharArray(); |
if (zhuann[ 0 ]== 'e' &&zhuann.length== 1 ) |
{ |
q1= 2 ; //直接退出程序 |
byebye(moneyyy); |
} |
else if (zhuann[ 0 ]== 'f' &&zhuann.length== 1 ) |
{q1= 0 ;} //0返回用户主菜单 |
else if (zhuann.length== 9 ) |
{q1= 3 ;} //0返回用户主菜单 |
else |
{ |
show_cuowu(); |
q1= 1 ; //1继续循环 |
} |
return q1; |
} |
public void get_money() throws IOException //取钱 |
{ |
BufferedReader din = new BufferedReader( new InputStreamReader(System.in)); |
do { |
c= 0 ; |
System.out.println( "\n\n\t\t##########当前是取钱界面##########\n" ); |
win_number.ppshow(); |
System.out.println( "取钱数目必须是10的倍数并且取钱数目不能超过您当前的余额,取钱数目不能小于10元。\n您当前的余额是:" +yu_e+ "元。\n\t请输入取款金额:(输入后请按回车键)" ); |
String abcd=din.readLine(); |
|
char [] zhuchar= null ; |
try { |
zhuchar = (abcd).toCharArray(); |
if (zhuchar.length== 0 ){ //这个方法是以"\n"结束分隔的,如果你直接输入回车的时候,要加判断 |
zhuchar= new char [ 1 ]; |
zhuchar[ 0 ]= '1' ; |
} |
} catch (Exception e) { |
} |
if (zhuchar[ 0 ] == '1' && zhuchar.length == 1 ) |
{ c= 1 ; |
show_cuowu(); |
continue ;} |
|
|
|
try { |
gett=Integer.parseInt(abcd); |
b=gett% 10 ; |
if (gett<=yu_e&&gett>= 10 &&b== 0 ) |
{ |
c= 0 ; |
yu_e-=gett; |
System.out.println( "取钱成功!\n\n" ); |
show_moneyy(); |
} |
else if (gett>yu_e) |
{ |
System.out.println( "\n\n!!!!!!!!!!!!您输入的金额数目超过您当前余额数目范围,请检查正确后再重新输入!!!!!!!!!!!!!\n\n" ); |
c= 1 ; |
} |
else if (gett< 10 ) |
{ |
System.out.println( "\n\n!!!!!!!!!!!!您输入的金额数目不能小于10元。请检查正确后再重新输入!!!!!!!!!!!!!\n\n" ); |
c= 1 ; |
} |
else |
{show_cuowu(); |
c= 1 ;} |
} |
catch (Exception e) |
{ |
c=dddd(abcd, 0 ); |
} |
} while (c== 1 ); |
} |
public void show_cuowu() //提示错误 |
{System.out.println( "\n\n!!!!!!!!!!!!您输入的数据出现错误,请检查正确后再重新输入!!!!!!!!!!!!!\n\n" );} |
public void show_moneyy() //显示余额 |
{ |
System.out.println( "\n您当前的余额是:" +yu_e+ "元。\n" ); |
} |
public void byebye( int moneyyy_y) throws IOException //再见方法 |
{ |
if ( this .yu_e> 0 ||moneyyy_y> 0 ) |
{ |
yu_e+=moneyyy_y; |
System.out.println( "\t\t^_^您的余额是" +yu_e+ "元,请取回!" ); |
save_money( 0 ,-(yu_e)); |
} |
System.out.println( "\t\t^_^谢谢您的惠顾!欢迎您的下次光临!祝您财源滚滚!^_^" ); |
System.exit( 0 ); |
} |
public void pp() throws IOException //首页欢迎界面 |
{ |
BufferedReader buffer = new BufferedReader( new InputStreamReader(System.in)); |
do |
{ |
System.out.print( " ----------------------------欢迎来到福利彩票中心-------------------------\n\n" ); |
System.out.print( "参与彩票中奖一次花费10元,请存钱才能参与中奖活动:\n" ); |
System.out.print( "按 y 进入存钱界面,按 n 可退出中奖活动\n" ); |
System.out.println( "是否继续参与中奖活动,请输入:(输入后请按回车键)" ); |
char [] zhuchar= null ; |
try { |
zhuchar = (buffer.readLine()).toCharArray(); |
if (zhuchar.length== 0 ){ //这个方法是以"\n"结束分隔的,如果你直接输入回车的时候,要加判断 |
zhuchar= new char [ 1 ]; |
zhuchar[ 0 ]= '1' ; |
} |
} catch (Exception e) { |
} |
if (zhuchar[ 0 ] == 'y' && zhuchar.length == 1 ) |
ccc1 = 0 ; |
else |
if (zhuchar[ 0 ] == 'n' && zhuchar.length == 1 ) |
ccc1 = dddd( "e" , 0 ); |
else |
ccc1 = dddd( "o" , 0 ); |
} while (ccc1 == 1 ); |
} |
public void mainshow() throws IOException //用户主菜单 |
{ |
int q= 1 ; |
do { |
System.out.println( "\n\n\t\t########################################" ); |
System.out.println( "\t\t### 当前是用户主菜单界面 ###" ); |
System.out.println( "\t\t########################################" ); |
System.out.println( "\t选择您要的服务:\t1.存钱\t2.取钱\t3.买彩票\t4.查看余额\t5.退出" ); |
System.out.println( "请选择:(输入后请按回车键)" ); |
BufferedReader buffer = new BufferedReader( new InputStreamReader(System.in)); |
Pattern p = null ; //正则表达式 |
Matcher m = null ; //操作的字符串 |
String str=buffer.readLine(); |
if (Pattern.compile(str).matcher( "1" ).matches()) //判断字符串变量str的值是否与"1"匹配 |
{ |
save_money( 1 , 0 ); //1/0表示判断是否用户操作存钱 |
q=- 1 ; |
} |
else if (Pattern.compile(str).matcher( "2" ).matches()){ |
if (yu_e>= 10 ) |
{ |
get_money(); |
q=- 1 ; |
} |
else { |
System.out.println( "\t\t您的余额不足!无法进行此操作!\n\n" ); |
q=- 1 ; |
} |
} |
else if (Pattern.compile(str).matcher( "3" ).matches()){ |
if (yu_e>= 10 ) |
{ |
save_money( 0 ,- 10 ); |
save_money( 0 ,ow.opi(yu_e)); //ow.opi(yu_e)传值给y_hu_s_ru() |
q=- 1 ; |
} |
else { |
System.out.println( "\t\t您的余额不足!无法进行此操作!\n\n" ); |
q=- 1 ; |
} |
} |
else if (Pattern.compile(str).matcher( "4" ).matches()){ |
show_moneyy(); |
q=- 1 ; |
} |
else if (Pattern.compile(str).matcher( "5" ).matches()){ |
byebye( 0 ); |
} |
else { |
q= 0 ; |
show_cuowu(); |
} |
} while (q== 0 ||q==- 1 ); |
} |
} |
class winning_number //产生与显示中奖号码 |
{ |
String b= "" ,e= "" ; |
int [] nums = new int [ 5 ]; |
int [] win_num() throws IOException |
{ |
Random rnd = new Random(); |
for ( int i= 0 ;i< 5 ;i++) |
{ |
nums[i]=- 1 ; |
nums[i]=rnd.nextInt( 10 ); //随机产生1~10之间的整数 |
//System.out.println("中奖号码是:"+nums[i]);//显示中奖号码 |
} |
return nums; |
} |
void play_win_num() //显示中奖的号码 |
{ |
e= "" ; |
for ( int i= 0 ;i< 5 ;i++) |
{ |
b=Integer.toString(nums[i])+ " " ; |
e=e+b; |
} |
System.out.println( "本次的中奖的号码如下:\n" +e); |
} |
void ppshow() throws IOException |
{System.out.println( "\t(温馨提示: 按 e 并按回车键可退出参与这次中奖活动,按 f 并按回车键可返回用户主菜单.)\n" );}; |
} |
class y_hu_s_ru |
{ |
int [] haoma( int yu_ee1) throws IOException |
{ |
BufferedReader buffer = new BufferedReader( new InputStreamReader(System.in)); |
money mon = new money(); |
winning_number win_number= new winning_number(); |
int p = 0 ; |
int d = - 1 ,yu_e= 0 ;; |
int dd = 0 ,cc= 0 ; |
char q = ' ' ; |
int c[] = new int [ 5 ]; |
do |
{ |
if (p == 0 ) |
{ |
System.out.println( "\n\n\t\t##########当前是中奖彩票中心界面##########\n" ); |
win_number.ppshow(); |
System.out.println( "请输入 五 个您选中的数字从0~~9之间彩票号码(包括0和9),并且每个号码之间以空格隔开." ); |
} |
System.out.println( "请输入:(输入后请按回车键)" ); |
String s = buffer.readLine(); |
char [] zhuchar= null ; |
try { |
zhuchar = (s).toCharArray(); |
if (zhuchar.length== 0 ){ //这个方法是以"\n"结束分隔的,如果你直接输入回车的时候,要加判断 |
zhuchar= new char [ 1 ]; |
zhuchar[ 0 ]= '1' ; |
} |
} catch (Exception e) { |
} |
if (zhuchar[ 0 ] == '1' && zhuchar.length == 1 ) |
{ p= 0 ; |
mon.show_cuowu(); |
continue ;} |
String as[] = s.split( " " ); |
yu_e=yu_ee1; |
cc=mon.dddd(s,(yu_e+ 10 )); |
if (cc== 1 ) |
{p= 0 ; |
continue ;} |
if (cc== 0 ) |
{ |
p= 1 ; |
c[ 0 ]=- 2 ; |
break ; |
} |
if (as.length == 5 ) //判断用户输入的是5个字符 |
{ |
for ( int i = 0 ; i <= 4 ; i++) |
{ |
try |
{ |
d = Integer.parseInt(as[i]); //用户输入的字符串转换成Int 类型 |
if (d >= 0 && d < 10 ) |
{ |
c[i] = d; |
if (i == 4 ) |
{p = 1 ;} |
continue ; |
} |
else //用户输入的数字超过0~~10之间的范围 |
{ |
mon.show_cuowu(); |
p = 0 ; |
} |
} |
catch (Exception e) //确定用户输入的是字符串 |
{ |
p = 0 ; |
mon.show_cuowu(); |
} |
break ; |
} |
} |
else //用户输入的不是5个数字 |
{ |
p = 0 ; |
mon.show_cuowu(); |
break ; |
} |
} while (p == 0 ); |
return c; |
} |
} |
class opinion_win //计算中奖的号码 |
{ |
winning_number win_number= new winning_number(); |
y_hu_s_ru yhu= new y_hu_s_ru(); |
int j= 0 ,return_money= 0 ,yu_ee= 0 ;; |
int [] nums1= new int [ 5 ]; |
int [] d= new int [ 5 ]; |
|
int opi( int yu_e1) throws IOException{ |
yu_ee=yu_e1; |
d=win_number.win_num(); |
nums1=yhu.haoma(yu_ee); |
if (nums1[ 0 ]==- 2 ) |
{return_money= 10 ;} |
else |
{ |
for ( int i= 1 ,j= 0 ,q;i<= 5 ;i++) |
{ |
q=d[i- 1 ]; |
for ( int k= 1 ;k<= 5 ;k++) |
{ |
if (q==nums1[k- 1 ]) |
{ |
j++; //计算出买对有多少个中奖号码 |
nums1[k- 1 ]=- 1 ;q=- 2 ; //防止再计算的已中奖号码 |
} |
} |
if (i== 5 ) |
{ |
win_number.play_win_num(); |
if (j== 5 ) |
{ |
System.out.println( "您买中了全部号码。\n\t\t^_^恭喜你获得一等奖,中奖金额为230000000元" ); |
return_money= 230000000 ; |
} |
else if (j== 4 ) |
{ |
System.out.println( "您买中了四个号码。\n\t\t^_^恭喜你获得二等奖,中奖金额为50000000元" ); |
return_money= 50000000 ;} |
else if (j== 3 ) |
{ |
System.out.println( "您买中了三个号码。\n\t\t^_^恭喜你获得三等奖,中奖金额为100000元" ); |
return_money= 100000 ;} |
else if (j== 2 ) |
{ |
System.out.println( "您买中了二个号码。\n\t\t^_^恭喜你获得鼓励奖,中奖金额为10000元" ); |
return_money= 10000 ;} |
else |
{System.out.println( "\t\t^_^您好像没有中奖噢!谢谢您的参与,祝您下次好运!^_^" ); |
return_money= 0 ;} |
} |
} |
} |
return return_money;} |
} |