简易抽奖软件逻辑实现

     又到年终了,各种抽奖软件需求纷至沓来,现分享一个简易抽奖软件逻辑,希望对大家抽奖类的需求有所帮助;

  直奔主题吧,测试程序很稳定,可以直接将界面修改为其他形式

1、奖池枚举类

    public enum AwardGrade{SpecialAward=0,FirstAward=1,SencdAward=2,ThirdAward=3,FourAward=4}
2、乱序从文本文件中加载参与抽奖的人员

        /// <summary>/// 加载用户乱序加载/// </summary>private static void loadUser(){try{Random random = new Random();StreamReader sr = new StreamReader("staff.txt", System.Text.Encoding.Default);while (!sr.EndOfStream){string name = sr.ReadLine();if (!string.IsNullOrEmpty(name.Trim()) && !AwardPoolUsersList.Contains(name.Trim())){AwardPoolUsersList.Insert(random.Next(AwardPoolUsersList.Count), name.Trim());}}sr.Close();logger.InfoFormat("[用户加载]用户加载完成,共加载{0}个用户", AwardPoolUsersList.Count);}catch (Exception ex){logger.ErrorFormat("加载用户异常,异常描述:{0},异常详情:{1}", ex.Message, ex.StackTrace);}}
3、获取一个中奖人(私有函数)

   static object obj = new object();        /// <summary>/// 获取一个中奖人/// </summary>/// <returns></returns>private static string getCurrentAwardUser(){lock (obj){try{List<string> currentUser = new List<string>();currentUser = AwardPoolUsersList;if (AwardedUserList == null){AwardedUserList = new HashSet<string>();}int count = currentUser.Count;string name;do{int data = getNext(count);name = currentUser[data];} while (AwardedUserList.Contains(name));return name;}catch (Exception ex){logger.ErrorFormat("随机生成用户时异常,异常描述{0},异常详情:{1}", ex.Message, ex.StackTrace);return "";}}}
4、外部调用获取中奖者函数(公共的)

        /// <summary>/// 请求一个中奖者/// </summary>/// <returns></returns>public string GetUser(){lock (obj){string result = getCurrentAwardUser();while (1 == 1){if (!AwardedUserList.Contains(result) && !string.IsNullOrEmpty(result)){if (msg.Contains(result)){result = getCurrentAwardUser();}break;}result = getCurrentAwardUser();}AwardedUserList.Add(result);return result;}}
5、加载的随机函数

        /// <summary>/// 请求一个中奖者/// </summary>/// <returns></returns>public string GetUser(){lock (obj){string result = getCurrentAwardUser();while (1 == 1){if (!AwardedUserList.Contains(result) && !string.IsNullOrEmpty(result)){if (msg.Contains(result)){result = getCurrentAwardUser();}break;}result = getCurrentAwardUser();}AwardedUserList.Add(result);return result;}}
6、过滤中奖人员,避免重复中奖

        /// <summary>/// 过滤移除已中奖用户/// </summary>private void removeAwardUser(){try{StreamReader sr = new StreamReader("Result.txt", System.Text.Encoding.Default);int i = 0;while (!sr.EndOfStream){string name = sr.ReadLine();if (!string.IsNullOrEmpty(name.Trim())){i++;AwardPoolUsersList.Remove(name.Trim());}}sr.Close();logger.InfoFormat("移除用户数:{0}", i);}catch (Exception ex){logger.ErrorFormat("移除已中奖用户时异常,异常详情:{0}-1", ex.Message, ex.StackTrace);}}
7、保存中奖信息

 /// <summary>/// 保存中奖信息/// </summary>/// <param name="name"></param>public  void saveAwardUserToTxt(string name){try{FileStream stream = new FileStream("Result.txt", FileMode.Append, FileAccess.Write);StreamWriter sw = new StreamWriter(stream);sw.WriteLine(name);sw.Close();stream.Close();logger.InfoFormat("中奖人:{0}", name);}catch (Exception ex){logger.ErrorFormat("将中奖者:{2}写入文件时发生户异常,异常描述:{0},异常详情:{1}", ex.Message, ex.StackTrace, name);}}
8、测试程序( winform+ log4net+donetbar   


不好意思,不知道怎么挂rar的附件,程序挂不上去,如有需要请单独联系本人吧







本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/353379.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

518抽奖软件——极简设计、极致体验

518抽奖软件——极简设计、极致体验 名称&#xff1a;518抽奖软件 版本&#xff1a;3.1 大小&#xff1a;14520KB 语言&#xff1a;简体中文 授权&#xff1a;试用版 插件&#xff1a;无 分类&#xff1a;应用-办公工具 图标&#xff1a;http://www.518cj.net/images/80.png 截…

随机抽奖软件

点击 &#xff1a;源码及软件下载 开发语言&#xff1a;C# 使用&#xff1a;winForm 、Timer类 主界面&#xff1a;(可全屏) 可配置项&#xff1a; 1、是否移除中奖者 2、是否全屏 3、替换背景图片 4、字大小&#xff08;数字越大字越大&#xff09; 5、字颜色&#xff0c;默认…

J辉摇号摇奖抽奖软件

功能&#xff1a; 可选择重复/不重复中奖&#xff1b; 支持从TXT或Exlce中导入抽奖人员&#xff1b; 支持中奖名单显示 、保存&#xff1b; 支持抽取结果页面或字幕显示&#xff1b; 做个简单的使用说明。默认是读取根目录的name.json文件的数据的。 创建自己的数据点击左…

【抽奖软件】C++,duilib实现完整抽奖软件系统(有源码)

最近帮朋友做了一个晚会抽奖软件系统&#xff0c;在这里和大家分享一下&#xff0c;有需要的可以参考&#xff0c;时间紧&#xff0c;本人水平有限&#xff0c;有些地方处理的还不是太理想&#xff0c;欢迎大家指出来。 1&#xff0c;设计思路 朋友单位要举办个晚会&#xff…

滚动照片抽奖软件

CODE GitHub 源码 1、女友说很丑的一个软件 说个最近的事情&#xff0c;女友公司过年了要搞活动&#xff0c;需要个抽奖的环节&#xff0c;当时就问我能不能给做一个&#xff0c;正好我也没啥事儿&#xff0c;就在周末的时候用C#做了一个&#xff0c;虽然派上用场了&#xf…

商场抽奖软件 android,召唤抽奖系统3.0正式版

召唤抽奖系统3.0正式版是一款全新打造的二次元题材的剧情玩法的手机游戏。玩家们在游戏中可以通过探索剧情&#xff0c;来收集很多的人物角色&#xff0c;同时也可以通过召唤来获得更加强大的技能人物。3D技术打造的游戏场景设计风格&#xff0c;让玩家们可以感受到更加真实的游…

商场抽奖软件 android,召唤抽奖系统

召唤抽奖系统是一款角色扮演类手游&#xff0c;召唤抽奖系统游戏背景设定在神武大陆&#xff0c;游戏中玩家从现代社会穿越到一个婴儿身上&#xff0c;16年后玩家要踏下旅程&#xff0c;学习魔法和武道&#xff0c;你可以通过主线&#xff0c;支线&#xff0c;以及召唤线来推进…

星韵转盘抽奖软件

星韵转盘抽奖软件是一款功能强大&#xff0c;且适用于单位年会、晚会、婚庆、商场、房地产、楼盘、超市、娱乐会所等多种抽奖摇号场合的轮盘抽奖软件&#xff0c;该软件以新颖独特的抽奖方式&#xff0c;完美的取代了传统大转盘的抽奖方式&#xff0c;还拥有强大的转盘模板编辑…

星韵商场抽奖软件

星韵商场抽奖软件是一款非常专业&#xff0c;且适用于各种商业促销活动的抽奖软件&#xff0c;不但可以通过新颖的抽奖方式来取代传统抽奖箱的抽奖方式&#xff0c;如砸蛋、百宝箱、气球、彩球、礼盒等多种抽奖模式&#xff0c;而且还有着强大的奖项设置功能和灵活控制奖品的开…

爆点火箭逃跑游戏 全程手把手教搭建

这个源码经过本人修复&#xff0c;已经完美运营&#xff0c;并且修复了查看下级代理信息等&#xff0c;邀请页面弹窗&#xff0c;支付接入问题&#xff08;可以对接市面上基本的支付&#xff09;具体的就不介绍了&#xff0c;有搭建教程 我接下来给搭建简单说一下搭建 搭建环境…

火柴人小程序linux,这里居然有火柴人的一些不一样的小程序?要不来玩一下

火柴人还有不一样的玩法&#xff1f;是的&#xff0c;这几个火柴人结合了搭桥&#xff0c;结合了跑酷&#xff0c;结合了划线小游戏&#xff0c;是不是感觉有一些意外呢&#xff1f;小编推荐的这几款关于火柴人的小游戏考验着玩家种种能力&#xff0c;如果你觉得自己对游戏的天…

基于Unity3D的跑酷游戏(火柴人)

项目报告均含&#xff08;此链接&#xff1a;https://download.csdn.net/download/mengchenliuguang/11245411&#xff09; 场景展示 在火柴人的通关路上&#xff0c;我们要注意不让他掉落到深渊。 使用W技能可以连续起跳&#xff0c;起跳到上面地方躲避障碍物。 不小心掉落…

C++ 字符跑酷#5 游戏制作实录

版本号&#xff1a;1.4 嗨&#xff0c;我是一块铌金属。 对的&#xff0c;我期末考试考完了&#xff0c;又闲了。 那就……做游戏吧&#xff01; 首先&#xff0c;为了我们的游戏像德芙一样丝滑&#xff0c;我使用了_kbhit()函数。 这个函数的作用是&#xff1a;判断是否有…

C语言实现钢琴块小游戏(低仿拉胯版)

声明&#xff1a;这篇文章中出现的代码并非凑字数&#xff0c;与叙述内容无关的均已用文字代替&#xff0c;还请耐心阅读 &#xff08;没错俺偷懒直接把作业报告改改&#xff08;其实没怎么改&#xff09;就发出来了&#xff09; &#xff08;虽然说是小游戏&#xff0c;但不知…

用unity做的简单小游戏------“小球酷跑“

游戏介绍: 游戏由小球和障碍物组成&#xff0c;在所布置的游戏背景中进行游戏&#xff0c;如图所示。 游戏主要以控制小球移动躲过障碍物继续行走为玩法&#xff0c;是一个简单的不够完整的小游戏&#xff0c;下面将会简单地介绍在unity中如何制作出这个小游戏。 场景设置: 先…

C++ 字符跑酷#1 游戏制作实录

版本号&#xff1a;1.0 我是~~~oneNBmetel&#xff01;&#xff01;&#xff01;我知道metel错了但我懒得改&#xff08;逃 我们今天来做&#xff01;一个简简单单的C跑酷游戏&#xff01;&#xff01;&#xff01; 首先&#xff0c;既然是做游戏&#xff0c;那头文件是必不…

C++ 字符跑酷#4 游戏制作实录

版本号&#xff1a;1.3 嗨&#xff0c;我是一块铌金属 上次的字符酷跑&#xff0c;我做完之后&#xff0c;还是觉得不太满意&#xff0c;正好&#xff0c;题刷完了&#xff0c;作业也做完了&#xff0c;那就……做游戏吧 但是&#xff0c;在我刚想开一个新坑的时候&#xff…

Java单元测试学习(一)

Java单元测试学习&#xff08;一&#xff09; 使用TestContainer和docker结合启动redis 前提 docker环境 目录结构 依赖—这里有个小插曲 配置RedisTemplate时一直报错Error creating bean with name ‘redisConnectionFactory’ defined in class path resource [org/spr…

地震勘探基础(八)之地震动校正

地震动校正 在地震资料数字处理过程中&#xff0c;速度分析&#xff0c;动校正和水平叠加三个处理内容是相互关联的。水平叠加是为了提高地震资料的信噪比&#xff0c;要想得到好的叠加效果&#xff0c;必须做好动校正。而做好动校正&#xff0c;需要进行准确的速度分析。只有…

独立站卖家如何应对PayPal风险?3大策略教你安全收款!

PayPal是全球风险控制做得最好的第三方在线支付平台&#xff0c;PayPal付款是钱直接到卖家PayPal账户。但随着外贸交易的日益发展&#xff0c;恶意买家的问题也越来越多。如何防范风险&#xff0c;保证收款安全&#xff0c;成为独立站卖家们所关注的问题。下面为大家分享三种策…