c# winform 面向对象设计体育彩票选号器

用到的知识很简单:产生随机数、保存数据到文本文件、定时器的使用等。主要体现c#面向对象设计的思想。界面效果如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
 5 using System.Threading.Tasks;
 6
 7 namespace 体育彩票选号器
 8 {
 9     /// <summary>
10     /// 日历类
11     /// </summary>
12     class Calendar
13     {
14         public string Year { get; set; }
15         public string Month { get; set; }
16         public string Day { get; set; }
17         public string Time { get; set; }
18         public string Week { get; set; }
19     }
20 }
  1 using System;
  2 using System.Collections.Generic;
  3 using System.IO;
  4 using System.Linq;
  5 using System.Text;
  6 using System.Threading.Tasks;
  7
  8 namespace 体育彩票选号器
  9 {
 10     /// <summary>
 11     /// 选号器类
 12     /// </summary>
 13     class PickDevice
 14     {
 15         private Random random;
 16         private Calendar myCalendar;
 17         internal Calendar MyCalendar
 18         {
 19             get
 20             {
 21                 this.myCalendar.Year = DateTime.Now.Year.ToString();
 22                 this.myCalendar.Month = DateTime.Now.Month.ToString("00");
 23                 this.myCalendar.Day = DateTime.Now.Day.ToString("00");
 24                 this.myCalendar.Time = DateTime.Now.ToLongTimeString();
 25                 this.myCalendar.Week = WeekToChineseWeek(DateTime.Now.DayOfWeek.ToString());
 26                 return myCalendar;
 27             }
 28             //set { myCalendar = value; }
 29         }
 30         /// <summary>
 31         /// 选中的号码
 32         /// </summary>
 33         private List<string> selectedNum;
 34
 35         public List<string> SelectedNum
 36         {
 37             get { return selectedNum; }
 38             set { selectedNum = value; }
 39         }
 40         public PickDevice()
 41         {
 42             random = new Random();
 43             myCalendar = new Calendar();
 44             selectedNum=new List<string>();
 45         }
 46         /// <summary>
 47         /// 生成10以内随机号码
 48         /// </summary>
 49         /// <returns></returns>
 50         public int[] CreateNum()
 51         {
 52             int[] num=new int[7];
 53             num[0] = random.Next(10);
 54             num[1] = random.Next(10);
 55             num[2] = random.Next(10);
 56             num[3] = random.Next(10);
 57             num[4] = random.Next(10);
 58             num[5] = random.Next(10);
 59             num[6] = random.Next(10);
 60             return num;
 61         }
 62         public void ExportToTxt(string path)
 63         {
 64             using (FileStream fs = new FileStream(path, FileMode.Create))
 65             {
 66                 using (StreamWriter sw = new StreamWriter(fs))
 67                 {
 68                     foreach(string s in SelectedNum)
 69                     {
 70                         sw.WriteLine(s);
 71                     }
 72                 }
 73             }
 74         }
 75         /// <summary>
 76         /// 将英文日期转换为中文
 77         /// </summary>
 78         /// <param name="week"></param>
 79         /// <returns></returns>
 80         public string WeekToChineseWeek(string week)
 81         {
 82             switch (week)
 83             {
 84                 case "Monday":
 85                     return "一";
 86                     //break;
 87                 case "Tuesday":
 88                     return "二";
 89                     //break;
 90                 case "Wednesday":
 91                     return "三";
 92                     //break;
 93                 case "Thursday":
 94                     return "四";
 95                     //break;
 96                 case "Friday":
 97                     return "五";
 98                     //break;
 99                 case "Saturday":
100                     return "六";
101                     //break;
102                 case "Sunday":
103                     return "日";
104                     //break;
105                 default:
106                     return "日";
107                     //break;
108             }
109         }
110     }
111 }
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 体育彩票选号器
{
    public partial class FrmMain : Form
    {
        PickDevice pickDevice = new PickDevice();
        private int order = 0;//选号的组号
        public FrmMain()
        {
            InitializeComponent();
            this.btnChoose.Enabled = false;
        }
        /// <summary>
        /// 获取日历信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tmrCalendar_Tick(object sender, EventArgs e)
        {
            this.lblYear.Text = pickDevice.MyCalendar.Year;
            this.lblMonth.Text = pickDevice.MyCalendar.Month;
            this.lblDay.Text = pickDevice.MyCalendar.Day;
            this.lblTime.Text = pickDevice.MyCalendar.Time;
            this.lblWeek.Text = pickDevice.MyCalendar.Week;
        }
        /// <summary>
        /// 产生随机数
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void tmrRandom_Tick(object sender, EventArgs e)
        {
            int[] num = pickDevice.CreateNum();
            this.lblNum1.Text=num[0].ToString();
            this.lblNum2.Text = num[1].ToString();
            this.lblNum3.Text = num[2].ToString();
            this.lblNum4.Text = num[3].ToString();
            this.lblNum5.Text = num[4].ToString();
            this.lblNum6.Text = num[5].ToString();
            this.lblNum7.Text = num[6].ToString();
        }
        /// <summary>
        /// 启动
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnStart_Click(object sender, EventArgs e)
        {
            tmrRandom.Start();
            this.btnChoose.Enabled = !this.btnChoose.Enabled;
            this.btnStart.Enabled=!this.btnStart.Enabled;

        }
        /// <summary>
        /// 选号
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnChoose_Click(object sender, EventArgs e)
        {
            this.tmrRandom.Stop();
            this.btnStart.Enabled = !this.btnStart.Enabled;
            this.btnChoose.Enabled = !this.btnChoose.Enabled;
            string num = "";
            num += this.lblNum1.Text;
            num += this.lblNum2.Text;
            num += this.lblNum3.Text;
            num += this.lblNum4.Text;
            num += this.lblNum5.Text;
            num += this.lblNum6.Text;
            num += "  ";
            num += this.lblNum7.Text;
            order++;
            num = "第" + order + "组:" + num;
            lstNum.Items.Add(num);
            pickDevice.SelectedNum.Add(num);
        }
        /// <summary>
        /// 打印
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnPrint_Click(object sender, EventArgs e)
        {
            if (this.lstNum.Items.Count == 0)
            {
                MessageBox.Show("请先选号哦~~~");
                return;
            }
            string path = DateTime.Now.ToString("yyyyMMddHHmmssms")+".txt";
            pickDevice.ExportToTxt(path);
            btnClear_Click(null,null);
            MessageBox.Show("恭喜,搞定~~~");
        }
        /// <summary>
        /// 清空
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnClear_Click(object sender, EventArgs e)
        {
            this.lstNum.Items.Clear();
            foreach (Control c in pnlNum.Controls)
            {
                c.Text = "0";
            }
            order = 0;
            pickDevice.SelectedNum.Clear();
        }
    }
}

代码下载:体育彩票选号器.rar

时间: 2024-08-29 10:48:50

c# winform 面向对象设计体育彩票选号器的相关文章

javascript 双色球选号器

//随机生成号码 var a=["01","02","03","04","05","06","07","08","09","10","11","12","13","14","15","16"

发号器的设计

数据库中的每条记录都需要一个ID,即使在分库分表后这个ID需要全局唯一性.因此,分库分表后不能使用Mysql自带的自增ID了.因为不通的库之间的ID可能是一样的. 我们以记录海量的用户信息为例,可能会想到身份证号.电话号码或者email.但是这些信息是会变的.如果用户要修改这些信息,那么ID就失效了.无异于新增一条记录,删掉原来的记录. 基于 Snowflake 算法搭建发号器 雪花算法可以提供全局唯一的ID.雪花算法生成的ID一般是分几段的,下图就是典型的ID组成:41位时间戳(一般是毫秒级?

Winform Windows Media Player 简易播放器

新手上路,高手勿进! 窗体设计: 实现效果: 实现代码: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using System.Data.SqlClient; using Sy

(转载)Java程序员应当知道的10个面向对象设计原则

面向对象设计原则是OOPS编程的核心, 但我见过的大多数Java程序员热心于像Singleton (单例) . Decorator(装饰器).Observer(观察者) 等设计模式,而没有把足够多的注意力放在学习面向对象的分析和设计上面.学习面向对象编程像"抽象"."封装"."多态"."继承" 等基础知识是重要的,但同时为了创建简洁.模块化的设计,了解这些设计原则也同等重要.我经常看到不同经验水平的java程序员,他们有的不知

面向对象设计三大特性

面向对象设计三大特性 一.封装 良好的封装能够减少耦合:类内部的实现可以自由地修改:类具有清晰的对外接口.比如建立一个猫的类,再建立一个狗的类,这样也算封装,只是会出现大量相似代码. 二.继承 继承的出现是因为对象类中出现过多重复代码,为解决该问题而建立父类,将这部分代码放进父类中,由子类继承.子类继承父类的所有特性,同时可以定义新的特性. 如果子类继承于父类,子类拥有父类非private的属性和功能:子类具有自己的属性和功能,即子类可以扩展父类没有的属性和功能:子类还可以以自己的方式实现父类的

【小话设计模式】面向对象设计原则

1.单一职责原则 单一职责原则的核心思想就是:系统中的每一个对象都应该只有一个单独的职责,而所有对象所关注的就是自身职责的完成.英文缩写SRP  Single Responsibility Principle 单一职责原则-->"高内聚,低耦合",每个类应该只有一个职责,此外只能提供一种功能,而引起类变化的原因应该只有一个.在设计模式中,所有的设计模式都遵循这一原则. 优点: 可以降低类的复杂度: 提高类的可读性,提高系统的可维护性: 变更引起的风险降低. 2.里氏替换原则 里氏

Effective c++(笔记)之继承关系与面向对象设计

1.公有继承(public inheritance) 意味着"是一种"(isa)的关系 解析:一定要深刻理解这句话的含义,不要认为这大家都知道,本来我也这样认为,当我看完这章后,就不这样认为了. 公有继承可以这样理解,如果令class D以public 的形式继承了class B ,那么可以这样认为,每一个类型为D的对象同时也可以认为是类型为B的对象,但反过来是不成立的,对象D是更特殊化更具体的的概念,而B是更一般化的概念,每一件事情只要能够施行于基类对象身上,就一定可以应用于派生类对

第二篇T语言实例开发,福彩3D摇号器

---恢复内容开始--- 福彩3D摇号器 先验知识功能的含义与使用 功能是TC源程序的基本模块,通过对功能模块的调用实现特定的功能,TC语言中的功能相当于其他高级语言的子程序. 在TC里面,功能分为三大部分: TC库功能:这类功能是TC内置的,可以任意调用 TC的事件功能: 这类功能是界面控件的事件. TC自定义功能: 这类值根据代码功能自定义的,:灵活性和使用性更大. 自定义功能的使用 格式:功能+空格-功能名+() 功能结束 功能的参数说明 在TC里功能也分为两类:无参功能,有参功能. 1.

Effective C++(20) 继承与面向对象设计

本文主要参考<Effective C++ 3rd>中的第六章部分章节的内容. 关注的问题集中在继承.派生.virtual函数等.如: virtual? non-virtual? pure virtual? 缺省参数值与virtual函数有什么交互影响? 继承如何影响C++的名称查找规则? 什么情况下有比virtual更好的选择? 这些都是我们将要从这一章里学到的内容. 1 确定你的public继承可以塑模出is-a关系 谨记public继承的含义: 如果class D以public形式继承cl