C_课程设计—模拟抽奖软件设计

上传人:泽*** 文档编号:74186493 上传时间:2022-04-13 格式:DOCX 页数:40 大小:286.15KB
返回 下载 相关 举报
C_课程设计—模拟抽奖软件设计_第1页
第1页 / 共40页
C_课程设计—模拟抽奖软件设计_第2页
第2页 / 共40页
C_课程设计—模拟抽奖软件设计_第3页
第3页 / 共40页
点击查看更多>>
资源描述
信息与电气工程学院软件程序设计三级项目设计说明书( 2015/2016 学年第一学期)题目 :抽奖模拟软件专业班级: 电子信息工程学生学号:学生姓名:阿三三指导教师: 吴开兴、马小进、崔冬设计周数 :2 周设计成绩:年1月8日11 . 课程设计目的 .32.技术要求及开发环境 .32.1 技术要求 .32.2 开发环境 .33 . 系统设计 .33.1系统分析 .33.2系统设计 .33.2.1系统功能模块设计 .33.2.2数据库系统设计 .43.2.3系统功能图 .43.2.4系统流程图 .54.程序设计 .54.1管理员登陆模块 .54.1.1界面分析与设计 .54.1.2主要代码 .64.2抽奖系统主体模块 .74.2.1界面分析与设计 .74.2.2主要代码 .84.3获奖名额设置模块 .114.3.1界面分析与设计 .114.2.2主要代码 .124.4奖项抽取模块 .164.4.1界面分析与设计 .164.4.2主要代码 .184.5结果查看模块 .324.5.1界面分析与设计 .324.5.2主要代码 .324.6奖品查看模块 .354.6.1界面分析与设计 .354.6.2主要代码 .364.7清空抽奖记录及退出模块 .374.7.1界面分析与设计 .374.7.2代码实现 .385. 系统调试及相关问题 .386.课程设计总结或结论 .39参考文献.3921 . 课程设计目的本设计将进一步加强学生对面向对象程序设计思想的理解,增强对C#程序语言的灵活运用。要求学生能结合数据库知识和visual studio中的 windows 窗体,实现基本的应用软件,培养学生的兴趣,掌握相关的知识,为以后积累经验。2. 技术要求及开发环境2.1 技术要求奖项规则基础数据维护随机抽奖功能能将获奖数据进行存储、管理并实现灵活的查询功能。2.2 开发环境开发环境为Visual Studio 2008,使用 .net 2.0开发。使用采用windows 窗体和 C#语言来进行实际设计。涉及到了多用户等相关操作和SQL SERVER数据库连接使用。3 . 系统设计3.1 系统分析模拟抽奖系统所需实现的基本功能是实现随机抽奖功能,并且可以查看抽奖结果、进行抽奖人数设置、 能对获奖数据进行存储以及清空抽奖记录的功能。根据功能分析出系统的设计思路如下:管理员登录方可使用本软件。设置特等奖、一等奖、二等奖、三等奖、四等奖、五等奖共六个奖项。 用户可以选择抽取中任意一个奖项。抽取每个奖项之前可以设置各个奖项获奖名额,若不进行获奖名额设置则默认使用系统设置的获奖名额。中奖号的抽取使用数字0100 作为抽奖号,编程实现抽奖号码的滚动,按下停止键时得到的数字便是中奖号,选择是否保存中奖号码。每个奖项对应的中奖号及对应奖品可以在结果查看和奖品查看中查看,抽奖结束后可以对中奖信息进行清除。3.2 系统设计系统功能模块设计系统管理员登录模块:账号登录对中奖信息进行管理。抽奖设置模块:能够对抽取的各个奖项人数进行设置。抽奖模块:利用抽奖号滚动的方法实现抽奖功能.查看结果模块:能够查看当前各个奖项对应的的中奖号码。3查看奖品模块:能够查看各个奖项对应的奖品。清除结果模块:删除中奖信息。数据库系统设计管理员信息表(Table1 )列名数据类型长度是否为主键是否为空注释UserNameChar50是否管理员账号UsrPswChar50否否登录密码图 3-1系统功能图图 3-24系统流程图图 3-34. 程序设计4.1 管理员登陆模块界面分析与设计本软件可以可以查看抽奖结果、进行获奖名额设置、能对获奖数据进行存储以及清空抽奖记录。 而这些功能需要用户用户通过登录验证密码后方可使用, 故设计用户登录模块界面如图 4-1 所示。5图 4-1主要代码privatevoid button1_Click(objectsender,EventArgse)stringconnString = (三级项目抽奖软件抽奖软件 Database1.mdf;Integrated Security=True;UserInstance=True);SqlConnectionconn =new SqlConnection(connString);conn.Open();stringsql =select * from denglu where Name=+ ;SqlCommandcmd =new SqlCommand(sql, conn);SqlDataReaderdr = cmd.ExecuteReader();if(dr.Read()ResultForm frm =new ResultForm ();frm.Show();this.Hide();6elseMessageBox.Show( 用户名或密码错误 , 出错了 ,MessageBoxButtons .OK,MessageBoxIcon .Error);conn.Close();ResultFormre =new ResultForm ();re.ShowDialog();4.2 抽奖系统主体模块界面分析与设计抽取每个奖项之前用户可以按抽奖设置按钮设置特等奖、一等奖、 二等奖、三等奖、四等奖、 五等奖的获奖名额。用户可以选择抽取其中任意一个奖项,点击开始抽奖按钮进行抽奖。每个奖项对应的中奖号及对应奖品可以在结果查看和奖品查看中查看,抽奖结束后可以点击清空记录按钮对中奖信息进行清除。抽奖系统主体模块界面如图4-2 所示。图 4-27主要代码privatevoid btnstart_Click(objectsender,EventArgs e)if(rdo1.Checked =true )LuckyForm luck1 =new LuckyForm();luck1.choose = 1;luck1.ShowDialog();elseif(rdo2.Checked =true )LuckyForm luck2 =new LuckyForm();luck2.choose = 2;luck2.ShowDialog();elseif(rdo3.Checked =true )LuckyForm luck3 =new LuckyForm();luck3.choose = 3;luck3.ShowDialog();elseif(rdo4.Checked =true )LuckyForm luck4=new LuckyForm();luck4.choose = 4;luck4.ShowDialog();elseif(rdo5.Checked =true )LuckyForm luck5 =new LuckyForm();8luck5.choose = 5;luck5.ShowDialog();elseif(rdot.Checked =true )LuckyForm luck =new LuckyForm();luck.choose = 0;luck.ShowDialog();/ 查看结果privatevoid btnresult_Click(objectsender,EventArgs e)frm1 cha =new frm1 ();cha.Show();/ 查看奖品privatevoid btnsee_Click(objectsender,EventArgs e)ShowFormre =new ShowForm();re.ShowDialog();/ 退出privatevoidLoginForm_FormClosing(objectsender,FormClosingEventArgse)if(restart=false )DialogResultre =MessageBox.Show( 您要退出抽奖系统吗? , 关闭提示 ,MessageBoxButtons .YesNo,MessageBoxIcon .Information);if(re =DialogResult.Yes)9DialogResultree = MessageBox.Show( 退出后本次抽奖记录将消失,确认要退出吗 ? , 重要提醒 ,MessageBoxButtons .OKCancel,MessageBoxIcon .Question);if(ree =DialogResult.Cancel)e.Cancel =true ;elsee.Cancel =true ;privatevoid LoginForm_FormClosed(objectsender,FormClosedEventArgse)GC.Collect();this.Dispose();/ 清空privatevoid btnrestart_Click(objectsender,EventArgs e)DialogResultre =MessageBox.Show( 您确定要清空抽奖记录吗? , 提示 ,MessageBoxButtons .OKCancel,MessageBoxIcon .Information);if(re =DialogResult.OK)restart =true ;Application.Restart();104.3 获奖名额设置模块界面分析与设计用户点击抽奖设置按钮后弹出获奖名额设置窗口,用户可以修改每个奖项抽出的获奖人数。若用户设置名额超出该奖项设定个数,则弹出用户设置名额超出范围对话框,要求用户重新修改获奖人数。获奖名额设置模块界面设计如图4-3 、 4-4 所示。图 4-311图 4-4主要代码privatevoid SetForm_Load( objectsender,EventArgse)txt.Text =UserHelper .te.ToString();txt1.Text =UserHelper.one.ToString();txt2.Text =UserHelper.two.ToString();txt3.Text =UserHelper.three.ToString();txt4.Text =UserHelper.four.ToString();txt5.Text =UserHelper.five.ToString();/ 保存设置privatevoid saveset()tryUserHelper .te =Convert .ToInt32(txt.Text);UserHelper .one =Convert .ToInt32(txt1.Text);12UserHelper .two =Convert .ToInt32(txt2.Text);UserHelper .three =Convert .ToInt32(txt3.Text);UserHelper .four =Convert .ToInt32(txt4.Text);UserHelper .five =Convert .ToInt32(txt5.Text);UserHelper .allset =Convert .ToInt32(txt.Text) +Convert .ToInt32(txt1.Text) +Convert .ToInt32(txt2.Text) +Convert .ToInt32(txt3.Text) +Convert .ToInt32(txt4.Text) +Convert .ToInt32(txt5.Text);privatebool vliainput()bool result =true ;tryinttxtno1 =Convert .ToInt32(txt1.Text);if(txtno1 100)txt1.Clear();txt1.Focus();MessageBox.Show( 你输入的数字大小不符合! 请输入 100之间的数字! , 错误提示 , MessageBoxButtons .OK, MessageBoxIcon .Information);result =false ;catch ( Exception )txt1.Clear();txt1.Focus();MessageBox.Show( 输入不符合要求! , 错误提示13 , MessageBoxButtons .OK, MessageBoxIcon .Stop);result =false ;tryinttxtno2 =Convert .ToInt32(txt2.Text);if(txtno2 1000)txt2.Clear();txt2.Focus();MessageBox.Show( 你输入的数字大小不符合! , 错误提示 ,MessageBoxButtons .OK,MessageBoxIcon .Information);result =false ;catch ( Exception )txt2.Clear();txt2.Focus();MessageBox.Show( 请输入数字 ! , 错误提示 , MessageBoxButtons .OK, MessageBoxIcon .Stop);result =false ;tryinttxtno3 =Convert .ToInt32(txt3.Text);if(txtno3 1000)txt3.Clear();txt3.Focus();14MessageBox.Show( 你输入的数字大小不符合! , 错误提示 ,MessageBoxButtons .OK,MessageBoxIcon .Information);result =false ;catch ( Exception )txt3.Clear();txt3.Focus();MessageBox.Show( 请输入数字 ! , 错误提示 , MessageBoxButtons .OK,MessageBoxIcon .Stop);result =false ;tryinttxtno4 =Convert .ToInt32(txt4.Text);if(txtno4 1000)txt4.Clear();txt4.Focus();MessageBox.Show( 你输入的数字大小不符合! , 错误提示 ,MessageBoxButtons .OK,MessageBoxIcon .Information);result =false ;catch ( Exception )txt4.Clear();txt4.Focus();MessageBox.Show( 请输入数字 ! , 错误提示 , MessageBoxButtons .OK,15MessageBoxIcon .Stop);result =false ;tryinttxtno5 =Convert .ToInt32(txt5.Text);if(txtno5 1000)txt5.Clear();txt5.Focus();MessageBox.Show( 你输入的数字大小不符合! , 错误提示 ,MessageBoxButtons .OK,MessageBoxIcon .Information);result =false ;catch ( Exception )txt5.Clear();txt5.Focus();MessageBox.Show( 请输入数字 ! , 错误提示 , MessageBoxButtons .OK, MessageBoxIcon .Stop);result =false ;returnresult;4.4 奖项抽取模块界面分析与设计16中奖号的抽取使用数字0100 作为抽奖号, 编程实现抽奖号码的滚动,按下停止键时得到的数字便是中奖号,选择是否保存中奖号码。若选择保存则显示保存的号码,不保存则重新抽取获奖号。 界面右下角显示设置的获奖名额个数及已抽出的获奖号个数。若获奖号全部抽出时,用户继续抽取该奖项,则弹出提醒对话框,提醒用户该奖项已全部抽出,并返回抽奖主界面。奖项抽取模块界面如图4-5、 4-6 所示。图 4-517图 4-6主要代码publicpartialclassLuckyForm :Formpublicint choose;intpernum;/ 总人数 ( 图片的数量 )inti = 0;/ 图片下标 ( 总人数 )intindex;/ 中奖者的下标 ( 滚动下标 )intdj = 1;/ 抽奖等级intsave=0;/ 是否保存Stringwinner= ;/ 中奖者下标boolgo =true ;/ 判断开始按钮intwined = 0;/ 已抽出的中奖人数Randomran =new Random( DateTime .Now.Millisecond);18inttmpadd = 0;privatestaticintaset = 0;privatestaticintsetnum=0;publicLuckyForm()InitializeComponent();privatevoid zhongjianglist()if(dj = 1)foreach( stringainUserHelper .yiwinner)if(a !=null )elsebreak ;elseif(dj = 2)foreach( stringbinUserHelper .erwinner)if(b !=null )19elsebreak ;elseif(dj = 3)foreach( stringcinUserHelper .sanwinner)if(c !=null )elsebreak ;elseif(dj = 4)foreach( stringdinUserHelper .siwinner)if(d !=null )else20break ;elseif(dj = 5)foreach( stringeinUserHelper .wuwinner)if(e !=null )elsebreak ;elseif(dj = 0)foreach( stringtinUserHelper .twinner)if(t !=null )elsebreak ;21privatevoid LuckyForm_Load( objectsender,EventArgs e)try/ 显示抽几等奖if(choose = 1)lblno.Text = 一等奖 ;lblset.Text =UserHelper .one.ToString();/ 设置名额lblcc.Text = readnum(1).ToString();/ 抽出名额dj = 1;elseif(choose = 2)lblno.Text = 二等奖 ;lblset.Text =UserHelper .two.ToString();lblcc.Text = readnum(2).ToString();dj = 2;elseif(choose = 3)lblno.Text = 三等奖 ;lblset.Text =UserHelper .three.ToString();lblcc.Text = readnum(3).ToString();dj = 3;22elseif(choose = 4)lblno.Text = 四等奖 ;lblset.Text =UserHelper .four.ToString();lblcc.Text = readnum(4).ToString();dj = 4;elseif(choose = 5)lblno.Text = 五等奖 ;lblset.Text =UserHelper .five.ToString();lblcc.Text = readnum(5).ToString();dj = 5;elseif(choose = 0)lblno.Text = 特等奖 ;lblset.Text =UserHelper .te.ToString();lblcc.Text = readnum(0).ToString();dj = 0;zhongjianglist();/ 读取用户信息放到数组中去默认最大人数是UserHelper .sname =new string500;StreamReader sr =newStreamReader ( staff.txt,System.Text.Encoding .Default);while (!sr.EndOfStream)UserHelper .snamei = sr.ReadLine();23i+;sr.Close();pernum = i;/ 加载单项抽出的人数save =Convert .ToInt32(lblcc.Text);/ 加载抽出的总人数wined = readnum(1) + readnum(2) + readnum(3) + readnum(4) + readnum(5) + readnum(0);catch ( Exception )MessageBox.Show( 抱歉 , 启动失败 ! , 系统 , MessageBoxButtons .OK, MessageBoxIcon .Exclamation);this .Close();/ 读取抽取的名额privateintreadnum( intnum)intre = 0;/ 计数器if(num = 1)foreach( stringninUserHelper .yiwinner)if(n !=null )re+;else24break ;elseif(num = 2)foreach( stringninUserHelper .erwinner)if(n !=null )re = re + 1;elsebreak ;elseif(num = 3)foreach( stringninUserHelper .sanwinner)if(n !=null )re = re + 1;elsebreak ;25elseif(num = 4)foreach( stringninUserHelper .siwinner)if(n !=null )re = re + 1;elsebreak ;elseif(num = 5)foreach( stringninUserHelper .wuwinner)if(n !=null )re = re + 1;elsebreak ;26elseif(num = 0)foreach( stringninUserHelper .twinner)if(n !=null )re = re + 1;elsebreak ;returnre;/ 图片游动控制privatevoid tmrchoose_Tick(objectsender,EventArgs e)index = ran.Next(1, i - 1);this.lblname.Text =UserHelper .snameindex;/ 点击开始抽奖privatevoid btnonoff_Click(objectsender,EventArgs e)/ 图片张数大于if(pernum 0)27/ 判断按键开始抽奖if(go)/ 当抽出了所有名额提示返回if( Convert .ToInt32(lblcc.Text) =Convert .ToInt32(lblset.Text)DialogResultre =MessageBox.Show( 您设置的中奖人数已经全部抽出 , 要返回吗 ? , 提醒 ,MessageBoxButtons .OKCancel,MessageBoxIcon .Information);if(
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!