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

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

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的附件,程序挂不上去,如有需要请单独联系本人吧

简易抽奖软件逻辑实现相关推荐

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

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

  2. Python制作一个简单的抽奖软件(二)

    Python制作一个简单的抽奖软件(二) 认识QT 因为都对 QT和tkinter都没用过,之前简单使用tkinter后发现,界面调整不太好弄.然后度娘了之后,QT是强大GUI库之一,很多人都推荐它. ...

  3. java简单小项目_Java简易抽奖系统小项目

    本文实例为大家分享了Java简易抽奖系统的具体代码,供大家参考,具体内容如下 需求: 实现一个抽奖系统 1 注册 2 登录 3 抽奖 必须先注册  再登陆  再抽奖 随机产生4个随机数作为幸运卡号 用 ...

  4. 如何基于MFC制作简易绘图软件

    本文将讲解如何通过MFC制作一个简易的绘图软件 文章目录 一.构造软件的界面 二.画出图形 三.图形的保存与重绘 四.程序下载 一.构造软件的界面 首先新建一个MFC的工程,进入之后按F5调试,可以看 ...

  5. gif一键抠图 在线_手机一键抠图去背景||电脑抽奖软件

    点击上方蓝色字体,关注我们 由于前几天公众号出现了点状况,延误了和大家分享神器福利和资源的计划,从今天开始小辛会加大文章的干货质量保证每天都有干货.资源和大家分享!Android傲软抠图是一款专为抠图 ...

  6. 公司年会抽奖软件,提供MFC源代码下载

    1 软件概述  本抽奖软件用于20xx年手机体系深圳联欢会抽奖用,通过点击"开始"和"停止"按钮随机抽出中奖人信息并显示,以此更好地完成抽奖环节. 1.1 抽奖 ...

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

    518抽奖软件--极简设计.极致体验 名称:518抽奖软件 版本:3.1 大小:14520KB 语言:简体中文 授权:试用版 插件:无 分类:应用-办公工具 图标:http://www.518cj.n ...

  8. 【GTK4】又快年底了,100行代码教你做一款简单的年会抽奖软件

    博主未授权任何人或组织机构转载博主任何原创文章,感谢各位对原创的支持! 博主链接 文章目录 自制一款简单的抽奖软件 一.参与抽奖同事信息准备 二.准备GTK4环境 三.开始Coding 3.1 创建抽 ...

  9. Java实现简易聊天软件_类QQ(含课程论文、实施计划书、演示视频、答辩PPT、源代码及运行环境)

    很多BUG很多BUG很多BUG 视频演示: http://v.youku.com/v_show/id_XMjg4MDAxNTAwNA 关键部分参考: 注册界面实现-JAVA应用开发系列教程 https ...

  10. python实现抽奖软件(一)

    使用python做一个年会抽奖软件(一) 先来个几张最终的图 花了2个晚上,一个下午. 最终这个功能里面,包含了滚动抽奖,显示当前场次的抽奖情况,可以显示所有抽奖,可以选择奖项,剔除了中奖的人 重新抽 ...

最新文章

  1. 关于ORACLE RAC心跳问题的释疑
  2. CentOS 7 为firewalld添加开放端口及相关资料
  3. SQL Server2005完全卸载
  4. 多图上传 - Web Uploader
  5. 20个天才般的走心设计,真是太牛了!
  6. Port already in use: 1099;
  7. Java Http编程
  8. Python:Python全球生态主站,pip安装方法、集成安装方法、文件安装方法、第三方库自动安装脚本
  9. Https背景与证书在spring boot项目中的使用
  10. Java实例方法和类方法的区别
  11. 使用 Responsive Elements 快速构建响应式网站
  12. mysql+mmm+主动模式_Zabbix主动代理模式 + 主动模式agent客户端
  13. 计算机二级准考证下载打不开
  14. 机顶盒两个灯出现红色
  15. c语言字母大小写转换程序
  16. 华为认证hcia含金量_华为认证那个证书有什么用?
  17. 《果然新鲜》电商项目(25)- 会员唯一登录
  18. 系统集成项目管理工程师学习
  19. 软件测试-朋友圈的点赞功能怎么测?
  20. iOS二维码生成、识别、扫描等

热门文章

  1. YUI 3 Cookbook 中文版
  2. 在Windows系统上安装zookeeper
  3. android mds文件,安卓手机如何打开.mdf文件
  4. 网站备案 ICP备案流程
  5. Win7平台上通过QQ查询对方IP地址
  6. Win7下用的XP虚拟机
  7. 使用Dosbox运行程序
  8. vscode中如何修改vetur配置_vscode vetur插件配置不换行
  9. setup factory 会话变量
  10. 用USRP-LW N210搭建软件雷达系统