Example #1
0
        public bool UpdateAsync(CourseSystem model)
        {
            using (var conn = DapperFactory.GetConnection())
            {
                List <string> removeFields = new List <string>
                {
                    "Id",
                    "CreateTime",
                    "Status"
                };
                var fields = model.ToFields(removeFields: removeFields);

                if (fields == null || fields.Count == 0)
                {
                    return(false);
                }

                var fieldList = new List <string>();
                foreach (var field in fields)
                {
                    fieldList.Add(string.Format("{0}=@{0}", field));
                }

                model.ModifyTime = DateTime.Now;

                string sql = string.Format("update [CourseSystem] set {0} where Id=@Id;", string.Join(",", fieldList));
                return(conn.Execute(sql, model) > 0);
            }
        }
Example #2
0
        public ActionResult CourseSystem(int id = 0)
        {
            if (id == 0)
            {
                throw new Exception("课程体系不存在");
            }
            CourseSystem         model      = _courseSystemService.GetByIdAsync(id) ?? new CourseSystem();
            IEnumerable <Course> courseList = _courseService.GetListBySystemId(id) ?? new List <Course>();
            //一行3个课程,两行
            List <List <Course> > courseMap = new List <List <Course> >();
            int           courseIndex       = 1;
            List <Course> clist             = new List <Course>();

            foreach (Course course in courseList)
            {
                clist.Add(course);
                if (courseIndex % 6 == 0)
                {
                    courseMap.Add(new List <Course>(clist.ToArray()));
                    clist.Clear();
                }
                courseIndex++;
            }
            if (clist.Count > 0)
            {
                courseMap.Add(clist);
            }

            ViewBag.CourseList = courseMap;
            IEnumerable <Student> studentList = _studentService.GetAllAsync() ?? new List <Instart.Models.Student>(); //成功学员
            //一行4个学员
            List <List <Student> > studentMap = new List <List <Student> >();
            int            studentIndex       = 1;
            List <Student> slist = new List <Student>();

            foreach (Student item in studentList)
            {
                slist.Add(item);
                if (studentIndex % 8 == 0)
                {
                    studentMap.Add(new List <Student>(slist.ToArray()));
                    slist.Clear();
                }
                studentIndex++;
            }
            if (slist.Count > 0)
            {
                studentMap.Add(slist);
            }
            ViewBag.StudentMap = studentMap;
            return(View(model));
        }
        public ActionResult Edit(int id = 0)
        {
            CourseSystem model  = new CourseSystem();
            string       action = "添加课程体系";

            if (id > 0)
            {
                model  = _courseSystemService.GetByIdAsync(id);
                action = "修改课程课程体系";
            }

            ViewBag.Action = action;
            return(View(model));
        }
        public bool InsertAsync(CourseSystem model)
        {
            if (model == null)
            {
                throw new ArgumentNullException("model不能为null");
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                throw new ArgumentNullException("Name不能为null");
            }

            return(_courseSystemRepository.InsertAsync(model));
        }
        public JsonResult Set(CourseSystem model)
        {
            if (model == null)
            {
                return(Error("参数错误。"));
            }

            if (string.IsNullOrEmpty(model.Name))
            {
                return(Error("课程名称不能为空。"));
            }
            var fileAvatar = Request.Files["fileAvatar"];

            if (fileAvatar != null)
            {
                string uploadResult = UploadHelper.Process(fileAvatar.FileName, fileAvatar.InputStream);
                if (!string.IsNullOrEmpty(uploadResult))
                {
                    model.Picture = uploadResult;
                }
            }

            var fileBanner = Request.Files["fileBanner"];

            if (fileBanner != null)
            {
                string uploadResult = UploadHelper.Process(fileBanner.FileName, fileBanner.InputStream);
                if (!string.IsNullOrEmpty(uploadResult))
                {
                    model.BannerImg = uploadResult;
                }
            }
            var result = new ResultBase();

            if (model.Id > 0)
            {
                result.success = _courseSystemService.UpdateAsync(model);
            }
            else
            {
                result.success = _courseSystemService.InsertAsync(model);
            }

            return(Json(result));
        }
Example #6
0
        public bool InsertAsync(CourseSystem model)
        {
            using (var conn = DapperFactory.GetConnection())
            {
                var fields = model.ToFields(removeFields: new List <string> {
                    "Id"
                });
                if (fields == null || fields.Count == 0)
                {
                    return(false);
                }

                model.CreateTime = DateTime.Now;
                model.ModifyTime = DateTime.Now;
                model.Status     = 1;

                string sql = string.Format("insert into [CourseSystem] ({0}) values ({1});", string.Join(",", fields), string.Join(",", fields.Select(n => "@" + n)));
                return(conn.Execute(sql, model) > 0);
            }
        }
Example #7
0
        static void Main(string[] args)
        {
            courseSystem = new CourseSystem("2011211212", "hamannsun250", str => Console.Write(str), str => { });

            while (true)
            {
                try
                {
                    courseSystem.Login();
                    if (courseSystem.IsLoginIn())
                        break;

                    Thread.Sleep(300);
                }
                catch
                {

                }
            }

            Semester semester;
            while (true)
            {
                try
                {
                    var semesters = courseSystem.GetSemesterList();
                    if (semesters.Length == 0)
                        continue;

                    semester = semesters[0];
                }
                catch
                {
                    continue;
                }
               
                break;
            }

            var helper = courseSystem.GetCourseHelper(semester.id);

            var courseList = File.ReadAllLines("course.txt")
                .Select(s => s.Trim())
                .Where(s => s.Length > 0)
                .Select(l => (l.Split(new[] {' '}, StringSplitOptions.RemoveEmptyEntries)))
                .Select(a => new Course(a[0], a[1]))
                .ToList();

            if (courseList.Count == 0)
            {
                Console.WriteLine("没有需要选的课程");
                return;
            }

            while (true)
            {
                foreach (var course in courseList)
                {
                    Console.WriteLine("正在选课:{0}", course.课程号);
                    try
                    {
                        var result = helper.TryGetCourse(course);
                        if (result)
                        {
                            courseList.Remove(course);
                            Console.WriteLine("选课成功:{0}", course.课程号);

                            if (courseList.Count == 0)
                            {
                                Console.WriteLine("选课结束");
                                return;
                            }
                            continue;
                        }
                    }
                    catch
                    {

                    }
                   
                }


                Thread.Sleep(1000);
            }
        }
Example #8
0
        static void Configure()
        {
            string id;
            string password;
            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    设置账户");
                Console.WriteLine();

                Console.WriteLine("请输入用户名:");
                id = Console.ReadLine();

                Console.WriteLine("请输入密码:");
                password = Console.ReadLine();

                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine();

                courseSystem = new CourseSystem(id, password, str => Console.Write(str), str => { });
                try
                {
                    courseSystem.Login();
                    break;
                }
                catch (Exception e)
                {
                    Console.WriteLine("发生错误:" + e.Message);
                    Console.Write("按任意键重新设置账户...");
                    Console.Read();
                }
            }

            var semesterList = courseSystem.GetSemesterList();

            Semester semester;

            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    选择学期");
                Console.WriteLine();

                Console.WriteLine("请选择学期:");
                for (int i = 0; i < semesterList.Length; i++)
                {
                    Console.WriteLine("{0} {1}", i, semesterList[i].name);
                }
                Console.WriteLine();
                Console.Write("请选择:");
                string input = Console.ReadLine();
                int index;
                if (int.TryParse(input, out index))
                {
                    if (index >= 0 && index < semesterList.Length)
                    {
                        semester = semesterList[index];
                        break;
                    }
                }
            }

            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  配置刷课信息");
            Console.WriteLine("    选择学期");
            Console.WriteLine();

            var courseHelper = courseSystem.GetCourseHelper(semester.id);
            var courseArray = courseHelper.GetMyCourseList();

            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  配置刷课信息");
            Console.WriteLine("    选择学期");
            Console.WriteLine();

            Console.WriteLine("该学期已选上如下课程:");
            Console.WriteLine("{0}\t{1}\t{2}\t{3}", "课程号  ", "课序号", "主讲教师", "课程名");
            foreach (var course in courseArray)
            {
                Console.WriteLine("{0}\t{1}\t{2}\t{3}", course.课程号, course.课序号, course.主讲教师 + "  ", course.课程名);
            }
            Console.WriteLine("共计 {0} 门。", courseArray.Length);
            Console.WriteLine();
            Console.Write("按任意键继续...");
            Console.Read();

            var courseList = new List<Course>();

            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    选择带刷课程列表文件");
                Console.WriteLine();

                Console.WriteLine("请按如下格式把待选课程保存在文件中");
                Console.WriteLine();
                Console.WriteLine("课程号1 课序号1");
                Console.WriteLine("课程号2 课序号2");
                Console.WriteLine("....");
                Console.WriteLine();
                Console.Write("请输入文件名:");
                var filename = Console.ReadLine();

                if (!File.Exists(filename))
                {
                    Console.Write("文件 {0} 不存在,按任意键重新输入....");
                    continue;
                }

                var filelines = File.ReadAllLines(filename);
                var regex = new Regex("^([^ ]+) ([^ ]+)");
                foreach (string line in filelines)
                {
                    var match = regex.Match(line);
                    if (match.Success)
                    {
                        courseList.Add(new Course(match.Groups[1].ToString(), match.Groups[2].ToString()));
                    }
                }

                Console.WriteLine();
                Console.WriteLine("在文件中识别出如下课程信息:");
                foreach (var course in courseList)
                {
                    Console.WriteLine("{0} {1}", course.课程号, course.课序号);
                }
                Console.WriteLine();
                Console.Write("按 R 重新选择文件,按其他键继续...");
                var key = Console.ReadKey();
                if (key.KeyChar == 'r' || key.KeyChar == 'R')
                    continue;

                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    获取课程信息");
                Console.WriteLine();

                Console.WriteLine("正在获取课程信息...");
                foreach (var course in courseList)
                {
                    courseHelper.FillCourseInfo(course);
                }

                for (int i = courseList.Count - 1; i >= 0; i--)
                {
                    if (courseList[i].课程名 == null)
                    {
                        Console.WriteLine("课程 {0} {1} 不存在。", courseList[i].课程号, courseList[i].课序号);
                        courseList.RemoveAt(i);
                    }
                }

                Console.WriteLine();
                Console.WriteLine("您选择了如下课程:");
                Console.WriteLine("{0}\t{1}\t{2}\t{3}", "课程号  ", "课序号", "主讲教师", "课程名");
                foreach (var course in courseList)
                {
                    Console.WriteLine("{0}\t{1}\t{2}\t{3}", course.课程号, course.课序号, course.主讲教师 + "  ", course.课程名);
                }
                Console.WriteLine("共计 {0} 门。", courseList.Count);
                Console.WriteLine();
                Console.Write("按 R 重新选择文件,按其他键继续...");
                key = Console.ReadKey();
                if (key.KeyChar == 'r' || key.KeyChar == 'R')
                    continue;

                break;
            }

            var strBuilder = new StringBuilder();
            strBuilder.AppendLine(id);
            strBuilder.AppendLine(password);
            strBuilder.AppendLine(semester.id);
            strBuilder.AppendLine(courseList.Count.ToString());
            foreach (var course in courseList)
                strBuilder.AppendLine(course.课程号 + " " + course.课序号);
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuilder.ToString());

            using (var file = File.Create("userdata.dat"))
            {
                var gz = new GZipStream(file, CompressionMode.Compress);
                gz.Write(buffer, 0, buffer.Length);
                gz.Close();
            }

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("成功写入配置信息到 userdata.dat");
            Console.WriteLine("按任意键返回主菜单...");
            Console.Read();
        }
Example #9
0
        static void Scan()
        {
            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  按配置信息刷课");
            Console.WriteLine("    读取配置文件");
            Console.WriteLine();

            string id;
            string password;
            string semester;
            var courseList = new List<Course>();
            try
            {
                using (var file = File.OpenRead("userdata.dat"))
                {
                    using (var gz = new GZipStream(file, CompressionMode.Decompress))
                    {
                        var reader = new StreamReader(gz, Encoding.UTF8);
                        id = reader.ReadLine();
                        password = reader.ReadLine();
                        semester = reader.ReadLine();
                        int count = int.Parse(reader.ReadLine());
                        for (int i = 0; i < count; i++)
                        {
                            var line = reader.ReadLine()
                                .Split(' ');
                            courseList.Add(new Course(line[0], line[1]));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("读取配置文件错误,按任意键返回主菜单...");
                return;
            }

            int time;
            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  按配置信息刷课");
                Console.WriteLine("    设置刷课频率");
                Console.WriteLine();

                Console.Write("请输入每次刷课间隔秒数:");
                var input = Console.ReadLine();
                
                if (int.TryParse(input, out time))
                {
                    if (time < 5)
                    {
                        Console.WriteLine();
                        Console.WriteLine();
                        Console.Write("时间必须大于等于5秒,按任意键重新输入...");
                        Console.ReadKey();
                    }
                    else
                    {
                        time *= 1000;
                        break;
                    }
                }
                else
                {
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.Write("请输入整数,按任意键重新输入...");
                    Console.ReadKey();
                }
            }

            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  按配置信息刷课");
            Console.WriteLine("    正在登录");
            Console.WriteLine();

            courseSystem = new CourseSystem(id, password, str => Console.Write(str), str => { });
            courseSystem.Login();
            var courseHelper = courseSystem.GetCourseHelper(semester);
            courseHelper.GetMyCourseList();
            foreach (var course in courseList)
            {
                courseHelper.FillCourseInfo(course);
            }

            var courseScanner = courseHelper.GetCourseScanner(courseList);
            
            var rand = new Random(5);
            int scanCount = 0;
            while (true)
            {
                courseScanner.ScanAll();

                scanCount++;

                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  按配置信息刷课");
                Console.WriteLine("    正在刷课");
                Console.WriteLine();

                Console.WriteLine();
                Console.WriteLine("已完成 {0} 轮检测", scanCount);
                Console.WriteLine();

                Console.WriteLine("已选上课程:", scanCount);
                Console.WriteLine();

                foreach (var state in courseScanner.CourseStateList)
                {
                    if(state.State == CoureseStateEnum.Got)
                        Console.WriteLine("{0} {1} {2}  {3}", state.Course.课程号, state.Course.课序号, state.Course.课程名, state.Course.主讲教师);
                }

                Console.WriteLine();
                Console.WriteLine("未选上课程:", scanCount);
                Console.WriteLine();

                foreach (var state in courseScanner.CourseStateList)
                {
                    if (state.State == CoureseStateEnum.Wait)
                        Console.WriteLine("{0} {1} {2}  {3}", state.Course.课程号, state.Course.课序号, state.Course.课程名, state.Course.主讲教师);
                }

                Console.WriteLine();
                Console.WriteLine("按任意键在当前扫描完成后暂停...");
                if (Console.KeyAvailable)
                {
                    while (Console.KeyAvailable)
                        Console.ReadKey();
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.Write("按 Q 键返回主菜单,按其他任意键继续...");
                    var key = Console.ReadKey();
                    if (key.KeyChar == 'q' || key.KeyChar == 'Q')
                        return;
                }

                System.Threading.Thread.Sleep(time + rand.Next(1000 + time / 10));

                if (Console.KeyAvailable)
                {
                    while (Console.KeyAvailable)
                        Console.ReadKey();
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.Write("按 Q 键返回主菜单,按其他任意键继续...");
                    var key = Console.ReadKey();
                    if (key.KeyChar == 'q' || key.KeyChar == 'Q')
                        return;
                }
            }
        }
Example #10
0
        static void Main(string[] args)
        {
            courseSystem = new CourseSystem("2011211212", "hamannsun250", str => Console.Write(str), str => { });

            while (true)
            {
                try
                {
                    courseSystem.Login();
                    if (courseSystem.IsLoginIn())
                    {
                        break;
                    }

                    Thread.Sleep(300);
                }
                catch
                {
                }
            }

            Semester semester;

            while (true)
            {
                try
                {
                    var semesters = courseSystem.GetSemesterList();
                    if (semesters.Length == 0)
                    {
                        continue;
                    }

                    semester = semesters[0];
                }
                catch
                {
                    continue;
                }

                break;
            }

            var helper = courseSystem.GetCourseHelper(semester.id);

            var courseList = File.ReadAllLines("course.txt")
                             .Select(s => s.Trim())
                             .Where(s => s.Length > 0)
                             .Select(l => (l.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)))
                             .Select(a => new Course(a[0], a[1]))
                             .ToList();

            if (courseList.Count == 0)
            {
                Console.WriteLine("没有需要选的课程");
                return;
            }

            while (true)
            {
                foreach (var course in courseList)
                {
                    Console.WriteLine("正在选课:{0}", course.课程号);
                    try
                    {
                        var result = helper.TryGetCourse(course);
                        if (result)
                        {
                            courseList.Remove(course);
                            Console.WriteLine("选课成功:{0}", course.课程号);

                            if (courseList.Count == 0)
                            {
                                Console.WriteLine("选课结束");
                                return;
                            }
                            continue;
                        }
                    }
                    catch
                    {
                    }
                }


                Thread.Sleep(1000);
            }
        }
Example #11
0
        static void Configure()
        {
            string id;
            string password;

            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    设置账户");
                Console.WriteLine();

                Console.WriteLine("请输入用户名:");
                id = Console.ReadLine();

                Console.WriteLine("请输入密码:");
                password = Console.ReadLine();

                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine();

                courseSystem = new CourseSystem(id, password, str => Console.Write(str), str => { });
                try
                {
                    courseSystem.Login();
                    break;
                }
                catch (Exception e)
                {
                    Console.WriteLine("发生错误:" + e.Message);
                    Console.Write("按任意键重新设置账户...");
                    Console.Read();
                }
            }

            var semesterList = courseSystem.GetSemesterList();

            Semester semester;

            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    选择学期");
                Console.WriteLine();

                Console.WriteLine("请选择学期:");
                for (int i = 0; i < semesterList.Length; i++)
                {
                    Console.WriteLine("{0} {1}", i, semesterList[i].name);
                }
                Console.WriteLine();
                Console.Write("请选择:");
                string input = Console.ReadLine();
                int    index;
                if (int.TryParse(input, out index))
                {
                    if (index >= 0 && index < semesterList.Length)
                    {
                        semester = semesterList[index];
                        break;
                    }
                }
            }

            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  配置刷课信息");
            Console.WriteLine("    选择学期");
            Console.WriteLine();

            var courseHelper = courseSystem.GetCourseHelper(semester.id);
            var courseArray  = courseHelper.GetMyCourseList();

            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  配置刷课信息");
            Console.WriteLine("    选择学期");
            Console.WriteLine();

            Console.WriteLine("该学期已选上如下课程:");
            Console.WriteLine("{0}\t{1}\t{2}\t{3}", "课程号  ", "课序号", "主讲教师", "课程名");
            foreach (var course in courseArray)
            {
                Console.WriteLine("{0}\t{1}\t{2}\t{3}", course.课程号, course.课序号, course.主讲教师 + "  ", course.课程名);
            }
            Console.WriteLine("共计 {0} 门。", courseArray.Length);
            Console.WriteLine();
            Console.Write("按任意键继续...");
            Console.Read();

            var courseList = new List <Course>();

            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    选择带刷课程列表文件");
                Console.WriteLine();

                Console.WriteLine("请按如下格式把待选课程保存在文件中");
                Console.WriteLine();
                Console.WriteLine("课程号1 课序号1");
                Console.WriteLine("课程号2 课序号2");
                Console.WriteLine("....");
                Console.WriteLine();
                Console.Write("请输入文件名:");
                var filename = Console.ReadLine();

                if (!File.Exists(filename))
                {
                    Console.Write("文件 {0} 不存在,按任意键重新输入....");
                    continue;
                }

                var filelines = File.ReadAllLines(filename);
                var regex     = new Regex("^([^ ]+) ([^ ]+)");
                foreach (string line in filelines)
                {
                    var match = regex.Match(line);
                    if (match.Success)
                    {
                        courseList.Add(new Course(match.Groups[1].ToString(), match.Groups[2].ToString()));
                    }
                }

                Console.WriteLine();
                Console.WriteLine("在文件中识别出如下课程信息:");
                foreach (var course in courseList)
                {
                    Console.WriteLine("{0} {1}", course.课程号, course.课序号);
                }
                Console.WriteLine();
                Console.Write("按 R 重新选择文件,按其他键继续...");
                var key = Console.ReadKey();
                if (key.KeyChar == 'r' || key.KeyChar == 'R')
                {
                    continue;
                }

                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  配置刷课信息");
                Console.WriteLine("    获取课程信息");
                Console.WriteLine();

                Console.WriteLine("正在获取课程信息...");
                foreach (var course in courseList)
                {
                    courseHelper.FillCourseInfo(course);
                }

                for (int i = courseList.Count - 1; i >= 0; i--)
                {
                    if (courseList[i].课程名 == null)
                    {
                        Console.WriteLine("课程 {0} {1} 不存在。", courseList[i].课程号, courseList[i].课序号);
                        courseList.RemoveAt(i);
                    }
                }

                Console.WriteLine();
                Console.WriteLine("您选择了如下课程:");
                Console.WriteLine("{0}\t{1}\t{2}\t{3}", "课程号  ", "课序号", "主讲教师", "课程名");
                foreach (var course in courseList)
                {
                    Console.WriteLine("{0}\t{1}\t{2}\t{3}", course.课程号, course.课序号, course.主讲教师 + "  ", course.课程名);
                }
                Console.WriteLine("共计 {0} 门。", courseList.Count);
                Console.WriteLine();
                Console.Write("按 R 重新选择文件,按其他键继续...");
                key = Console.ReadKey();
                if (key.KeyChar == 'r' || key.KeyChar == 'R')
                {
                    continue;
                }

                break;
            }

            var strBuilder = new StringBuilder();

            strBuilder.AppendLine(id);
            strBuilder.AppendLine(password);
            strBuilder.AppendLine(semester.id);
            strBuilder.AppendLine(courseList.Count.ToString());
            foreach (var course in courseList)
            {
                strBuilder.AppendLine(course.课程号 + " " + course.课序号);
            }
            byte[] buffer = System.Text.Encoding.UTF8.GetBytes(strBuilder.ToString());

            using (var file = File.Create("userdata.dat"))
            {
                var gz = new GZipStream(file, CompressionMode.Compress);
                gz.Write(buffer, 0, buffer.Length);
                gz.Close();
            }

            Console.WriteLine();
            Console.WriteLine();
            Console.WriteLine("成功写入配置信息到 userdata.dat");
            Console.WriteLine("按任意键返回主菜单...");
            Console.Read();
        }
Example #12
0
        static void Scan()
        {
            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  按配置信息刷课");
            Console.WriteLine("    读取配置文件");
            Console.WriteLine();

            string id;
            string password;
            string semester;
            var    courseList = new List <Course>();

            try
            {
                using (var file = File.OpenRead("userdata.dat"))
                {
                    using (var gz = new GZipStream(file, CompressionMode.Decompress))
                    {
                        var reader = new StreamReader(gz, Encoding.UTF8);
                        id       = reader.ReadLine();
                        password = reader.ReadLine();
                        semester = reader.ReadLine();
                        int count = int.Parse(reader.ReadLine());
                        for (int i = 0; i < count; i++)
                        {
                            var line = reader.ReadLine()
                                       .Split(' ');
                            courseList.Add(new Course(line[0], line[1]));
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("读取配置文件错误,按任意键返回主菜单...");
                return;
            }

            int time;

            while (true)
            {
                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  按配置信息刷课");
                Console.WriteLine("    设置刷课频率");
                Console.WriteLine();

                Console.Write("请输入每次刷课间隔秒数:");
                var input = Console.ReadLine();

                if (int.TryParse(input, out time))
                {
                    if (time < 5)
                    {
                        Console.WriteLine();
                        Console.WriteLine();
                        Console.Write("时间必须大于等于5秒,按任意键重新输入...");
                        Console.ReadKey();
                    }
                    else
                    {
                        time *= 1000;
                        break;
                    }
                }
                else
                {
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.Write("请输入整数,按任意键重新输入...");
                    Console.ReadKey();
                }
            }

            Console.Clear();
            Console.WriteLine("当前位置:");
            Console.WriteLine("  按配置信息刷课");
            Console.WriteLine("    正在登录");
            Console.WriteLine();

            courseSystem = new CourseSystem(id, password, str => Console.Write(str), str => { });
            courseSystem.Login();
            var courseHelper = courseSystem.GetCourseHelper(semester);

            courseHelper.GetMyCourseList();
            foreach (var course in courseList)
            {
                courseHelper.FillCourseInfo(course);
            }

            var courseScanner = courseHelper.GetCourseScanner(courseList);

            var rand      = new Random(5);
            int scanCount = 0;

            while (true)
            {
                courseScanner.ScanAll();

                scanCount++;

                Console.Clear();
                Console.WriteLine("当前位置:");
                Console.WriteLine("  按配置信息刷课");
                Console.WriteLine("    正在刷课");
                Console.WriteLine();

                Console.WriteLine();
                Console.WriteLine("已完成 {0} 轮检测", scanCount);
                Console.WriteLine();

                Console.WriteLine("已选上课程:", scanCount);
                Console.WriteLine();

                foreach (var state in courseScanner.CourseStateList)
                {
                    if (state.State == CoureseStateEnum.Got)
                    {
                        Console.WriteLine("{0} {1} {2}  {3}", state.Course.课程号, state.Course.课序号, state.Course.课程名, state.Course.主讲教师);
                    }
                }

                Console.WriteLine();
                Console.WriteLine("未选上课程:", scanCount);
                Console.WriteLine();

                foreach (var state in courseScanner.CourseStateList)
                {
                    if (state.State == CoureseStateEnum.Wait)
                    {
                        Console.WriteLine("{0} {1} {2}  {3}", state.Course.课程号, state.Course.课序号, state.Course.课程名, state.Course.主讲教师);
                    }
                }

                Console.WriteLine();
                Console.WriteLine("按任意键在当前扫描完成后暂停...");
                if (Console.KeyAvailable)
                {
                    while (Console.KeyAvailable)
                    {
                        Console.ReadKey();
                    }
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.Write("按 Q 键返回主菜单,按其他任意键继续...");
                    var key = Console.ReadKey();
                    if (key.KeyChar == 'q' || key.KeyChar == 'Q')
                    {
                        return;
                    }
                }

                System.Threading.Thread.Sleep(time + rand.Next(1000 + time / 10));

                if (Console.KeyAvailable)
                {
                    while (Console.KeyAvailable)
                    {
                        Console.ReadKey();
                    }
                    Console.WriteLine();
                    Console.WriteLine();
                    Console.Write("按 Q 键返回主菜单,按其他任意键继续...");
                    var key = Console.ReadKey();
                    if (key.KeyChar == 'q' || key.KeyChar == 'Q')
                    {
                        return;
                    }
                }
            }
        }