编程语言
首页 > 编程语言> > 彩票购买抽奖程序

彩票购买抽奖程序

作者:互联网

彩票购买抽奖程序

一、团队成员及分工

团队成员

网络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