您的位置:程序门 -> .net技术 -> c#



求救:晚會抽獎系統?要用隨機數來做....


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


求救:晚會抽獎系統?要用隨機數來做....[已结贴,结贴人:yuan168]
发表于:2007-01-22 11:47:16 楼主
公司要開晚會,讓我做一個晚會抽獎系統,用c#.net   winform做出來,只有一個星期了,要求如下:
1,最上面是一個控件用於顯示滾動的抽獎號碼
2,抽獎號碼來源於數據庫的字段(員工工號如:601846,601234等)
3,抽中之後不能再重復參加抽獎
4,每次可產生10名中獎號碼(三等獎每次10名,二等獎每次5名,一等獎....)

========================================================
請問該如何來做?
发表于:2007-01-22 11:55:131楼 得分:10
直接中数据库取十个出来
放到数据集里
前多少行什么奖   然后多少行什么奖   ……
主要是抽取那十个的时候随机即可
一个最简单的办法
select   top   10   *   from   users   order   by   newid()
就是这个   order   by   newid()
会让你随机取得数据
既然取出来的十条本来就是随机的
c#   里按顺序分奖品的级别即可   并不会破坏随机性
发表于:2007-01-22 11:56:582楼 得分:0
这是初级程序了。你还可以做成可以指定那个员工抽得到一等奖:)
发表于:2007-01-22 12:02:423楼 得分:0
newid()   不是什么数据都支持的。
发表于:2007-01-22 12:03:114楼 得分:0
更正:newid()   不是什么数据库都支持的。
发表于:2007-01-22 12:05:205楼 得分:0
我假设   lz   使用   sql   server
发表于:2007-01-22 12:18:046楼 得分:0
http://www.cnblogs.com/files/jhtchina/awardprogramtest.rar
里面有代码
发表于:2007-01-22 12:20:397楼 得分:5
用list <string>   保存员工号.
抽中就删除.
抽几个人是循环控制的!
发表于:2007-01-22 12:34:258楼 得分:5
可使用newid()函数实现   如:
select   top   50   *from   authors     order   by   newid()
每次都会按不同的id排序,你取中奖人数然后记录id号并做一个记录(已获奖)
发表于:2007-01-22 13:50:029楼 得分:0
lz發言:

不行啊,中獎後要回寫到數據庫的,直接從數據庫中取不行的,能否使用數組呢?然後random的值從數據中直接拿出來....

急...
发表于:2007-01-22 14:19:5510楼 得分:0
up
发表于:2007-01-22 14:20:0411楼 得分:5
数据库中加上一个字段,是否中过奖,sql语句加上条件判断。
发表于:2007-01-22 14:51:5912楼 得分:0
現在我用了一個數組:array1[120],裡面的值是string的,如何來隨機取10個array1中的字串呢?
==================================================================================
    sqlconnection   cnn   =   new   sqlconnection( "data   source=dgvd;initial   catalog=yuan;persist   security   info=true;user   id=sa ");
                datatable   dt1   =   new   datatable();
                object   []array1;
                private   void   btndatain1_click(object   sender,   eventargs   e)
                {
                        string   sqlstr   =   "select   no_emp   from   yuan01   where   cn_type= '1 ' ";
                        sqldataadapter   da   =   new   sqldataadapter(sqlstr,   cnn);
                        cnn.open();
                        da.fill(dt1);
                        cnn.close();
                        int   w   =   dt1.rows.count;
                        array1   =   new   object[w];
                        //產生數組的值
                        int   i   =   0;
                        foreach   (datarow   rw   in   dt1.rows)
                        {
                                array1[i]   =   rw[ "no_emp "];
                                i++;
                        }
                }
发表于:2007-01-22 15:26:3913楼 得分:5
有地址么?我以前写过一个给你参考.写的不太好,不过完全可以用的.送xml中提取数据.用arraylist+随机函数.点机开始就随机显示,再点击停止,就停止随即抽取.
发表于:2007-01-22 15:38:5814楼 得分:10
現在我用了一個數組:array1[120],裡面的值是string的,如何來隨機取10個array1中的字串呢?
------------------------------------------------------------------------------------
产生一个从1到全体员工总数的随机数作为数组的索引就可以了。
另外还要比较这个索引是否已经被选中。
发表于:2007-01-22 16:50:4315楼 得分:0
kyleyuan@speedtech.cn

上面是俺的郵箱,請aqa6573發資料過來,多謝了...
搞掂給分.....

另:如何一次產生10個不重得復的工號呢?
发表于:2007-01-23 11:09:1816楼 得分:10
看了楼主的代码了,是用的   sql   server   啊
那就用   newid()   啊
何必那么麻烦去生成随机数
见我1楼贴
你把那十条取出来放到一个datatable
那么就取前n条为一等奖,再m条为二等奖,……
这样多省事啊
发表于:2007-01-23 11:18:0017楼 得分:10
我原来帮别人改了一个,发邮件给你看看
很简单
发表于:2007-01-23 11:29:0118楼 得分:10
楼主可以得一等奖了


快速检索

最新资讯
热门点击