/// <summary>
        /// 更新指定学生的成绩信息 失败将抛出异常
        /// </summary>
        /// <param name="StuQQ">学生QQ</param>
        /// <returns>新成绩列表</returns>
        public static List <Score> UpdateScore(string StuQQ)
        {
            QQ     BotQQ        = CQ.Api.GetLoginQQ();
            string AppDirectory = CQ.Api.AppDirectory;
            string StuID;
            string Pw;

            if (ini.Read(AppDirectory + @"\配置.ini", "主人信息", "QQ", "") == StuQQ)  //是主人
            {
                StuID = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "学号", "");
                Pw    = DESTool.Decrypt(ini.Read(AppDirectory + @"\配置.ini", "主人信息", "教务系统密码", ""), "jw*1");
            }
            else
            {
                StuID = ini.Read(AppDirectory + @"\配置.ini", StuQQ, "学号", "");
                Pw    = DESTool.Decrypt(ini.Read(AppDirectory + @"\配置.ini", StuQQ, "密码", ""), "jw*1");
            }

            if (StuID == "" || Pw == "")
            {
                throw new UpdataErrorException("当前QQ未绑定教务系统账户。");
            }
            EasLogin jwxt = new EasLogin(Convert.ToString(BotQQ.Id), StuQQ, StuID, Pw, 3);

            try
            {
                if (jwxt.TryLogin() == true)
                {
                    EasGetNewScore jwscore = new EasGetNewScore();
                    return(jwscore.GetNewScore(jwxt));
                }
                else
                {
                    return(new List <Score>());   //空列表
                }
            }
            catch (Exception ex)
            {
                if (ex.Message == "用户名/密码错误")
                {
                    throw new UpdataErrorException("用户名或密码错误。");
                }
                else if (ex.Message == "验证码错误")
                {
                    throw new UpdataErrorException("验证码错误达到上限,请稍后再试。");
                }
                else
                {
                    CQ.Log.Error("发生错误", "错误信息:" + ex.GetType().ToString() + " " + ex.Message + "\n" + ex.StackTrace);
                    throw new UpdataErrorException("发生未知错误,请联系机器人主人。");
                }
            }
        }
        void IJob.Execute()
        {
            BotQQ = CQ.Api.GetLoginQQ();

            string AppDirectory = CQ.Api.AppDirectory;
            string QQ           = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "QQ", "");
            string StuID        = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "学号", "");
            string Pw           = ini.Read(AppDirectory + @"\配置.ini", "主人信息", "教务系统密码", "");

            if (QQ == "" || StuID == "" || Pw == "")
            {
                CQ.Log.Warning("成绩提醒模块", "本人部分信息为空,提醒任务已停止。");
                JobManager.Stop();
                JobManager.RemoveAllJobs();
            }

            CQ.Log.Debug("成绩提醒模块", "检测运行中……");

            Pw = DESTool.Decrypt(Pw, "jw*1");
            EasLogin jwxt = new EasLogin(Convert.ToString(BotQQ.Id), QQ, StuID, Pw, 3);

            try
            {
                if (jwxt.TryLogin() == true)
                {
                    CQ.Log.Debug("成绩提醒模块", "登录成功");
                    EasGetNewScore jwscore = new EasGetNewScore();
                    var            sList   = jwscore.GetNewScore(jwxt);
                    if (sList.Count != 0)
                    {
                        foreach (var s in sList)
                        {
                            CQ.Api.SendPrivateMessage(Convert.ToInt64(QQ), "【新出成绩】\n课程:", s.LessonName, "\n成绩:", s.Mark);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                CQ.Log.Warning("成绩提醒模块", "本次检测发生了错误,任务已停止。\n错误信息:" + ex.Message);
                JobManager.Stop();
                JobManager.RemoveAllJobs();
            }
        }