ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

彩票购买抽奖程序

2021-01-29 09:33:35  阅读:313  来源: 互联网

标签:抽奖 String int 程序 彩票 add lot parseInt Integer


彩票购买抽奖程序

一、团队成员及分工

团队成员

网络1913 宋林涛 201921123089(组长)

网络1913 罗吉洋 201921123087

成员分工

网络1913 宋林涛

用户及管理员功能实现

管理员GUI设计

阿里巴巴p3c代码扫描与修改

网络1913 罗吉洋

数据库设计

数据库的连接

用户GUI设计

二、项目git地址

https://gitee.com/songlintao/javalearn

三、项目简介

登录时选择用户或管理员,用户需要账号和密码来登录,登录后可以实现彩票的手动选号,自动选号进行购买,余额不足则无法购买,可以充值余额。

管理员进行开奖,点开始屏幕彩票号开始滚动,按暂停及开出奖项,管理员可以查看中奖用户及中奖信息,管理员可以一键注册账号对系统进行测试。

四、项目功能架构图

五、包规划以及UML图

六、部分运行测试

七、核心代码

//开奖
public void runLot(String s) {
        List<Integer> a = new ArrayList<Integer>();
        String[] arr1 = s.split(" ");
        a.add(Integer.parseInt(arr1[0]));
        a.add(Integer.parseInt(arr1[1]));
        a.add(Integer.parseInt(arr1[2]));
        a.add(Integer.parseInt(arr1[3]));
        a.add(Integer.parseInt(arr1[4]));
        a.add(Integer.parseInt(arr1[5]));
        a.add(Integer.parseInt(arr1[6])); 
        /*
         *遍历数据库(存有用户名和购买彩票信息)
         *得到彩票信息
         */
        //测试
        String sql="select * from lots";
        String sql3="truncate table lots";
        String sql4="truncate table rewards";
        String sql2="insert into rewards(rewardname,reward) values(?,?) ";
        int result=-1;
        try (Connection con= JDBCUtil.getConnection();
             PreparedStatement pst3=con.prepareStatement(sql4);          	
           ){
        	pst3.execute(sql4);
          } catch (SQLException e){
               e.printStackTrace();
          }
        
        
        try (Connection con= JDBCUtil.getConnection();
             PreparedStatement pst=con.prepareStatement(sql);
        	 PreparedStatement pst2=con.prepareStatement(sql2)
        ) {
            ResultSet rs = pst.executeQuery(sql);
            while (rs.next()) {
                String lot = rs.getString("lot");
                String[] arr = lot.split(" ");
                List<Integer> b = new ArrayList<Integer>();
                b.add(Integer.parseInt(arr[0]));
                b.add(Integer.parseInt(arr[1]));
                b.add(Integer.parseInt(arr[2]));
                b.add(Integer.parseInt(arr[3]));
                b.add(Integer.parseInt(arr[4]));
                b.add(Integer.parseInt(arr[5]));
                b.add(Integer.parseInt(arr[6])); 
              //x为匹配的个数
                
                int x=0;
                for (int i = 0; i < a.size(); i++) {
                    for (int j = 0; j < b.size(); j++) {
                        if(a.get(i).equals(b.get(j))) {
                            x++;
                        }

                    }
                }
                //if(x==7) 特等奖
                //if(x==6) 一等奖
                //if(x==5) 三等奖
                String userName=rs.getString("name");
                //System.out.println(userName);
                if(x==7){
                    pst2.setString(1,userName);
                    pst2.setString(2,"特等奖");
                    result=pst2.executeUpdate();
                }else if(x==6){
                    pst2.setString(1,userName);
                    pst2.setString(2,"一等奖");
                    result=pst2.executeUpdate();
                } else if (x == 5) {
                    pst2.setString(1,userName);
                    pst2.setString(2,"三等奖");
                    result=pst2.executeUpdate();
                }
            }
            }catch (SQLException e){
            e.printStackTrace();
        }     
        try (Connection con= JDBCUtil.getConnection();
                PreparedStatement pst3=con.prepareStatement(sql3);          	
              ){
           	pst3.execute(sql3);
             } catch (SQLException e){
                  e.printStackTrace();
             }
           
        
    
    }
//自动买彩票
public boolean buyLotByAdmin(int num,User u) {
    	String sql="insert into lots(name,lot,num) values(?,?,?) ";
    	if(u.getMoney()>=2*num) {
    	u.setMoney(u.getMoney()-2*num);
    	Scanner sc = new Scanner(System.in);
		List<Integer> a = new ArrayList<Integer>();
		int flag=1;
		a.add((int)(Math.random()*35+1));
		for (int i = 0; i < 7;) {
			flag=1;
			int x = (int)(Math.random()*35+1);
			for (int j = 0; j < a.size(); j++) {
				if(a.get(j)==x) {					
					flag=0;
				}
			}
			if(flag==1) {
				a.add(x);
				i++;
			}
		}
		a.sort(null);
		String lot = null;
		for (int i = 0; i < a.size(); i++) {
			if (i == 0) {
				lot = a.get(i).toString() + " ";
			} else if (i != a.size() - 1) {
				lot += a.get(i) + " ";
			} else {
				lot += a.get(i);
			}
		}

		// System.out.println(lot);
        u.setLot(lot);
        int result=-1;
        try (Connection con= JDBCUtil.getConnection();
             PreparedStatement pst=con.prepareStatement(sql);
        ) {
            pst.setString(1,u.getUserName());
            pst.setString(2,u.getLot());
            pst.setInt(3,num);
            //System.out.println("插入成功");
            result=pst.executeUpdate();
        }catch (SQLException e){
            e.printStackTrace();
        }
		//System.out.println(u.getLot());
		//System.out.println(u.getMoney());
		return true;
    	}
    	else {
			return false;
		}
    	
    }
//滚动开奖
class mythread extends Thread{
			private boolean suspend = false;
			public synchronized void toSuspend() {
				suspend = true;
			}
			@Override
			public void run() {
				while(true) {
					synchronized (this) {
						while(suspend) {
							try {
								wait();
							} catch (InterruptedException e) {
								// TODO Auto-generated catch block
								e.printStackTrace();
							}
						}
						
					}
					List<Integer> a = new ArrayList<Integer>();
					int flag=1;
					a.add((int)(Math.random()*35+1));
					for (int i = 0; i < 7;) {
						flag=1;
						int x = (int)(Math.random()*35+1);
						for (int j = 0; j < a.size(); j++) {
							if(a.get(j)==x) {					
								flag=0;
							}
						}
						if(flag==1) {
							a.add(x);
							i++;
						}
					}
					a.sort(null);
					String lot = null;
					for (int i = 0; i < a.size(); i++) {
						if (i == 0) {
							lot = a.get(i).toString() + " ";
						} else if (i != a.size() - 1) {
							lot += a.get(i) + " ";
						} else {
							lot += a.get(i);
						}
					}
					jLabel2.setText(lot);
					
				}
			}
		}

六、展望

程序没有实现用户登录提示中奖的功能,有所不足。

没法控制手动选号时号码重复的问题。

可视化界面设计的比较潦草,将来有待完善。

自动注册的时间过慢,可以进一步学习多线程来加速自动注册的速度。

标签:抽奖,String,int,程序,彩票,add,lot,parseInt,Integer
来源: https://www.cnblogs.com/song0820/p/14343180.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有