教学点名神器-随机点名器(共23页)_第1页
教学点名神器-随机点名器(共23页)_第2页
教学点名神器-随机点名器(共23页)_第3页
教学点名神器-随机点名器(共23页)_第4页
教学点名神器-随机点名器(共23页)_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、教学点名神器(shn q)随机(su j)点名器3.0 随机点名器功能又一大提升,而且之前(zhqin)若干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;

5、using System.Linq;using 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.S

6、etupInformation.ApplicationBase+/,电科一班(y bn).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

7、= 100; 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, 100, new

8、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 = imageLis

9、t1.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: Backgrou

10、ndImage = 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.Images12;

11、 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: break; p

12、rivate void startrand_Click(object sender, EventArgs e)/开始(kish)暂停按钮 this.button1.Visible = false; this.button2.Visible = false; /获取(huq)对比度大的随机深彩色 int q = GetRandomArray(3); int colorval = 170, 255, new Random().Next(80)+170 ; startrand.FlatAppearance.MouseOverBackColor = Color.FromArgb(255, colorv

13、alq0, colorvalq1, colorvalq2);/随机(su j)设置鼠标悬停在按钮上的颜色 startrand.FlatAppearance.MouseDownBackColor = Color.FromArgb(255, colorvalq0 - 50, colorvalq1 - 50, colorvalq2 - 50);/随机设置鼠标按下按钮后的颜色 try if (this.startrand.Text=开 始 抽 取)/判断字符串检测鼠标是否按下 this.startrand.Text = 停 止 抽 取;/如果按下,将字符串的颜色修改 else String abcd=

14、; 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(pathstudent0 + pathstudent1.Replace(.txt, 点名记录清单.txt); sw.Write(p

15、athstudent1.Replace(.txt, ) + 点名记录清单 + 创建日期: + DateTime.Today.ToString(yyyy + 年 + MM + 月 + dd + 日) + 随机点名器原创者:陈鹏 + rn); sw.Write(学生(xu sheng)姓名(学号).PadRight(30 - 8, ) + 被点次数(csh).PadRight(20 - 4, ) + 缺勤(qu qn)次数.PadRight(20 - 4, ) + 老师不满意次数r); sw.Close(); abcd = Array.FindAll(abcd, line = !string.Is

16、NullOrEmpty(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, ) + 0.PadRight(20, ) + 0.PadRight(5, ) + r);/string1.PadLeft(100, )这句

17、话的意思是如果string1的长度不够100位,则在前面加空格,知道补够100位。 else sw.Write(n + this.disinf.Text.PadRight(30, ) + n + r); sw.Close(); /sw.Flush(); this.button1.Visible = true; this.button2.Visible = true; catch this.disinf.Text = 木有了咦(;); MessageBox.Show(人已经抽完了,重新开始吧?); ppp = GetRandomArray(name.Length);/重新排序 step = 0;

18、 iiii = 0; return; string findn(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个位置(wi zhi),截取n个长度(chngd) if (a = w)/如果找到了学生(xu sheng)的信息,刷新学生的得分 a = fi.Substring(25, 10).Replace( , ); n=Convert.ToInt32(a); StreamWriter sw =

19、 new StreamWriter(pathstudent0 + pathstudent1.Replace(.txt, 点名记录清单.txt), 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 GetRa

20、ndomArray(int length)/获取一个随机数组,元素长度为1length,值包含1length double rnds = new doublelength; int num = new intlength; int newNum = new intnum.Length; for (int i = 0; i length; i+) numi = i; List numCopy = new List(); foreach (int i in num) numCopy.Add(i); Random random = new Random(); for (int i = 0; i !s

21、tring.IsNullOrEmpty(line);/ 去除是null或是的string return lines; catch/如果路径文件搜索失败,则赋值如下语句。 string lines = 貌似没找到你想要的文件哦!,2015年5月, 湖北工业大学, 随机点名器, 陈鹏, D=, D=0, =3.14159265358979323846264338328,电气学院,电科一班; pathstudent=null; return lines; private void disinf_TextChanged(object sender, EventArgs e) private void

22、Form1_Load(object sender, EventArgs e) private void btnchooseclass_Click(object sender, EventArgs e)/ 如果点击了选择班级按钮 this.button1.Visible = false; this.button2.Visible = false; OpenFileDialog dlg = new OpenFileDialog();/就打开一个对话框,让你选择班级文件 if (dlg.ShowDialog() = System.Windows.Forms.DialogResult.OK)/如果选好

23、了文件,并点击了确定按钮 if (File.ReadAllLines(dlg.FileName, Encoding.Default).Length!=0)/如果文件内容(nirng)不为空 name = File.ReadAllLines(dlg.FileName, Encoding.Default);/逐行读入所有(suyu)的内容,更新(gngxn)变量name; name= Array.FindAll( name, line = !string.IsNullOrEmpty(line);/ 去除是null或是的string ppp = GetRandomArray(name.Length)

24、;/重新排序 step = 0;/初始化点名次数 btnchooseclass.Visible = false;/一般该按钮只会用一次,故使用后将其隐藏,避免占用空间。 pathstudent1 = dlg.SafeFileName; pathstudent0 = dlg.FileName.Remove(dlg.FileName.Length-pathstudent1.Length); return; else this.button1.Visible = true; this.button2.Visible = true; private void button1_Click(object

25、sender, EventArgs e) if (Startload=true) String abcd = ; StreamWriter sw; 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, 点名记录清单.t

26、xt); sw.Write(pathstudent1.Replace(.txt, ) + 点名记录清单 + 创建日期: + DateTime.Today.ToString(yyyy + 年 + MM + 月 + dd + 日) + 随机点名器原创者:陈鹏 + rn); sw.Write(学生姓名(学号).PadRight(30 - 8, ) + 被点次数.PadRight(20 - 4, ) + 缺勤次数.PadRight(20 - 4, ) + 老师不满意次数r); sw.Close(); abcd = Array.FindAll(abcd, line = !string.IsNullOrE

27、mpty(line);/ 去除(q ch)是null或是(hu sh)的string string n; n = findqueqing(abcd, this.disinf.Text); sw = File.AppendText(pathstudent0 + pathstudent1.Replace(.txt, 点名记录(jl)清单.txt); if (n = 1) sw.Write(n + this.disinf.Text.PadRight(30, ) + n.PadRight(20, ) + 1.PadRight(20, ) + 0.PadRight(5, ) + r);/string1.

28、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个长度 if (a = w)/如果找到了学生的信息,刷新学生的得分 a = fi.Substring

29、(45, 10).Replace( , ); n = Convert.ToInt32(a); StreamWriter sw = new StreamWriter(pathstudent0 + pathstudent1.Replace(.txt, 点名记录清单.txt), false); for (int j = 0; j !string.IsNullOrEmpty(line);/ 去除是null或是的string string n; n = nchaping(abcd, this.disinf.Text); sw = File.AppendText(pathstudent0 + pathst

30、udent1.Replace(.txt, 点名记录清单.txt); if (n = 1) sw.Write(n + this.disinf.Text.PadRight(30, ) + n.PadRight(20, ) + 0.PadRight(20, ) + 1.PadRight(5, ) + r);/string1.PadLeft(100, )这句话的意思(y s)是如果string1的长度(chngd)不够100位,则在前面加空格(kn ),知道补够100位。 else sw.Write(n + n + r); sw.Close(); string nchaping(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个长度 if (a = w)/如果找到了

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论