前提紧要

1、需在程序同目录下创建一个实验室名称表classInfo.xlsx,格式如下:

2、需在程序同目录下创建一个学生信息表stuNo.xlsx,形如:

3、需在程序同目录下创建一个预约信息表clstme.xlsx,形如:

4、该导的包:openpyxl、os、pandas、matplotlib等

5、然后运行这个垃圾程序即可
演示视频:【基于py实现的教室预约系统】 https://www.bilibili.com/video/BV1K24y1R7Wx/?share_source=copy_web&vd_source=fa6ceda0e61840db504a95bcd25f6d74

import openpyxl
from openpyxl import Workbook, load_workbook
import os
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import table
# 解决 画图中文 方块问题
from pylab import mplres = []    #缓存个人已约信息def init():print("欢迎光~临!")#初始化本人预约信息
def inityue(instu):wb = load_workbook('clstme.xlsx')# 打开sheet, (一般打开一个已经存在的文件后,我们希望直接操作其中的某个表格)# 我们可以get所有表格的名字,再从中选择某个表格sheet_list = wb.sheetnamesws = wb[sheet_list[0]]# 或者直接用表格的名字ws = wb['Sheet1']for r in range(2, ws.max_row+1):for c in range(2, ws.max_column+1): #深入到每一个单元格子#ws.cell(r, c).value.splitlines()vle = str(ws.cell(r, c).value).splitlines() #一个单元格子有若干行,将每行作为一个列表对象for i in range(len(vle)):#到此,即是分析每一个预约数据!vle[i]if instu in vle[i]:res.append([vle[i],"星期:" + str(c - 1),"时段:" + str(r - 1)])#登录界面
def comin():print("请输入您的学号:(输入0退出,测试账号为114514,姓名:IKUN)")inno = input()  #获得学号if inno == "0":return 1    #退出返回1else:print("请输入您的姓名:")instu = input() #获得姓名#获取工作簿对象wb=openpyxl.load_workbook("stuNo.xlsx")#获得工作簿的表名后,就可以获得表对象ws=wb["Sheet1"]#获取该表相应的行数ros=ws.max_row#for判断是否在学生库中for c in range(1,ros + 1):if instu == ws.cell(row = c,column = 2).value and inno == ws.cell(row=c,column=1).value:inityue(instu)#缓存本人预约信息#query(instu)menu(inno,instu)#跳转到菜单界面return 1    #进入菜单后退出,直接退出系统print("该用户不存在!请检查输入是否正确!")return 0    #重新输入#菜单界面
def menu(inno, instu):while 1:    #重复询问下次操作print("请输入操作:")print("1:预约实验室")print("2:显示目前全部的预约信息")print("3:查询所有教室")print("4:查询预约情况")print("5:修改预约信息")print("6:退出系统")x = input()if x == '1':while booking(instu):   #当booking返回1时,表明没运行到底,继续运行continueelif x == '2': show() #显示目前全部的预约信息elif x == '3': sowrom()   #显示所有教室elif x == '4': query()    #查询本人已约信息elif x == '5': rebook(instu)  #修改本人预约信息elif x == '6':exitt() #退出break   #break循环访问操作,退出系统else:print("输入错误!请重新输入\n")#预约教室
def booking(instu):print("请输入需预约的教室:(退出请按0,输出所有教室请按1)")room = input()if(room == '0'):return 0    #停止运行if(room == '1'):sowrom()return 1    #继续运行#下面判断教室是否存在wb=openpyxl.load_workbook("classInfo.xlsx")#获得工作簿的表名后,就可以获得表对象ws=wb["Sheet"]#获取该表相应的行数ros=ws.max_rowflag = 0for i in range(1,ros + 1):if ws.cell(row = i,column = 1).value == room:flag = 1break   #找到直接break,无需继续找if flag == 0:print("教室不存在!请重新输入")return 1print("请选择星期:(直接输入对应数字)")day = input()#input默认输入格式为str,非整数直接转str会报错。需先判断是否能转。if not day.isnumeric():print("星期输入有误!请重新输入!")return 1day = int(day)if day not in range(1,8):print("星期输入有误!请重新输入")return 1else:print("请输入时段:(1上午、2下午、3晚上)")tme = input()#input默认输入格式为str,非整数直接转int会报错。需先判断是否能转。if not tme.isnumeric():print("时段输入有误!请重新输入!")return 1tme = int(tme)if tme not in range(1,4):print("时段输入有误!请重新输入")return 1#开始预约else:wb = load_workbook('clstme.xlsx')# 打开sheet, (一般打开一个已经存在的文件后,我们希望直接操作其中的某个表格)# 我们可以get所有表格的名字,再从中选择某个表格sheet_list = wb.sheetnamesws = wb[sheet_list[0]]# 或者直接用表格的名字ws = wb['Sheet1']vle = str(ws.cell(tme + 1, day + 1).value).splitlines() #一个单元格子有若干行,将每行作为一个列表对象for i in range(len(vle)):#到此,即是分析每一个预约数据!vle[i]if room in vle[i]:print("该时段已有人预约!请重新输入!")return 1#在clstme表中加上预约信息cel = str(ws.cell(tme + 1, day + 1).value)  #获得原来的单元格值nul = str(ws.cell(1, 1).value)  #获得空白单元格做对比#print(cel,len(cel))if cel == nul:cel = str(room) + "," + str(instu)  #单元格为空,没必要加换行符else:cel += "\n" + str(room) + "," + str(instu)  #单元格已有数据,在后面加上换行符ws.cell(tme + 1,day + 1,cel)    #赋新值wb.save(filename='clstme.xlsx')#更新预约缓存res.append([str(room +  "," + instu), "星期:" + str(day), "时段:" + str(tme)])print("您已预约成功!")return 0#显示全部教室
def sowrom():wb=openpyxl.load_workbook("classInfo.xlsx")#获得工作簿的表名后,就可以获得表对象ws=wb["Sheet"]#获取该表相应的行数ros=ws.max_rowfor i in range(1,ros + 1):print(ws.cell(row = i,column = 1).value)#显示全部预约信息(以图片的方式)
def show():# #直接打开文件展示,有着安全风险。# file = "clstme.xlsx"# os.startfile(file)mpl.rcParams['font.sans-serif'] = ['Microsoft YaHei']    # 指定默认字体:解决plot不能显示中文问题mpl.rcParams['axes.unicode_minus'] = False# figsize 指定figure的宽和高,单位为英寸;# dpi参数指定绘图对象的分辨率,即每英寸多少个像素,缺省值为80      1英寸等于2.5cm,A4纸是 21*30cm的纸张fig = plt.figure(figsize=(9, 10), dpi=900)# frameon:是否显示边框ax = fig.add_subplot(161, frame_on=False,)# 隐藏x轴 y轴ax.xaxis.set_visible(False)  # hide the x axisax.yaxis.set_visible(False)  # hide the y axisdatas = pd.read_excel('clstme.xlsx')datas = datas.iloc[:, 0:]print(datas)print("请等待图片生成...")# 生成图片table(ax, datas, loc='center')  # where df is your data frame# 保存图片plt.savefig('photo.jpg')os.startfile("photo.jpg")return#查询本人已约信息
def query():for i in range(len(res)):print(str(i + 1) + "、" + str(res[i]))print("时段:(1上午、2下午、3晚上)")return#重约教室
def rebook(instu):if len(res) == 0:print("您当前没有预约教室,请先预约!")returnelse:print("请输入你想修改哪一条预约信息:")print("[""str"",""x"",""y""]表示在星期x时段y时已预约str教室")query()x = int(input())if x not in range(1, len(res) + 1):print("输入有误!,请重新输入")rebook(instu)else:x = x - 1days = int(res[x][1][len(res[x][1]) - 1])tmes = int(res[x][2][len(res[x][2]) - 1])roms = ""for i in range(len(res[x][0])):###if res[x][0][i] != ',':roms += res[x][0][i]else:break#print(days,tmes,roms)while booking(instu):continue#把原来的信息删除wb = load_workbook('clstme.xlsx')# 打开sheet, (一般打开一个已经存在的文件后,我们希望直接操作其中的某个表格)# 我们可以get所有表格的名字,再从中选择某个表格sheet_list = wb.sheetnamesws = wb[sheet_list[0]]# 或者直接用表格的名字ws = wb['Sheet1']yuan = ws.cell(tmes + 1, days + 1).valueif "\n" in yuan:shan = "\n" + roms + "," + instuelse:shan = roms + "," + instu#print(yuan,type(yuan),shan,type(shan))xin = yuan.replace(shan, '')if xin == yuan:shan = roms + "," + instu + "\n"xin = yuan.replace(shan, '')ws.cell(tmes + 1, days + 1,xin)wb.save(filename='clstme.xlsx')#更改预约缓存tp = roms + "," + instufor i in range(len(res)):if tp in res[i]:res.pop(i)breakreturn
#退出函数
def exitt():print("栓Q")#主程序
while comin() == 0:continue

python实验室预约系统(基于xlsx表)(石山代码)相关推荐

  1. 实验室预约系统|基于Springboot+Vue实现学校实验室预约管理系统

    作者主页:编程指南针 作者简介:Java领域优质创作者.CSDN博客专家 .掘金特邀作者.多年架构师设计经验.腾讯课堂常驻讲师 主要内容:Java项目.毕业设计.简历模板.学习资料.面试题库.技术互助 ...

  2. 基于python下django框架 实现校园教室实验室预约系统详细设计

    前言介绍(开发目的和意义) 本课题主要目标是设计并能够实现一个基于web网页的教室实验室预约系统,整个网站项目使用了B/S架构,基于python的Django框架下开发:管理员通过后台录入信息.管理信 ...

  3. python毕业设计作品基于django框架 教室实验室预约系统毕设成品(6)开题答辩PPT

    python教室实验室预约系统 django教室实验室预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + ...

  4. python毕业设计作品基于django框架 教室实验室预约系统毕设成品(8)毕业设计论文模板

    python教室实验室预约系统 django教室实验室预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + ...

  5. python毕业设计作品基于django框架 教室实验室预约系统毕设成品(5)任务书

    python教室实验室预约系统 django教室实验室预约系统 python毕业设计作品成品 django毕业设计作品成品 整个项目包含了:开题报告 + 开题报告PPT + 任务书 + 中期报告 + ...

  6. python教室实验室预约系统毕业设计开题报告

    本文给出的python毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的教室实验室预约系统,整个网站项目使 ...

  7. JAVA毕业设计开放式实验室预约系统计算机源码+lw文档+系统+调试部署+数据库

    JAVA毕业设计开放式实验室预约系统计算机源码+lw文档+系统+调试部署+数据库 JAVA毕业设计开放式实验室预约系统计算机源码+lw文档+系统+调试部署+数据库 本源码技术栈: 项目架构:B/S架构 ...

  8. C语言智能实验室预约系统

    C语言智能实验室预约系统 出题人:俞琼 面向专业:计算机科学与技术 难度等级:4 1 问题描述 为提高实验室利用率,开通实验室预约使用模式,实验室有 40 台电脑,每天开放时间为 8:00-17:00 ...

  9. python疫苗预约系统毕业设计开题报告

    本文给出的python毕业设计开题报告,仅供参考!(具体模板和要求按照自己学校给的要求修改) 选题目的和意义 目的:本课题主要目标是设计并能够实现一个基于web网页的疫苗预约系统,整个网站项目使用了B ...

最新文章

  1. shell基础(自己看视频写的,不是特别全)
  2. dbda.class.php 下载,DBDA
  3. c#switch语句判断成绩_switch语句成绩等级例子
  4. 在服务器上安装vasp如何得到输出文件,云服务器安装vasp
  5. 华为今年或发两款5G产品:5G CPE Win和5G随行WiFi
  6. Android studio设置代码自动提示
  7. 【Spring第一篇】ClassPathXmlApplicationContext工作原理
  8. 基于HMM和维特比算法的中文分词
  9. “OpenGL.error.NullFunctionError: Attempt to call an undefined function”解决方案
  10. mysql数据库实验4
  11. 基于QT和DCMTK的Dicom 图像浏览器---收尾
  12. 大小写字母c语言,C语言 大小写字母转换
  13. NewStarCTF 公开赛wp
  14. 程序媛学车之——科目二流程
  15. 由光声前向模型求取光声信号
  16. “打折”上市的网易云音乐一跌再跌,为何资本市场不买单?
  17. 百度 Hydra 工具在移动端 UI 兼容性测试上的高效应用
  18. 数据结构(一)——数据结构简介
  19. MySql数据库:数据查重、去重的实现
  20. 安卓软件开发你知道需要学什么吗,看这里?

热门文章

  1. python关于矩阵的基本程序知识——使用Numpy模块
  2. 多元函数的极值和鞍点
  3. 【计算机网络漫游】浏览器输入一个URL后发生了什么
  4. 基于MS的forcite模块模拟水分子在云母表面吸附行为
  5. 配置SumatraPDF反向搜索
  6. 誉天就业招聘:云计算/数通运维工程师
  7. R语言绘图——组间差异箱线图图,小提琴图、聚类热力图、相关系数热力图
  8. WS2812灯珠(四)---实现全彩呼吸灯效果
  9. 如何批量给图片重命名?
  10. 通信网络以及通信类公司