彩票购买抽奖程序
作者:互联网
彩票购买抽奖程序
一、团队成员及分工
团队成员
网络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