1970python高校教室管理系统mysql数据库Django框架bootstrap布局计算机软件工程网页

news2024/10/6 14:33:12


一、源码特点
    python Django 高校教室管理系统是一套完善的web设计系统mysql数据库 ,对理解python编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。

python Django 高校教室管理系统


    开发环境pycharm
    mysql 5.0 到5.5
    依赖包 Django 2.2.16
        pymysql 0.8.0

二、功能介绍
(1)管理员管理:对管理员信息进行添加、删除、修改和查看
(2)教师管理:对教师信息进行添加、删除、修改和查看
(3)学生管理:对学生信息进行添加、删除、修改和查看
(4)教室信息管理:对教室信息信息进行添加、删除、修改和查看
(5)星期管理:对星期信息进行添加、删除、修改和查看
(6)时间段管理:对时间段信息进行添加、删除、修改和查看
(7)课程管理:对课程信息进行添加、删除、修改和查看
(8)上课时间管理:对上课时间信息进行添加、删除、修改和查看、课表查看
(9)签到管理:对签到信息进行添加、删除、修改和查看
(10)教室借用管理:对教室借用信息进行添加、删除、修改和查看、统计
(11)用户登录、退出、个人信息修改

数据库设计

CREATE TABLE `gly` (
`glyid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',  PRIMARY KEY  (`glyid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `jiaoshi` (
`jsid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
`zc` VARCHAR(40) default NULL COMMENT '职称',  PRIMARY KEY  (`jsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `xuesheng` (
`xsid` int(11) NOT NULL auto_increment,
`yhm` VARCHAR(40) default NULL COMMENT '用户名',
`mm` VARCHAR(40) default NULL COMMENT '密码',
`xm` VARCHAR(40) default NULL COMMENT '姓名',
`lxdh` VARCHAR(40) default NULL COMMENT '联系电话',
`zy` VARCHAR(40) default NULL COMMENT '专业',  PRIMARY KEY  (`xsid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `jsxx` (
`jsxxid` int(11) NOT NULL auto_increment,
`jsmc` VARCHAR(40) default NULL COMMENT '教室名称',
`wz` VARCHAR(40) default NULL COMMENT '位置',
`bz` VARCHAR(40) default NULL COMMENT '备注',  PRIMARY KEY  (`jsxxid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `xingqi` (
`xqid` int(11) NOT NULL auto_increment,
`xq` VARCHAR(40) default NULL COMMENT '星期',  PRIMARY KEY  (`xqid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `sjd` (
`sjdid` int(11) NOT NULL auto_increment,
`sjd` VARCHAR(40) default NULL COMMENT '时间段',  PRIMARY KEY  (`sjdid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
CREATE TABLE `kecheng` (
`kcid` int(11) NOT NULL auto_increment,
`kcmc` VARCHAR(40) default NULL COMMENT '课程名称',
`rkjs` VARCHAR(40) default NULL COMMENT '任课教师',
`sm` VARCHAR(40) default NULL COMMENT '说明',  PRIMARY KEY  (`kcid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;

代码设计


#添加时间段
def sjdadd(request):
   if request.method == 'GET':
       return render(request, "sjd/sjdadd.html")
   if request.method == 'POST':
        sjd = request.POST.get('sjd') #时间段
        messages.success(request, "操作成功")
        models.sjd.objects.create(sjd=sjd, )
        #return render(request, "sjd/sjdadd.html")
        return redirect('/sjd/sjdadd')

#时间段列表
def sjdlist(request):
    print(request.method)
    global list
    if request.method == 'GET':

        sjd= request.GET.get('sjd')#时间段
        if not sjd:
            sjd = ""
        print(sjd)
        list = models.sjd.objects.filter(sjd__icontains=sjd).all()  # 获取sjd表所有的数据
    return render(request, "sjd/sjdlist.html", {'list': list})
#修改时间段
def sjdmodify(request):
    # 获取要修改的数据的id
    if request.method == 'GET':
        id = request.GET.get('id')
        obj = models.sjd.objects.get(id=id)
        return render(request, 'sjd/sjdmodify.html', {'obj': obj})

    id = request.POST.get('id')
    sjd = request.POST.get('sjd') #时间段
    messages.success(request, "操作成功")
    ret = models.sjd.objects.filter(id=id).update(sjd=sjd, )

    return redirect('/sjd/sjdlist')

# 时间段详情
def sjddetail(request):
    # 获取要修改的数据的id
    id = request.GET.get('id')
    obj = models.sjd.objects.get(id=id)
    return render(request, 'sjd/sjddetail.html', {'obj': obj})

#时间段删除
def sjddelete(request):
    # 获取要删除数据的id
    id = request.GET.get('id')
    # 查询数据库是否存在
    obj = models.sjd.objects.get(id=id)
    if obj:
        # 在数据库中删除
        obj.delete()
        messages.success(request, "操作成功")
        return redirect('/sjd/sjdlist')
    return HttpResponse("删除失败")

#添加课程
def kechengadd(request):
   if request.method == 'GET':
       jslist = models.jiaoshi.objects.all()  # 获取分类表所有的数据
       return render(request, "kecheng/kechengadd.html",{'jslist':jslist})
   if request.method == 'POST':
        kcmc = request.POST.get('kcmc') #课程名称
        rkjs = request.POST.get('rkjs') #任课教师
        sm = request.POST.get('sm') #说明

        res = models.kecheng.objects.filter(kcmc=kcmc).count();
        if res > 0:
            messages.success(request, "操作失败、教室名称重复")
        elif res == 0:
            messages.success(request, "操作成功")
            models.kecheng.objects.create(kcmc=kcmc, rkjs=rkjs, sm=sm, )


        #return render(request, "kecheng/kechengadd.html")
        return redirect('/kecheng/kechengadd')


三、注意事项
    1、管理员账号:admin密码:admin 数据库配置文件app/settings.py  更改数据库配置
    2、开发环境pycharm,数据库为mysql5.0~5.5,使用python语言开发。
    3、数据库文件名是pythonjsgl.sql ,系统名称jsgl
    4、系统首页地址:http://127.0.0.1:8080/login

四系统实现

需要源码 其他的定制服务  下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1830084.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2.华为配置静态路由

通过配置静态路由让PC1和PC2互通 AR1 [Huawei]int g0/0/0 [Huawei-GigabitEthernet0/0/0]ip add 192.168.1.254 24 [Huawei]int g0/0/1 [Huawei-GigabitEthernet0/0/1]ip add 1.1.1.1 24 [Huawei]ip route-static 192.168.2.0 24 1.1.1.2AR2 [Huawei]int g0/0/0 [Huawei-Gig…

ARM Linux 设备树详细介绍(2)共二篇

承接上文,第一篇 3. Device&Tree 引发的 BSP 和驱动变更 有了 Device Tree 后,大量的板级信息都不再需要,譬如过去经常在 arch/arm/plat-xxx 和 arch/arm/mach-xxx 实施的如下事情: 1. 注册 platform_device,绑定 …

《人生海海》读后感

麦家是写谍战的高手,《暗算》《风声》等等作品被搬上荧屏后,掀起了一阵一阵的收视狂潮。麦家声名远扬我自然是知道的,然而我对谍战似乎总是提不起兴趣,因此从来没有拜读过他的作品。这几天无聊时在网上找找看看,发现了…

从xxl-job源码中学习Netty的使用

1. 启动与Spring实例化 com.xxl.job.core.executor.impl.XxlJobSpringExecutor.java类 继承SmartInitializingSingleton 类,在afterSingletonsInstantiated 实例化后方法中 调用initJobHandlerMethodRepository 把所有的xxljob任务管理起来; private…

ARM Linux 设备树详细介绍(1)

1. ARM&Device&Tree 起源 Linus Torvalds 在 2011 年 3 月 17 日的 ARM Linux 邮件列表宣称“this whole ARM thing is a f*cking pain in the ass”,引发 ARM Linux 社区的地震,随后 ARM 社区进行了一系列 的重大修正。 在过去的 ARM Linux 中&…

电子电气架构 --- 智能座舱功能应用

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 屏蔽力是信息过载时代一个人的特殊竞争力,任何消耗你的人和事,多看一眼都是你的不对。非必要不费力证明自己,无利益不试图说服别人,是精神上的节…

springCloudAlibaba之分布式网关组件---gateway

gateway-网关 网关spring cloud gatewaygateway初体验gateway整合nacos简写方式 网关 在微服务架构中一个系统会被拆分成多个微服务。那么作为客户端(前端)要如何去调用这么多的微服务?如果没有网关的存在,我们只能在客户端记录每个微服务的地址&#xf…

工程设计问题---多盘离合器制动器设计问题

这个问题的主要目的是使多片式离合器制动器的质量最小化。在这个问题中,使用了五个整数决策变量,它们是内半径(x1)、外半径(x2)、盘厚度(x3)、致动器的力(x4)…

【Mybatis-Plus】根据自定义注解实现自动加解密

背景 我们把数据存到数据库的时候,有些敏感字段是需要加密的,从数据库查出来再进行解密。如果存在多张表或者多个地方需要对部分字段进行加解密操作,每个地方都手写一次加解密的动作,显然不是最好的选择。如果我们使用的是Mybati…

基于WPF技术的换热站智能监控系统13--控制设备开关

1、本节目的 本次工作量相对有点大,有点难度,需要熟悉MVVM模式,特别是属性绑定和命令驱动,目标是点击水泵开关,让风扇转动或停止,风扇连接的管道液体流动或静止。 ,具体对应关系是:…

单向散列函数解析

目录 1. 概述 2. 单向散列函数的性质 2.1 根据任意长度的消息计算出固定长度的散列值 2.2 能够快速计算出散列值 2.3 消息不同散列值也不同 2.4 具备单向性 3. 单向散列函数的算法 3.1 MD5 3.2 SHA序列 3.3 SM3 1. 概述 针对计算机所处理的消息,有时候我们…

【设计模式深度剖析】【9】【行为型】【访问者模式】| 以博物馆的导览员为例加深理解

👈️上一篇:备忘录模式 设计模式-专栏👈️ 文章目录 访问者模式定义英文原话直译如何理解呢? 访问者模式的角色类图代码示例 访问者模式的应用优点缺点使用场景 示例解析:博物馆的导览员代码示例 访问者模式 访问者模式(Visito…

计算机毕业设计hadoop+spark+hive知识图谱酒店推荐系统 酒店数据分析可视化大屏 酒店爬虫 高德地图API 酒店预测系统 大数据毕业设计

流程: 1.Python爬取去哪儿网全站旅游数据约10万,存入mysql; 2.使用pandasnumpy/hadoopmapreduce对mysql中旅游数据进行数据清洗,使用高德API计算地理信息,最终转为.csv文件上传hdfs; 3.hive建库建表导入.csv文件作为数据集&#x…

2024年汉字小达人活动还有4个多月开赛:来做18道历年选择题备考吧

结合最近几年的活动安排,预计2024年第11届汉字小达人比赛还有4个多月就启动,那么孩子们如何利用这段时间有条不紊地准备汉字小达人比赛呢? 我的建议是充分利用即将到来的暑假:①把小学1-5年级的语文课本上的知识点熟悉&#xff0…

Windows11和Ubuntu22双系统安装指南

一、需求描述 台式机电脑,已有Windows11操作系统,想要安装Ubuntu22系统(版本任意)。其中Windows安装在Nvme固态上,Ubuntu安装在Sata固态上,双盘双系统。开机时使用Grub控制进入哪个系统,效果图…

直接选择排序-C语言版本

前言 直接选择排序也是一个比较简单的排序,所以这里放在第二个进行讲解,这里和冒泡排序是有一点相似。直接选择排序和冒泡排序一样,也是具备一定的教学意义,但是没有什么实际操作的意义,因为直接选择排序的时间复杂度比…

云原生 Docker Swarm 使用详解

Hi~!这里是奋斗的小羊,很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~~ 💥💥个人主页:奋斗的小羊 💥💥所属专栏:C语言 🚀本系列文章为个人学习…

用Copilot画漫画,Luma AI生成视频:解锁创意新玩法

近年来,随着人工智能技术的不断发展,各种创意工具也层出不穷。今天,我们就来介绍一种全新的创作方式:使用Copilot画漫画,再将漫画放入Luma AI生成视频。 Copilot:你的AI绘画助手 Copilot是一款基于人工智…

Java | Leetcode Java题解之第147题对链表进行插入排序

题目: 题解: class Solution {public ListNode insertionSortList(ListNode head) {if (head null) {return head;}ListNode dummyHead new ListNode(0);dummyHead.next head;ListNode lastSorted head, curr head.next;while (curr ! null) {if (…

C++编程:vector容器的简单模拟实现

前言: 在C标准库(STL)中,vector容器是最常见使用的动态数组。它结合了链表与数组的优点,提供了灵活的大小调整与高效的随机访问。本文将简单的对vector容器进行介绍并且对vector容器简单的模拟实现。 一、vector的文…