生活随笔
收集整理的這篇文章主要介紹了
楚翔教师网上学习助手桌面版
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
功能:
1.驗證碼自動識別
2.連接手機端翔教師網(wǎng)上學(xué)習(xí)助手
3.自動登錄并模擬開始網(wǎng)上學(xué)習(xí)
4.自動控制各科目的學(xué)習(xí)時間。。。,以下是效果圖和主要代碼
using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Linq;using System.Text;using System.Windows.Forms;using DevExpress.Skins;using DevExpress.XtraBars;namespace TeacherStudy{public partial class frmMain : DevExpress.XtraEditors.XtraForm{userControls.CouseStudy cousestudy;Dal.teacheredu client { get; set; }public frmMain(Dal.teacheredu client){this.client = client;InitializeComponent();}private void frmMain_Load(object sender, EventArgs e){DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = client.user.skinName;client.OnEvent += new Dal.teacheredu.jackEventHandler(client_OnEvent);InitSkins();notifyIcon1.Text = this.Text;this.Text = string.Format("{0}({1})", client.user.Nick.Split('(')[0], client.user.Workplace);lblTime.Text = "已學(xué):" + client.user.totalTime.Replace(" ", "").Trim();lblNick.Text = client.user.Nick;notifyIcon1.Text = client.user.Nick;cousestudy = new userControls.CouseStudy(client);cousestudy.Dock = DockStyle.Fill;xtraTabPage1.Controls.Add(cousestudy);barMenu.AddItem(barButtonItemExit);barMenu.AddItem(barButtonItemMain);barMenu.AddItem(barSkin);barMenu.AddItem(barConfig);barMenu.AddItem(barReg);barMenu.AddItem(barRandomNextCouse);}void client_OnEvent(object sender, Dal.EventArgs e){if (!e.message.Contains("秒后更新")){log1.AddLog(e.message);}
cousestudy.gridView1.RefreshData();
lblMessage.Caption = e.message;}private void InitSkins(){barManager1.ForceInitialize();foreach (SkinContainer cnt in SkinManager.Default.Skins){BarButtonItem item = new BarButtonItem(barManager1, cnt.SkinName);barSkin.AddItem(item);item.ItemClick += new DevExpress.XtraBars.ItemClickEventHandler(skinBtn_ItemClick);}}void skinBtn_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e){if (e.Item.Caption != null){DevExpress.LookAndFeel.UserLookAndFeel.Default.SkinName = e.Item.Caption;client.user.skinName = e.Item.Caption;new Dal.JackIniFile().SaveModel(client.user);}}private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e){this.TopMost = true;this.Visible = true;this.Show();this.WindowState = FormWindowState.Normal;this.TopMost = false;}private void notifyIcon1_MouseClick(object sender, MouseEventArgs e){if (e.Button == MouseButtons.Right){popupMenu1.ShowPopup(MousePosition);}}private void frmMain_FormClosing(object sender, FormClosingEventArgs e){e.Cancel = true;
this.Hide();}private void barButtonItemExit_ItemClick(object sender, ItemClickEventArgs e){if (DevExpress.XtraEditors.XtraMessageBox.Show("確認(rèn)要退出嗎?", "警告", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes){Application.ExitThread();Application.Exit();}}private void barConfig_ItemClick(object sender, ItemClickEventArgs e){new frmConfig(client).ShowDialog();}private void barReg_ItemClick(object sender, ItemClickEventArgs e){new frmReg().ShowDialog();}private void barRandomNextCouse_ItemClick(object sender, ItemClickEventArgs e){if (cousestudy.bgWork.IsBusy){cousestudy.appRunTime = DateTime.MinValue;}else{cousestudy.SetRandomNextCouse();}}}}
using System;using System.Collections.Generic;using System.Text;using System.Drawing;using System.Text.RegularExpressions;namespace TeacherStudy.Dal{public class teacheredu{public int waitingSeconds = 60*11;//更新服務(wù)器時間分鐘public delegate void jackEventHandler(object sender, EventArgs e);public event jackEventHandler OnEvent;public virtual void OnJackEvent(EventArgs e){if (OnEvent != null)OnEvent(this, e);}public delegate void CouseUpdateEventHandler(object sender,Model.Couse e);public event CouseUpdateEventHandler CouseUpdateEvent;public virtual void OnUpdateEvent(Model.Couse e){if (CouseUpdateEvent != null)CouseUpdateEvent(this, e);}public Model.User user { get; set; }private string baseUrl = string.Empty;JackWebClient client = new JackWebClient();/// <summary>/// 賬號登陸/// </summary>/// <param name="uid"></param>/// <param name="password"></param>/// <returns></returns>public bool Login(string username, string password,bool _360Hours){if (_360Hours){baseUrl = "2015sqjxjyc";}else{baseUrl = "2015sqjxjyb";}user = new Dal.JackIniFile().GetModel(username);waitingSeconds = new Random().Next(650, 1100);if (user == null) user = new Model.User();user.UserName = username;user.Password = password;user._360hours = _360Hours;int errorCount = 5;reCheck: Bitmap bmp = new Bitmap(2, 20);string VerifyCode=GetVerifyCode(ref bmp);string postData = "u=" + user.UserName + "&p="+user.Password+"&c="+VerifyCode+"&i=0";string Html = client.PostData("http://"+baseUrl+".fxl.teacheredu.cn/guopeiadmin/login/CheckUserLogin.aspx", postData, "http://2015sqjxjyb.fxl.teacheredu.cn/guopeiadmin/login/loginindex.aspx#");errorCount--;if (Html == "0"){
//DevExpress.XtraEditors.XtraMessageBox.Show("驗證碼錯誤");OnJackEvent(new EventArgs("驗證碼錯誤"));if (errorCount > 0){goto reCheck;}return false;}if (Html == "1"){DevExpress.XtraEditors.XtraMessageBox.Show("用戶名或密碼錯誤!");OnJackEvent(new EventArgs("用戶名或密碼錯誤!"));return false;}
if (Html == "3"){DevExpress.XtraEditors.XtraMessageBox.Show("登陸失敗!");OnJackEvent(new EventArgs("登陸失敗!"));return false;}if (Html.Contains("Main.aspx")){user.loginTime = DateTime.Now;Html = client.GetHtml("http://" + baseUrl + ".fxl.teacheredu.cn/guopeiadmin/Main.aspx");if (Html.Contains("退出")){HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();doc.LoadHtml(Html);user.Uid = StringHelper.CutHtml(Html, "UserID=", "'");user.Nick = doc.GetElementbyId("span_User").InnerText.Replace(" ","").Trim();Html = client.GetHtml("http://" + baseUrl + ".fxl.teacheredu.cn/GuoPeiAdmin/user/UpdateUserInfo.aspx");doc.LoadHtml(Html);user.Workplace = doc.GetElementbyId("txtWorkplace").GetAttributeValue("value","");UpdateHasStudyTime();//更新總學(xué)習(xí)時長OnJackEvent(new EventArgs("登陸成功"));return true;}}OnJackEvent(new EventArgs("登陸失敗"));return false;}public void UpdateHasStudyTime(){string Html = client.GetHtml("http://" + baseUrl + ".fxl.teacheredu.cn/GuoPeiAdmin/Statistics/StudentQuery_StudentInfo.aspx");HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();doc.LoadHtml(Html);user.totalTime = doc.GetElementbyId("sp_Duration").InnerText;}internal string GetVerifyCode(ref System.Drawing.Bitmap bitmap){
//需要驗證圖片String verifyUrl = "http://" + baseUrl + ".fxl.teacheredu.cn/GuoPeiAdmin/login/ImageLog.aspx?time=" + DateTime.Now.Day + GetIntFromTime(DateTime.Now).ToString(); ;//Stream img = client.GetStream(verifyUrl, "get");frmVerifyImage frm = new frmVerifyImage();//frm.picVerifyCode.Image = new System.Drawing.Bitmap(img);frm.imgUrl = verifyUrl;frm.client = client;if (frm.ShowDialog() == System.Windows.Forms.DialogResult.OK){return frm.GetVerifyCode();}return "";}public long GetIntFromTime(DateTime dt){long lLeft = 621355968000000000;DateTime dt1 = dt.ToUniversalTime();long Sticks = (dt1.Ticks - lLeft) / 10000000;return Sticks;}public List<Model.Couse> GetList( ){OnJackEvent(new EventArgs("獲取課程......"));client.Accept = "text/html, application/xhtml+xml, */*";List<Model.Couse> list = new List<Model.Couse>();string Html = client.GetHtml("http://" + baseUrl + ".fxl.teacheredu.cn/guopeiadmin/StudyPlan/StudentBookshelf.aspx", "http://2015sqjxjyb.fxl.teacheredu.cn/guopeiadmin/Main.aspx");Html = StringHelper.CutHtml(Html, "已選課程名稱", "");Html = new Regex("<!--.*?-->", RegexOptions.IgnoreCase).Replace(Html, "");System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("<tr>[\\s\\S]*?</tr>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);foreach (System.Text.RegularExpressions.Match tr in regex.Matches(Html)){Model.Couse model = GetRegexModel(tr.Value);if (model.couseName != ""&&model.time!=""){list.Add(model);}}
OnJackEvent(new EventArgs("獲取("+list.Count+")個課程"));return list;}Model.Couse GetRegexModel(string trHtml){trHtml = trHtml.Replace("\r\n", "").Replace("\t","");int i = 0;Model.Couse model = new Model.Couse();System.Text.RegularExpressions.Regex regex = new System.Text.RegularExpressions.Regex("<td .*?>(.*?)</td>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);foreach (System.Text.RegularExpressions.Match item in regex.Matches(trHtml)){i++;switch (i){case 1:{model.couseName = StringHelper.ReplaceHtmlTag(item.Groups[0].Value) ;model.StudyPlanBookID = StringHelper.CutHtml(item.Value, "OpenBook(", ",");} break;case 2: model.time = StringHelper.ReplaceHtmlTag(item.Groups[0].Value).Replace(" ", "").Trim(); break;case 3: model.status = StringHelper.ReplaceHtmlTag(item.Groups[0].Value).Replace(" ", "").Trim(); break;case 4: model.action = StringHelper.ReplaceHtmlTag(item.Groups[0].Value).Replace(" ", "").Trim(); break;}}model.action = model.action.Trim();if (model.action.Trim() != "必修") model.action = "選修";return model;}public string EnterStudyPage(ref Model.Couse model){model.log = "進(jìn)入學(xué)習(xí)的頁面";OnJackEvent(new EventArgs(("進(jìn)入學(xué)習(xí)的頁面")));string baseurl = "http://" + baseUrl + ".fxl.teacheredu.cn/guopeiadmin/CourseStudy/StudyfrmNew.aspx?StudyPlanBookID=" + model.StudyPlanBookID;string Html = client.GetHtml(baseurl);string url = "RecordTimeNew.aspx" + StringHelper.CutHtml(Html, "RecordTimeNew.aspx", "\"");url = System.Web.HttpUtility.HtmlDecode(url);url = new Uri(new Uri(baseurl), url).ToString();return url;}public void SetFieldValue(string url,ref Model.Couse model){string Html = client.GetHtml(url);HtmlAgilityPack.HtmlDocument doc = new HtmlAgilityPack.HtmlDocument();doc.LoadHtml(Html);user.Uid = doc.GetElementbyId("txtUserId").GetAttributeValue("value", "");user.recordtime = DateTime.Now;model.StudyPlanBookID = doc.GetElementbyId("txtBookID").GetAttributeValue("value", "");user.start = doc.GetElementbyId("txtStart").GetAttributeValue("value", "");}public bool UpdateTimeForStudy(ref Model.Couse model){
client.Accept = "application/x-www-form-urlencoded; charset=UTF-8";string postData = "uid=" + user.Uid + "&bid=" + model.StudyPlanBookID + "&second=" + (DateTime.Now - user.recordtime).TotalSeconds.ToString("0") + "&start=" + user.start;string Html = client.PostData("http://" + baseUrl + ".fxl.teacheredu.cn/guopeiadmin/CourseStudy/UpdateTimeForStudy.aspx", postData, "http://2015sqjxjyb.fxl.teacheredu.cn/guopeiadmin/CourseStudy/RecordTimeNew.aspx?bookid=172&StudyPlanBookID=161");if (Html.Split(',')[1] == "true"){model.log = "更新統(tǒng)計時間成功";OnJackEvent(new EventArgs("更新統(tǒng)計時間成功"));return true;}else{model.log = "更新統(tǒng)計時間失敗";OnJackEvent(new EventArgs("更新統(tǒng)計時間失敗"));return false;}}}}
?
總結(jié)
以上是生活随笔為你收集整理的楚翔教师网上学习助手桌面版的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。