学生成绩管理系统实现(CSS+JQuery+PHP+MySQL)

news2024/11/15 23:58:09

学生成绩管理系统实现(CSS+JQuery+PHP+MySQL)

一、项目背景

本项目基于学校教务系统的背景,根据大学生选课以及学校对学生成绩的管理,实现了一个学校的学生成绩管理网站。另外在学生功能模块实现了选课系统,可供学生选课/退课。

项目源码已经整理打包放在公众号,关注公众号 陆海的点滴 ,发送“学生成绩管理系统”关键字获取。

二、用户痛点

上大学得自己选课,体验过的同学都知道,没有比选课系统更容易崩的了,一到时间,网站进不去,各种404、502,能不能抢到喜欢的课全靠运气。抱怨的同时我们想选课系统为什么这么low,那我们能不能理清背后的逻辑,自己模拟做一个呢?

正式地讲,我觉得有以下几点:

1、教务系统的数据量不断的增长,系统访问量增多容易导致系统崩溃,功能并未完善,尤其是学生成绩管理系统,目前还没有一套完整的,统一的学生成绩管理系统。因此,开发一套适合大众的,兼容性好的成绩管理系统还是很有必要。

2、学校的学生工作繁杂,资料众多,学生成绩管理作为一项重要工作,将功能和需求进行模块化,形成一个信息模块集中的管理系统,可以减轻管理员和教师的工作量,提高工作效率与准确率

3、学生成绩管理网站作为一个独立的学生信息管理系统,使用角色明确,管理员和教师对教务、教学上的服务和信息进行管理提高了保密性,学生通过系统更加快速地获取到自己修读课程和考试成绩

这么说还挺需要这款功能全面的学生课程成绩管理系统的,我想集成课程管理和成绩两大模块,怎么做呢,现在开干!

三、系统功能模块

想了想,复杂的系统简单化,总之,麻雀虽小,五脏俱全。从系统角色角度设计出这个系统的模块,大概是这样。

系统架构模块

如果能够按照这些功能模块,设计出一个系统,实现基本功能,工作量也不小了,我想刚入门的同学,完成整个项目框架搭建,功能模块的编码,一定收获满满。

技术栈,我选择更容易入门的,也方面后面本地把系统搭建起来,所以选择是这样。

后端:PHP

数据库:MySQL

前端:CSS、JQuery

四、数据库设计

数据库设计得好,是开工第一重要事!

E-R

1、管理员表admin

CREATE TABLE `admin`  (
  `admin_id` int(16) NOT NULL,
  `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`admin_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名数据描述数据类型是否为空备注
admin_id管理员账号int(16)不允许主码
name管理员名varchar(32)
password密码varchar(32)

2、教师信息表teacher

CREATE TABLE `teacher`  (
  `teach_id` int(16) NOT NULL,
  `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `sex` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `sdept` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `position` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `academic` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`teach_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名数据描述数据类型是否为空备注
teach_id教师账号int(16)不允许主码
name教师名称varchar(32)
password密码varchar(32)不允许
sex性别varchar(32)
sdept部门varchar(32)
position职称varchar(32)
academic学历varchar(32)

3、学生信息表student

CREATE TABLE `student`  (
  `stuno` int(16) NOT NULL,
  `name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `sdept` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `sex` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `home` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `rxtime` date NULL DEFAULT NULL,
  `ps` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `password` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL,
  PRIMARY KEY (`stuno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名数据描述数据类型是否为空备注
stuno学生账号int(16)不允许主码
name学生名称varchar(32)
password密码varchar(32)不允许
sex性别varchar(32)
sdept所属学院varchar(32)
home家庭住址varchar(32)
rxtime入学时间varchar(32)
ps专业varchar(32)

4、课程信息表course

CREATE TABLE `course`  (
  `course_id` int(16) NOT NULL,
  `course_name` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `credit` float(8, 1) NULL DEFAULT NULL,
  `teach_id` int(16) NULL DEFAULT NULL,
  `xktime` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  `blps` float(8, 1) NULL DEFAULT NULL,
  `blks` float(8, 1) NULL DEFAULT NULL,
  PRIMARY KEY (`course_id`) USING BTREE,
  INDEX `teach_id`(`teach_id`) USING BTREE,
  CONSTRAINT `course_ibfk_1` FOREIGN KEY (`teach_id`) REFERENCES `teacher` (`teach_id`) ON DELETE SET NULL ON UPDATE CASCADE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名数据描述数据类型是否为空备注
course_id课程号int(16)不允许主码
course_name课程名varchar(32)联合主键
credit学分varchar(32)
teach_id教授老师int(16)
xktime开课学期varchar(32)
blps平时成绩占比float(8)
blks期末成绩占比float(8)

5、学生成绩信息表grade

CREATE TABLE `grade`  (
  `sc_id` int(16) NOT NULL AUTO_INCREMENT,
  `course_id` int(16) NULL DEFAULT NULL,
  `stuno` int(16) NULL DEFAULT NULL,
  `psgrade` float(16, 1) NULL DEFAULT NULL,
  `ksgrade` float(16, 1) NULL DEFAULT NULL,
  `grade` float(16, 1) NULL DEFAULT NULL,
  `flag` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
  PRIMARY KEY (`sc_id`) USING BTREE,
  INDEX `course_id`(`course_id`) USING BTREE,
  INDEX `stuno`(`stuno`) USING BTREE,
  CONSTRAINT `grade_ibfk_1` FOREIGN KEY (`course_id`) REFERENCES `course` (`course_id`) ON DELETE SET NULL ON UPDATE CASCADE,
  CONSTRAINT `grade_ibfk_2` FOREIGN KEY (`stuno`) REFERENCES `student` (`stuno`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE = InnoDB AUTO_INCREMENT = 19 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;
属性名数据描述数据类型是否为空备注
sc_id自增idint(16)不允许主码
course_id课程号varchar(32)联合主键
stuno学生IDvarchar(32)联合主键
psgrade平时成绩float(16)
ksgrade期末成绩float(16)
grade总成绩float(16)
flag是否审核varchar(8)

五、系统效果展示

从设计数据表可以知道,本网站系统包括了管理员,教师,学生这三种用户权限。

结合开篇的系统功能模块结构,各个角色的权限和使用的功能:

1)最高权限:管理员,主要负责对学生成绩、信息的管理和确认,教师信息、课程的添加等,进行的操作包括增删查改,具体是包括对教师、课程和学生信息的添加(单个添加或者通过上传文件批量添加),审核学生成绩以及对学生成绩的统计分析导出课程成绩、学生各科成绩等报表

2)教师:主要负责对学生的成绩进行录入,提交管理员审核,查看学生课程成绩,导出成绩报表,修改自己的信息、登录密码,查询课程教学学生的成绩情况

3)学生查看自己修读课程的成绩打印成绩报表进行选课/退课查询学分情况修改自己的基本信息,修改登录密码。

因为时间问题,文章先写到这里,完成系统架构的划分和数据库的设计,现在展示几张效果图给大家瞅瞅,下篇详细写整个系统各个模块的具体内容。

管理员登录视角:
管理员视角
学生登录视角:
学生视角
学生查看自己成绩:
学生查询成绩模块!视角
系统更多模块功能介绍,敬请期待!

项目源码已经整理打包放在公众号,关注公众号 陆海的点滴,发送“学生成绩管理系统”关键字获取。



欢迎“一键三连”哦,点赞加关注,收藏不迷路,我们下篇见!(⊙ᗜ⊙)

公众号同步更新哦,习惯阅读公众号的伙伴们可以关注我的公众号 陆海的点滴 呀!


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

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

相关文章

Ext4文件系统介绍 - 理论篇

Overview ext4文件系统分割成多个block groups,为了解决碎片化问题,block allocator尽量将一个文件的block放在一个group中。block groups的size通过sb.s_blocks_per_group指定,同样也可以通过8*block_size_in_bytes计算得到。block默认大小…

【Zookeeper】终端操作常用命令

文章目录 服务端常用命令客户端常用命令 zookeeper版本3.7.1 Zookeeper是一个开源的分布式协调服务。 Zookeeper是Apache软件基金会的一个项目,它提供了分布式应用程序协调的通用服务,如分布式同步、命名服务、集群维护等,以简化分布式应用协…

【计算机组成与体系结构Ⅰ】实验6 熟悉Vivado及MINISYS-1实验系统

一、实验目的 1:熟悉Vivado的开发环境及开发流程,掌握Vivado中Verilog HDL文本输入设计方法,包括仿真、综合、实现与下载。熟悉Minisys开发板的功能和使用方法。 2:学会可配置IP核的设计与封装方法,深入理解与门逻辑…

Linux驱动入门(五)——简单的字符设备驱动程序

文章目录 前言字符设备驱动程序框架字符设备和块设备主设备号和次设备号申请和释放设备号 初识cdev结构cdev结构体file_operations结构体cdev和file_operation结构体的关系inode结构体 字符设备驱动的组成字符设备加载和卸载函数file_operations结构体和其他成员函数驱动程序与…

Tomcat面试题

江湖无名 安心练剑 关注微信公众号:程序三两行 获取最新版面试资料、java学习路线 1、Tomcat 的缺省端口是多少,怎么修改? 1)找到 Tomcat 目录下的 conf 文件夹 2)进入 conf 文件夹里面找到 server.xml 文件 3&…

Elasticsearch】文档操作

目录 3.文档操作 3.1.新增文档 3.2.查询文档 3.3.删除文档 3.4.修改文档 3.4.1.全量修改 3.4.2.增量修改 3.5.总结 3.文档操作 3.1.新增文档 语法: POST /索引库名/_doc/文档id {"字段1": "值1","字段2": "值2"…

AUTOSAR CP标准的RTE和BSW各模块的设计及开发工作

AUTOSAR(Automotive Open System Architecture)是一种开放的汽车电子系统架构标准,旨在提供一种统一的软件架构,以实现汽车电子系统的模块化和可重用性。 AUTOSAR标准中的两个重要模块是RTE(Runtime Environment&…

YOLOV5/V7动态多Batch推理,GPU预处理、后处理C++源码

YOLO系列多batch处理后处理代码,C代码,结构清晰,自己后期会继续发布真实场景项目;关注公众号欢迎下载。 一、获取链接 所有源码获取方法,链接:https://www.cnblogs.com/shenduxuexizahuopu/p/17538815.htm…

【LeetCode】HOT 100(22)

题单介绍: 精选 100 道力扣(LeetCode)上最热门的题目,适合初识算法与数据结构的新手和想要在短时间内高效提升的人,熟练掌握这 100 道题,你就已经具备了在代码世界通行的基本能力。 目录 题单介绍&#…

【Python】Python实现串口通信(Python+Stm32)

🎉欢迎来到Python专栏~Python实现串口通信 ☆* o(≧▽≦)o *☆嗨~我是小夏与酒🍹 ✨博客主页:小夏与酒的博客 🎈该系列文章专栏:Python学习专栏 文章作者技术和水平有限,如果文中出现错误,希望…

在linux中安装HAProxy

使用xfrp将压缩包上传到linux的opt目录下 1.解压HAProxy安装包 tar -zxvf haproxy-1.8.12.tar.gz 2. 查看点钱的内核及版本: uname -r 3. 根据内核版本选择编译参数 cd haproxy-1.8.12 cat README 4. 编译安装HAProxy make TARGETlinux2628 ARCHx86_64 PREFIX/usr/local…

测试,写用例!真有必要?

今天的文章是想跟所有小伙伴讨论软件测试工作中必不可少的一项工作:写测试用例,但目前还有很多公司并不重视写测试用例,觉得写测试用例是浪费时间,还不如拿这些时间来执行测试,那我们真的有必要写测试用例么&#xff1…

算法与数据结构-递归

文章目录 什么是递归递归需要满足的三个条件递归可能存在的问题堆栈溢出重复计算 总结 什么是递归 递归是一种直接或者间接调用自身函数或者方法的算法(或者编程技巧),应用非常广泛。我们举个例子来说明什么是递归: 推荐注册返佣金…

join的作用【A中调用B.join表示 B先完成后A再继续】【b.join 表示b先完成】

★ 2.5 等待一个线程-join() ★★★A中调用B.join表示 B先完成后A再继续 有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。例如,张三只有等李四转账成功,才决定是否存钱,这时我们需要一个方法明确…

maya粒子碰撞(碰撞几何体索引)

全部下滑了 nParticleShape1.rgbPP<<1,0,0>>; 碰撞层 int $yase nParticleShape1.collisionGeometryIndex; if ($yase 0 ) nParticleShape1.rgbPP<<0,1,0>>; int $yase nParticleShape1.collisionGeometryIndex; if ($yase 0 ) nParticleShape1.…

【Linux】网络基础和网络套接字的概念

文章目录 前言一、网络的发展及其网络中的概念总结 一、网络的发展及其网络中的概念 刚开始的计算机大多处于独立模式&#xff0c;也就是说计算机之间相互独立。等到网络出现的时候就出现了网络互联&#xff0c;多台计算机连接在一起完成数据共享。随着发展计算机越多越多就出…

选购云主机

目录 一、购买云主机 二、SSH连接云主机 三、在云主机上面开放端口 一、购买云主机 云服务商有很多&#xff0c;但是我推荐大家使用腾讯云。之前我讲过阿里云超卖的事情&#xff0c;云主机IO性能非常差劲&#xff0c;我们要在云主机上面安装MySQL、MongoDB这样的数据库&…

TortoiseGit 入门指南01:环境搭建和软件设置

在我的博文Keil MDK环境下Git入门指南的最后&#xff0c;我这样写道&#xff1a; 目前使用 TortoiseGit 管理工程&#xff0c;用 Gitee 作为远程仓库。 命令行 Git 已经不再使用。 当时我并没有介绍软件 TortoiseGit 的使用方法&#xff0c;这个系列补上。如果你还没有看过《Ke…

Linux开发工具【gcc/g++】

Linux开发工具之【gcc/g】 上文我们已经学习了vim编辑器的相关操作和使用&#xff0c;已经可以在Linux下编写代码了&#xff0c;有了代码就需要编译运行&#xff0c;此时就需要用到Linux中的编译工具gcc/g了&#xff0c;其中gcc是C语言的编译器&#xff0c;g是C的编译器&#…

RabbitMQ系列(29)--RabbitMQ搭建Shovel

前言&#xff1a; Federation具备的数据转发功能类似&#xff0c;Shovel能够可靠、持续地从一个Broker中的队列(作为源端&#xff0c;即source)拉取数据并转发至另一个Broker中的交换器(作为目的端&#xff0c;即destination)。作为源端的队列和作为目的端的交换器可以同时位于…