双色球案例【C#】

实例类型

1双色球类

方法的参数是对象。 

public List<string> Numbers { get; set; }        // 这个是对象的属性

  /// <summary>
  /// 双色球类
  /// 
  /// 作用:主要是用来封装数据
  /// </summary>
  public class DoubleChromosphere
  {
      //public string Red1Number { get; set; }
      //public string Red2Number { get; set; }
      //public string Red3Number { get; set; }
      //public string Red4Number { get; set; }
      //public string Red5Number { get; set; }
      //public string Red6Number { get; set; }
      //public string Blue7Number { get; set; }

      请大家自学完课程后,可以尝试分开保存两种球的数字
      //public List<string> RedNumbers { get; set; }
      //public List<string> BlueNumbers { get; set; }

      //今天我们授课:把红色球和蓝色球放到一块
      public List<string> Numbers { get; set; }
  }

2选号器Selector

选号器看成是一个对象【秘书】

让对象去工作。

设计时:注意属性和字段,只在内部使用的变量用字段。 

    /// <summary>
    /// 选号器类
    /// </summary>
    public class Selector
    {
        //红色球池
        public List<string> RedNumberList { get; set; }

        //蓝色球池
        public List<string> BlueNumberList { get; set; }

        //存储选择的号码
        public List<DoubleChromosphere> SelectedNums { get; set; } = new List<DoubleChromosphere>();

        private Random random = new Random();//随机数生成器(只在本类内部使用)

        /// <summary>
        /// 构造方法:初始化球池的数字
        /// </summary>
        public Selector()
        {
            RedNumberList = new List<string>
            {
                "01","02","03","04","05","06","07","08","09","10",
                "11","12","13","14","15","16","17","18","19","20",
                "21","22","23","24","25","26","27","28","29","30",
                "31","32","33"
            };
            BlueNumberList = new List<string>
            {
                "01","02","03","04","05","06","07","08","09","10",
                "11","12","13","14","15","16"
            };
        }
        /// <summary>
        /// 生成7个随机不同的号码
        /// </summary>
        /// <returns></returns>
        public List<string> CreateRandomNum()
        {
            List<string> numList = new List<string>();
            //生成6个红色球
            while (true)
            {
                if (numList.Count == 6) break;//如果随机选取了6个数字了,则退出循环
                string num = RedNumberList[random.Next(33)];
                if (numList.Contains(num)) continue;//如果是重复的数字,则重新随机抽取
                else
                {
                    numList.Add(num);
                }                  
            }
            //生成一个蓝色球
            numList.Add(BlueNumberList[random.Next(16)]);
            return numList;
        }

        //打印、远程保存等(我们在深入的VIP系统学习中再讲解...)
        //这些方法,都会用到我们所保存的《已选择号码》
    }

【ui】

 其他类,是对象,只需要用【new】出,让对象去工作。

ui只需要关心【输入输出】,业务逻辑不必关心。

【字段】是类内全局变量。

1窗体的初始化

namespace xiketang.com.LotteryPro
{
    public partial class FrmMain : Form
    {
        //创建选号器对象
        private Selector newSelector = new Selector();

        //每次得到的随机数
        List<string> randomNum = null;


        public FrmMain()
        {
            InitializeComponent();
            this.btnSelect.Enabled = false;

        }

2对象工作

 //每次得到的随机数
 List<string> randomNum = null; 

        //启动选号
        private void btnStart_Click(object sender, EventArgs e)
        {
            this.timerCreateNum.Start();//启动定时器
            this.btnSelect.Enabled = true;
            this.btnStart.Enabled = false;
        }
        //定时器事件:每隔50ms调用一次
        private void timerCreateNum_Tick(object sender, EventArgs e)
        {
            //通过调用选号器,得到随机数
            randomNum = newSelector.CreateRandomNum();
            //在下面的列表中显示
            this.lblNum1.Text = randomNum[0];
            this.lblNum2.Text = randomNum[1];
            this.lblNum3.Text = randomNum[2];
            this.lblNum4.Text = randomNum[3];
            this.lblNum5.Text = randomNum[4];
            this.lblNum6.Text = randomNum[5];
            this.lblNum7.Text = randomNum[6];
        }
        //选择
        private void btnSelect_Click(object sender, EventArgs e)
        {
            this.timerCreateNum.Stop();
            this.btnSelect.Enabled = false;
            this.btnStart.Enabled = true;

            //创建双色球对象
            DoubleChromosphere dc = new DoubleChromosphere
            {
                //Numbers = new List<string>()
                //{
                //    this.lblNum1.Text,
                //    this.lblNum2.Text,
                //    this.lblNum3.Text,
                //    this.lblNum4.Text,
                //    this.lblNum5.Text,
                //    this.lblNum6.Text,
                //    this.lblNum7.Text
                //}
                //对象初始化器【双色球对象】
                Numbers = this.randomNum  //我们因为已经保存了当前的一组数字,所以可以直接复制
            };

            //添加到选号池,以备后面的打印、远程保存等方法使用
            this.newSelector.SelectedNums.Add(dc);

            //显示号码
            string num = string.Empty;
            foreach (string item in this.randomNum)
            {
                num += item + "  ";
            }
            this.lbNumberList.Items.Add(num);
        }
        //清除
        private void btnDel_Click(object sender, EventArgs e)
        {
            this.newSelector.SelectedNums.Clear(); //从集合中清除
            this.lbNumberList.Items.Clear();//从列表中清除
        }

        //确认购买:需要保存到远程数据库或服务器(也可以通过webapi远程提交)
        private void btnConfirm_Click(object sender, EventArgs e)
        {
            //首先打印

            //远程保存
        }

    

3程序入口

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace xiketang.com.LotteryPro
{
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new FrmMain());
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

线程详解(接上篇博客)

目录 1.生产者消费者模型; 2.基于环形队列的生产者消费者模型; 3.线程池; 4.STL, 智能指针, 线程安全; 5.读者写者问题. 前言: 本篇博客博主五一假期都在肝的一篇, 希望xdm点点三连, 博主感谢了 onz !!! 1.生产者消费者模型 321原则:(便于记忆) 3是指3种关系: 生产者和生产…

赚钱的背后逻辑!2024创业干什么最赚钱?2024创业方向!2024普通人的出路!2024普通人最有前景的行业!

钱根本不是赚来的。钱&#xff0c;是你帮别人解决问题后&#xff0c;对方给你的回报。什么时候把这句话理解透了&#xff0c;钱就会反过来追你。 问题就是每个人的痛点&#xff0c;痛点就是需求&#xff0c;男人怕穷&#xff0c;女人爱美&#xff0c;老人怕病&#xff0c;小孩怕…

OpenHarmony实战开发-管理位置权限

Web组件提供位置权限管理能力。开发者可以通过onGeolocationShow()接口对某个网站进行位置权限管理。Web组件根据接口响应结果&#xff0c;决定是否赋予前端页面权限。获取设备位置&#xff0c;需要开发者配置ohos.permission.LOCATION&#xff0c;ohos.permission.APPROXIMATE…

面试笔记——类加载器

基础 类加载器&#xff1a;用于装载字节码文件(.class文件)运行时数据区&#xff1a;用于分配存储空间执行引擎&#xff1a;执行字节码文件或本地方法垃圾回收器&#xff1a;用于对JVM中的垃圾内容进行回收 类加载器 &#xff1a;JVM只会运行二进制文件&#xff0c;类加载器的…

LLM——用于微调预训练大型语言模型(LLM)的GPU内存优化与微调

前言 GPT-4、Bloom 和 LLaMA 等大型语言模型&#xff08;LLM&#xff09;通过扩展至数十亿参数&#xff0c;实现了卓越的性能。然而&#xff0c;这些模型因其庞大的内存需求&#xff0c;在部署进行推理或微调时面临挑战。这里将探讨关于内存的优化技术&#xff0c;旨在估计并优…

2025第23届太原煤炭(能源)工业技术与装备展览会

第二十三届太原煤炭&#xff08;能源&#xff09;工业技术与装备展览会 邀 请 函 指导单位&#xff1a; 中国煤炭工业协会 主办单位&#xff1a;山西省煤炭工业协会 承办单位&#xff1a;太原奇新展览有限公司 展览时间&#xff1a;2025年4月22-24日 展览地点&#xff1a…

jenkins+gitlab+sonar自由风格项目配置

新建项目&基本配置 gitlab侧配置 sonar.projectKeytest_sonar sonar.projectNametest_sonar sonar.projectVersion1.0 sonar.sources. sonar.exclusionssrc/layout/** sonar.sourceEncodingUTF-8 sonar.nodejs.executable/app/nodejs/node-v16.20.2-linux-x64/bin/node配置…

cURL:命令行下的网络工具

序言 在当今互联网时代&#xff0c;我们经常需要与远程服务器通信&#xff0c;获取数据、发送请求或下载文件。在这些情况下&#xff0c;cURL 是一个强大而灵活的工具&#xff0c;它允许我们通过命令行进行各种类型的网络交互。本文将深入探讨 cURL 的基本用法以及一些高级功能…

智能AI摄像头项目

项目概要 硬件说明&#xff1a;易百纳rv1126 38板&#xff0c;易百纳GC2053摄像头&#xff0c;拓展版&#xff08;自绘&#xff09;&#xff0c;屏幕驱动板&#xff08;自绘&#xff09;&#xff0c;3.1inch mipi屏&#xff0c;FT5316触摸屏 开发环境 硬件分析 开发环境及sd…

数据结构十一:数组相关经典面试题

本篇博客详细介绍分析数组/顺序表常见的面试题&#xff0c;对于前面所学知识进行一个巩固&#xff0c;同时介绍一些力扣刷题中的一些概念&#xff1a;如&#xff1a;输出型参数等&#xff0c;在刷题中培养自己的编程思维&#xff0c;掌握常见的编程套路&#xff0c;形成题感&am…

KernelSU 如何不通过模块,直接修改系统分区

刚刚看了术哥发的视频,发现kernelSU通过挂载OverlayFS实现无需模块,即可直接修改系统分区,很是方便,并且安全性也很高,于是便有了这篇文章。 下面的教程与原视频存在差异,建议观看原视频后再结合本文章进行操作。 在未进行修改前,我们打开/system/文件夹,并在里面创建…

Junit 测试中如何对异常进行断言

本文对在 Junit 测试中如何对异常进行断言的几种方法进行说明。 使用 Junit 5 如果你使用 Junit 5 的话,你可以直接使用 assertThrows 方法来对异常进行断言。 代码如下: Exception exception = assertThrows(NumberFormatException.class, () -> {new Integer("on…

fiscobcos 3.x linux安装与java简单调用

所用环境 vmware 16 Pro centos7.6 jdk11.0.6 ideal 2022 1、安装fiscobcos # 创建操作目录 # cd ~ && mkdir -p fisco && cd fisco# 下载建链脚本 # curl -#LO https://github.com/FISCO-BCOS/FISCO-BCOS/releases/download/v3.6.0/build_chain.sh &a…

Spring Security + JWT 实现登录认证和权限控制

Spring Security JWT 实现登录认证和权限控制 准备步骤 准备好一些常用的工具类&#xff0c;比如jwtUtil&#xff0c;redisUtil等。引入数据库&#xff0c;mybatis等&#xff0c;配置好controller&#xff0c;service&#xff0c;mapper&#xff0c;保证能够正常的数据请求。…

【python】条件语句与循环语句

目录 一.条件语句 1.定义 2.条件语句格式 &#xff08;1&#xff09;if &#xff08;2&#xff09;if-else &#xff08;3&#xff09;elif功能 &#xff08;4&#xff09;if嵌套使用 3.猜拳游戏 二.循环语句 1. while循环 2.while嵌套 3.for循环 4.break和conti…

k8s部署skywalking(helm)

官方文档 官方文档说明&#xff1a;Backend setup | Apache SkyWalking官方helm源码&#xff1a;apache/skywalking-helm官方下载&#xff08;包括agent、apm&#xff09;:Downloads | Apache SkyWalking 部署 根据官方helm提示&#xff0c;选择你自己部署的方式&#xff0c…

PyTorch深度学习框架:从入门到实战

前言 学习 PyTorch 深度学习框架之前先学会深度学习和卷积神经网络 CNN &#xff0c;这样学习起来会更香嗷。 Windows系统下PyTorch的环境配置 Anaconda是什么&#xff1a; Anaconda是一个开源的Python发行版本&#xff0c;专注于数据分析领域。它包含了conda、Python等190多…

解决python/pycharm中import导入模块时报红却能运行的问题

一、问题 导入时报红&#xff0c;如下 二、解决 右键单击项目&#xff0c;将项目Mark Directory as→Sources Root 三、效果 报红消失 学习导航&#xff1a;http://www.xqnav.top

Docker网络基础

简介 Docker 本身的技术依赖于近年来 Linux 内核虚拟化技术的发展,Docker 对 Linux 内核的特性有很强的依赖。Docker 使用到的与 Linux 网络有关的主要技术有:网络命名空间、veth 设备对、网桥、ipatables 、路由。 网络命名空间 为了支持网络协议栈的多个实例,Linux在网络栈…

使用Docker安装Jenkins

大家好&#xff0c;今天给大家分享如何使用docker安装jenkins&#xff0c;关于docker的安装和常用命令可以参考下面两篇文章&#xff0c;使用docker可以提高资源利用率&#xff0c;能够在不同的环境中轻松迁移和部署应用&#xff0c;在本文中就不过多赘述了。 Docker常用命令 …
最新文章