读书社随机分类程序

程序由来:为了更好的学习以及接触更多的人,最近参加了一个读书社(QQ群ID:216284991),里面的群主说要开发一个随机分组的程序,让组员可以随机分组,于是我毛遂自荐一把,开发了这个小程序。

大致思路:本程序采用txt作为数据库,然后通过Split截取其中的字符串,然后通过随机算法,将组员进行分组。

界面如下:

image

代码如下:

using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Text;

using System.Windows.Forms;

using System.IO;



namespace Extraction

{

    public partial class FrmMain : Form

    {

        public FrmMain()

        {

            InitializeComponent();

        }



        private void btnDataPath_Click(object sender, EventArgs e)

        {





        }

        /// <summary>

        /// 获取文本文件的内容,放入数组

        /// </summary>

        /// <param name="sender"></param>

        /// <param name="e"></param>

        private void btnExtract_Click(object sender, EventArgs e)

        {

            string textDataMember = null;

            using (OpenFileDialog ofd = new OpenFileDialog())

            {

                //设置过滤文件后缀

                ofd.Filter = "文本文件(*.txt)|*.txt";

                if (ofd.ShowDialog() == DialogResult.OK)

                {

                    try

                    {

                        using (StreamReader sr = new StreamReader(ofd.FileName, Encoding.GetEncoding("GB2312")))//设置文件编码,防止乱码

                        {



                            while ((textDataMember = sr.ReadLine()) != null)

                            {

                                string[] memberArray = textDataMember.Split('|');//读取行,然后通过Split截取字符串

                                ArrayToExtraction(memberArray);

                            }

                        }

                    }

                    catch (Exception ex)

                    {



                        MessageBox.Show("无法读取文件" + ex.Message);

                    }

                }

            }

        }

        /// <summary>

        /// 分组算法

        /// </summary>

        /// <param name="memberArray"></param>

        private void ArrayToExtraction(string[] memberArray)

        {

            int extractionEveryNum = int.Parse(txtExtractMem.Text);//从界面获取需要的每组人数

            int groupNum = (int)Math.Ceiling(memberArray.Length * 1.0 / extractionEveryNum);//获取组数

            Dictionary<int, string> iDict = new Dictionary<int, string>();

            for (int i = 0; i < memberArray.Length; i++)

            {

                iDict.Add(i, memberArray[i].ToString());//将数组的值,放入字典中

            }



            Random rd = new Random();

            rtbResult.Text = null;

            for (int j = 1; j <= groupNum; j++)//组的循环

            {

                rtbResult.Text += "第" + j + "组:     ";

                for (int k = 0; k < extractionEveryNum; k++)//组的人员的循环

                {

                    int rdNum = rd.Next(0, memberArray.Length);



                    bool done = false;

                    if (iDict.Count != 0)

                    {

                        while (!done)

                        {

                            if (iDict.ContainsKey(rdNum))

                            {

                                rtbResult.Text += iDict[rdNum]+"\t";

                                iDict.Remove(rdNum);

                                done = true;

                            }

                            else

                            {

                                rdNum = rd.Next(0, memberArray.Length);

                            }

                        }

                    }



                }

                rtbResult.Text += "\n\r";

            }

        }

    }

}

你可能感兴趣的:(读书)