今天为大家分享一个java语言编写的抽奖系统,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步
开发环境
开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程序,或者执行打开JAR文件即可以运行本程序。
系统框架
利用JDK自带的SWING框架开发。纯窗体模式,直接运行Main文件即可以。同时带有详细得设计文档。
主要功能
课题研究内容
抽奖是卖家以抽签的方法给买主奖品,是商人招徕顾客的一种手段。因此,抽奖的本质是一场互动营销,衡量其是否成功的标准不在于送出去多少奖品,或者单纯的吸引流量——而在于品牌的曝光,是一种维系品牌与用户关系的手段。通过系统来抽奖,可以保证抽奖的公平,公正的进行,同时通过计算机来操作,可以提高抽奖工作的效率。
1 创建一个文本文件,其中存放一些用户信息
2 通过单击开始按钮实现从文本种读取这些用户信息,并且读取每一条用户信息已滚动的方式信息的在
图形用户界面
3 在单击暂停按钮时实现暂停功能,单击保存按钮实现将当前用户界面上显示的用户信息写入一个指定
的文件中。
技术要求
基本要求:(1)熟悉Java的GUI设计和基本组件和部件;
(2)熟悉事件处理机制;
(3)完成抽奖系统的基本功能。
扩展要求:(1)设置文字的字体、字号、颜色,添加工具栏等;
(2)变量、方法命名符合规范;
(3)注释详细,程序层次清晰,可读性强。
功能要求
1 通过Excel导入参与抽奖人员的名单信息。人员包括姓名和手机信息
2 通过界面设置一等奖、二等奖、三等奖的个数
3 抽奖的不停滚动和暂停和继续
4 主界面显示中奖名单信息
5 导出终将信息为Excel
主要代码
抽奖核心部分代码
class ChooseThread extends Thread
{
private boolean runFlag = true;//决定此线程是否运行的标记
//需要该对象来读取文本框字段,不用创建它,申明下就好
private ChooseAward chooseAward = null;
private int time=0;
//创建一个新的随机数生成器
Random randomNumber = new Random();
public ChooseThread(Object obj)
{
start();
chooseAward = (ChooseAward) obj;
}
public void start()
{
runFlag = false;
super.start();
}
public void changeflag_start()
{
runFlag = true;
time++;//每点击一次加一
}
public void changeflag_stop()
{
runFlag = false;
}
/*
*实现文本框滚动的效果
*/
public void run()
{
while (runFlag)
{
/*
* 返回一个伪随机数,它是从此随机数生成器的序列中取出的
* 、在 0(包括)和指定值(不包括)之间均匀分布的 int值
*/
//返回向量中存储了几个号码的随便一个序号
int num;
hidden h=new hidden();
int k=h.rand();
if(k>ChooseAward.getLevel())
{
num = randomNumber.nextInt(chooseAward.v_identNumber.size());
//显示那个选中的序号对应的号码
chooseAward.t_identNumber.setText((String) chooseAward.v_identNumber
.elementAt(num));
}
else if(k<=ChooseAward.getLevel()&&ChooseAward.getLevel()<10&&chooseAward.z_identNumber.size()>=1)
{
num = randomNumber.nextInt(chooseAward.z_identNumber.size());
//显示那个选中的序号对应的号码
chooseAward.t_identNumber.setText((String) chooseAward.z_identNumber
.elementAt(num)+"****");
//chooseAward.z_identNumber.removeElementAt(num);
}
else if(ChooseAward.getLevel()<10)
{
num = randomNumber.nextInt(chooseAward.v_identNumber.size());
//显示那个选中的序号对应的号码
chooseAward.t_identNumber.setText((String) chooseAward.v_identNumber
.elementAt(num));
}
else if(ChooseAward.getLevel()>=10&&time<=6)
{
num = randomNumber.nextInt(chooseAward.v_identNumber.size());
chooseAward.t_identNumber.setText((String) chooseAward.v_identNumber
.elementAt(num));
}
try
{
sleep(50);
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
}
导入excel部分核心代码
public class ReadExcel {
public Vector<String> readExcel(String filePath) throws Exception {
Vector<String> v = new Vector<String>(); // 存放读取出来的姓名和电话
InputStream iStream = null;
Workbook workbook = null;
iStream = new FileInputStream(filePath);
workbook = Workbook.getWorkbook(iStream);
// sheet row column 下标都是从0开始的
Sheet sheet = workbook.getSheet(0);
int column = sheet.getColumns();
int rows = sheet.getRows();
System.out.println("共有" + rows + "行," + column + "列数据");
for (int i = 1; i < rows; i++) {
Cell[] cells = sheet.getRow(i);
//System.out.println(cells[0].getContents());
v.add(cells[0].getContents());
v.add(cells[1].getContents());
//System.out.println(cells[1].getContents());
//v_identNumber.add(cells[1].getContents());
//System.out.println(cells[2].getContents());
//System.out.println(cells[3].getContents());
}
// 操作完成时,关闭对象,释放占用的内存空间
if (iStream != null)
iStream.close();
if (workbook != null)
workbook.close();
return v;
}
}
实现效果
1 主界面
![](https://img-blog.csdnimg.cn/img_convert/9c02795a993827b9742fb844060a6d22.jpeg)
2 导入抽奖名单
![](https://img-blog.csdnimg.cn/img_convert/c520ec160fa48105118c3f77374d9f44.jpeg)
3 当前中奖情况
![](https://img-blog.csdnimg.cn/img_convert/bc2f9bcb9cdd16313b7fc3fcdfa2f94d.jpeg)