[教学管理] 学生作业及日志查收的纯MySQL解决方案

本文详细介绍了一个包含学生、班级、成绩等表的数据库设计,并演示了如何通过存储过程进行日志和作业的提交与统计,提供了实用的SQL脚本。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DROP TABLE IF EXISTS `章节表`;
CREATE TABLE `章节表`  (
  `章节ID` int(11) NOT NULL AUTO_INCREMENT,
  `章节名称` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `章节周数` int(11) DEFAULT NULL,
  PRIMARY KEY (`章节ID`) USING BTREE
) ENGINE = InnoDB;

DROP TABLE IF EXISTS `班级表`;
CREATE TABLE `班级表`  (
  `班级ID` int(11) NOT NULL AUTO_INCREMENT,
  `班级名称` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  PRIMARY KEY (`班级ID`) USING BTREE
) ENGINE = InnoDB;


DROP TABLE IF EXISTS `日志表`;
CREATE TABLE `日志表`  (
  `日志ID` int(11) NOT NULL AUTO_INCREMENT,
  `日志周数` int(11) NULL DEFAULT NULL,
  `日志的学生ID` int(11) DEFAULT NULL,
  PRIMARY KEY (`日志ID`) USING BTREE
) ENGINE = InnoDB;

DROP TABLE IF EXISTS `成绩表`;
CREATE TABLE `成绩表`  (
  `成绩ID` int(11) NOT NULL AUTO_INCREMENT,
  `成绩分数` int(11) NOT NULL DEFAULT 0,
  `成绩周数` int(11) DEFAULT NULL,
  `成绩的学生ID` int(11) NULL DEFAULT NULL,
  PRIMARY KEY (`成绩ID`) USING BTREE
) ENGINE = InnoDB;

DROP TABLE IF EXISTS `学生表`;
CREATE TABLE `学生表`  (
  `学生ID` int(11) NOT NULL AUTO_INCREMENT,
  `学生姓名` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL,
  `学生的班级ID` int(11) DEFAULT NULL,
  `学生备注` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci DEFAULT NULL,
  PRIMARY KEY (`学生ID`) USING BTREE
) ENGINE = InnoDB;


DROP TABLE IF EXISTS `作业表`;
CREATE TABLE `作业表`  (
  `作业ID` int(11) NOT NULL AUTO_INCREMENT,
  `作业周数` int(11) NULL DEFAULT NULL,
  `作业的学生ID` int(11) DEFAULT NULL,
  PRIMARY KEY (`作业ID`) USING BTREE
) ENGINE = InnoDB;
复制代码
-- 章节表数据
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (1, 'MySQL安装, 建库, 建表, 加数据', 1);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (2, '查询数据', 2);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (3, '运算符与函数, 存储过程', 3);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (4, '图解变量, 异常处理', 4);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (5, '流程控制', 5);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (6, '事务, 游标, 函数', 6);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (7, '触发器', 7);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (8, '索引, 视图', 8);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (9, '数据库管理和维护', 9);
INSERT INTO `章节表`(`章节ID`, `章节名称`, `章节周数`) VALUES (10, '用户和数据安全, 权限管理', 10);
-- 班级表数据
INSERT INTO `班级表`(`班级ID`, `班级名称`) VALUES (1, '计算机网络技术(系统集成方向)一班');
INSERT INTO `班级表`(`班级ID`, `班级名称`) VALUES (2, '移动商务(阿里巴巴开发工程师)一班');
INSERT INTO `班级表`(`班级ID`, `班级名称`) VALUES (3, '计算机网络技术(系统集成方向)二班');
INSERT INTO `班级表`(`班级ID`, `班级名称`) VALUES (4, '移动商务(阿里巴巴开发工程师)二班');
-- 学生表数据
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (1, '吴旭', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (2, '张欣宇', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (3, '王国洗', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (4, '杨永光', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (5, '张文辉', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (6, '刘豪', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (7, '梁梦龙', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (8, '王文强', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (9, '杨德全', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (10, '郑鹏飞', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (11, '刘鹏飞', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (12, '贾梦豪', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (13, '张豪凯', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (14, '宗智远', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (15, '孔华朋', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (16, '李书博', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (17, '熊开猛', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (18, '邢子洋', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (19, '刘旭', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (20, '刘昊', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (21, '班亚楠', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (22, '王一豪', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (23, '曹泽龙', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (24, '王泽桢', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (25, '赵天赐', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (26, '葛浩蒙', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (27, '赵贺佳', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (28, '李情情', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (29, '何瑞怡', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (30, '刘倩倩', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (31, '郭盼盼', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (32, '刘忆琳', 1, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (33, '潘永涛', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (34, '李保重', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (35, '刘硕', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (36, '丁鹏伟', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (37, '赵秋云', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (38, '马晗', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (39, '卢丛惠', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (40, '张龙龙', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (41, '吴梦丽', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (42, '朱相儒', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (43, '张书源', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (44, '郭旭', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (45, '王鑫', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (46, '周会双', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (47, '郭子申', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (48, '段爱烨', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (49, '雷懿寓', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (50, '周春广', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (51, '沈春阳', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (52, '席文博', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (53, '李世龙', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (54, '温明亮', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (55, '赵苗苗', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (56, '李聪斌', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (57, '刘一奇', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (58, '王伟利', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (59, '张鸽', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (60, '张睢', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (61, '张会敏', 2, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (62, '靖山', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (63, '马超', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (64, '尚雪豪', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (65, '施凯华', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (66, '高铭泽', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (67, '侯俊阳', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (68, '范启蒙', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (69, '王成隆', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (70, '王超杰', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (71, '张照选', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (72, '刘智深', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (73, '李果诚', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (74, '张圆圆', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (75, '郭红丽', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (76, '梁慧敏', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (77, '李明健', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (78, '王浩', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (79, '梁顺杰', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (80, '董红星', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (81, '黄丽明', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (82, '程航', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (83, '安康', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (84, '林高', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (85, '陶海龙', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (86, '庞亚博', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (87, '马宇阳', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (88, '王宇歧', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (89, '林天宇', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (90, '邢育彬', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (91, '王银灵', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (92, '王天真', 3, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (93, '王柯盈', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (94, '杜欣雨', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (95, '孙明浩', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (96, '康连杰', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (97, '郭龙康', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (98, '苏珂', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (99, '马彩茹', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (100, '樊伊麟', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (101, '郭贺贺', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (102, '吴秉泽', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (103, '张海宁', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (104, '张航博', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (105, '艾森', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (106, '滕东升', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (107, '姚玉东', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (108, '常鑫', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (109, '马婧文', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (110, '李涛', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (111, '姚盼盼', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (112, '吕俊飞', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (113, '曹禹卿', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (114, '李数数', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (115, '刘琪', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (116, '朱梦瑶', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (117, '侯季果', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (118, '刘梦晴', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (119, '杨挺甫', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (120, '张贝贝', 4, '');
INSERT INTO `学生表`(`学生ID`, `学生姓名`, `学生的班级ID`, `学生备注`) VALUES (121, '张鑫', 4, '');
-- 日志表数据(一周两次日志)
insert into 日志表(日志周数,日志的学生ID) select 9,学生ID from 学生表;
insert into 日志表(日志周数,日志的学生ID) select 9,学生ID from 学生表;
-- 作业表数据(一周两次作业)
insert into 作业表(作业周数,作业的学生ID) select 9,学生ID from 学生表;
insert into 作业表(作业周数,作业的学生ID) select 9,学生ID from 学生表;
-- 成绩表
insert into 成绩表(成绩分数,成绩周数,成绩的学生ID) select floor(rand()*40)+60,9,学生ID from 学生表;
复制代码

创建三个存储过程

  1. 提交日志
  2. 提交作业
  3. 日志及作业统计

1. 提交日志

  • in 日志周数 直接写第几周即可
  • in 学生姓名 多个学生姓名, 无需分隔符
drop procedure if exists 提交日志;
create procedure 提交日志(in 周数 int, in 同学们的姓名 text) begin 
    declare sid int default 0;
    declare sname char(20) default '';
    declare 游标是否结束 int default 0;
   
    declare 游标 cursor for select 学生ID, 学生姓名 from 学生表;
		declare continue handler for not found set 游标是否结束 = 1;
    open 游标;
    myloop:loop
        fetch 游标 into sid,sname;
        if locate(sname,同学们的姓名)
        then 
            insert into 日志表(日志的学生ID,日志周数) values(sid,周数);
        end if;
        if 游标是否结束 then 
            leave myloop;
        end if;
    end loop;
    close 游标;
    select '完成!!!' as `提示`;
end;
复制代码

2. 提交作业

  • in 作业周数 直接写第几周即可
  • in 学生姓名 多个学生姓名, 无需分隔符
drop procedure if exists 提交作业;
create procedure 提交作业(in 周数 int, in 同学们的姓名 text) begin 
    declare sid int default 0;
    declare sname char(20) default '';
    declare 游标是否结束 int default 0;
   
    declare 游标 cursor for select 学生ID, 学生姓名 from 学生表;
		declare continue handler for not found set 游标是否结束 = 1;
    open 游标;
    myloop:loop
        fetch 游标 into sid,sname;
        if locate(sname,同学们的姓名)
        then 
            insert into 作业表(作业的学生ID,作业周数) values(sid,周数);
        end if;
        if 游标是否结束 then 
            leave myloop;
        end if;
    end loop;
    close 游标;
    select '完成!!!' as `提示`;
end;
复制代码

3. 日志及作业统计

  • in 统计班级 不写则表示所有班级
  • in 统计周数 直接写第几周即可
drop PROCEDURE if exists 统计结果;
CREATE DEFINER=`root`@`localhost` PROCEDURE `统计结果`(in 当前班级ID int, in 当前周数 int)
begin 

    declare 计数 int default 0;
    declare 当前班级名称 char(200);

    create database if not exists `云和作业统计` character set utf8;
    select 班级名称 into 当前班级名称 from 班级表 where 班级ID = 当前班级ID;

    drop table if exists 临时作业表;

    create table 临时作业表
    select 班级名称 as 班级,
        学生姓名,
        章节名称 as 章节,
        count(作业ID) as 作业实提交次数,
        null 
    from 
        学生表 left join 作业表 on 学生表.学生ID = 作业表.作业的学生ID and 作业周数 = 当前周数
        left join 章节表 on 章节表.章节周数 = 当前周数 
        left join 班级表 on 班级表.班级ID = 当前班级ID  
    where 
	    学生的班级ID = 当前班级ID 
        group by 学生ID;

    drop table if exists 临时日志表;

    create table 临时日志表
    select 班级名称 as 班级,
        学生姓名,
        章节名称 as 章节,
        null,
        count(日志ID) as 日志实提交次数
    from 
        学生表 left join 日志表 on 学生表.学生ID = 日志表.日志的学生ID and 日志周数 = 当前周数
        left join 章节表 on 章节表.章节周数 = 当前周数 
        left join 班级表 on 班级表.班级ID = 当前班级ID  
    where 
		学生的班级ID = 当前班级ID 
        group by 学生ID;

    drop table if exists 临时表;


    CREATE TABLE `临时表` (
        `序号` int primary key auto_increment,
        `班级` varchar(200) DEFAULT NULL,
        `学生姓名` varchar(20) DEFAULT NULL,
        `章节` varchar(200) DEFAULT NULL,
        `日志应提交次数` char(21) NOT NULL DEFAULT '0',
        `日志实提交次数` char(21) NOT NULL DEFAULT '0',
        `作业应提交次数` char(21) NOT NULL DEFAULT '0',
        `作业实提交次数` char(21) NOT NULL DEFAULT '0'
    ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

    insert into 临时表 (班级, 学生姓名, 章节, 日志应提交次数, 日志实提交次数, 作业应提交次数, 作业实提交次数)
    select 临时日志表.班级,
        临时日志表.学生姓名,
        临时日志表.章节,
        '两次' as `日志应提交次数`,
        临时日志表.日志实提交次数,
        '两次' as `作业应提交次数`,
        临时作业表.作业实提交次数
    from 临时日志表,
    临时作业表 where 临时日志表.学生姓名 = 临时作业表.学生姓名;

    drop table if exists `临时表2`;
    create table `临时表2` select 序号, 班级, 学生姓名, 章节, 日志应提交次数, 
    case 日志实提交次数 
    when '0' then '0'
    when '1' then '①'
    when '2' then '②√'
    end as 日志实提交次数
    
    , 作业应提交次数, 
     
    case 作业实提交次数 
    when '0' then '0'
    when '1' then '①'
    when '2' then '②√'
    end as 作业实提交次数

    from 临时表;
    drop table 临时表;
    drop table if exists 临时作业表;
    drop table if exists 临时日志表;

    set @new_name = concat(当前班级名称,'--第',当前周数,'周--作业及日志完成情况');
    set @rename_table_step1 = CONCAT('drop table if exists `云和作业统计`.`',@new_name,'`;');
    set @rename_table_step2 = CONCAT('ALTER ', 'TABLE ', '`临时表2` ', 'RENAME ', 'TO `云和作业统计`.`', @new_name,'`;');
    PREPARE STMT1 FROM @rename_table_step1;   
    EXECUTE STMT1;   
    PREPARE STMT2 FROM @rename_table_step2;   
    EXECUTE STMT2;   
    select '已完成! 请刷新`云和作业统计`数据库!' as `温馨提醒`;
end;
复制代码

批量获取同学日志或作业文件名getnames.bat

chcp 65001
DIR *.* /B >list.txt
@echo off
(for /f "delims=" %%a in (list.txt) do (
for %%b in (%%a) do set /p=%%b<nul
))>tem
del /q list.txt&ren tem list.txt
start list.txt
复制代码

转载于:https://juejin.im/post/5cb9be386fb9a068aa4b9aba

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值