




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、教学点名神器随机点名器3.0 随机点名器功能又一大提升,而且之前若干bug均已修复。修复内容:1.当默认开启的txt文本文件被删除或的文件名被更改或由于某种未知的原因不能访问时,程序不会报错,而是将一些提示信息以学生名导入。例如:程序默认访问“电科一班.txt”:如果在可执行文件的路径下有 “电科一班.txt”文件,则运行正常。如果在可执行文件的路径下没有找到 “电科一班.txt”文件,则运行提示信息。 在这种非正常情况下,如果仍然点击正式记录,则弹出提示帮助信息窗口。 这样,用户在看到提示信息后,会自行修复该问题。修复2:若读取的文件中存在空行,则程序在读取文件内容的时候会自动删除空行。 现
2、在,我把先前文件名“电科一班121314.txt”修改为“电科一班.txt”,然后在文件内容中加两个空行,如下图所示: 程序在运行的时候再也不会出现空姓名。程序运行一圈后,会给出提示信息。 功能提升:1.可以选择班级,班级内容自定义。现在,我又新建了一个班级文件“1班.txt”,文件内容如下: 现在可以选择班级,我就把“1班.txt”选进来。 一般,“选择班级.”,在程序打开后只会用一次,点击“打开”后,“选择班级.”按钮被隐藏。 2.增加出勤记录,答问记录功能。若没有点击“正式记录”按钮,抽取信息不会被记录,也没有弹出出勤相关的选择按钮。功能与旧版一样。一旦点击正式记录,由于这个记录涉及到学
3、生的平时成绩,因此非常重要,所以弹出是否确定选择对话框。 点击确定后,”正式记录“按钮被隐藏。 再次抽取后,会弹出“缺勤”和“差评”两个选择按钮,并自动在该班级目录下新建一个“班级名+点名记录清单”文本文件。 文本内容自动记录第一次被点到的学生,并创建时间,原创者,班级信息相关信息。如下所示: 若点击差评或缺勤,记录会自动加一,而且,一旦选择之后,该两个按钮即被隐藏,防止误操作。当然你也可以不行,直接抽下一个人,但选择按钮照样被隐藏,同样该学生的点名信息也会被记录。 重复抽取后所有记录都会自动保存到该文件。 如果点击确定,或关闭程序再次打开程序选择该班级,同样执行上述步骤,则记录会在原来的基础
4、上累加。 经过一系列操作后得到的记录表如下: 当然,如果你选择其他班级,照样会执行相应的操作。现在,举个典型的例子,我在桌面上新建一个文本文件,内容如下: 选择该文件,执行同样的操作,立即生成“2班点名记录清单.txt”文件。 重复点名后,实时记录的点名内容: C#部分源程序:(本软件完全由个人编写,未经本人允许,请勿用于商业目的)using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;us
5、ing System.Text;using System.Threading.Tasks;using System.Windows.Forms;using System.IO;using System.Drawing.Drawing2D;namespace 随机抽样 public partial class Form1 : Form static int step = 0; static bool Startload = false; static string pathstudent = System.AppDomain.CurrentDomain.SetupInformation.Appl
6、icationBase+"/","电科一班.txt" static string name = getName(); static int ppp = GetRandomArray(name.Length); public Form1() InitializeComponent(); Timer t = new Timer(); t.Interval =2000; t.Tick += new EventHandler(changeBackground); t.Start(); Timer t2 = new Timer(); t2.Interval = 1
7、00; t2.Tick += new EventHandler(changestudent); t2.Start(); static int iiii = 0; void changestudent(object sender, EventArgs e) if (name = null) return; if (this.startrand.Text="停 止 抽 取") iiii+; this.disinf.Text =nameppp(step+iiii)%name.Length; int q = GetRandomArray(3); int colorval = 0,
8、100, new Random().Next(100) ; this.disinf.ForeColor = Color.FromArgb(255, colorvalq0, colorvalq1, colorvalq2); void changeBackground(object sender, EventArgs e) /int i = DateTime.Now.Second/15; switch (GetRandomArray(18)0) case 0: BackgroundImage =imageList1.Images0; break; case 1: BackgroundImage =
9、 imageList1.Images1; break; case 2: BackgroundImage = imageList1.Images2; break; case 3: BackgroundImage = imageList1.Images3; break; case 4: BackgroundImage = imageList1.Images4; break; case 5: BackgroundImage = imageList1.Images5; break; case 6: BackgroundImage = imageList1.Images6; break; case 7:
10、 BackgroundImage = imageList1.Images7; break; case 8: BackgroundImage = imageList1.Images8; break; case 9: BackgroundImage = imageList1.Images9; break; case 10: BackgroundImage = imageList1.Images10; break; case 11: BackgroundImage = imageList1.Images11; break; case 12: BackgroundImage = imageList1.
11、Images12; break; case 13: BackgroundImage = imageList1.Images13; break; case 14: BackgroundImage = imageList1.Images14; break; case 15: BackgroundImage = imageList1.Images15; break; case 16: BackgroundImage = imageList1.Images16; break; case 17: BackgroundImage = imageList1.Images17; break; default:
12、 break; private void startrand_Click(object sender, EventArgs e)/开始暂停按钮 this.button1.Visible = false; this.button2.Visible = false; /获取对比度大的随机深彩色 int q = GetRandomArray(3); int colorval = 170, 255, new Random().Next(80)+170 ; startrand.FlatAppearance.MouseOverBackColor = Color.FromArgb(255, colorval
13、q0, colorvalq1, colorvalq2);/随机设置鼠标悬停在按钮上的颜色 startrand.FlatAppearance.MouseDownBackColor = Color.FromArgb(255, colorvalq0 - 50, colorvalq1 - 50, colorvalq2 - 50);/随机设置鼠标按下按钮后的颜色 try if (this.startrand.Text="开 始 抽 取")/判断字符串检测鼠标是否按下 this.startrand.Text = "停 止 抽 取"/如果按下,将字符串的颜色修改 el
14、se String abcd="" StreamWriter sw; step=step+1; this.startrand.Text = "开 始 抽 取" this.disinf.Text = namepppstep - 1; if (Startload=true) try abcd = File.ReadAllLines(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt");/编码格式 catch sw = File.AppendText(path
15、student0 + pathstudent1.Replace(".txt", "点名记录清单.txt"); sw.Write(pathstudent1.Replace(".txt", "") + "点名记录清单" + "创建日期:" + DateTime.Today.ToString("yyyy" + "年" + "MM" + "月" + "dd" + "日&quo
16、t;) + " 随机点名器原创者:陈鹏" + "rn"); sw.Write("学生姓名(学号)".PadRight(30 - 8, ' ') + "被点次数".PadRight(20 - 4, ' ') + "缺勤次数".PadRight(20 - 4, ' ') + "老师不满意次数r"); sw.Close(); abcd = Array.FindAll(abcd, line => !string.IsNullOrE
17、mpty(line);/ 去除是null或是""的string string n; n = findn(abcd, this.disinf.Text); sw = File.AppendText(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt"); if (n = "1") sw.Write("n" + this.disinf.Text.PadRight(30, ' ') + n.PadRight(20, '
18、 ') + "0".PadRight(20, ' ') + "0".PadRight(5, ' ') + "r");/string1.PadLeft(100," ")这句话的意思是如果string1的长度不够100位,则在前面加空格,知道补够100位。 else sw.Write("n" + this.disinf.Text.PadRight(30, ' ') + n + "r"); sw.Close(); /sw.Fl
19、ush(); this.button1.Visible = true; this.button2.Visible = true; catch this.disinf.Text = "木有了咦(;)" MessageBox.Show("人已经抽完了,重新开始吧?"); ppp = GetRandomArray(name.Length);/重新排序 step = 0; iiii = 0; return; string findn(string f,string w) int n = 1; string a; for (int i = 0; i < f.
20、Length; i+)/查找文件夹中是否存在该学生的信息 try a=fi.Substring(0,w.Length);/从第m个位置,截取n个长度 if (a = w)/如果找到了学生的信息,刷新学生的得分 a = fi.Substring(25, 10).Replace(" ", ""); n=Convert.ToInt32(a); StreamWriter sw = new StreamWriter(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt"
21、;), false); for (int j = 0; j < f.Length; j+) if (i != j) sw.WriteLine(fj); /sw.Flush(); sw.Close(); /sw.Dispose(); return (n + 1).ToString() .PadRight(20,' ')+ fi.Substring(50,25); catch continue; return n.ToString(); static int GetRandomArray(int length)/获取一个随机数组,元素长度为1length,值包含1length
22、 double rnds = new doublelength; int num = new intlength; int newNum = new intnum.Length; for (int i = 0; i < length; i+) numi = i; List<int> numCopy = new List<int>(); foreach (int i in num) numCopy.Add(i); Random random = new Random(); for (int i = 0; i < num.Length; i+) int sele
23、ctedIndex = random.Next(num.Length - i); newNumi = numCopyselectedIndex; numCopy.RemoveAt(selectedIndex); return newNum; static string getName()/程序打开后,获取姓名列表 /string str = System.Windows.Forms.Application.StartupPath; try String lines = File.ReadAllLines(pathstudent0 + pathstudent1, Encoding.Default
24、);/读取可执行文件路径下的txt文件 lines = Array.FindAll(lines, line => !string.IsNullOrEmpty(line);/ 去除是null或是""的string return lines; catch/如果路径文件搜索失败,则赋值如下语句。 string lines = "貌似没找到你想要的文件哦!","2015年5月", "湖北工业大学", "随机点名器", "陈鹏", "D=", "
25、215;D=0", "=3.14159265358979323846264338328","电气学院","电科一班" pathstudent=null; return lines; private void disinf_TextChanged(object sender, EventArgs e) private void Form1_Load(object sender, EventArgs e) private void btnchooseclass_Click(object sender, EventArgs e)/
26、 如果点击了选择班级按钮 this.button1.Visible = false; this.button2.Visible = false; OpenFileDialog dlg = new OpenFileDialog();/就打开一个对话框,让你选择班级文件 if (dlg.ShowDialog() = System.Windows.Forms.DialogResult.OK)/如果选好了文件,并点击了确定按钮 if (File.ReadAllLines(dlg.FileName, Encoding.Default).Length!=0)/如果文件内容不为空 name = File.R
27、eadAllLines(dlg.FileName, Encoding.Default);/逐行读入所有的内容,更新变量name; name= Array.FindAll( name, line => !string.IsNullOrEmpty(line);/ 去除是null或是""的string ppp = GetRandomArray(name.Length);/重新排序 step = 0;/初始化点名次数 btnchooseclass.Visible = false;/一般该按钮只会用一次,故使用后将其隐藏,避免占用空间。 pathstudent1 = dlg.S
28、afeFileName; pathstudent0 = dlg.FileName.Remove(dlg.FileName.Length-pathstudent1.Length); return; else this.button1.Visible = true; this.button2.Visible = true; private void button1_Click(object sender, EventArgs e) if (Startload=true) String abcd = "" ; StreamWriter sw; this.button1.Visib
29、le = false; this.button2.Visible = false; try abcd = File.ReadAllLines(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt");/编码格式 catch sw = File.AppendText(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt"); sw.Write(pathstudent1.Replace(".tx
30、t", "") + "点名记录清单" + "创建日期:" + DateTime.Today.ToString("yyyy" + "年" + "MM" + "月" + "dd" + "日") + " 随机点名器原创者:陈鹏" + "rn"); sw.Write("学生姓名(学号)".PadRight(30 - 8, ' ') + &q
31、uot;被点次数".PadRight(20 - 4, ' ') + "缺勤次数".PadRight(20 - 4, ' ') + "老师不满意次数r"); sw.Close(); abcd = Array.FindAll(abcd, line => !string.IsNullOrEmpty(line);/ 去除是null或是""的string string n; n = findqueqing(abcd, this.disinf.Text); sw = File.AppendText(
32、pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt"); if (n = "1") sw.Write("n" + this.disinf.Text.PadRight(30, ' ') + n.PadRight(20, ' ') + "1".PadRight(20, ' ') + "0".PadRight(5, ' ') + "r");
33、/string1.PadLeft(100," ")这句话的意思是如果string1的长度不够100位,则在前面加空格,知道补够100位。 else sw.Write("n" + n + "r"); sw.Close(); string findqueqing(string f, string w) int n = 1; string a; for (int i = 0; i < f.Length; i+)/查找文件夹中是否存在该学生的信息 try a = fi.Substring(0, w.Length);/从第m个位置,截取n
34、个长度 if (a = w)/如果找到了学生的信息,刷新学生的得分 a = fi.Substring(45, 10).Replace(" ", ""); n = Convert.ToInt32(a); StreamWriter sw = new StreamWriter(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt"), false); for (int j = 0; j < f.Length; j+) if (i != j) sw.Write
35、Line(fj); /sw.Flush(); sw.Close(); /sw.Dispose(); return fi.Substring(0,50)+(n + 1).ToString().PadRight(20, ' ') + fi.Substring(70, 5); catch continue; return n.ToString(); private void button2_Click(object sender, EventArgs e) if (Startload=true) String abcd = "" ; StreamWriter sw
36、; this.button1.Visible = false; this.button2.Visible = false; try abcd = File.ReadAllLines(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt");/编码格式 catch sw = File.AppendText(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt"); sw.Write(pathstuden
37、t1.Replace(".txt", "") + "点名记录清单" + "创建日期:" + DateTime.Today.ToString("yyyy" + "年" + "MM" + "月" + "dd" + "日") + " 随机点名器原创者:陈鹏" + "rn"); sw.Write("学生姓名(学号)".PadRight(30 -
38、8, ' ') + "被点次数".PadRight(20 - 4, ' ') + "缺勤次数".PadRight(20 - 4, ' ') + "老师不满意次数r"); sw.Close(); abcd = Array.FindAll(abcd, line => !string.IsNullOrEmpty(line);/ 去除是null或是""的string string n; n = nchaping(abcd, this.disinf.Text); sw =
39、 File.AppendText(pathstudent0 + pathstudent1.Replace(".txt", "点名记录清单.txt"); if (n = "1") sw.Write("n" + this.disinf.Text.PadRight(30, ' ') + n.PadRight(20, ' ') + "0".PadRight(20, ' ') + "1".PadRight(5, ' ') + &q
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年细胞治疗产品审批流程审批政策变化对行业影响报告001
- 劝学考试题目及答案
- 艺术品鉴定机构的国际标准与合规研究-洞察及研究
- 软件运维服务合同范本
- 网上办事大厅合同范本
- 私人酒店加盟合同范本
- 自助冰虾采购合同范本
- 自建房屋买卖协议合同
- 软件开发投资合同范本
- 部门文员派遣合同范本
- 2025年自建房施工合同书 (包工不包料 C款)
- 军事心理战试题及答案
- 2025年北京市第一次普通高中学业水平合格性考试历史试题(含答案)
- 二年级上册数学《观察物体》教学设计
- 检验科消防安全知识培训
- 心肾综合征诊疗实践指南解读
- 中国古代数学家求数列和的方法课件-高二上学期数学人教A版选择性
- 二氧化碳驱油机理及其在石油工业的应用
- 护理三基试题汇编1000题(含答案)
- 跨国企业战略协同-深度研究
- 2025届广东省深圳市南山区南山中英文学校三年级数学第一学期期末统考试题含解析
评论
0/150
提交评论