打算做一个抽奖程序,请撩上大神 菇凉请负责们点思路

抽奖程序:
思路整理,无非就是点一个按钮,然后一个图片旋转一会就出来个结果就行了,可这个程序的要求不是这样的,是需要从数据库中随机抽取用户,根据数据库中指定的等级和人数,一键全部抽出来结果就行了。同时需要存储到数据库。还需要一个导出的功能。
不能遗漏的是,如果通过随机数根据id来抽取的话,需要考虑id不连续的问题,如果全部取出id也不现实。尽量少的去读写数据库。
CREATE TABLE [dbo].[users](
[id] [int] IDENTITY(1,1) NOT NULL,
[name] [nvarchar](50) NOT NULL,
[phone] [nvarchar](50) NULL,
CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[result](
[id] [int] IDENTITY(1,1) NOT NULL,
[usersid] [int] NOT NULL,
[awardsid] [int] NOT NULL,
CONSTRAINT [PK_result] PRIMARY KEY CLUSTERED
)WITH (PAD_INDEX
= OFF, STATISTICS_NORECOMPUTE
= OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE TABLE [dbo].[awards](
[id] [int] IDENTITY(1,1) NOT NULL,
[Name] [nvarchar](50) NOT NULL,
[Number] [int] NOT NULL,
CONSTRAINT [PK_awards] PRIMARY KEY CLUSTERED
)WITH (PAD_INDEX
= OFF, STATISTICS_NORECOMPUTE
= OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS
= ON, ALLOW_PAGE_LOCKS
= ON) ON [PRIMARY]
) ON [PRIMARY]
CREATE VIEW [dbo].[view1]
dbo.result.id AS resultid, dbo.users.id, dbo.users.name, dbo.users.phone, dbo.awards.Name AS awardname
dbo.awards INNER JOIN
dbo.result ON dbo.awards.id = dbo.result.awardsid INNER JOIN
dbo.users ON dbo.result.usersid = dbo.users.id
CREATE PROCEDURE [dbo].[getranddata]
--这个地方的参数是后台调用传的参数,两个变量之间需要“,”号分开
@count int, --剩余奖项大小
@awards int --奖项的id
--这个地方定义的参数是存储过程内部用到的
DECLARE @minid int --最大id
DECLARE @maxid int --最小id
DECLARE @randnum int --随机数临时变量
DECLARE @exist int --查询结果
SET @minid =
(SELECT top 1 id
FROM users
ORDER BY id ASC) --查询最小id
SET @maxid =
(SELECT top 1 id
FROM users
ORDER BY id DESC) --查询最大id
--set @count = 100
--set @awards = 1
--嵌套语句begin开始,end结束
while @count&0 BEGIN
SELECT @randnum = ROUND(((@maxid - @minid -1) * RAND() + @minid), 0)
SET @exist =
(SELECT count(*)
FROM users
WHERE id=@randnum) IF @exist = 1 BEGIN
INSERT INTO result(usersid,awardsid)
VALUES(@randnum,
SET @count = @count - 1 END END END
其中三张表,一个视图,一个存储过程。
标题链接:
=====================================================================================
后台代码:
protected void Button1_Click(object sender, EventArgs e)
SqlConnection sqlcon = new SqlConnection(&server=.;database=uid=pwd=123&);
sqlcon.Open();
SqlDataAdapter sqlsda = new SqlDataAdapter(&select * from awards&, sqlcon);
ds = new DataSet();
sqlsda.Fill(ds);
DataTable dt = ds.Tables[0].Copy();
ds.Clear();
int count = dt.Rows.C
for (int i = 0; i & i++)
SqlCommand sqlcmd = new SqlCommand(&getranddata&, sqlcon);
SqlParameter pcount = new SqlParameter(&@count&, Convert.ToInt32(dt.Rows[i][&Number&]));
SqlParameter pawards = new SqlParameter(&@awards&, Convert.ToInt32(dt.Rows[i][&id&]));
sqlcmd.Parameters.Add(pcount);
sqlcmd.Parameters.Add(pawards);
mandType = CommandType.StoredP
sqlcmd.ExecuteNonQuery();
sqlsda = new SqlDataAdapter(&select top & + Convert.ToInt32(dt.Rows[i][&Number&]) + & * from view1 order by resultid desc&, sqlcon);
sqlsda.Fill(ds, &t& + i.ToString());
switch (i)
GridView1.DataSource = ds.Tables[&t& + i.ToString()].Copy().DefaultV
GridView1.DataBind();
GridView2.DataSource = ds.Tables[&t& + i.ToString()].Copy().DefaultV
GridView2.DataBind();
GridView3.DataSource = ds.Tables[&t& + i.ToString()].Copy().DefaultV
GridView3.DataBind();
sqlcon.Close();
奖项设置:
抽奖结果:
==========================================================================================
SQL - 生成指定范围内的随机数
DECLARE @Result INT DECLARE @Upper INT DECLARE @Lower INT
SET @Lower = 1
SET @Upper = 10
SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT @Result
ROUND()函数:返回按指定位数进行四舍五入的数值。
RAND()函数:生成随机数。
SQL循环语句嵌套
DECLARE @i int
SET @i=1 while @i&8 BEGIN IF @i&5 print space(4-@i)+REPLICATE('*',2*@i-1) ELSE print space(@i-4)+REPLICATE('*',15-2*@i)
SET @i=@i + 1 END
本文已收录于以下专栏:
相关文章推荐
//设计一个图形化界面的随机抽奖程序,用户单击开始进行滚动抽奖,单击停止即可产生1~36之间的7个随机整数
import java.awt.C
import java.awt.event....
第一次写博客,要喷请轻喷我这弱小的心灵。
昨天项目用到一个在微信上实现的抽奖程序,在网上找了一个jquery+php的例子,因为不会php,花了好大力气才将就搞成了java版的。原文地址:http:/...
今天比较闲,自己写了个简单的抽奖程序,很久没有用swing了,搞了半天,呵呵。
     1.截图效果如下:
   
2.点击“开始”按钮,“幸运儿是:”区域不停滚动显示人员姓名,点击...
他的最新文章
讲师:汪剑
讲师:刘道宽
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字).net+mssql制作抽奖程序思路及源码
投稿:hebedich
字体:[ ] 类型:转载 时间:
近期一直在研究数据库,刚好有个项目要做抽奖程序,恩,拿来练练手吧。
抽奖程序:
思路整理,无非就是点一个按钮,然后一个图片旋转一会就出来个结果就行了,可这个程序的要求不是这样的,是需要从数据库中随机抽取用户,根据数据库中指定的等级和人数,一键全部抽出来结果就行了。同时需要存储到数据库。还需要一个导出的功能。
不能遗漏的是,如果通过随机数根据id来抽取的话,需要考虑id不连续的问题,如果全部取出id也不现实。尽量少的去读写数据库。
代码如下:CREATE TABLE [dbo].[users](&&& [id] [int] IDENTITY(1,1) NOT NULL,&&& [name] [nvarchar](50) NOT NULL,&&& [phone] [nvarchar](50) NULL,&CONSTRAINT [PK_table1] PRIMARY KEY CLUSTERED (&&& [id] ASC)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]) ON [PRIMARY]
CREATE TABLE [dbo].[result](&[id] [int] IDENTITY(1,1) NOT NULL,&[usersid] [int] NOT NULL,&[awardsid] [int] NOT NULL,&CONSTRAINT [PK_result] PRIMARY KEY CLUSTERED (&[id] ASC)WITH (PAD_INDEX& = OFF, STATISTICS_NORECOMPUTE& = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS& = ON, ALLOW_PAGE_LOCKS& = ON) ON [PRIMARY]) ON [PRIMARY]
CREATE TABLE [dbo].[awards](&[id] [int] IDENTITY(1,1) NOT NULL,&[Name] [nvarchar](50) NOT NULL,&[Number] [int] NOT NULL,&CONSTRAINT [PK_awards] PRIMARY KEY CLUSTERED (&[id] ASC)WITH (PAD_INDEX& = OFF, STATISTICS_NORECOMPUTE& = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS& = ON, ALLOW_PAGE_LOCKS& = ON) ON [PRIMARY]) ON [PRIMARY]
CREATE VIEW [dbo].[view1]ASSELECT&&&& dbo.result.id AS resultid, dbo.users.id, dbo.users.name, dbo.users.phone, dbo.awards.Name AS awardnameFROM&&&&&&&& dbo.awards INNER JOIN&&&&&&&&&&&&&&&&&&&&& dbo.result ON dbo.awards.id = dbo.result.awardsid INNER JOIN&&&&&&&&&&&&&&&&&&&&& dbo.users ON dbo.result.usersid = dbo.users.id
CREATE PROCEDURE [dbo].[getranddata] --这个地方的参数是后台调用传的参数,两个变量之间需要“,”号分开@count int, --剩余奖项大小@awards int --奖项的idAS BEGIN --这个地方定义的参数是存储过程内部用到的DECLARE @minid int --最大idDECLARE @maxid int --最小idDECLARE @randnum int --随机数临时变量DECLARE @exist int --查询结果
SET @minid =& (SELECT top 1 id&& FROM users&& ORDER BY id ASC) --查询最小idSET @maxid =& (SELECT top 1 id&& FROM users&& ORDER BY id DESC) --查询最大id--set @count = 100--set @awards = 1--嵌套语句begin开始,end结束while @count&0 BEGINSELECT @randnum = ROUND(((@maxid - @minid -1) * RAND() + @minid), 0)SET @exist =& (SELECT count(*)&& FROM users&& WHERE id=@randnum) IF @exist = 1 BEGININSERT INTO result(usersid,awardsid)VALUES(@randnum,&&&&&& @awards)SET @count = @count - 1 END END END
其中三张表,一个视图,一个存储过程。
后台代码:
代码如下:protected void Button1_Click(object sender, EventArgs e){&&& SqlConnection sqlcon = new SqlConnection("server=.;database=uid=pwd=123");&&& sqlcon.Open();&&& SqlDataAdapter sqlsda = new SqlDataAdapter("select * from awards", sqlcon);&&& ds = new DataSet();&&& sqlsda.Fill(ds);&&& DataTable dt = ds.Tables[0].Copy();&&& ds.Clear();&&& int count = dt.Rows.C
&&& for (int i = 0; i & i++)&&& {&&&&&&& SqlCommand sqlcmd = new SqlCommand("getranddata", sqlcon);&&&&&&& SqlParameter pcount = new SqlParameter("@count", Convert.ToInt32(dt.Rows[i]["Number"]));&&&&&&& SqlParameter pawards = new SqlParameter("@awards", Convert.ToInt32(dt.Rows[i]["id"]));&&&&&&& sqlcmd.Parameters.Add(pcount);&&&&&&& sqlcmd.Parameters.Add(pawards);&&&&&&& mandType = CommandType.StoredP&&&&&&& sqlcmd.ExecuteNonQuery();
&&&&&&& sqlsda = new SqlDataAdapter("select top " + Convert.ToInt32(dt.Rows[i]["Number"]) + " * from view1 order by resultid desc", sqlcon);&&&&&&& sqlsda.Fill(ds, "t" + i.ToString());
&&&&&&& switch (i)&&&&&&& {&&&&&&& case 0:&&&&&&&&&&& GridView1.DataSource = ds.Tables["t" + i.ToString()].Copy().DefaultV&&&&&&&&&&& GridView1.DataBind();&&&&&&&&&&&&&&&&&& case 1:&&&&&&&&&&& GridView2.DataSource = ds.Tables["t" + i.ToString()].Copy().DefaultV&&&&&&&&&&& GridView2.DataBind();&&&&&&&&&&&&&&&&&& case 2:&&&&&&&&&&& GridView3.DataSource = ds.Tables["t" + i.ToString()].Copy().DefaultV&&&&&&&&&&& GridView3.DataBind();&&&&&&&&&&&&&&&&&& default:&&&&&&&&&&&&&&&&&& }&&& }&&& sqlcon.Close();}
奖项设置:
抽奖结果:
=================================================================
SQL - 生成指定范围内的随机数
代码如下:DECLARE @Result INT DECLARE @Upper INT DECLARE @Lower INTSET @Lower = 1SET @Upper = 10SELECT @Result = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)SELECT @Result
ROUND()函数:返回按指定位数进行四舍五入的数值。
RAND()函数:生成随机数。
SQL循环语句嵌套
代码如下:DECLARE @i intSET @i=1 while @i&8 BEGIN IF @i&5 print space(4-@i)+REPLICATE('*',2*@i-1) ELSE print space(@i-4)+REPLICATE('*',15-2*@i)SET @i=@i + 1 END
您可能感兴趣的文章:
大家感兴趣的内容
12345678910
最近更新的内容
常用在线小工具在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
这是公司年会抽奖的一个程序,其中特等奖,1等奖,2等奖设置了12个空格符占位,目的是为了让刚到不久的员工排除在外,又不让他们看到,怎么让程序不抽到这12个空格,请教了一个6年的老司机,没搞定,哪位前端大神帮忙看下,按空格键执行程序,谢谢演示地址:
//lottery title
var lotteryTitles = ['特等奖1名','一等奖1名', '二等奖2名', '三等奖3名','四等奖10名','五等奖12名','六等奖15名','参与奖17名'];
//lottery prefix
var lotteryPrefixes = ['special','first', 'second', 'third','fourth','fifth','sixth','participate'];
//first,second,third and fourth prize
var members = [
//21,29,32,37,0038,
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0014','0015','0016','0017','0018','0019','0020','0022','0023',
'0024','0025','0026','0027','0033','0035','0039','0040','','','','','',
'','','','','','','',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0014','0015','0016','0017','0018','0019','0020','0022','0023',
'0024','0025','0026','0027','0033','0035','0039','0040','','','','','',
'','','','','','','',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0014','0015','0016','0017','0018','0019','0020','0022','0023',
'0024','0025','0026','0027','0033','0035','0039','0040','','','','','',
'','','','','','','',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0012','0013','0014','0015','0016','0017','0018','0019','0020',
'0021','0022','0023','0024','0025','0026','0027','0028','0029','0030',
'0031','0032','0033','0034','0035','0036','0037','0038','0039','0040',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0012','0013','0014','0015','0016','0017','0018','0019','0020',
'0021','0022','0023','0024','0025','0026','0027','0028','0029','0030',
'0031','0032','0033','0034','0035','0036','0037','0038','0039','0040',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0012','0013','0014','0015','0016','0017','0018','0019','0020',
'0021','0022','0023','0024','0025','0026','0027','0028','0029','0030',
'0031','0032','0033','0034','0035','0036','0037','0038','0039','0040',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0012','0013','0014','0015','0016','0017','0018','0019','0020',
'0021','0022','0023','0024','0025','0026','0027','0028','0029','0030',
'0031','0032','0033','0034','0035','0036','0037','0038','0039','0040',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
'0001','0002','0003','0004','0005','0006','0007','0008','0009','0010',
'0011','0012','0013','0014','0015','0016','0017','0018','0019','0020',
'0021','0022','0023','0024','0025','0026','0027','0028','0029','0030',
'0031','0032','0033','0034','0035','0036','0037','0038','0039','0040',
'0041','0042','0043','0044','0045','0046','0047','0048','0049','0050',
'0051','0052','0053','0054','0055','0056','0057','0058','0059','0060',
var bodyWidth = $("body").css("width");
$("div.items").css("width",(bodyWidth.substring(0,bodyWidth.length-2)-380)+"px");
//跑马灯循环
//是否正在运行跑马灯
var isRun=
//是否跑马灯暂停状态
var pause =
//排名分组显示算法已经取消
//var ts=20
//默认跑马灯频率
var pl=10;
//程序是否开始运行用于判断程序是否开始运行
var isStart=
var zzs = "#98ff98";
//跑马灯音效
var runingmic=document.getElementById("runingmic");
runingmic.volume=0.5;
//中奖音效
var pausemic=document.getElementById("pausemic");
pausemic.volume=1.0;
var keyStatus=
//帮助对象
var readmeDialog = showReadme();
$("document").ready(function(){
//初始化皮肤
if(localStorage.getItem(lotteryPrefix+"pf"))
pf = localStorage.getItem(lotteryPrefix+"pf");
dynamicLoading.css("./css/style"+pf+".css");
$("#bodybg img").attr("src","./images/bodybg"+pf+".jpg");
$("input[name=pf][value="+pf+"]").attr("checked",true);
if(pf!=1){
zzs="#ba3030";
//初始化标题
if(localStorage.getItem("title"))
$("#title").val(localStorage.getItem("title"));
$(".top").html($("#title").val()+"&br/&"+"("+lotteryTitles[lotteryNumber]+")");
//频率模式本地存储
if(localStorage.getItem(lotteryPrefix+"ms"))
pl = localStorage.getItem(lotteryPrefix+"ms");
$("input[name=ms][value="+pl+"]").attr("checked",true);
//排名信息本地存储
if(localStorage.getItem(lotteryPrefix+"sequence"))
var ssHtml = localStorage.getItem(lotteryPrefix+"sequence");
$(".ss").html(ssHtml);
//custom lottery
var customLotteryMembers = ['159*1059', '152*9392'];
//创建item小方格
$.each(members, function(index, value){
if($.inArray(value, customLotteryMembers) &= 0)
customers.push(index);
var lm = [];
$.each(lotteryPrefixes, function(index, value){
var temp = localStorage.getItem(value+"lotteryMembers");
lm = $.merge(lm, temp.split(','));
var ignoreClassName = '';
if($.inArray(value, lm) &= 0)
ignoreClassName = ' ignore';
$("div.items").append("&div class='item i"+index+ignoreClassName+"' data-index='"+index+"'&"+(++index)+"&/div&");
//本地存储item宽度信息
if(localStorage.getItem(lotteryPrefix+"itemk"))
$("div.item").css("width",localStorage.getItem(lotteryPrefix+"itemk")+"px");
//本地存储item高度信息
if(localStorage.getItem(lotteryPrefix+"itemg"))
$("div.item").css("height",localStorage.getItem(lotteryPrefix+"itemg")+"px");
$("div.item").css("line-height",localStorage.getItem(lotteryPrefix+"itemg")+"px");
//回显设定item宽高
$("#itemk").attr("placeholder",$(".i1").css("width"));
$("#itemg").attr("placeholder",$(".i1").css("height"));
//初始化排序信息
$(".ss li").each(function(idx,item){
var num = $(item).attr("data-number");
$(".i"+num).addClass("ignore");
lotteryMembers.push(members[num]);
localStorage.setItem(lotteryPrefix+"lotteryMembers", lotteryMembers);
$("body").keyup(function(e){
keyStatus =
//全局键盘事件监听
$("body").keydown(function(e){
if(isStart){
if(! keyStatus)
keyStatus=
if(e.keyCode == 116 || e.keyCode == 8)
//按F1弹出帮助窗口
if(e.keyCode == 112)
e.preventDefault();
if($(".readme:hidden").size() & 0)
readmeDialog.show();
readmeDialog.close();
//ESC案件呼出隐藏菜单
if(e.keyCode == 27)
if($(".help:hidden").size() & 0)
$(".help").show();
$(".help").hide();
if(e.keyCode == 37)
$(".prev").click();
if(e.keyCode == 39)
$(".next").click();
//当程序出于暂停状态
//以下按键有效 数字键 0-9 和 小键盘 0-9
//存在未中奖用户切程序出于未开始运行状态执行开始方法
if((e.keyCode==32 || e.keyCode == 65) && $("div.item:not(.ignore)").size() != 0 && ! isStart)
isStart = !isS
startApp();
if(e.keyCode == 32 || e.keyCode == 65)
//当所有抽奖号全部抽取完毕则销毁跑马和音效循环
if($("div.item:not(.ignore)").size() == 0)
clearInterval(tx);
clearInterval(runtx);
runingmic.puase();
alert("抽奖已经全部结束。");
//更新运行状态
isRun = !isR
//如果项目出于运行状态
if(! isRun)
//deal customers
var runCount = $(".ss&ol&li").size();
if(runCount &= 1 && lotteryNumber & 2 && customers.length & 0)
var randCustomer = Math.floor(Math.random() * customers.length);
if($(".i"+customers[randCustomer]+".ignore").attr('data-index') != customers[randCustomer])
$(".item.active").removeClass("active");
$("div.item:not(.ignore):not(.active).i"+customers[randCustomer]).addClass("active");
customers.splice(randCustomer, 1);
//取得当前选中号码
var it = $(".item.active").attr('data-index');
//停止跑马灯
runingmic.pause();
//播放中奖音效
pausemic.currentTime = 0;
pausemic.play();
//中奖号处理
var it = Number(it);
$('.ss ol').append('&li class="si'+it+'" data-number='+it+'&'+members[it]+":"+lotteryTitle+';&/li&');
var dd = dialog({
title: '抽奖结果',
content: '&h2&'+members[it]+' 恭喜您,抽得'+lotteryTitle+'!&/h2&',
okValue: '确定',
width:'1885',
height:'850',
ok: function(){
dd.close();
dd.show();
lotteryMembers.push(members[it]);
localStorage.setItem(lotteryPrefix+"lotteryMembers", lotteryMembers);
localStorage.setItem(lotteryPrefix+"sequence",$(".ss").html());
$(".item.active").addClass("ignore");
$(".item.active").pulsate({
color: zzs,
$(".active").removeClass("active");
runingmic.play();
e.preventDefault();
//打开高级设置窗口
$("a.config").click(function(){
runingmic.pause();
var d = dialog({
title: '抽奖参数设定',
content: $(".model"),
okValue: '确定',
ok: function(){
if($("#reset:checked").val() && confirm("点击确定将清空抽奖结果。")){
localStorage.removeItem(lotteryPrefix+"sequence");
localStorage.removeItem(lotteryPrefix+"lotteryMembers");
if($("#itemk").val()){
localStorage.setItem(lotteryPrefix+"itemk", $("#itemk").val());
if($("#itemg").val()){
localStorage.setItem(lotteryPrefix+"itemg", $("#itemg").val());
localStorage.setItem("title", $("#title").val());
localStorage.setItem(lotteryPrefix+"ms", $("input[name=ms]:checked").val());
localStorage.setItem(lotteryPrefix+"pf", $("input[name=pf]:checked").val());
window.location.reload();
}, onclose: function(){
//清除错误中奖号
$("body").on("click",".item.ignore",function(){
if(confirm("点击确定将清除错误中奖号。"))
$("li[data-number="+$(this).attr('data-index')+"]").remove();
$(this).removeClass("active ignore");
localStorage.setItem(lotteryPrefix+"sequence",$(".ss").html());
localStorage.removeItem(lotteryPrefix+"lotteryMembers");
//程序开始入口
function startApp(){
//开始播放跑马灯音效
runingmic.play();
//产生随机数临时变量
var rand = 0;
//存储上一次随机数的临时变量
tx = setInterval(function(){
if(isRun){
while(true){
rand=Math.floor(Math.random() * ( $("div.item:not(.ignore)").size()));
if(rand == 0 || rand != prenum){}
$(".item.active").removeClass("active");
$("div.item:not(.ignore):not(.active)").eq(rand).addClass("active");
runtx = setInterval(function(){runingmic.currentTime = 0;},1000);
* 显示帮助信息
* @returns dialog
function showReadme()
return dialog({
title: '帮助信息',
content: $(".readme") ,
width:'400px',
okValue: '关闭',
ok:function(){
onclose: function () {
var dynamicLoading = {
css: function(path){
if(!path || path.length === 0){
throw new Error('argument "path" is required !');
var head = document.getElementsByTagName('head')[0];
var link = document.createElement('link');
link.href =
link.rel = 'stylesheet';
link.type = 'text/css';
head.appendChild(link);
js: function(path){
if(!path || path.length === 0){
throw new Error('argument "path" is required !');
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.src =
script.type = 'text/javascript';
head.appendChild(script);
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
正常逻辑不应该是直接抽出中奖的号码吗,跑马灯什么的只是前端的展示效果而已,实际上在轮转的时候中奖号码早就确定了才对
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我大致了解题主的思路了.
用两个数组去存就可以了:
allMember: [
{id: 0, isGolded: false},
{id: 59, isGolded: false},
];//所有 共60
secMember: [
{id: 0, isGolded: false},
{id: 47, isGolded: false},
];//所有 共48 id是谁由你自己去对应.
抽前三个的时候 以secMember去抽, 同时修改其中奖状态, 以及allMember中对应那个人的isGolded
补充说明:首页的显示中奖信息的, 遍历allMember即可, 判断是否已经中过奖(isGolded);抽奖顺序任意, 只要考虑当前要抽的奖项是 部分人secMember 还是所有人allMember,抽奖时, 先filter出未中奖的人(评论中给出了方法). 然后随机抽取.选人结束后 同时修改其在 secMember 和 allMember中对应的isGolded字段为true.
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:}

我要回帖

更多关于 腹黑大神请自重 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信