抽奖程序#精选.docx
- 文档编号:4855995
- 上传时间:2022-12-10
- 格式:DOCX
- 页数:13
- 大小:854.35KB
抽奖程序#精选.docx
《抽奖程序#精选.docx》由会员分享,可在线阅读,更多相关《抽奖程序#精选.docx(13页珍藏版)》请在冰豆网上搜索。
抽奖程序#精选
抽奖程序
1引言
1.1系统开发背景和意义
随着科学技术的不断进步,计算机科学日渐成熟,其强大的功能已为人们深刻认识,它已进入人类社会的各个领域并发挥着越来越重要的作用。
当今世界能用到抽奖系统的地方越来越多,比如超市,比如春节联欢晚会。
开发合理可用的抽奖系统可以安全高效的抽出幸运的人,由于很多人都有贪图小便宜的特点,利用抽奖系统可以在商品促销中实现更好的盈利。
1.2课题内容
要求:
1)能够在电脑上抽奖,分别抽取4等奖、3等奖、2等奖、1等奖、特等奖,设定每种奖项的人数后分别一次抽取每个奖项。
2)按给定的总人数以序号或电话号码为抽奖依据。
3)要求屏幕上能够显示抽奖的号码滚动过程,按“停止”按钮给出抽奖结果。
2系统需求分析及相关技术介绍
2.1系统需求分析
抽奖系统基于windows系统用c#语言和winfrom控件,可以实现输入抽奖人数和奖项人数,并再屏幕上实现抽奖滚动,打印出获奖的人数.最后保存在文件里.
2.1.1用户需求
本系统主要针对商店管理人员,他们输入要抽奖的人总号码和各奖项的人数,再用抽奖程序得到相应的人并保存下来。
2.1.2功能需求
可以根据用户输入的人数再随机产生获奖人数,根据获奖的人数抽出获奖人,打印在屏幕上,并且能够保存获奖数据。
2.2系统的可行性分析
按给定的总人数以序号为抽奖依据,利用c#窗体应用可以实现屏幕上能够显示抽奖的号码滚动过程,按“停止”按钮给出抽奖结果。
用计时器实现滚动效果,再用文件操作实现文件保存.
2.3开发平台和开发工具介绍
开发平台windows
开发工具MicrosoftVisualStudio2013
3总体设计
3.1系统模块设计
3.1.1抽奖人数界面设计
抽奖界面如上:
其中的确定按钮为核心代码(如下):
privatevoidbutton1_Click(objectsender,EventArgse)
{
try
{
L=Convert.ToInt32(textBox1.Text);
Lv0=Convert.ToInt32(textBox2.Text);
Lv1=Convert.ToInt32(textBox3.Text);
Lv2=Convert.ToInt32(textBox4.Text);
Lv3=Convert.ToInt32(textBox5.Text);
Lv4=Convert.ToInt32(textBox6.Text);
}
catch(Exceptionerr)
{
MessageBox.Show(err.Message,"信息提示",MessageBoxButtons.OK);
this.Close();
}
Form4myform=newForm4();
myform.Owner=this;
myform.Show();
}
主要功能是绑定texttBox数据到变量中,后面的窗口可以继承这些变量达到抽奖人数设定的目的.
3.1.2运行抽奖界面设计
点击确认后跳转至下图界面:
这个页面主要是抽奖,有三个按钮,点击开始抽奖就会开始,数字会滚动打印在页面上.然后点击抽奖按钮,会产生一个获奖名单,并打印在相应的地方,点击结束按钮获奖名单会保存在text文件中.
代码如下:
1.数据绑定
privatestaticinti=0;
privatestaticintk=Form6.L;
privatestaticintXv0=Form6.Lv0;
privatestaticintXv1=Form6.Lv1;
privatestaticintXv2=Form6.Lv2;
privatestaticintXv3=Form6.Lv3;
privatestaticintXv4=Form6.Lv4;
绑定第一个的窗体数据到第二个窗体上,实现数据共享.
2.两个计时器
Timer1:
textBox1.Text=Convert.ToString(ra.Next(0,k-1));
if(Convert.ToInt32(textBox1.Text)>=0&&Convert.ToInt32(textBox1.Text)<=k)
{
vScrollBar1.Value=Convert.ToInt16(textBox1.Text);
}
if(Convert.ToInt32(textBox1.Text)>k)
{
textBox1.Text=Convert.ToString(Convert.ToInt32(textBox1.Text)%k);
vScrollBar1.Value=Convert.ToInt16(textBox1.Text);
}
/*将数字滚动和滚动条同步*/
Timer2;
button2_Click(sender,e);/*自动定时调用button2_Click*/
3.三个按钮:
开始按钮(开始运行抽奖):
privatevoidbutton1_Click(objectsender,EventArgse)
{
timer1.Enabled=true;
timer1.Interval=2;
/*点击按钮开启计时器*/
timer2.Enabled=true;
timer2.Interval=400;
}
抽奖按钮(点击抽奖);
privatevoidbutton2_Click(objectsender,EventArgse)
{
timer1.Enabled=false;
System.Threading.Thread.Sleep(32);
if(Xv0>0)/*利用判断和循环抽取指定人数*/
{
if(listBox1.Items.IndexOf(Convert.ToString(textBox1.Text))==-1)/*判断获奖人是否相同*/
{
listBox1.Items.Add(Convert.ToString(textBox1.Text));
button1_Click(sender,e);
Xv0--;
}
elsebutton1_Click(sender,e);
}
else
if(Xv1>0)
{
if(listBox2.Items.IndexOf(Convert.ToString(textBox1.Text))==-1)
{
listBox2.Items.Add(Convert.ToString(textBox1.Text));
button1_Click(sender,e);
Xv1--;
}
elsebutton1_Click(sender,e);
}
else
if(Xv2>0)
{
if(listBox3.Items.IndexOf(Convert.ToString(textBox1.Text))==-1)
{
listBox3.Items.Add(Convert.ToString(textBox1.Text));
button1_Click(sender,e);
Xv2--;
}
elsebutton1_Click(sender,e);
}
else
if(Xv3>0)
{
if(listBox4.Items.IndexOf(Convert.ToString(textBox1.Text))==-1)
{
listBox4.Items.Add(Convert.ToString(textBox1.Text));
button1_Click(sender,e);
Xv3--;
}
elsebutton1_Click(sender,e);
}
else
if(Xv4>0)
{
if(listBox5.Items.IndexOf(Convert.ToString(textBox1.Text))==-1)
{
listBox5.Items.Add(Convert.ToString(textBox1.Text));
button1_Click(sender,e);
Xv4--;
}
elsebutton1_Click(sender,e);
}
}
结束按钮(结束抽奖并保存):
privatevoidbutton3_Click(objectsender,EventArgse)
{
File.Delete(path);
FileStreamfs=File.OpenWrite(path);
StreamWritersw=newStreamWriter(fs);
sw.WriteLine("特等奖:
");
for(intp=0;p sw.WriteLine(listBox1.Items[p].ToString());//将每一个item写进文件 sw.WriteLine("一等奖: "); for(intp=0;p sw.WriteLine(listBox2.Items[p].ToString()); sw.WriteLine("二等奖: "); for(intp=0;p sw.WriteLine(listBox3.Items[p].ToString()); sw.WriteLine("三等奖: "); for(intp=0;p sw.WriteLine(listBox4.Items[p].ToString()); sw.WriteLine("四等奖: "); for(intp=0;p sw.WriteLine(listBox5.Items[p].ToString()); sw.WriteLine("END"); sw.Close(); fs.Close(); this.Close(); } 4.控件适应窗体大小代码 usingSystem.Collections.Generic; usingSystem.Windows.Forms; namespaceWindowsFormsApplication1 { classAutoSizeFormClass { //声明结构,只记录窗体和其控件的初始位置和大小。 publicstructcontrolRect { publicintLeft; publicintTop; publicintWidth; publicintHeight; } publicList intctrlNo=0;//1; //记录窗体和其控件的初始位置和大小, publicvoidcontrollInitializeSize(ControlmForm) { controlRectcR; cR.Left=mForm.Left;cR.Top=mForm.Top;cR.Width=mForm.Width;cR.Height=mForm.Height; oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可 AddControl(mForm);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用 } privatevoidAddControl(Controlctl) { foreach(Controlcinctl.Controls) { controlRectobjCtrl; objCtrl.Left=c.Left;objCtrl.Top=c.Top;objCtrl.Width=c.Width;objCtrl.Height=c.Height; oldCtrl.Add(objCtrl); if(c.Controls.Count>0) AddControl(c);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用 } } //控件自适应大小, publicvoidcontrolAutoSize(ControlmForm) { if(ctrlNo==0) { controlRectcR; //cR.Left=mForm.Left;cR.Top=mForm.Top;cR.Width=mForm.Width;cR.Height=mForm.Height; cR.Left=0;cR.Top=0;cR.Width=mForm.PreferredSize.Width;cR.Height=mForm.PreferredSize.Height; oldCtrl.Add(cR);//第一个为"窗体本身",只加入一次即可 AddControl(mForm); } floatwScale=(float)mForm.Width/(float)oldCtrl[0].Width;//新旧窗体之间的比例,与最早的旧窗体 floathScale=(float)mForm.Height/(float)oldCtrl[0].Height;//.Height; ctrlNo=1;//进入=1,第0个为窗体本身,窗体内的控件,从序号1开始 AutoScaleControl(mForm,wScale,hScale);//窗体内其余控件还可能嵌套控件(比如panel),要单独抽出,因为要递归调用 } privatevoidAutoScaleControl(Controlctl,floatwScale,floathScale) { intctrLeft0,ctrTop0,ctrWidth0,ctrHeight0; //intctrlNo=1;//第1个是窗体自身的Left,Top,Width,Height,所以窗体控件从ctrlNo=1开始 foreach(Controlcinctl.Controls) { ctrLeft0=oldCtrl[ctrlNo].Left; ctrTop0=oldCtrl[ctrlNo].Top; ctrWidth0=oldCtrl[ctrlNo].Width; ctrHeight0=oldCtrl[ctrlNo].Height; //c.Left=(int)((ctrLeft0-wLeft0)*wScale)+wLeft1;//新旧控件之间的线性比例 //c.Top=(int)((ctrTop0-wTop0)*h)+wTop1; c.Left=(int)((ctrLeft0)*wScale); c.Top=(int)((ctrTop0)*hScale); c.Width=(int)(ctrWidth0*wScale); c.Height=(int)(ctrHeight0*hScale); ctrlNo++; if(c.Controls.Count>0) AutoScaleControl(c,wScale,hScale); } } } } 4运行结果 输入数据如下: 点击确定,再点击开始: 点击结束,打开text: 5总结 通过这次课程设计,我知道了c#窗体的用法和面向对象语言的内容,明白了通过继承和封装实现数据共享和保护,掌握了winFrom的基本设计思路和编写windows窗体应用的技巧. 最新文件仅供参考已改成word文本。 方便更改如有侵权请联系网站删除
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 抽奖 程序 精选