winform小程序-随机抽奖软件
下面介绍我做的一个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小程序-随机抽奖软件相关推荐
- visual studio 设计第一个WinForm小程序
WinForm小程序之消息框 首先打开visual studio 软件,然后[文件]-[新建]-[项目]-[Visual C#]-[Windows],选择Windows窗体应用程序,根据自己的需要修改 ...
- 微信小程序的抽奖页面
微信小程序的抽奖页面 做一个1-10的微信小程序抽奖界面,随机到6和8会显示中奖信息! 点开始按钮开始执行,点结束按钮结束抽奖并且判断是否中奖 wxml代码: <view>{{title} ...
- 微信小程序圆盘抽奖(扇形画圆)
微信小程序圆盘抽奖(扇形画圆) 前言 提示:这里可以添加本文要记录的大概内容: 例如:领导安排做一个微信小程序的转盘抽奖,要求可以复用,动态的修改抽奖的板块个数,由于是第一次做微信小程序踩了很多的坑, ...
- IVX低代码平台开发——微信小程序实现抽奖功能
写在前面 通过利用可视化编程实现微信小程序的抽奖功能,带大家初步了解 iVX 的强大之处. 文章目录 写在前面 iVX开发 抽奖功能实现 iVX开发 基本介绍 iVX是一个 "零代码&quo ...
- 微信小程序-转盘抽奖
微信小程序-转盘抽奖代码: lucky-draw.wxss: .lucky_draw_zp{ width: 502rpx; height: 502rpx; margin: 0 auto; positi ...
- 微信小程序用什么软件开发
微信小程序用什么软件开发?要花你多少钱呢! 现在是Z世代,新能源车.芯片.AI的时代了,不会还有企业.店铺,想通过聘请程序员,或者花个大几万去开发一个微信小程序吧. 不会吧,这不会是真的吧. 今天珍奶 ...
- 景区户外剧本杀小程序冲关软件
景区户外剧本杀小程序具有以下几个方面的市场前景: 旅游市场需求增加:随着人们对于旅游方式的多样化需求增加,景区户外剧本杀作为一种互动性强.参与感强的旅游体验项目,将会得到越来越多游客的喜爱和关 ...
- 【小程序与公众号】微信小程序九宫格抽奖(抽奖完全随机)
上图 话不多说直接上图,抽奖是顺时针又快变慢(还原抽奖的动画)进行抽奖,抽奖的几率都是随机 源码 接下来展示的就是微信小程序中的九宫格抽奖 说明 适用范围 抽奖逻辑只是原生JS,通过数据进行驱动,因此 ...
- 数字抽奖小程序_抽奖小程序凭什么成为流量的风口?怎么以最快的方式引流?...
现在不管是实体店还是线上,最需要的就是客户流量,怎么才能最快速的引流呢? 推广到用户,并且让用户推广用户,更快的裂变. 现在市面上的抽奖小程序,轻松地做到了快速裂变发展用户的效果.成为流量风口. 抽奖 ...
- 抽奖小程序 c语言,抽奖小程序 一抽奖小程序,需十位学生信息,抽出一等奖1名,二等奖2名,三等奖......
1, 一抽奖小程序,需十位学生信息,抽出一等奖1名,二等奖2名,三等奖... public static void main(String[] args) {int input = 10;Scanne ...
最新文章
- R语言构建xgboost模型:使用xgb.DMatrix保存、加载数据集、使用getinfo函数抽取xgb.DMatrix结构中的数据
- shell 脚本 自动发送邮件
- 交互设计的114条原则
- 调色师必须了解的LUT知识
- html5 canvas 获取当前坐标,html5 canvas fillRect坐标和大小的问题解决方法
- java里面比较重要的东西_Java面向对象程序设计中很重要的一些东西
- PostgreSQL 查看数据库,索引,表,表空间大小
- java dht 爬虫_python开发的 dht网络爬虫
- openg-光照贴图
- 谁是史上最强-用爬虫分析IMDB TOP250电影数据
- 二倍图三倍图什么意思_什么是二倍图三倍图
- SQL注入:搜索型注入
- SameSite Cookie问题处理解决方案(谷歌Chome浏览器出现Whitelabel Error Page或者不停请求现象解决)
- 川农在线期末机考答案2020计算机,川农网院20秋《计算机网络》期末机考
- 五使用计算机上数学课英文,数学课用英语怎么说
- 操作系统-Linux内核系列
- 【多元统计分析】聚类分析【期末复习】
- Jimmer彻底完成了,一个面向Java/Kotlin的革命性ORM
- “C不再是一种编程语言”
- FaceTime在苹果Mac上不起作用怎样解决?
热门文章
- 智商情商哪个重要_智商情商哪个更重要 辩论赛
- method not allowed 异常处理
- 人生短暂,持之以恒地做一件事情就会成功(每当烦躁心急如焚的时候就读读这篇文章吧)--转自孵化恐龙蛋
- 基于TCP的网络应用程序
- 初识Python自动化运维(一)
- php-ftm,FTM/MTF的激素种类
- onenote android同步,移动版OneNote更新 自动同步支持Office365
- Cocos2d-Html5--打怪升级之路
- 基于团队的持续优化之道
- 贝叶斯分类python代码_机器学习实战之朴素贝叶斯进行文档分类(Python 代码版)...