教學點名神器-隨機點名器(共23頁)_第1頁
教學點名神器-隨機點名器(共23頁)_第2頁
教學點名神器-隨機點名器(共23頁)_第3頁
教學點名神器-隨機點名器(共23頁)_第4頁
教學點名神器-隨機點名器(共23頁)_第5頁
已閱讀5頁,還剩19頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、教學點名神器(shn q)隨機(su j)點名器3.0 隨機點名器功能又一大提升,而且之前(zhqin)若干bug均已修復。修復內(nèi)容:1.當默認開啟的txt文本文件被刪除或的文件名被更改或由于某種未知的原因不能訪問時,程序不會報錯,而是將一些提示信息以學生名導入。例如:程序默認訪問“電科一班.txt”:如果在可執(zhí)行文件的路徑下有 “電科一班.txt”文件,則運行正常。如果在可執(zhí)行文件的路徑下沒有找到 “電科一班.txt”文件,則運行提示信息。 在這種非正常情況下,如果仍然點擊正式記錄,則彈出提示幫助信息窗口。 這樣,用戶在看到提示信息后,會自行修復該問題。修復2:若讀取的文件中存在空行,則程序

2、在讀取文件內(nèi)容的時候會自動刪除空行。 現(xiàn)在,我把先前文件名“電科一班121314.txt”修改為“電科一班.txt”,然后在文件內(nèi)容中加兩個空行,如下圖所示: 程序在運行的時候再也不會出現(xiàn)空姓名。程序運行一圈后,會給出提示信息。 功能提升:1.可以選擇班級,班級內(nèi)容自定義?,F(xiàn)在,我又新建了一個班級文件“1班.txt”,文件內(nèi)容如下: 現(xiàn)在可以選擇班級,我就把“1班.txt”選進來。 一般,“選擇班級.”,在程序打開后只會用一次,點擊“打開”后,“選擇班級.”按鈕被隱藏。 2.增加出勤記錄,答問記錄功能。若沒有點擊“正式記錄”按鈕,抽取信息不會被記錄,也沒有彈出出勤相關的選擇按鈕。功能與舊版一樣

3、。一旦點擊正式記錄,由于這個記錄涉及到學生的平時成績,因此非常重要,所以彈出是否確定選擇對話框。 點擊確定后,”正式記錄“按鈕被隱藏。 再次抽取后,會彈出“缺勤”和“差評”兩個選擇按鈕,并自動在該班級目錄下新建一個“班級名+點名記錄清單”文本文件。 文本內(nèi)容自動記錄第一次被點到的學生,并創(chuàng)建時間,原創(chuàng)者,班級信息相關信息。如下所示: 若點擊差評或缺勤,記錄會自動加一,而且,一旦選擇之后,該兩個按鈕即被隱藏,防止誤操作。當然你也可以不行,直接抽下一個人,但選擇按鈕照樣被隱藏,同樣該學生的點名信息也會被記錄。 重復抽取后所有記錄都會自動保存到該文件。 如果點擊確定,或關閉程序再次打開程序選擇該班級

4、,同樣執(zhí)行上述步驟,則記錄會在原來的基礎上累加。 經(jīng)過一系列操作后得到的記錄表如下: 當然,如果你選擇其他班級,照樣會執(zhí)行相應的操作。現(xiàn)在,舉個典型的例子,我在桌面上新建一個文本文件,內(nèi)容如下: 選擇該文件,執(zhí)行同樣的操作,立即生成“2班點名記錄清單.txt”文件。 重復點名后,實時記錄的點名內(nèi)容: C#部分源程序:(本軟件完全由個人編寫,未經(jīng)本人允許,請勿用于商業(yè)目的)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, ) + 點名記錄清單 + 創(chuàng)建日期: + DateTime.Today.ToString(yyyy + 年 + MM + 月 + dd + 日) + 隨機點名器原創(chuàng)者:陳鵬 + rn); sw.Write(學生(xu sheng)姓名(學號).PadRight(30 - 8, ) + 被點次數(shù)(csh).PadRight(20 - 4, ) + 缺勤(qu qn)次數(shù).PadRight(20 - 4, ) + 老師不滿意次數(shù)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(人已經(jīng)抽完了,重新開始吧?); 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)/獲取一個隨機數(shù)組,元素長度為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月, 湖北工業(yè)大學, 隨機點名器, 陳鵬, 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)/如果文件內(nèi)容(nirng)不為空 name = File.ReadAllLines(dlg.FileName, Encoding.Default);/逐行讀入所有(suyu)的內(nèi)容,更新(gngxn)變量name; name= Array.FindAll( name, line = !string.IsNullOrEmpty(line);/ 去除是null或是的string ppp = GetRandomArray(name.Length)

24、;/重新排序 step = 0;/初始化點名次數(shù) 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, ) + 點名記錄清單 + 創(chuàng)建日期: + DateTime.Today.ToString(yyyy + 年 + MM + 月 + dd + 日) + 隨機點名器原創(chuàng)者:陳鵬 + rn); sw.Write(學生姓名(學號).PadRight(30 - 8, ) + 被點次數(shù).PadRight(20 - 4, ) + 缺勤次數(shù).PadRight(20 - 4, ) + 老師不滿意次數(shù)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. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論