diff --git a/project/src/main/resources/application.properties b/project/classes/application.properties similarity index 100% rename from project/src/main/resources/application.properties rename to project/classes/application.properties diff --git a/project/src/main/resources/schema.sql b/project/classes/schema.sql similarity index 100% rename from project/src/main/resources/schema.sql rename to project/classes/schema.sql diff --git a/project/src/main/resources/templates/analysis.html b/project/classes/templates/analysis.html similarity index 100% rename from project/src/main/resources/templates/analysis.html rename to project/classes/templates/analysis.html diff --git a/project/src/main/resources/templates/course-list.html b/project/classes/templates/course-list.html similarity index 100% rename from project/src/main/resources/templates/course-list.html rename to project/classes/templates/course-list.html diff --git a/project/src/main/resources/templates/error.html b/project/classes/templates/error.html similarity index 100% rename from project/src/main/resources/templates/error.html rename to project/classes/templates/error.html diff --git a/project/src/main/resources/templates/index.html b/project/classes/templates/index.html similarity index 100% rename from project/src/main/resources/templates/index.html rename to project/classes/templates/index.html diff --git a/project/output/courses.csv b/project/courses.csv similarity index 100% rename from project/output/courses.csv rename to project/courses.csv diff --git a/project/output/courses.json b/project/courses.json similarity index 100% rename from project/output/courses.json rename to project/courses.json diff --git a/project/src/main/java/com/example/CourseAnalysis.java b/project/main/java/com/example/CourseAnalysis.java similarity index 100% rename from project/src/main/java/com/example/CourseAnalysis.java rename to project/main/java/com/example/CourseAnalysis.java diff --git a/project/src/main/java/com/example/CourseSystemTest.java b/project/main/java/com/example/CourseSystemTest.java similarity index 100% rename from project/src/main/java/com/example/CourseSystemTest.java rename to project/main/java/com/example/CourseSystemTest.java diff --git a/project/src/main/java/com/example/DatabaseUtil.java b/project/main/java/com/example/DatabaseUtil.java similarity index 100% rename from project/src/main/java/com/example/DatabaseUtil.java rename to project/main/java/com/example/DatabaseUtil.java diff --git a/project/src/main/java/com/example/ExceptionDemo.java b/project/main/java/com/example/ExceptionDemo.java similarity index 100% rename from project/src/main/java/com/example/ExceptionDemo.java rename to project/main/java/com/example/ExceptionDemo.java diff --git a/project/src/main/java/com/example/ExceptionTest.java b/project/main/java/com/example/ExceptionTest.java similarity index 100% rename from project/src/main/java/com/example/ExceptionTest.java rename to project/main/java/com/example/ExceptionTest.java diff --git a/project/src/main/java/com/example/ExportTest.java b/project/main/java/com/example/ExportTest.java similarity index 100% rename from project/src/main/java/com/example/ExportTest.java rename to project/main/java/com/example/ExportTest.java diff --git a/project/src/main/java/com/example/HnuCourseSystem.java b/project/main/java/com/example/HnuCourseSystem.java similarity index 100% rename from project/src/main/java/com/example/HnuCourseSystem.java rename to project/main/java/com/example/HnuCourseSystem.java diff --git a/project/src/main/java/com/example/Pair.java b/project/main/java/com/example/Pair.java similarity index 100% rename from project/src/main/java/com/example/Pair.java rename to project/main/java/com/example/Pair.java diff --git a/project/src/main/java/com/example/controller/CourseController.java b/project/main/java/com/example/controller/CourseController.java similarity index 100% rename from project/src/main/java/com/example/controller/CourseController.java rename to project/main/java/com/example/controller/CourseController.java diff --git a/project/src/main/java/com/example/crawler/CrawlerContext.java b/project/main/java/com/example/crawler/CrawlerContext.java similarity index 100% rename from project/src/main/java/com/example/crawler/CrawlerContext.java rename to project/main/java/com/example/crawler/CrawlerContext.java diff --git a/project/src/main/java/com/example/crawler/CrawlerService.java b/project/main/java/com/example/crawler/CrawlerService.java similarity index 100% rename from project/src/main/java/com/example/crawler/CrawlerService.java rename to project/main/java/com/example/crawler/CrawlerService.java diff --git a/project/src/main/java/com/example/crawler/strategy/HnuParseStrategy.java b/project/main/java/com/example/crawler/strategy/HnuParseStrategy.java similarity index 100% rename from project/src/main/java/com/example/crawler/strategy/HnuParseStrategy.java rename to project/main/java/com/example/crawler/strategy/HnuParseStrategy.java diff --git a/project/src/main/java/com/example/crawler/strategy/ParseStrategy.java b/project/main/java/com/example/crawler/strategy/ParseStrategy.java similarity index 100% rename from project/src/main/java/com/example/crawler/strategy/ParseStrategy.java rename to project/main/java/com/example/crawler/strategy/ParseStrategy.java diff --git a/project/src/main/java/com/example/crawler/strategy/SduParseStrategy.java b/project/main/java/com/example/crawler/strategy/SduParseStrategy.java similarity index 100% rename from project/src/main/java/com/example/crawler/strategy/SduParseStrategy.java rename to project/main/java/com/example/crawler/strategy/SduParseStrategy.java diff --git a/project/src/main/java/com/example/entity/Course.java b/project/main/java/com/example/entity/Course.java similarity index 100% rename from project/src/main/java/com/example/entity/Course.java rename to project/main/java/com/example/entity/Course.java diff --git a/project/src/main/java/com/example/exception/BizException.java b/project/main/java/com/example/exception/BizException.java similarity index 100% rename from project/src/main/java/com/example/exception/BizException.java rename to project/main/java/com/example/exception/BizException.java diff --git a/project/src/main/java/com/example/exception/CrawlerException.java b/project/main/java/com/example/exception/CrawlerException.java similarity index 100% rename from project/src/main/java/com/example/exception/CrawlerException.java rename to project/main/java/com/example/exception/CrawlerException.java diff --git a/project/src/main/java/com/example/exception/NetworkException.java b/project/main/java/com/example/exception/NetworkException.java similarity index 100% rename from project/src/main/java/com/example/exception/NetworkException.java rename to project/main/java/com/example/exception/NetworkException.java diff --git a/project/src/main/java/com/example/exception/ParseException.java b/project/main/java/com/example/exception/ParseException.java similarity index 100% rename from project/src/main/java/com/example/exception/ParseException.java rename to project/main/java/com/example/exception/ParseException.java diff --git a/project/src/main/java/com/example/export/CsvExporter.java b/project/main/java/com/example/export/CsvExporter.java similarity index 100% rename from project/src/main/java/com/example/export/CsvExporter.java rename to project/main/java/com/example/export/CsvExporter.java diff --git a/project/src/main/java/com/example/export/ExportService.java b/project/main/java/com/example/export/ExportService.java similarity index 100% rename from project/src/main/java/com/example/export/ExportService.java rename to project/main/java/com/example/export/ExportService.java diff --git a/project/src/main/java/com/example/export/Exporter.java b/project/main/java/com/example/export/Exporter.java similarity index 100% rename from project/src/main/java/com/example/export/Exporter.java rename to project/main/java/com/example/export/Exporter.java diff --git a/project/src/main/java/com/example/export/JsonExporter.java b/project/main/java/com/example/export/JsonExporter.java similarity index 100% rename from project/src/main/java/com/example/export/JsonExporter.java rename to project/main/java/com/example/export/JsonExporter.java diff --git a/project/src/main/java/com/example/repository/CourseRepository.java b/project/main/java/com/example/repository/CourseRepository.java similarity index 100% rename from project/src/main/java/com/example/repository/CourseRepository.java rename to project/main/java/com/example/repository/CourseRepository.java diff --git a/project/src/main/java/com/example/service/CourseService.java b/project/main/java/com/example/service/CourseService.java similarity index 100% rename from project/src/main/java/com/example/service/CourseService.java rename to project/main/java/com/example/service/CourseService.java diff --git a/project/src/main/java/com/example/view/CourseView.java b/project/main/java/com/example/view/CourseView.java similarity index 100% rename from project/src/main/java/com/example/view/CourseView.java rename to project/main/java/com/example/view/CourseView.java diff --git a/project/main/resources/application.properties b/project/main/resources/application.properties new file mode 100644 index 0000000..5e8bf15 --- /dev/null +++ b/project/main/resources/application.properties @@ -0,0 +1,33 @@ +spring.application.name=hnu-course-analysis + +server.port=8084 + +# SQLite数据库配置 +spring.datasource.url=jdbc:sqlite:course.db +spring.datasource.driver-class-name=org.sqlite.JDBC +spring.jpa.database-platform=org.hibernate.community.dialect.SQLiteDialect + +spring.jpa.hibernate.ddl-auto=update +spring.jpa.show-sql=true +spring.jpa.properties.hibernate.format_sql=true +spring.jpa.open-in-view=false + +spring.sql.init.mode=always +spring.sql.init.schema-locations=classpath:schema.sql + +spring.thymeleaf.cache=false +spring.thymeleaf.prefix=classpath:/templates/ +spring.thymeleaf.suffix=.html + +logging.level.root=INFO +logging.level.com.example=DEBUG + +# 湖南大学选课系统配置 +crawler.hnu.login.url=https://jwxt.hnu.edu.cn/xtgl/login_login.html +crawler.hnu.username=your_username +crawler.hnu.password=your_password +crawler.hnu.course.list.url=https://jwxt.hnu.edu.cn/kbcx/xskbcx_cxXsKb.html + +# Selenium配置 +selenium.webdriver.chrome.driver.path=C:/chromedriver/chromedriver.exe +selenium.webdriver.headless=false \ No newline at end of file diff --git a/project/main/resources/schema.sql b/project/main/resources/schema.sql new file mode 100644 index 0000000..53a3489 --- /dev/null +++ b/project/main/resources/schema.sql @@ -0,0 +1,31 @@ +-- 湖南大学选课系统数据库初始化脚本 + +-- 创建课程表 +CREATE TABLE IF NOT EXISTS courses ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + course_code TEXT, + course_name TEXT, + credit REAL, + teacher TEXT, + department TEXT, + capacity INTEGER, + enrolled INTEGER, + class_time TEXT, + class_room TEXT, + course_type TEXT, + semester TEXT, + create_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP +); + +-- 插入测试数据 +INSERT INTO courses (course_code, course_name, credit, teacher, department, capacity, enrolled, class_time, class_room, course_type, semester) VALUES +('CS101', '计算机科学导论', 3.0, '张教授', '计算机科学与技术学院', 100, 85, '周一 1-2节', 'A101', '必修课', '2024-2025-1'), +('CS102', '数据结构', 4.0, '李教授', '计算机科学与技术学院', 80, 70, '周二 3-4节', 'B202', '必修课', '2024-2025-1'), +('CS103', '算法设计', 3.0, '王教授', '计算机科学与技术学院', 60, 55, '周三 5-6节', 'C303', '选修课', '2024-2025-1'), +('MA101', '高等数学', 5.0, '赵教授', '数学学院', 120, 110, '周一 3-4节', 'D404', '必修课', '2024-2025-1'), +('EN101', '大学英语', 3.0, '刘教授', '外国语学院', 100, 90, '周二 1-2节', 'E505', '必修课', '2024-2025-1'), +('PH101', '大学物理', 4.0, '钱教授', '物理学院', 90, 85, '周三 1-2节', 'F606', '必修课', '2024-2025-1'), +('CH101', '大学化学', 3.0, '孙教授', '化学学院', 70, 65, '周四 3-4节', 'G707', '选修课', '2024-2025-1'), +('HI101', '中国近现代史', 2.0, '周教授', '历史学院', 150, 145, '周五 1-2节', 'H808', '必修课', '2024-2025-1'), +('PE101', '体育', 1.0, '吴教授', '体育学院', 50, 50, '周三 7-8节', '体育馆', '必修课', '2024-2025-1'), +('AR101', '艺术鉴赏', 2.0, '郑教授', '艺术学院', 80, 75, '周四 5-6节', '艺术楼', '选修课', '2024-2025-1'); \ No newline at end of file diff --git a/project/main/resources/templates/analysis.html b/project/main/resources/templates/analysis.html new file mode 100644 index 0000000..6ca13bc --- /dev/null +++ b/project/main/resources/templates/analysis.html @@ -0,0 +1,328 @@ + + + + + + 数据分析 - 湖南大学选课系统分析 + + + + + + + + + +
+
+

数据分析

+

深入分析选课系统数据,获取有价值的洞察

+
+
+ + +
+ +
+
+

课程类型分布

+
+
+
+
+
+ + +
+
+

院系课程分布

+
+
+
+
+
+ + +
+
+

学分分布

+
+
+
+
+
+ + +
+
+

课程容量使用率

+
+
+
+
+
+ + +
+
+

院系统计详情

+
+
+
+ + + + + + + + + + + + + + + + + + + + + +
院系课程数总学分总容量总已选使用率
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/project/main/resources/templates/course-list.html b/project/main/resources/templates/course-list.html new file mode 100644 index 0000000..3615157 --- /dev/null +++ b/project/main/resources/templates/course-list.html @@ -0,0 +1,169 @@ + + + + + + 课程列表 - 湖南大学选课系统分析 + + + + + + + + +
+
+

课程列表

+

查看所有课程的详细信息

+
+
+ + +
+
+
+

课程详情

+ +
+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
课程代码课程名称学分教师院系容量已选使用率上课时间上课地点课程类型
+ + + +
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/project/main/resources/templates/error.html b/project/main/resources/templates/error.html new file mode 100644 index 0000000..cf86f23 --- /dev/null +++ b/project/main/resources/templates/error.html @@ -0,0 +1,24 @@ + + + + + + 错误页面 + + + +
+
+
+
+
+

500 - 服务器内部错误

+

服务器遇到了一个内部错误,请稍后再试。

+ 返回首页 +
+
+
+
+
+ + \ No newline at end of file diff --git a/project/main/resources/templates/index.html b/project/main/resources/templates/index.html new file mode 100644 index 0000000..95da865 --- /dev/null +++ b/project/main/resources/templates/index.html @@ -0,0 +1,318 @@ + + + + + + 湖南大学选课系统分析 + + + + + + + + + +
+
+

湖南大学选课系统数据分析平台

+

实时爬取、分析和可视化展示选课系统数据

+ +
+
+ + +
+
+
+
+
+
+
总课程数
+
+
+
+
+
+
+
+
总学分
+
+
+
+
+
+
+
+
总已选人数
+
+
+
+
+
+
+
+ 使用率 +
+
总体使用率
+
+
+
+
+
+ + +
+

热门课程排行

+
+
+
+
+
+
+ + +
+

课程类型分布

+
+
+
+
+
+
+ + +
+

院系课程分布

+
+
+
+
+
+
+ + + + + + + + \ No newline at end of file diff --git a/project/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/project/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..f9e9415 --- /dev/null +++ b/project/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,21 @@ +com\example\DatabaseUtil.class +com\example\exception\ParseException.class +com\example\entity\Course.class +com\example\exception\NetworkException.class +com\example\Untitled_2.class +com\example\HnuCourseSystem.class +com\example\CourseAnalysis.class +com\example\ExceptionTest.class +com\example\crawler\CrawlerContext.class +com\example\crawler\strategy\ParseStrategy.class +com\example\crawler\strategy\SduParseStrategy.class +com\example\crawler\CrawlerService.class +com\example\view\CourseView.class +com\example\CourseSystemTest.class +com\example\crawler\strategy\HnuParseStrategy.class +com\example\exception\CrawlerException.class +com\example\service\CourseService.class +com\example\Pair.class +com\example\controller\CourseController.class +com\example\repository\CourseRepository.class +com\example\exception\BizException.class diff --git a/project/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/project/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..b3605f2 --- /dev/null +++ b/project/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,21 @@ +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\crawler\strategy\HnuParseStrategy.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\controller\CourseController.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\exception\NetworkException.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\view\CourseView.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\CourseAnalysis.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\crawler\CrawlerService.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\exception\CrawlerException.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\CourseSystemTest.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\ExceptionTest.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\HnuCourseSystem.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\DatabaseUtil.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\Untitled-2.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\exception\BizException.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\crawler\CrawlerContext.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\crawler\strategy\SduParseStrategy.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\repository\CourseRepository.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\service\CourseService.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\crawler\strategy\ParseStrategy.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\exception\ParseException.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\entity\Course.java +C:\Users\范馨遥\.trae-cn\course-analysis\src\main\java\com\example\Pair.java diff --git a/project/run.bat b/project/run.bat deleted file mode 100644 index e861cb7..0000000 --- a/project/run.bat +++ /dev/null @@ -1,8 +0,0 @@ -@echo off -echo 正在编译项目... -javac -d target/classes src/main/java/com/example/entity/Course.java src/main/java/com/example/DatabaseUtil.java src/main/java/com/example/CourseAnalysis.java src/main/java/com/example/HnuCourseSystem.java src/main/java/com/example/CourseSystemTest.java - -echo 正在运行测试程序... -java -cp target/classes;C:\Users\范馨遥\.m2\repository\org\xerial\sqlite-jdbc\3.44.1.0\sqlite-jdbc-3.44.1.0.jar com.example.CourseSystemTest - -pause \ No newline at end of file