下面介绍我做的一个winform程序,实现的结果是点击开始,然后名字一个一个地跳跃,然后点击介绍,名字停止跳动,此名字幸运的得了奖,而且不会重复名单!我准备用wpf来做的,虽然两者有很大的同共处,但是也有很微妙的区别。我做的这个软件在winform中需要timer控件,而在wpf中就没有timer控件了,需要DispatcherTimer这个类,而使用这个类的时候出现了很多问题,所以暂时先放置在了一边,用了winform窗体程序做了这个软件。此软件分了两个窗体,一个主窗体和一个子窗体,主窗体是抽奖用的,而子窗体是实现对名单的增删改查功能。

点击主窗体左上角的“查看人员名单”就会跳转到子窗体。

过程很简单

1.首先给主窗体添加一些控件,加一些label,button和listbox控件。label显示名字的跳跃,主窗体中的listbox将会获取得到的获奖名字,然后显示出来几等奖。“重新开始”是初始化,可以重新进行抽奖。

2.子窗体实现的是对名单的增删改查,也有一个文本导入名单功能。

3.然后就是主要的数据库操作了。我用的是sqlserver 2010数据库,我的想法是,这个软件需要两个表,一个表当然是储存名单用的,这个简单的软件只需要id和Name两个字段就行了。 另外一个表也有id和Name字段,初始是没有数据的,这个表是储存已经抽到人的名单。第二张表是对比第一张表的,抽奖的时候抽取第一张表中的名单,然后跟第二张表进行比对,如果有一样的就不显示,从而达到抽奖名单不重复的目的。

string sqlStr = "select Name, NewID() as random from T_Staff where Name not in (select Name from T_Staff1) order by random ";

4.上面的sql语言,放在timer里面,这样timer运行一次,此sql就运行一次。这样就实现了名字不断跳转的效果。

下面就把代码贴上,其实很简单。也有很多不完善的地方,将在本文最后总结中指出!

  1 public partial class Main : Form
  2     {
  3         public Main()
  4         {
  5             InitializeComponent();
  6         }
  7         public static string conStr = "uid=sa;pwd=123456;initial catalog=人员名单;data source=.;";
  8         public static SqlConnection conn = new SqlConnection(conStr);
  9         //int num = 0;
 10         private void timer1_Tick(object sender, EventArgs e)
 11         {
 12             try
 13             {
 14                 string sqlStr = "select Name, NewID() as random from T_Staff where Name not in (select Name from T_Staff1) order by random ";
 15                 SqlCommand cmd = new SqlCommand(sqlStr, conn);
 16                 conn.Open();
 17                 object obj = cmd.ExecuteScalar();
 18                 label2.Text = obj.ToString();
 19                 conn.Close();
 20             }
 21             catch
 22             {
 23             }
 24         }
 25
 26         private void Form1_Load(object sender, EventArgs e)
 27         {
 28             timer1.Interval = 40;
 29         }
 30         private void btn1_Click(object sender, EventArgs e)
 31         {
 32             label1.Text = "一等奖";
 33         }
 34
 35         private void btn2_Click(object sender, EventArgs e)
 36         {
 37             label1.Text = "二等奖";
 38         }
 39
 40         private void btn3_Click(object sender, EventArgs e)
 41         {
 42             label1.Text = "三等奖";
 43         }
 44         private void btnOther_Click(object sender, EventArgs e)
 45         {
 46             label1.Text = "其它奖项";
 47         }
 48         private void btnStart_Click(object sender, EventArgs e)
 49         {
 50             SoundPlayer player=new SoundPlayer();
 51             SoundPlayer player1 = new SoundPlayer();
 52             player.SoundLocation="E:/程序/抽奖系统2/抽奖系统2/Music/301.wav";
 53             player1.SoundLocation = "E:/程序/抽奖系统2/抽奖系统2/Music/3055.wav";
 54             SqlConnection conn = new SqlConnection(conStr);
 55             if (label1.Text == "欢迎")
 56             {
 57                 MessageBox.Show("请选择奖项!");
 58             }
 59             else if (btnStart.Text == "开始")
 60             {
 61                 player.PlayLooping();
 62                 btnStart.Text = "结束";
 63                 timer1.Start();
 64             }
 65             else
 66             {
 67                 player.Stop();
 68                 player1.Play();
 69                 timer1.Enabled = false;
 70                 string sqlStr1 = "Insert into T_Staff1(Name) values ('" + label2.Text + "')";
 71                 //num++;
 72                 SqlCommand com = new SqlCommand(sqlStr1, conn);
 73                 conn.Open();
 74                 com.ExecuteNonQuery();
 75                 conn.Close();
 76                 btnStart.Text = "开始";
 77                 if (label1.Text == "一等奖")
 78                 {
 79                     listBox1.Items.Add(label2.Text);
 80                 }
 81                 else if (label1.Text == "二等奖")
 82                 {
 83                     listBox2.Items.Add(label2.Text);
 84                 }
 85                 else if (label1.Text == "三等奖")
 86                 {
 87                     listBox3.Items.Add(label2.Text);
 88                 }
 89                 else if (label1.Text == "其它奖项")
 90                 {
 91                     listBox4.Items.Add(label2.Text);
 92                 }
 93             }
 94         }
 95         private void 退出系统ToolStripMenuItem_Click(object sender, EventArgs e)
 96         {
 97             SqlConnection conn = new SqlConnection(conStr);
 98             conn.Open();
 99             string sqlclear = "delete from T_Staff1";
100             SqlCommand com = new SqlCommand(sqlclear, conn);
101             com.ExecuteNonQuery();
102             conn.Close();
103             this.Close();
104         }
105         private void 重新开始ToolStripMenuItem_Click(object sender, EventArgs e)
106         {
107             SqlConnection conn = new SqlConnection(conStr);
108             conn.Open();
109             string sqlclear = "delete from T_Staff1";
110             SqlCommand com = new SqlCommand(sqlclear, conn);
111             com.ExecuteNonQuery();
112             conn.Close();
113             listBox1.Items.Clear();
114             listBox2.Items.Clear();
115             listBox3.Items.Clear();
116             listBox4.Items.Clear();
117             label1.Text = "欢迎";
118             label2.Text = "名单";
119             MessageBox.Show("已经初始化成功,请重新开始");
120         }
121         private void 查看人员名单ToolStripMenuItem_Click(object sender, EventArgs e)
122         {
123             NameList list = new NameList();
124             list.ShowDialog();
125         }
126     }

主窗体后台代码

  1 public partial class NameList : Form
  2     {
  3         public NameList()
  4         {
  5             InitializeComponent();
  6         }
  7         public static string conStr = "uid=sa;pwd=123456;initial catalog=人员名单;data source=.;";
  8         public static SqlConnection conn = new SqlConnection(conStr);
  9         public void NameList_Load(object sender, EventArgs e)
 10         {
 11             conn.Open();
 12             //显示总共有多少的员工
 13             string strLong = "select count(*) from T_Staff";
 14             SqlCommand com = new SqlCommand(strLong, conn);
 15             int length=(int)com.ExecuteScalar();
 16             label1.Text = "总共有" + length + "个员工";
 17             //List显示数据库中的员工名单
 18             string strName = "select Name from T_Staff";
 19             DataSet ds = new DataSet();
 20             SqlDataAdapter adapter = new SqlDataAdapter(strName, conn);
 21             adapter.Fill(ds);
 22             foreach (DataRow row in ds.Tables[0].Rows)
 23             {
 24                 listBox1.Items.Add(row[0].ToString());
 25             }
 26             conn.Close();
 27         }
 28
 29         private void button1_Click(object sender, EventArgs e)
 30         {
 31             //单值插入
 32             if (textBox1.Text == "")
 33             {
 34                 MessageBox.Show("请在上面输入名字");
 35             }
 36             else
 37             {
 38                 conn.Open();
 39                 string strInsert = "insert into T_Staff(Name) values('" + textBox1.Text + "')";
 40                 SqlCommand com = new SqlCommand(strInsert, conn);
 41                 com.ExecuteNonQuery();
 42                 MessageBox.Show(textBox1.Text + "插入成功");
 43                 conn.Close();
 44             }
 45         }
 46
 47         private void button6_Click(object sender, EventArgs e)
 48         {
 49             DialogResult dr = MessageBox.Show("你真的要全部删除吗?","删除操作",MessageBoxButtons.YesNo);
 50             if (dr == DialogResult.Yes)
 51             {
 52                 conn.Open();
 53                 string strDelete = "delete from T_Staff";
 54                 SqlCommand com = new SqlCommand(strDelete, conn);
 55                 com.ExecuteNonQuery();
 56                 conn.Close();
 57                 MessageBox.Show("删除成功");
 58             }
 59             else
 60             {
 61                 return;
 62             }
 63         }
 64
 65         private void button2_Click(object sender, EventArgs e)
 66         {
 67             //选择性删除ListBox中的数据
 68             if (listBox1.SelectedItem != null)
 69             {
 70                 string selectedName = listBox1.SelectedItem.ToString();
 71                 conn.Open();
 72                 string strDel = "delete from T_Staff where Name='" + selectedName + "'";
 73                 SqlCommand com = new SqlCommand(strDel, conn);
 74                 com.ExecuteNonQuery();
 75                 conn.Close();
 76                 MessageBox.Show("删除成功");
 77             }
 78             else
 79             {
 80                 MessageBox.Show("请在左边选择名字");
 81             }
 82         }
 83
 84         private void button4_Click(object sender, EventArgs e)
 85         {
 86             this.Close();
 87         }
 88
 89         private void button5_Click(object sender, EventArgs e)
 90         {
 91             OpenFileDialog ofd = new OpenFileDialog();
 92             ofd.Filter = "文本文件|*.txt";
 93             ofd.ShowDialog();
 94             string filename = ofd.FileName;
 95             IEnumerable<string> lines= File.ReadAllLines(filename,Encoding.Default);
 96             foreach (string line in lines)
 97             {
 98                 string[] segs = line.Split(' ');
 99                 string name = segs[0];
100                 conn.Open();
101                 string strDel = "insert into T_Staff(Name) values('" + name + "')";
102                 SqlCommand com = new SqlCommand(strDel, conn);
103                 com.ExecuteNonQuery();
104                 conn.Close();
105             }
106             MessageBox.Show("成功导入"+lines.Count()+"条数据");
107         }
108     }

子窗体代码

这个小程序的问题很多。代码中的注释很很少,是当初写的时候没注意吧。窗体没有美化,没有太多时间去弄这个了。写这种对sql操作的时候应该把这些写到一个类中SqlHelper,这样直接调用这个类中的一些方法就行了,当初没注意,导致写的时候程序语句很冗杂。

下面是这个程序运行的效果

转载于:https://www.cnblogs.com/xijianyao/archive/2013/06/09/3129400.html

winform小程序-随机抽奖软件相关推荐

  1. visual studio 设计第一个WinForm小程序

    WinForm小程序之消息框 首先打开visual studio 软件,然后[文件]-[新建]-[项目]-[Visual C#]-[Windows],选择Windows窗体应用程序,根据自己的需要修改 ...

  2. 微信小程序的抽奖页面

    微信小程序的抽奖页面 做一个1-10的微信小程序抽奖界面,随机到6和8会显示中奖信息! 点开始按钮开始执行,点结束按钮结束抽奖并且判断是否中奖 wxml代码: <view>{{title} ...

  3. 微信小程序圆盘抽奖(扇形画圆)

    微信小程序圆盘抽奖(扇形画圆) 前言 提示:这里可以添加本文要记录的大概内容: 例如:领导安排做一个微信小程序的转盘抽奖,要求可以复用,动态的修改抽奖的板块个数,由于是第一次做微信小程序踩了很多的坑, ...

  4. IVX低代码平台开发——微信小程序实现抽奖功能

    写在前面 通过利用可视化编程实现微信小程序的抽奖功能,带大家初步了解 iVX 的强大之处. 文章目录 写在前面 iVX开发 抽奖功能实现 iVX开发 基本介绍 iVX是一个 "零代码&quo ...

  5. 微信小程序-转盘抽奖

    微信小程序-转盘抽奖代码: lucky-draw.wxss: .lucky_draw_zp{ width: 502rpx; height: 502rpx; margin: 0 auto; positi ...

  6. 微信小程序用什么软件开发

    微信小程序用什么软件开发?要花你多少钱呢! 现在是Z世代,新能源车.芯片.AI的时代了,不会还有企业.店铺,想通过聘请程序员,或者花个大几万去开发一个微信小程序吧. 不会吧,这不会是真的吧. 今天珍奶 ...

  7. 景区户外剧本杀小程序冲关软件

    景区户外剧本杀小程序具有以下几个方面的市场前景:     旅游市场需求增加:随着人们对于旅游方式的多样化需求增加,景区户外剧本杀作为一种互动性强.参与感强的旅游体验项目,将会得到越来越多游客的喜爱和关 ...

  8. 【小程序与公众号】微信小程序九宫格抽奖(抽奖完全随机)

    上图 话不多说直接上图,抽奖是顺时针又快变慢(还原抽奖的动画)进行抽奖,抽奖的几率都是随机 源码 接下来展示的就是微信小程序中的九宫格抽奖 说明 适用范围 抽奖逻辑只是原生JS,通过数据进行驱动,因此 ...

  9. 数字抽奖小程序_抽奖小程序凭什么成为流量的风口?怎么以最快的方式引流?...

    现在不管是实体店还是线上,最需要的就是客户流量,怎么才能最快速的引流呢? 推广到用户,并且让用户推广用户,更快的裂变. 现在市面上的抽奖小程序,轻松地做到了快速裂变发展用户的效果.成为流量风口. 抽奖 ...

  10. 抽奖小程序 c语言,抽奖小程序 一抽奖小程序,需十位学生信息,抽出一等奖1名,二等奖2名,三等奖......

    1, 一抽奖小程序,需十位学生信息,抽出一等奖1名,二等奖2名,三等奖... public static void main(String[] args) {int input = 10;Scanne ...

最新文章

  1. R语言构建xgboost模型:使用xgb.DMatrix保存、加载数据集、使用getinfo函数抽取xgb.DMatrix结构中的数据
  2. shell 脚本 自动发送邮件
  3. 交互设计的114条原则
  4. 调色师必须了解的LUT知识
  5. html5 canvas 获取当前坐标,html5 canvas fillRect坐标和大小的问题解决方法
  6. java里面比较重要的东西_Java面向对象程序设计中很重要的一些东西
  7. PostgreSQL 查看数据库,索引,表,表空间大小
  8. java dht 爬虫_python开发的 dht网络爬虫
  9. openg-光照贴图
  10. 谁是史上最强-用爬虫分析IMDB TOP250电影数据
  11. 二倍图三倍图什么意思_什么是二倍图三倍图
  12. SQL注入:搜索型注入
  13. SameSite Cookie问题处理解决方案(谷歌Chome浏览器出现Whitelabel Error Page或者不停请求现象解决)
  14. 川农在线期末机考答案2020计算机,川农网院20秋《计算机网络》期末机考
  15. 五使用计算机上数学课英文,数学课用英语怎么说
  16. 操作系统-Linux内核系列
  17. 【多元统计分析】聚类分析【期末复习】
  18. Jimmer彻底完成了,一个面向Java/Kotlin的革命性ORM
  19. “C不再是一种编程语言”
  20. FaceTime在苹果Mac上不起作用怎样解决?

热门文章

  1. 智商情商哪个重要_智商情商哪个更重要 辩论赛
  2. method not allowed 异常处理
  3. 人生短暂,持之以恒地做一件事情就会成功(每当烦躁心急如焚的时候就读读这篇文章吧)--转自孵化恐龙蛋
  4. 基于TCP的网络应用程序
  5. 初识Python自动化运维(一)
  6. php-ftm,FTM/MTF的激素种类
  7. onenote android同步,移动版OneNote更新 自动同步支持Office365
  8. Cocos2d-Html5--打怪升级之路
  9. 基于团队的持续优化之道
  10. 贝叶斯分类python代码_机器学习实战之朴素贝叶斯进行文档分类(Python 代码版)...