Java程序员_编程开发学习笔记_网站安全运维教程_渗透技术教程

微信小程序+Flask教务系统开源:青果教务系统登录与数据获取实战

阿贵
9月18日发布 /正在检测是否收录...
温馨提示:
本文最后更新于2025年09月18日,已超过28天没有更新,若内容或图片失效,请留言反馈。

微信小程序+Flask教务系统开源:青果教务系统登录与数据获取实战

基于原生微信小程序和Flask开发的教务查询系统,支持课程表、成绩查询等功能

📚 项目概述

本项目是一个基于微信小程序(前端)和Flask(后端)开发的教务系统查询工具,专门针对青果教务系统进行了适配开发。虽然项目功能尚未完全完善,但提供了完整的青果教务系统登录思路和数据获取方案,适合开发者学习和二次开发。

图片演示

t1.jpg
t2.jpg
t3.jpg
t4.jpg
t5.jpg

下载链接

🏗️ 技术架构

前端技术栈

  • 微信小程序原生开发:使用WXML、WXSS、JavaScript
  • UI组件:自定义组件和基础组件结合
  • 网络请求:wx.request API与后端交互

后端技术栈

  • Flask框架:轻量级Python Web框架
  • 数据库:MySQL,支持自动建表
  • 请求处理:requests库处理教务系统请求
  • 会话管理:Flask-Session管理用户状态

🚀 快速开始

环境要求

后端环境

  • Python 3.7+
  • Flask 2.0+
  • MySQL 5.7+
  • PyCharm(推荐开发工具)

前端环境

  • 微信开发者工具
  • 小程序AppID

安装部署步骤

1. 后端部署

# 克隆或下载项目
# 进入后端目录
cd back

# 创建虚拟环境(推荐)
python -m venv venv
source venv/bin/activate  # Linux/Mac
# 或 venv\Scripts\activate  # Windows

# 安装依赖
pip install -r requirements.txt

# 如果没有requirements.txt,手动安装主要依赖
pip install flask flask-cors flask-session requests pymysql

2. 数据库配置

# 修改app.py中的数据库配置
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost:3306/education_system'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

3. 启动后端服务

# 在PyCharm中直接运行app.py
# 或在终端执行
python app.py

# 服务默认运行在 http://127.0.0.1:5000

4. 前端配置

  1. 打开微信开发者工具
  2. 导入小程序项目
  3. 修改app.js中的API地址

    // 修改API基础地址
    const baseUrl = 'http://localhost:5000';

🔐 青果教务系统登录思路

核心登录流程

# Flask后端登录处理示例
@app.route('/api/login', methods=['POST'])
def login():
    try:
        # 获取前端传递的学号和密码
        student_id = request.json.get('student_id')
        password = request.json.get('password')
        
        # 青果教务系统登录步骤
        # 1. 获取登录页面,提取隐藏参数
        session = requests.Session()
        login_page = session.get(LOGIN_URL)
        hidden_params = extract_hidden_params(login_page.text)
        
        # 2. 构造登录请求数据
        login_data = {
            '__VIEWSTATE': hidden_params['viewstate'],
            'txtUserName': student_id,
            'TextBox2': password,
            'RadioButtonList1': '学生',
            'Button1': ''
        }
        
        # 3. 提交登录请求
        response = session.post(LOGIN_URL, data=login_data)
        
        # 4. 验证登录是否成功
        if check_login_success(response.text):
            # 保存session供后续请求使用
            save_user_session(student_id, session)
            return jsonify({'success': True, 'message': '登录成功'})
        else:
            return jsonify({'success': False, 'message': '登录失败'})
            
    except Exception as e:
        return jsonify({'success': False, 'message': str(e)})

数据获取示例

# 获取课程表示例
def get_course_schedule(session, semester):
    """获取指定学期的课程表"""
    course_url = f'{BASE_URL}/xskbcx.aspx?xh={student_id}&xm={name}&gnbm=Dlxsckb'
    
    # 设置请求参数
    data = {
        '__EVENTTARGET': 'xqd',
        '__EVENTARGUMENT': '',
        'xqd': semester
    }
    
    response = session.post(course_url, data=data)
    courses = parse_course_table(response.text)
    return courses

# 解析课程表HTML
def parse_course_table(html):
    """解析课程表页面"""
    courses = []
    soup = BeautifulSoup(html, 'html.parser')
    table = soup.find('table', {'id': 'Table1'})
    
    # 解析表格数据
    for row in table.find_all('tr')[1:]:
        cells = row.find_all('td')
        if len(cells) > 1:
            course = {
                'time': cells[0].text.strip(),
                'monday': cells[1].text.strip(),
                'tuesday': cells[2].text.strip(),
                # ... 其他天数
            }
            courses.append(course)
    
    return courses

🛠️ 项目结构

教务系统/
├── back/                 # Flask后端
│   ├── app.py           # 主应用文件
│   ├── config.py        # 配置文件
│   ├── models.py        # 数据模型
│   ├── utils/           # 工具类
│   │   ├── qingguo.py   # 青果教务系统处理
│   │   └── database.py  # 数据库操作
│   └── requirements.txt # 依赖列表
│
├── front/               # 微信小程序前端
│   ├── pages/          # 页面文件
│   │   ├── index/      # 首页
│   │   ├── schedule/   # 课程表
│   │   └── grades/     # 成绩查询
│   ├── components/     # 自定义组件
│   ├── utils/          # 工具函数
│   └── app.js         # 小程序入口
│
└── README.md           # 说明文档

💡 功能模块

已实现功能

  • ✅ 青果教务系统登录
  • ✅ 课程表查询
  • ✅ 成绩查询
  • ✅ 用户会话管理
  • ✅ 基础数据库操作

待完善功能

  • 🔲 考试安排查询
  • 🔲 空教室查询
  • 🔲 个人信息管理
  • 🔲 成绩统计分析
  • 🔲 课表导出功能

🎨 前端界面优化建议

WXML结构优化

<!-- 课程表页面示例 -->
<view class="schedule-container">
  <view class="week-selector">
    <picker range="{{semesters}}" value="{{semesterIndex}}" bindchange="changeSemester">
      <view class="picker">当前学期:{{semesters[semesterIndex]}}</view>
    </picker>
  </view>
  
  <scroll-view scroll-y class="schedule-table">
    <view class="table-row" wx:for="{{courseTable}}" wx:key="index">
      <view class="time-cell">{{item.time}}</view>
      <view class="course-cell" wx:for="{{item.courses}}" wx:key="day">
        <text class="course-name">{{item.course}}</text>
        <text class="course-location">{{item.location}}</text>
      </view>
    </view>
  </scroll-view>
</view>

WXSS样式优化

/* 现代样式设计 */
.schedule-container {
  padding: 20rpx;
  background: #f5f5f5;
}

.table-row {
  display: flex;
  margin-bottom: 10rpx;
  background: #fff;
  border-radius: 12rpx;
  box-shadow: 0 2rpx 8rpx rgba(0,0,0,0.1);
}

.time-cell {
  width: 120rpx;
  padding: 20rpx;
  background: #4a90e2;
  color: white;
  text-align: center;
}

.course-cell {
  flex: 1;
  padding: 20rpx;
  border-left: 1rpx solid #eee;
}

🔧 常见问题解决

1. 登录失败问题

# 检查青果教务系统页面结构是否变化
def check_login_success(html):
    """检查登录是否成功"""
    if "用户名或密码错误" in html:
        return False
    elif "欢迎您" in html:
        return True
    # 可能需要根据实际情况调整检测逻辑
    return False

2. Session维护问题

# 使用Flask-Session管理用户会话
from flask_session import Session

app = Flask(__name__)
app.config['SECRET_KEY'] = 'your-secret-key'
app.config['SESSION_TYPE'] = 'filesystem'
Session(app)

3. 跨域问题处理

# 添加CORS支持
from flask_cors import CORS

CORS(app, supports_credentials=True, resources={r"/api/*": {"origins": "*"}})

🔒 安全建议

代码保护建议

虽然本项目使用Python开发,但对于PHP开发者,推荐使用:

PHP代码加密平台 提供:

  • 多种加密方式:Sg16、Deck3、Ic12等版本
  • 灵活的方案:支持goto、enphp、noname等加密方式
  • 完全免费:全站免费使用
  • 易于使用:轻松保护代码安全

安全最佳实践

  1. 使用HTTPS:生产环境务必启用HTTPS
  2. 参数验证:对所有输入参数进行严格验证
  3. 错误处理:避免向用户暴露敏感错误信息
  4. 定期更新:保持依赖库的最新版本

🎓 学习价值

这个项目对于学习者来说具有很高的价值:

  1. 微信小程序开发:学习原生小程序开发技术
  2. Flask后端开发:掌握Python Web开发技能
  3. 网络爬虫技术:了解如何与教务系统交互
  4. 前后端分离:实践前后端分离架构设计
  5. 项目实战经验:积累完整的项目开发经验

💭 结语

这个青果教务系统查询工具虽然界面相对简单,但提供了完整的登录思路和技术实现方案。对于想要学习微信小程序开发和Flask后端的开发者来说,这是一个很好的学习项目。

项目特点

  • 🎯 专为青果教务系统定制
  • 🔐 完整的登录认证方案
  • 📱 微信小程序前端
  • 🐍 Flask后端API
  • 🗃️ MySQL数据存储

使用建议

  1. 先在后端调试登录功能
  2. 逐步完善各个查询模块
  3. 优化前端用户体验
  4. 添加错误处理和加载状态
  5. 考虑数据缓存机制

如果在使用过程中遇到任何问题,欢迎在评论区留言讨论!我会尽力帮助大家解决遇到的问题。


温馨提示:请仅将本项目用于学习目的,遵守学校相关规定,尊重教务系统的使用条款。

喜欢就支持一下吧
点赞 1 分享 收藏
评论 共1条
OωO
取消 登录评论
  1. 头像
    战狼
     · 

    66666666666666666