C#语言开发一个《学生点名》客户端应用程序 | 您所在的位置:网站首页 › 随机点名系统c语言代码 › C#语言开发一个《学生点名》客户端应用程序 |
我朋友的朋友是个老师,昨天我朋友让我帮做一个《学生点名》程序给他,于是今天就抽个空把这个小应用给写了,现在分享下给大家。 首先我们需要明确这个程序需要具备什么功能,我给他设定的功能如下 1.可以维护学生信息(目前只能维护姓名,用于点名而已没必要做成HR系统一样)。 2.在学生信息中随机点名。 针对第一个需求,我们需要把学生信息保存下来,由于只是个小应用,我们可以做成单机版的不需要连数据库,你让一个教语文的老师电脑装个数据库也不现实把? 所以保存数据我采用的是保存到XML文件里面。 数据维护操作需要简洁所以我们做成如下图操作 1536017692(1).png注:添加多名学生请以英文输入法条件下“,”分隔,例:学生甲,学生乙 image保存操作XML 代码如下 public static class XMLHelper { /// /// 写入XML /// /// 学生姓名 public static void saveToXml(string username) { string path = Application.StartupPath + "\StudentName.xml"; XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(path); XmlNode node; node = xmlDoc.SelectSingleNode("/config/username"); if (node != null) { XmlElement n = xmlDoc.CreateElement("username"); n.InnerText = username; xmlDoc.SelectSingleNode("config").AppendChild(n); } else { node.InnerText = username; } xmlDoc.Save(path); } public static List ReadXml() { //list List stlist = new List(); string path = Application.StartupPath + "\StudentName.xml"; //使用的时候,首先声明一个XmlDocument对象,然后调用Load方法,从指定的路径加载XML文件. XmlDocument doc = new XmlDocument(); XmlReaderSettings settings = new XmlReaderSettings(); settings.IgnoreComments = true;//忽略文档里面的注释 using (XmlReader reader = XmlReader.Create(path, settings)) { doc.Load(reader); XmlNode xn = doc.SelectSingleNode("config"); // 得到根节点的所有子节点 XmlNodeList xnl = xn.ChildNodes; foreach (XmlNode xn1 in xnl) { Student st1 = new Student(); // 将节点转换为元素,便于得到节点的属性值 XmlElement xe = (XmlElement)xn1; // 得到st节点的所有子节点 XmlNodeList xnl0 = xe.ChildNodes; if (xnl0.Count!=0) { st1.StudentName = xnl0.Item(0).InnerText; stlist.Add(st1); } } } return stlist; } } 在学生信息中随机点名功能实现: image点击开始,名字跳到再次点击随机一个名字 代码实现如下: private void button1_Click(object sender, EventArgs e) { try { if (button1.Text == "暂停") { flag = false; button1.Text = "开始"; } else { flag = true; button1.Text = "暂停"; } // int i = 0; List person = XMLHelper.ReadXml(); string[] strName = new string[person.Count]; foreach (var s in person) { string ss = s.StudentName; } for (int i = 0; i < person.Count; i++) { strName[i] = person[i].StudentName; } AsyncMethod(strName); } catch (Exception ex) { MessageBox.Show("点名出错:"+ex.ToString()); } } public string GetRandomNumber(string[] a) { Random rnd = new Random(); int index = rnd.Next(a.Length); return a[index]; } public async void AsyncMethod(string[] strName) { Console.WriteLine("start async"); var result = await MyMethod(strName); Console.WriteLine("end async"); } public async Task MyMethod(string[] strName) { while (flag) { label1.Text = GetRandomNumber(strName); await Task.Delay(10); //模拟耗时操作 } return 0; } 这里用到了多线程操作,这样就可以实现数据循环和按钮可以重用。 到此,一个小应用就完成了,后续我们可以追加的功能如下 1.界面添加几个勾选框,做个随机规则制定 1.1 选择性别,比如我只想让男同学回答问题 1.2 点过名的是否再次点名,就是再次随机的时候是否排除已点过名的同学 如果大家有需要上述完整代码可以关注我然后私信发信息给我,看到后我会把完整代码发给大家 |
CopyRight 2018-2019 实验室设备网 版权所有 |