C#小程序实现随机抽奖(窗体应用程序)

C#实现随机抽奖(^

刚接触C#没多久,尝试着写了一个抽奖的小程序(+—+)。

*功能简介:*它可以在规定时间内随机选取要抽取对象中的一个,可以连续抽取(重复也行,不重复也可以)。这个看自己要哪种效果啦。对了这个小程序写得不是很好,需要自己建一个txt文件添加自己要抽的东西(名字要和代码里的一样哦),一行只能添加一个对象(这个列表类型是识别一行为一个对象)。。。。。。。

*思路:*利用定时器timer实现⏲定时功能,Random产生随机数,将自己的待抽取对象以文件流的形式读取出来,然后与上面两个功能相结合产生结果。

*实现:*先创建一个Windows窗体应用,添加一个timer控件和一个openFileDialog控件(用来打开文件)。然后可以再添加两个button控件,一个实现程序的开关,另一个用来选择打开文件。然后就可以开始操作一波啦(嘿嘿~)。

附上我的效果图(瞎搞的):
在这里插入图片描述
代码如下:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace 抽奖
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
        StreamReader sred;                     
        Random rdm = new Random();                      //实例化随机类对象
        int i = 0, length = 0;
        List<string> array=new List<string> ();          //实例化一种可通过索引访问的强列表类型
        string fileName = "Random.txt";                //用来储存数据的文本,注:此处没有写生成文件的代码,需要自己创建一个同名txt文件
        public void readText()                         //读取文本文件内的抽取对象
        {
            i = 0;length = 0;
            sred = new StreamReader(fileName, UnicodeEncoding.GetEncoding("UTF-8"));   //从选择文件内读取成UTF-8 格式的文件流
            string content;                   //用来存储读取到的内容
            while ((content = sred.ReadLine()) != null)    //读取到内容添加进列表中
            {
                array.Add(content);
            }
            sred.Close();           //读取完毕,关闭文件流读取对象
        }

        private void button1_Click(object sender, EventArgs e)               //用来开始和关闭抽取过程
        { 
            timer1.Stop();
            timer1.Start();
        }

        private void button2_Click(object sender, EventArgs e)       //用来选择文件
        {
           
            openFileDialog1.Filter = "(*.txt)|*.txt";     //指定文件格式为txt
            if (openFileDialog1.ShowDialog() == DialogResult.OK)      //打开文件选择对话框
            {
                fileName = openFileDialog1.FileName;       //选中并打开文件
                readText();                //读取
            }
        }

        private void textBox1_ImeModeChanged(object sender, EventArgs e)
        {

        }

        private void textBox1_TextChanged(object sender, EventArgs e)
        {

        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            i++; length++;
                if (array.Count == 0)            //没有数据,提示重新选择
                {
                    timer1.Stop();
                    MessageBox.Show("当前不存在抽取对象或对象已经抽完,请重新选择", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {
                    if (length > array.Count - 1)        //只有一个抽取对象,就直接显示结果
                    {
                        length = 0;
                    }
                    textBox1.Text = array[length];
                    if (i == 10)         //延时一秒
                    {
                        int tempNum = rdm.Next(0, array.Count - 1);       //随机返回这个范围内的一个整数
                        textBox1.Text = array[tempNum];         //显示结果
               //         array.RemoveAt(tempNum);         //加上就变成不重复抽取
                        i = 0;
                        timer1.Stop();                     //抽取停止
                    }
                }  
        }
    }
}

有什么不对的地方欢迎大家指正,我也是才接触没多久的新手,嘻嘻(*^*)

  • 7
    点赞
  • 65
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值