社团作业,每人做了一个东南大学课表查询系统,不得不感叹,python确实厉害(那我还学MFC干什么。。)!

这是搜索的主窗体,用来获取用户输入的信息(search.py)。

import tkinter as tk
import tkinter.messagebox
from course import *
from tkinter import ttk
from table import *#展示搜索界面
window = tk.Tk()
window.title('东南大学课表查询系统')
window.geometry('300x150')
window.resizable(False, False)#学号或一卡通号
student_id = tk.StringVar()
student_id.set('')
label_student_id = tk.Label(window, text='一卡通号或学号:', justify=tkinter.RIGHT)
label_student_id.place(x=30, y=20, width=80, height=20)
entry_student_id = tk.Entry(window, width=80, textvariable=student_id)
student_id.set("213173182")
entry_student_id.place(x=120, y=20, width=110, height=20)#学年
academic_year = tkinter.StringVar()
academic_year.set('')
label_academic_year = tk.Label(window, text='学年 学期:', justify=tkinter.RIGHT)
label_academic_year.place(x=40, y=50, width=80, height=20)
entry_academic_year = ttk.Combobox(window, width=80, textvariable=academic_year)
entry_academic_year['values'] = ("18-19-2","18-19-1","17-18-3","17-18-2","17-18-1","16-17-3","16-17-2","16-17-1","15-16-3","15-16-2","15-16-1","14-15-3","14-15-2","14-15-1","13-14-3","13-14-2","13-14-1","12-13-3","12-13-2","12-13-1",
)
entry_academic_year.current(0)
entry_academic_year.place(x=120, y=50, width=110, height=20)#按钮关联函数
def search():Student_id = entry_student_id.get()Academic_year = entry_academic_year.get()Course = parse_course(get_course(Student_id, Academic_year))get_table(Student_id, Academic_year, Course)#创建按钮
button_click = tkinter.Button(window, text='查询', command=search)
button_click.place(x=110, y=90, width=80, height=30)window.mainloop()

下面就是获取课程信息了,命名为course.py


import requests
from urllib.parse import urlencode
from bs4 import BeautifulSoup
import redef get_course(card_no, academic_year):headers = {'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36'}data = {'queryStudentId': card_no,'queryAcademicYear': academic_year}url = "http://xk.urp.seu.edu.cn/jw_service/service/stuCurriculum.action?"+urlencode(data)response = requests.post(url=url, headers=headers)return response.textdef help(content):a = re.findall("<td.+rowspan=\".\">(.+)</td>", str(content))b = a[0].split("<br/>")print(b)if b.count("\xa0") == 0:returnreturn bdef parse_course(html):bs = BeautifulSoup(html, 'html.parser')course = list()for i in bs.findAll("td", {"class": "line_topleft", "rowspan": "5", "align": "center"}):c = help(i)if c:course.append(c[:-1])for i in bs.findAll("td", {"class": "line_topleft", "rowspan": "2", "align": "center"}):c = help(i)if c:course.append(c[:-1])return course

紧接着就是将获取到的课程信息可视化返回给用户,就命名为table.py 8

import tkinter as tk
from tkinter import *def get_table(id, year, course):#绘制主窗体window = tk.Tk()window.title('课表详情页')window.geometry('1500x750')window.resizable(False, False)#绘制边界线canvas = tk.Canvas(window, width=1500, height=750)canvas.create_line((50, 50), (50, 700))canvas.create_line((50, 50), (1450, 50))canvas.create_line((1450, 50), (1450, 700))canvas.create_line((1450, 700), (50, 700))canvas.create_line((50, 600), (1450, 600))for i in range(0, 5):canvas.create_line((50 + 1400 * (1 + i * 3) / 16, 50), (50 + 1400 * (1 + i * 3) / 16, 700))for i in range(0, 2):canvas.create_line((50, 100 + 250 * i), (1450, 100 + 250 * i))canvas.create_line((50 + 1400 / 24, 100), (50 + 1400 / 24), 700)for i in range(1, 13):canvas.create_text(50 + 1400 / 96 * 5, 75 + i * 50, text=i)for i in range(3, 14):canvas.create_line((50 + 1400 / 24, 50 * i), (50 + 1400 / 16, 50 * i))#添加标题内容canvas.create_text(1400 / 16 / 3 + 50, 200, text="上午")canvas.create_text(1400 / 16 / 3 + 50, 450, text="下午")canvas.create_text(1400 / 16 / 3 + 50, 650, text="晚上")canvas.create_text(50 + 1400 / 16 * 2.5, 75, text="星期一")canvas.create_text(50 + 1400 / 16 * 5.5, 75, text="星期二")canvas.create_text(50 + 1400 / 16 * 8.5, 75, text="星期三")canvas.create_text(50 + 1400 / 16 * 11.5, 75, text="星期四")canvas.create_text(50 + 1400 / 16 * 14.5, 75, text="星期五")canvas.create_text(750, 25, text="东南大学 "+id+" 的 "+year+" 学期课表")#添加课程内容content = list()for i in range(0, 15):content.append('\n'.join(course[i]))for i in range(0, 4):canvas.create_text(50 + 1400 / 16 * (2.6 + i * 3), 200, text=content[i])for i in range(5, 9):canvas.create_text(50 + 1400 / 16 * (2.6 + (i - 5) * 3), 450, text=content[i])for i in range(10, 11):canvas.create_text(50 + 1400 / 16 * (2.6 + (i - 10) * 3), 650, text=content[i])canvas.pack()window.mainloop()

展示效果

用户输入界面

课表界面

这是暑假就做好的,最近一直在忙着做短学期课程设计和校史竞赛系统,所以现在才发。。。

东南大学课表查询系统相关推荐

  1. python课表查询系统_东南大学课表查询系统

    社团作业,每人做了一个东南大学课表查询系统,不得不感叹,python确实厉害(那我还学MFC干什么..)! 这是搜索的主窗体,用来获取用户输入的信息(search.py). import tkinte ...

  2. 1.JSP课表查询系统

    想要源码的私信cue我即可,无偿!!! 文章目录 一.任务描述: 二.考核内容: 三.系统功能要求 四.实验报告 1 系统功能 2 相关技术 3 数据库设计 4 系统操作界面 一.任务描述: 遵循轻 ...

  3. 课表 php源码,php+excel通用课表查询系统 v2.2

    php+excel通用课表查询系统更新日志: 原先只支持windows,现在兼容linux可以(SAE赞不支持) php+excel通用课表查询系统简介 php+excel通用课表查询系统widows ...

  4. python课表查询系统_使用python抓取广西科技大学教务系统课程表

    因学校教务系统课程表查询功能累赘,服务器经常挂,同时也不适合手机端查询,所以用python开发爬虫抓取所有课程表,放到我的服务器上面. 本文仅供学习. 特性 中途退出程序再次运行不会抓取到重复课程表 ...

  5. Oracle课表查询系统,Oracle SQL基础练习(一)(学生表-课程表-选课表)

    一 使用CREATE TABLE语句和INSERT INTO语句创建表和插入数据. student表 course表 sc表 二 操作数据库 1.分别查询学生表和学生修课表中的全部数据. SELECT ...

  6. 课表查询系统java数据库_教务管理系统-学生查询个人课表

    学生模块-查看个人课表 效果图: 数据库表设计(前期的表设计,实际稍微有改动): 实际的排课表实体类: package com.edu.entity; import java.io.Serializa ...

  7. JAVA毕业设计飞机航班信息查询系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计飞机航班信息查询系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计飞机航班信息查询系统演示视频2021计算机源码+lw文档+系统+调试部署+数据库 本源 ...

  8. 基于php教学信息自助查询系统

    基于php的教学信息的自助查询系统,能方便学生查询个人信息及该学生的考试信息.成绩信息等,还能查询该生的课表信息,信息以图片文字语音三个类别呈现并分享到朋友圈.系统管理员通过后台操作即时的添加学生的考 ...

  9. 基于微信小程序的教务查询系统的设计与实现

    目录 1 绪论 2 1.1 研究背景 2 1.2 教务查询系统的现状和发展前景 3 1.3 系统的技术架构 3 1.4 论文框架 4 2 系统需求分析 5 2.1 系统概述 5 2.2 系统功能需求 ...

最新文章

  1. 李洪强iOS经典面试题153- 补充
  2. 链表之CIRCLEQ
  3. 双系统格盘后因grub无法进入xp系统问题,将linux所在分区格后启动停在grub。。。无法进入系统
  4. 我们需要StringBuffer么?
  5. 记一次小型生产事故 | BeyondComper跨编码方式复制文件内容
  6. ProgressDialog 一个使用类,多多提建议
  7. 大专计算机应用技术答辩,计算机应用技术专业硕士答辩.ppt
  8. c#中的long类型示例_C#中带示例的无符号字节数组
  9. 灾备中心服务器辐射,数据中心和灾备中心的相同点以及不同点
  10. 卡西欧计算机怎么传程序,卡西欧计算器程序传输软件fa-124的使用方法
  11. 网络机顶盒刷机linux,手机、网络机顶盒刷机recovery教程[整理].doc
  12. python实现调用百度图像识别api得到图片识别与检测类别和详细信息以及相关准确度
  13. 第一个彻底解决!微信公众号数学公式排版
  14. php除数不能为零,0为什么不能做除数(为什么0不能作为除数)
  15. python应用之socket编程
  16. 【微信小程序】微信小程序项目开发哔哩哔哩小程序
  17. 网约车租车平台有哪些,网约车租车平台都有哪些功能
  18. 【VRP问题】基于遗传算法求解带容量的VRP问题matlab源码
  19. Vista桌面图标无法拖动
  20. 计算机网络课外实验一级 20175319江野

热门文章

  1. 生成一个脚本,往目的MAC地址的设备投放广告
  2. Bellman-Ford贝尔曼福特算法实现
  3. Vue项目打包部署到Tomcat
  4. centos7 grub2 引导win7
  5. 【超级详细】RabbitMQ安装教程
  6. 【单片机学习笔记】(31):串口调试技巧、TFT触摸屏初识别、stm32F4与F1对比使用(全系列初始化概览)、YSF4的光耦隔离保护、外部中断与定时器消抖相结合的按键检
  7. deepin v20桌面bug_Deepin V20 国产操作系统体验
  8. 漫画:什么是红黑树?(整合版)
  9. C语言if语句练习题
  10. ES Field Collapsing 字段折叠使用详解