admin管理员组

文章数量:1582357

2024年6月22日发(作者:)

装备制造与教育第二十八卷

吴鹏基于 抽奖系统设计与实现 

工程技术研究与应用主持:李艳 

者扫描该编码来准备抽奖数据,必须要考虑多种数 

的影响,抽奖现场的机器都是 1一作中随机挑选的机 

据来源的信息手机方式及数据格式的整理,在实现 

功能的基础还要考虑方便操作。 

3)抽检算法必须保证公平公正——抽奖算法是 

是抽奖系统的核心,且根据实际有多种算法,比如以 

公平公正为原则的抽奖算法,也有以照顾某些特殊 

器,操作系统多样,安装的基础软件也千差万别,最 

重要的是,你不能要求现场的机器都根据你开发环 

境的要求安装所有的基础支撑工具软件,这样将会 

使得抽奖软件变成只能专业人士操作,而普通使用 

者不会使用的结果,这与抽奖软件的实际应用大相 

径庭,故系统的设计之初就要考虑到如何适应各种 

复杂的环境同时提供简单明了的操作方式,让会用 

号码的抽奖算法,本文基于企业抽奖的实际,采取以 

公正公平为原则的抽奖算法,这里就需要要考虑如 

圜 

下问题:a、抽奖顺序必须是随机的,j亏抽奖信息的登 

记顺序无关;b、在同一轮抽奖过程中,不论是否中 

奖,每个号码的中奖几率要一致;c、中奖的号码将不 

能再次参与抽奖; 

4)抽奖软件界面风格多样——抽奖软件的界面 

风格涉及到几个方面,首先是根据活动的特征需要 

准备不同的界面风格,其次是抽奖现场展示的方案, 

最后是中奖信息的展示方案,这里最重要的是前两 

者,必须考虑相关的机制来实现界面风格的快速切 

换 抽奖现场展示的效果,对于中奖信息的归档查 

看不涉及过多参与者,可重点关注正确展示即可。 

除卜-述功能性需求外,还有如下几个非功能性 

需求: 

1)抽检软件开发的时问短,从抽奖软件计划开 

发到抽奖现场使用只有4天时间,功能性需求只有 

抽奖算法的要求明确,其他的功能性需求及非功能 

性要求都没明确,故选型技术方案必须要成熟,开发 

效率高,后期修改调整便捷。本文选用 T基于c#技 

术的窗体程序来实现抽奖软件的整体方案,c#窗体 

程序技术成熟、控件种类丰富且封装性好、开发效率 

高、后续维护方便快捷,实现中只需要考虑具体的业 

务逻辑处理即可,而相关的技术细节将有微软做统 

封装并做相关的属性设置既可以达到效果 ; 

2)抽奖规则能灵活调整,这里的抽奖规则是指 

具体的抽奖方式:是先抽一等奖还是先抽三等奖?是 

次性全部抽完还是一次只抽取一个奖项?是自动 

完成全部抽奖还是人为干预完成特定的抽奖?这些 

规则根据不同的抽奖活动,不同的主办单位有不同 

的要求,抽奖软件设计及实现中必须要考虑好,允许 

使用者灵活设置相关规则,以利于实际的应用; 

3)抽奖软件交互流程友好,即从软件打开,到抽 

奖过程完成,交互方式要简洁友好,自然方便,从基 

本信息设置,抽奖规则设置,正式抽奖及抽奖结果查 

看,除了主流程流畅自然外,每一个具体的模块涉及 

到的操作,也需要尽量减少人为干预,符合操作者的 

习惯,不如涉及到条码扫描信息录入,是每次扫描完 

按键盘回车表示录入完成,还是扫描枪扫描完成就 

自动保存信息,是需要充分考虑使用者习惯的; 

4)兼容抽奖现场多种环境,这个规则尽管从没 

有明确提 ,但是对于方案的选型却有着I-分重要 

计算机的人都能够快速上手使用。 

2 系统设计 

针对上述需求,系统首先要满足功能性需求同 

时要充分考虑非功能性需求,在系统设计过程中首 

先考虑的是整体业务流程,其次考虑的是功能模块, 

最后考虑针对特殊非功能性需求做具体方案的选 

犁,在上述3步骤完成后,才开始编码、测试及现场 

试用。 

根据抽奖软件功能性需求,抽奖软件的业务流 

程不会特别复杂,属于正向直线型模式,即从抽奖基 

本信息设置,抽奖数据录入,现场抽奖及抽奖结果查 

看,这几个标准的步骤是固定的且不会更改的也不 

会有多种分支或者回退的业务逻辑。具体的主体业 

务流程图如下: 

图1 抽奖业务主体流程 

上述业务流程中,对于抽奖规则设置没有作为 

主流程,而是作为其中一个流程节点的重要补允,足 

基于如下考虑,抽奖业务主流程中的节点顺序在业 

务上是有先后的,抽奖原始数据必须要依赖于抽奖 

活动,即此次参与抽奖的原始数据必须关联到某~一 

具体的抽奖活动,只有上述流程中1、2步骤完成后 

才能现场抽奖,只有抽奖完成才能查看抽奖结果,且 

旦开始抽奖,1、2步将不允许做任何修改,而对于 

抽奖规则相对独立,不同的抽奖活动可以设置不同 

的抽奖规则,这里将其放入现场抽奖的预处理环节, 

即做现场抽奖的时候,首先必须要设置本次抽奖的 

规则,既实现了抽奖规则的灵活可配置又实现lr抽 

奖活动与抽奖规则的统一绑定。 

抽奖软件的功能模块主要针对抽奖业务流程, 

同时考虑了多种非功能性需求,主要包括如下几个 

模块:抽奖基本信息设置模块,包括抽奖活动基本信 

息、抽奖等级基本信息;抽奖数据录入模块,提供批 

量导人、手E输入、条码录入等方式;抽奖规则设施 

模块,根据抽奖等级信息动态产生,提供自动全部抽 

工程技术研究与应用主持:李艳 

取模式及单一手工选择模式,针对每种模式提供顺 

序、倒序两种方式;现场抽奖模块,主要提供抽奖数 

据滚动显示,抽奖启动、停止的控制,中奖号码产生 

及显示;抽奖结果处理模块,主要是抽奖结果的保存 

数据并发等功能,对文本存储模式将都是挑战,这里 

必须考虑数据存储数据结构来保证数据在单机或者 

并发情况下的增删改查功能能够高效快速的实现, 

同时要求复杂度较低、实现方便快速。 

及显示,主要提供了抽奖数据加密解密、抽奖数据存 

档、抽奖数据查询等;界面配置模块,主要支持界面 

风格的灵活切换;存储模块,主要考虑到通用扩展, 

本文整体的数据存储模型,总结抽奖阶段数据 

处理的特点,信息基本存储结构采用两种模式,其中 

之一是key—value模式,且一个key—value键值对作 

为一个完整的信息单元,作为文本文件的一行进行 

存储,其中key为设置信息的类别,value为具体的 

采用了文件作为主要数据存储载体。具体的功能模 

块图如下: 

基 抽 

抽 抽 

本 

奖 

奖 

现 

奖 

界 

信 

数 

规 

场 结 

面 

息 

据 

则 抽 果 

配 

设 

录 

设 

奖 

处 

置 

置 

入 

施 

模 

理 

模 

模 

模 

模 

块 

模 

块 

块 

块 

块 

块 

软件功能模块 

图2抽象软件系统功能模块图 

各个功能模块涉及到的具体功能点,在图中没 

有详细展示,主要由于具体功能点较多,且会根据需 

求做适当调整。上文中已经此已做过简要介绍,这里 

不再重复。 

3系统关键模块 

抽奖软件的关键模块包括如下几部分:存储模 

型是所有数据存储的载体,是整个系统的基石;核心 

算法的执行机制及核心算法模块是抽奖软件的灵 

吴鹏基于n 抽奖系统设计与实现 

魂;抽奖规则控制模块是抽奖软件重要的辅助功能; 

界面模块包括了界面展示及交互两个重要部分是抽 

奖软件的“门面”,下边将对此逐一做详细介绍。 

3.1 存储模型 

存储模型主要涉及到选型及具体实现的数据结 

构,本文中数据存储模型的选型重点考虑各分厂的 

实际情况,特别是抽奖现场的多样性,采取了文件模 

型,同时提供了对于数据库模型的支持,通过配置开 

关进行切换,文件存储模型将会兼容各种操作系统 

及应用环境,且不用额外安装任何环境软件,不用担 

心数据库版本及数据库软件的安装等问题,即实现 

了适应多环境的数据存储,文本存储模型,对信息可 

以做完整记录,但由于是无结构的不能体现数据间 

的逻辑关系,信息的增、删、改、查及信息重复验证、 

值;另外一个是流水线存储模式,即每一条业务数据 

作为一行,无任何额外的附加信息,尽管损失了业务 

语义,却保证了原始数据的干净无污染,后续的业务 

逻辑处理不用做数据预处理,提高了数据处理的效 

率,两者的图例如图3、图4: 

抽奖时间=xxxx年xx月xx日 

活动名称=XXxx年xx活动 

图3 key—value存储模式 

抽奖信息1 

抽奖信息2 

图4流水线存储模式 

3.2核心算法 

抽奖的核心算法主要考虑抽奖的公平公正,即 

所有抽奖人抽奖机会均等、所有抽奖人中奖机会均 

等且中奖的人不允许重复中奖,本文设计了如下的 

抽奖算法:首先将将参与抽奖的数据全部加入内存 

并随机混序;其次是对加载的数据做清洗——将在 

所有将参与抽奖数据集合里清洗掉已经中奖的数据 

及已经抽过奖的数据;再次在清洗后的数据集合范 

围内产生随机数选取当前抽奖号,且被选中的号码 

装备制造与教育第二十八卷

立即归入已抽奖数据集合的同时从待抽奖集合中除 

去,直到待抽奖数据集合为空(保证了在一次抽奖过 

程中抽奖机会的人人均等);为了保证抽奖构成的连 

续性,没有人工干预结束抽奖且带抽奖数据集合已 

经为空的同时将已经抽奖数据集合全部导入待抽奖 

数据保证抽奖的不中断;最后对于中奖号码直接记 

录为中奖数据集合,同时从待抽奖数据集合及已抽 

奖数据集合中除去 。 

抽奖的核心数据结构是c#中的 个List对 

象,其中List<string>al1BeingLuckyer表示所有待抽 

奖的数据集合;List<string>hisAllBeingLuckyer表示 

当次已经抽过奖的集合;List<string>winLuckyer表 

示中奖集合;获取当次抽奖号码算法源代码如下: 

private string genLuekyer0 

装备制造与教育第二十八卷

吴鹏基于n 抽奖系统设计与实现 

工程技术研究与应用主持:李艳 

{ 

每次展示的抽奖信息的多少,一般为5—10个当前 

抽奖号码,这样上述举例中要抽取3等奖至少需要 

5次操作,就需要在程序中明确区分当前点击的开 

始抽奖是抽不同等级的奖项还是同一奖项,相关的 

逻辑控制还必须要满足抽奖本身的规则及抽奖规 

int initmlm=allBeingLuckyer.Count;//当前抽奖 

数据 

int hisinitnum=hisAllBeingLuckyer.Count;//当 

前抽奖数据 

圈 

string tempStr=null;//当前选中的抽奖号码,作 

为函数返回值 

if(initnum==0&&hisinitnum==O)//抽奖数据 

不存在的异常处理逻辑 

{ 

return null; 

} 

if Iifnitnum:=o)//当前抽奖数据为空将涉及到 

迁移已抽奖数据的处理逻辑 

{ 

allBeingLuckyer.AddRange IihisAllBeingLuekyer. 

Distinct0.ToList0); 

hisAllBeingLuckyer.Clear0; 

} 

Random rd=new Random fnew Guido.GetHash— 

CodeO); 

int tempNum=rd.Next(0,initnum);/在所有带抽 

奖范围内产生随机数 

tempStr=a1lBeingLuckyer.ElementAt0empNum);// 

获取当前抽奖号码 

aJ1BeingLuckyer.RemoveAt litempNum);//从当前 

抽奖号码范围内移除该数据 

sAllBeingLuckyer.Add I[tempStr);//将当前抽奖 

号码加入已抽奖集合; 

rd=null;//清空随机数对象 

return tempStr;//返回结果 

} 

3.3抽奖规则控制 

抽奖业务规则设置重点解决如何抽取设置的奖 

项问题,本抽奖系统中重点考虑两点:1、是否连续抽 

奖即一次抽取所有的奖项等级还是一次只抽取一个 

中奖等级;2、抽奖顺序如何控制即按照一二 等奖 

顺序抽取还是逆序抽取等,这些业务规则的设置本 

身并不复杂,通过c#窗体程序很容易就能实现,抽 

奖规则控制最复杂的地方是在抽奖过程中应用上述 

业务规则——首先是抽奖活动本身的逻辑,比如如 

何控制抽奖的开始于抽奖的结束?抽奖人数与中奖 

人数设置不合理?其次是抽奖规则的控制逻辑如 

文所述,最后还有显示控制逻辑,抽奖界面一次能够 

显示的信息是有限制的,比如设置3等奖中奖人数 

为50人,如果同时将50个抽奖信息在屏幕上滚动, 

那么每个信息将会被缩放到很小,甚至很难看清楚, 

实际应用中通常需要根据使用者的屏幕分辨率确定 

则,这样几块逻辑的综合将会非常的复杂。本文的业 

务处理逻辑伪代码如下: 

首先判断当前动作类别(开始抽奖l解说抽奖) 

i 连续抽奖&&当前等级抽奖完成) 

{ 

i 逆j- 抽奖) 

逆序获取当前最后一次奖项的抽奖基本信息 

else 

顺序获取当前最后一次奖项的抽奖基本信息 

) 

抽奖数据、抽奖基本信息异常处理 

根据是否连续抽奖来获取抽奖等级及中奖人数 

等关键信息 

调用本文第 节中的抽奖算法开始抽奖 

}else 

{ 

抽奖数据保存 

已巾奖数据的处理 

抽奖界面控制——是否允许继续抽奖将根据当 

前抽奖是否完成以及是否连续抽奖的业务逻辑共同 

决定; 

} 

3.4界面设计 

抽奖软件的界面设计重点包含两部分内容:其 

是抽奖流程的人机交互方式,如何能够更加符合 

操作人员的习惯,使得整体的抽奖过程能够便捷简 

单,有计算机基础的人不需要任何培训既可以直接 

操作使用;另外一个是需要界面风格的灵活替换,包 

括图片内容及图片的展示方式,不同的单位、不同的 

活动对于界面的要求是不一样的,都需要根据自己 

的特点来定制,这就要求抽奖系统需要提供界面风 

格的设置机制,不能每次都由专业人员来修改代码 

及重新编译 1。 

本文针对界面要求从两个方面来进行设计,针 

对抽奖流程的人机交互方式,通过与相关操作人员 

的多次沟通以及demo的演示及试用,获得了本文 

系统设计中的业务主流程的主体交互方式,针对每 

个部分的操作,还尽量考虑到操作的简单便捷,比 

如针对抽奖信息录入这个小功能点中,设计了两种 

输入方式——其一是信息输入完成直接敲回车键, 

完成信息录入;其二是信息录入完成用鼠标点击确 

定按钮,完成信息录入。且在卜述两种操作方式完成 

后,信息录入文本框信息将会自动清空,供下一次的 

工程技术研究与应用主持:李艳 

信息录入。这里的录入方式及满足了操作人员的习 储模型、规则控制原理、人机交互设计等方面对相关 

惯又兼顾了扫描输入的特点;针对界面风格设置提 

软件设计有一定的借鉴作用。 

供了两种模式,其一是不更换资源,其次是更换资 

源,前者主要在程序基础设置中预设值了集中风格 【参考文献】 

模式,通过选择风格应用,将实现资源的重新加载, 

【1】(英)Ian Sommerville.软件工程IM】.北京;机械工业出版社, 

展示不同的风格,此种方式不能从根本上修改内容, 

2011. 

不能满足实际使用情况,故提供了另外一种直接更 

【2】(美)内格尔(Nage1.c)等.c≠≠高级编程【M】.北京;清华大学 

换资源的方式——按照统一的命名规则,将需要替 

出版社.2008. 

换的图片资源等放入到指定的位置,重新加载应用 

[3】吴鹏,适应多环境抽奖模型的设计与实现U1.中文信息, 

程序即可实现资源的替换。 

2014(09);289—290. 

4 结 语 

[4】( ̄)Donald E.Knuth.计算机程序设计艺术【M】.北京;清华 

本文设计的抽奖系统,主要依据某国有大型企 

大学出版社.2002. 

业抽奖软件的需求,针对性的进行了系统设计及编 

[5】维基百科.人机交互.http;//zh.wikipedia.org/wiki/A ̄机交 

码实现,最终在各大分厂得到了广泛使用,得到了用 

互 

户的一致好评,其中涉及到的一些设计思路,比如存 

(上接40页) 

校训是高度凝练的字句,形成或者写出一个好 

为此,学校可结合多种方式,提高对校训的宣传 的校训可能不太容易,毕竟现在很多大学没,,f-/E ̄ 

力度,提升学校的文化氛围。比如在新生的录取通知 的历史底蕴,尤其是高职院校,尚未形成自己独有的 

书上印写校训;在新生入学时,组织学生参观校史 精神,学校定位和学科也还没有特色。但这并不重 

馆,结合历史事件,讲述校训的溯源,培养学生的爱 要,校训贵在实践。以实际行动落实校训,哪怕只是 

校情结;将校训中表现的精神,以读物、漫画、戏剧等 落实校训中的一个字一个词,哪怕只是完成一件很 

形式,传递给学生;在校庆日等重要节日,开展校史 

小的事,只要认真、坚定地执行,习惯成自然,久而久 

校训系列讲座;将学校发展过程中体现校训精神的 之,校训会真正转化成全校师生共同遵守的准则。 

趣闻轶事、师生事迹整理出来,以小故事的形式展示 总之,充分发挥校训的作用,使其成为全校师生 

给学生;利用学校网站、校园广播电视、校报等宣传 

的精神追求,把校训真正写进学生心里,是高校学子 

媒介提高校训的知晓度和接受度;在其他的文化课 的一份期许,也是高校管理者的一种责任。若要达到 

程中渗透校训文化内容 。 这一目标,唯有行动才是最有效的途经。 

3.3 以实际行动落实校训 

“求实”“创新”“勤俭”是高校校训中的高频词 【参考文献】 

汇。“求实”意在告诫人们为人为学要实事求是、

口天鹏基于 抽奖系统设计与实现 

脚踏 

【I】罗竹风.汉语大辞典[Z】.北京:汉语大词典出版社. 

实地,“创新”旨在引导人们不要被常规局限,要有创 

【2]邓晖.校训雷同,缺失的是什么?【N】.光明日报,

装备制造与教育第二十八卷

2013—3—6. 

造新事物新思想的意识,“勤俭”意在强调人们办学 

[3】教育部思想政治工作司组编.百所高校校训、校徽、校歌汇 

要勤勉节俭,但反观高校,科研学术造假屡见不鲜, 

编【G】.北京:中国人民大学出版社,2014. 

教师文章抄袭常有发生,教学墨守成规、缺乏新意已 

[4】廖靖宇.中国大学校训文化的研究[D】.中南大学,2005. 

成为课堂顽疾,超大校园、豪华大门、观光电梯,不透 

I 5】大学校训该说些什么lowoq.http://opinion.china.com. 

明的高校办学成本层出不穷……种种现象,实在与 

cn/opinion 19

——

105519.html 

“求实”“创新”“勤俭”的初衷相距甚远。如此行动,校 

[6】竺柯桢名言名句【OB/OL].http://www.1z1 3.cn/mingren— 

训喊得再响亮,也难有说服力。 

mingyan/21 173.html 

本文标签: 数据信息校训软件设置