C#学习——彩票选号软件

news/2024/11/16 14:58:48/文章来源:https://www.cnblogs.com/guoenshuo/p/18348165

C#彩票选号软件

今天做了一个彩票选号的小软件,将学到的知识点总结如下;

1.写程序的思路

  • 实体类(属性、方法)
  • 主程序调用类方法

2.学到的知识点

  • 判断、循环
  • 文件的操作(保存、打开)
  • 集合、数组(增加-AddRange、删除-RemoveAt、排序-Reverse)
  • 关键字:Random(随机数-Next)
  • 定时器的应用(启动、停止、实时刷新)

3.经验技巧

  • 开发控件的属性可以查看界面后的designer中的控件缺省代码并修改应用

4.UI界面

5.代码实现

【实体类】

  • 功能一:定义一个保存选号的成员并【创建对象】
//属性-临时号码(用于存储随机号及数组的)public List<string[]> selectNum { get; set; }private Random randomNum = new Random();//构造方法-创建临时号码对象public Selector(){this.selectNum = new List<string[]>();}
  • 功能二:生成7个随机数【数组】并将数组返回
 //实例方法-随机选7个号public string[] selectNumArray(){string[] ranNum7 = new string[7];for (int i = 0; i < 7; i++){ranNum7[i] = this.randomNum.Next(10).ToString();}return ranNum7;}
  • 功能三:生成n组随机数组无需返回【带参数】
//实例方法-随机选n组号
public void selectNumGroup(int groupNum)
{for (int i = 0; i < groupNum; i++){selectNum.Add(selectNumArray());}
}
  • 功能四【遍历】成员变量生成号码表
  //实例方法-号码列表public List<string> listNum(){List<string> listData = new List<string>();string listName;for (int i = 0; i < this.selectNum.Count; i++){if (i < 9) { listName = "第0" + (i + 1) + "组:  "; }else {listName = "第" + (i + 1) + "组:  ";}for (int j = 0; j < this.selectNum[i].Length; j++){if (j == 5) { listName += selectNum[i][j] + "    "; } else{listName += selectNum[i][j] + "  ";}}listData.Add(listName); //重点}listData.Reverse();  //重点return listData;}

【主函数】

  • Step01【初始化】
//初始化
public FrmMain()
{InitializeComponent();this.timer_sleep.Stop();this.btn_randomGro.Enabled = true;this.btn_confirm.Enabled = true;this.btn_random.Enabled = true;this.btn_clear.Enabled = false;this.btn_dele.Enabled = false;this.timer1.Start();
}
  • Step02【创建类对象】
   //创建类对象private Selector objSelector = new Selector();
  • Step03【添加列表-AddRange】调用实体类<遍历成员而生成的列表>
   //实例方法-列表显示public void showList(){this.list_num.Items.Clear();  //先清空列表,再添加this.list_num.Items.AddRange(this.objSelector.listNum().ToArray()); //重点}
  • Step04【缺省类】关闭、最小化、窗口拖拽
//关闭
private void btnClose_Click(object sender, EventArgs e)
{this.Close();
}
//最小化
private void btnMin_Click(object sender, EventArgs e)
{this.WindowState = FormWindowState.Minimized;
}
窗口拖拽
#region  拖动窗体的实现private Point mouseOff;//鼠标移动位置变量
private bool leftFlag;//标签是否为左键
private void FrmMain_MouseDown(object sender, MouseEventArgs e)
{if (e.Button == MouseButtons.Left){mouseOff = new Point(-e.X, -e.Y); //得到变量的值leftFlag = true;                  //点击左键按下时标注为true;}
}
private void FrmMain_MouseMove(object sender, MouseEventArgs e)
{if (leftFlag){Point mouseSet = Control.MousePosition;mouseSet.Offset(mouseOff.X, mouseOff.Y);  //设置移动后的位置Location = mouseSet;}
}
private void FrmMain_MouseUp(object sender, MouseEventArgs e)
{if (leftFlag){leftFlag = false;//释放鼠标后标注为false;}
}
//在所需移动的控件事件中选定3方法即可实现#endregion
  • Step05【随机选号】让标签数字滚动,开始定时器即可(使能按钮)
//随机选号
private void btn_random_Click(object sender, EventArgs e)
{this.timer_sleep.Start();this.btn_random.Enabled = false;this.btn_confirm.Enabled = true;
}
  • Step06【确认选号】停止滚动、并保存当前数字到成员变量、并显示列表
//确认选号
private void btn_confirm_Click(object sender, EventArgs e)
{this.timer_sleep.Stop();string[] txtNums ={lblNum1.Text,lblNum2.Text,lblNum3.Text,lblNum4.Text,lblNum5.Text,lblNum6.Text,lblNum7.Text };  //难点this.objSelector.selectNum.Add(txtNums);showList();this.btn_confirm.Enabled = false;this.btn_random.Enabled = true;
  • Step07【随机组选】将组数传递到参数方法、显示列表
  //随机组选private void btn_randomGro_Click(object sender, EventArgs e){this.objSelector.selectNumGroup(Convert.ToInt16(this.lblNumGro.Text));showList();this.btn_clear.Enabled = true;this.btn_dele.Enabled = true;}
  • Step08【清除、清空】获取选中的索引,调用集合项的【RemoveAt】;【Clear】
//删除
private void brn_dele_Click(object sender, EventArgs e)
{this.objSelector.selectNum.RemoveAt(this.list_num.SelectedIndex); //重点showList();
}
//清空
private void btn_clear_Click(object sender, EventArgs e)
{ this.list_num.Items.Clear();this.objSelector.selectNum.Clear();  //重点btn_clear.Enabled = false;btn_dele.Enabled = false;
}
  • Step09【扩展】文件的打开保存、实时刷新
#region 【扩展】文件的打开保存、定时器实时刷新
//保存到文件
private void btnSave_Click(object sender, EventArgs e)
{FileStream fs = new FileStream("NumList.Txt", FileMode.Create);  //重点StreamWriter sw = new StreamWriter(fs);for (int i = 0; i < this.list_num.Items.Count; i++){sw.WriteLine(this.list_num.Items[i]);}sw.Close();fs.Close();MessageBox.Show("保存成功", "提示您", MessageBoxButtons.OK, MessageBoxIcon.Warning);}
//打开文件夹
private void btnsaveOpen_Click(object sender, EventArgs e)
{System.Diagnostics.Process.Start("Explorer.exe","J:\\自学视频\\1C#\\喜科堂 郭哥推荐\\练习第二遍\\彩票选号软件\\bin\\Debug\\NumList.Txt");}
//定时器实时监测数值-初始化开始定时器timer1
private void timer1_Tick(object sender, EventArgs e)
{if (this.list_num.Items.Count == 0 || this.list_num.SelectedItem == null){this.btn_dele.Enabled = false;}else{this.btn_dele.Enabled = true;}
}
#endregion

程序开发逻辑图如下所示:


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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

探究grid_sample函数

一、函数介绍torch.nn.functional.grid_sample(input, grid, mode=bilinear, padding_mode=zeros, align_corners=None)对于4D输入,input维度为 \((N,C,H_{in},W_{in})\), grid维度为 \((N,H_{out},W_{out},2)\) ,则output维度为 \((N,C,H_{out},W_{out})\)对于5D输入,input…

036.CI4框架CodeIgniter,VUE+CI4互通,VUE通过伪静态地址访问,内容为调用的CI4的API

CI4和VUE前端代码,可以看我在https://www.cnblogs.com/tianpan2019写的前2篇运行CI4能正常打开 使用npm run dev 也可以正常打开VUE 根据https://www.cnblogs.com/tianpan2019前1篇把根目录设置成CI4的publi目录 把伪静态内容也写上,内容如下:location / { if (!-e $reques…

2024年1000个计算机毕业设计项目源码(源码+论文【万字】)

【计算机毕设项目】2025级100个热门项目推荐 (前后端Web项目) 以下项目选题适合计算机专业大部分专业,技术栈主要为:Java语言,SpringBoot+Vue框架,MySQL数据库以下项目选题适合计算机专业大部分专业,技术栈主要为:Java语言,SpringBoot+Vue框架,MySQL数据库 ①后台免费获…

035.CI4框架CodeIgniter,安装前端VUE并执行

安装node22.5 选择路径 安装完成 装好后使用cmd查看node -v和 npm -v,看一下就知道有没有装好了 nodejs的安装目录,需要完全授权才可以,不然后面会报错 在网站的根目录,打开Powershell 显示权限不足的错误 管理员模式打开系统的Powershell 输入set-ExecutionPolicy RemoteS…

7月编程心得

7 月份非常忙碌,想系统性的写一篇文章,好几次不知道如何下手,后来想想还不如顺其自然,写一点自己的学习心得体会。 这篇文章,聊聊 7月份笔者的编程心得 ,希望对大家有所帮助。 1 IntelliJ IDEA 社区版 工欲善其事,必先利其器。 笔者的 Mac 电脑安装了 IntelliJ IDEA Ult…

三分钟对可视化表单设计器开源优点做简单介绍

为了帮助大家了解可视化表单设计器开源的多个优势特点,本文将为大家做一个系统介绍。想要实现流程化办公,需要了解低代码技术平台、可视化表单设计器开源在现代化办公中的作用和价值。为了帮助大家了解可视化表单设计器开源的多个优势特点,本文将为大家做一个系统介绍。 要了…

校园集市小程序开发-系统架构与Django后端

引子: 烂尾就烂尾吧,大不了以后自己创业。唉,也算给自己一个警戒。E-R模型接口设计数据模型设计 基本模型放在models.py中 class School(models.Model):id = models.AutoField(primary_key=True)name = models.CharField(max_length=100, verbose_name=学校名称) # 学校校区 …

基于MPPT最大功率跟踪算法的光伏并网发电系统simulink仿真

1.课题概述基于MPPT最大功率跟踪算法的光伏并网发电系统simulink仿真,包括PV模型建模(不使用simulink自带的PV模块,根据公式进行建模),MPPT最大功率控制器,PI控制器,锁相环,逆变器等等。输出系统的收敛曲线。2.系统仿真结果 上面三个波形分别表示光伏并网输出的Ipv,Upv和…

如何选择最适合你的免费项目管理软件

国内外主流的10款免费项目管理软件对比:PingCode、Worktile、Teambition、Tower、Tapd、Asana、Trello、Wrike、Basecamp、ClickUp、Monday.com。在众多项目管理工具中,找到一个既免费又能满足你专业需求的软件似乎是一项挑战。市场上免费和付费工具琳琅满目,但很多小型团队…

limu|P8-9|线性回归、softmax回归

线性回归模型:\(y = Xw + b + \epsilon\) 1、如何衡量模型质量?loss function损失函数——量化实际值和预测值之间的差距 可证:在高斯噪声的假设下,线性模型的最大似然估计 等价于 最小化均方误差(MSE)。证明在另一篇里写过:https://www.cnblogs.com/xjl-ultrasound/p/1…

学习笔记-图灵完备、图灵机与Brainfuck

前言 本文是近日对图灵完备的学习所做的笔记,如有错误还请指正. 本文包含以下内容: 1.什么是图灵机?什么是图灵完备?什么是Brianfuck? 2.对图灵机的简单模拟. 3.使用Brianfuck模拟一个简单的图灵机. 图灵机? Alan Mathison Turing在1937年提出了一个通用计算设备的猜想.他猜…

帝国cms怎么整站迁移

帝国CMS整站迁移指南第一步:备份数据使用帝国CMS自带的备份功能,对网站数据进行完整备份,包括数据库、目录和文件。第二步:导入新数据库在新的服务器上,创建一个新的数据库,并导入之前备份的数据库。第三步:修改配置文件和数据库连接参数修改 config/config.php 和 data…