实验16:20211219 Java大数据1+X 中级实操考试(id:2846)

2023-10-28

一、项目背景说明

学生成绩管理系统是中小学校等单位使用的一套系统,本项目使用控制台来模拟其部分功能。

  • 在学生成绩管理系统中涉及到的实体类有:学生类 Student、课程类 Course、成绩类 Score。
  • 对应的数据表有:学生表 student、课程表 course、成绩表 score。
  • 功能主要涉及到:学生信息管理、课程信息管理、成绩的录入与查询等功能。

二、表结构

  • student 表
    该表的含义是 学生,共有 4 个字段,详情如下:
表字段 数据库数据类型 含义 备注
name VARCHAR 学生姓名 主键
pwd VARCHAR 学生密码
age INT 学生年龄
grade INT 学生年级
rate INT 学生综合评级
  • course 表
    该表的含义是 课程,共有 3 个字段,详情如下:
表字段 数据库数据类型 备注 备注
name VARCHAR 课程名称 主键
teacher VARCHAR 授课老师
difficulty VARCHAR 课程难度
  • score 表
    该表的含义是 成绩,共有 3 个字段,详情如下:
表字段 数据库数据类型 含义 备注
sname VARCHAR 学生姓名 外键->学生表(name)
cname VARCHAR 课程名称 外键->课程表(name)
score INT 课程分数

三、步骤

【5 分】步骤 1:项目准备

复制粘贴、略。

【5 分】步骤 2:完成实体类 Student

题目:

首先我们要设计一系列的实体类,它们是 org.lanqiao.bean.Student、org.lanqiao.bean.Course、org.lanqiao.bean.Score, 现在 Student 类需要你来完善。

org.lanqiao.bean.Student是一个实体类,有五个属性,与数据库表 student 及其字段一一对应,对应关系如下。

【数据库表 student 的字段及其与实体类 Student 的属性的对应关系】

序号 类属性 表字段 数据库数据类型 备注
1 name name VARCHAR 主键
2 pwd pwd VARCHAR
3 age age INT
4 grade grade INT
5 rate rate INT

请根据注释要求,补全空缺的代码。

public class Student {
    private String name;//学生姓名
    private String pwd;//学生密码
    private int age;//学生年龄
    private int grade;//学生年级
    private int rate;//学生综合评级

    //补充完成该类的含参构造方法
    public Student(String name, String pwd, int age, int grade, int rate) {
        
        
    }

答案:

public Student(String name, String pwd, int age, int grade, int rate) {
	this.setName(name);
	this.setPwd(pwd);
	this.setAge(age);
	this.setGrade(grade);
	this.setRate(rate);
}

【10 分】步骤 3:完成实体类 Course

题目:

现在来完善 Course 课程类。

org.lanqiao.bean.Course是一个实体类,有三个属性,与数据库表 course 及其字段一一对应,对应关系如下。

【数据库表 course 的字段及其与实体类 Course 的属性的对应关系】

序号 类属性 表字段 数据库数据类型 备注
1 name name VARCHAR
2 teacher teacher VARCHAR
3 difficulty difficulty VARCHAR

请根据注释要求,补全空缺的代码。

package org.lanqiao.bean;

public class Course {
    //请修改该方法,并且在赋值时,课程难度只能为:高、中、低这三种之一
    public void setDifficulty(String difficulty) {
        this.difficulty = difficulty;
    }

}

答案:

public void setDifficulty(String difficulty) {
	if (difficulty.equals("高")||difficulty.equals("中")||difficulty.equals("低")) {
		this.difficulty = difficulty;
	}
}

【10 分】步骤 4:完成实体类 Score

题目:

现在来完善 Score 成绩类。

org.lanqiao.bean.Score是一个实体类,有三个属性,与数据库表 score 及其字段一一对应,对应关系如下。

【数据库表 score 的字段及其与实体类 Score 的属性的对应关系】

序号 类属性 表字段 数据库数据类型 备注
1 sname sname VARCHAR
2 cname cname VARCHAR
3 score score INT

请根据注释要求,补全空缺的代码。

package org.lanqiao.bean;

public class Score {
    //请修改该方法,以保证打印对象时输出格式如下:[sname:zs;cname:语文;score:80]
    @Override
    public String toString() {
        return null;
    }

}

答案:

@Override
public String toString() {
	return "[sname:"+this.getSname()+";cname:"+this.getCname()+";score:"+this.getScore()+"]";
}

【10 分】步骤 5:完成 StudentDaoImpl 的 add 方法

题目:

数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库中有关学生的操作我们封装到 org.lanqiao.daoimpl.StudentDaoImpl 里面,请帮忙完成。

请根据注释要求,补全 add 方法。

/**
 * 插入学生
 * @param s 学生对象
 * @return
 */
public int add(Student s) {
    // 请补全sql语句
    String sql = "###";
    return studentUtil.add(sql,s.getName(),s.getPwd(),s.getAge(),s.getGrade(),s.getRate());
}

答案:

public int add(Student s) {
        // 请补全sql语句
        String sql = "insert student (name, pwd, age, grade, rate) values (?,?,?,?,?)";
        return studentUtil.add(sql, s.getName(),s.getPwd(),s.getAge(),s.getGrade(),s.getRate());
}

【10 分】步骤 6:完成 StudentDaoImpl 的queryNum 方法

题目:

数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库中有关学生的操作我们封装到 org.lanqiao.daoimpl.StudentDaoImpl 里面,请帮忙完成。

请根据注释要求,补全 queryNum 方法。

/**
 * 查询年龄大于20岁的学生总人数
 * @return 返回总人数
 */
public int queryNum() {
    String sql = "select * from student where age>20";
    List<Student> list = studentUtil.getList(sql, Student.class);
    // 请修改以下代码,保证返回值为总人数,假设所有学生名字都不一样
    int num = 0;
    return num;
}

答案:

public int queryNum() {
        String sql = "select * from student where age>20";
        List<Student> list = studentUtil.getList(sql, Student.class);
        // 请修改以下代码,保证返回值为总人数,假设所有学生名字都不一样
        int num = list.size();
        return num;
}

【10 分】步骤 7:完成 StudentDaoImpl 的 queryMaxAge 方法

题目:

数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库中有关学生的操作我们封装到 org.lanqiao.daoimpl.StudentDaoImpl 里面,请帮忙完成。

请根据注释要求,补全 queryMaxAge 方法。

/**
 * 查询最大年龄的学生姓名
 * @return 返回学生姓名
 */
public String queryMaxAge() {
    // 请补全sql语句
    String sql = "###";
    Student g = studentUtil.getOne(sql, Student.class);
    return g.getName();
}

答案:

public String queryMaxAge() {
        // 请补全sql语句
        String sql = "select name from student where age = (select max(age) from student)";
        Student g = studentUtil.getOne(sql, Student.class);
        return g.getName();
}

【10 分】步骤 8:完成 CourseDaoImpl 的 queryCourse 方法

题目:

数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库中有关课程的操作我们封装到 org.lanqiao.daoimpl.CourseDaoImpl 里面,请帮忙完成。

请根据注释要求,补全 queryCourse 方法。

/**
 * 根据课程名称来查询课程
 * @return 返回课程对象
 */
public Course queryCourse(String name) {
    // 请补全sql语句
    String sql = "###";
    return courseUtil.getOne(sql, Course.class, name);
}
        

答案:

public Course queryCourse(String name) {
        // 请补全sql语句
        String sql = "select * from course where name=?";
        return courseUtil.getOne(sql, Course.class, name);
}

【10 分】步骤 9:完成 CourseDaoImpl 的 updateDifficultyByName 方法

题目:

数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库中有关课程的操作我们封装到 org.lanqiao.daoimpl.CourseDaoImpl 里面,请帮忙完成。

请根据注释要求,补全 updateDifficultyByName 方法。

/**
 * 根据课程名称来更新课程难度
 * @return 更新成功返回true,没有更新成功返回false
 */
public boolean updateDifficultyByName(String name,String difficulty){
    // 请补全sql语句
    String sql = "###";
    int a = courseUtil.update(sql, difficulty, name);
    if(a>0){
            return true;
    }else{
            return false;  
    }
}
        

答案:

public boolean updateDifficultyByName(String name,String difficulty){
        // 请补全sql语句
        String sql = "update course set difficulty=? where name=?";
        int a = courseUtil.update(sql, difficulty, name);
        if(a>0){
                return true;
        }else{
                return false;  
        }
}

【10 分】步骤 10:完成 ScoreDaoImpl 的 queryAvgMax 方法

题目:

数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库中有关成绩的操作我们封装到 org.lanqiao.daoimpl.ScoreDaoImpl 里面,请帮忙完成。

请根据注释要求,补全 queryAvgMax 方法。

/**
 * 查询平均成绩最高的学生姓名
 * @return 返回学生姓名
 */
public String queryAvgMax() {
    // 请补全sql语句
    String sql = "###";
    Score s = scoreUtil.getOne(sql, Score.class);
    return s.getSname();
}

答案:

public String queryAvgMax() {
        // 请补全sql语句
        String sql = "select sname from score group by sname order by avg(score) desc limit 1";
        Score s = scoreUtil.getOne(sql, Score.class);
        return s.getSname();
}

【10 分】步骤 11:完成 ScoreDaoImpl 的 queryName 方法

题目:

数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库中有关成绩的操作我们封装到 org.lanqiao.daoimpl.ScoreDaoImpl 里面,请帮忙完成。

请根据注释要求,补全 queryName 方法。

/**
 * 查询至少考了2门课程的学生姓名
 * @return 返回所有满足条件的学生姓名的集合
 */
public Set<String> queryName() {
    // 查询出满足条件的成绩集合
    String sql = "select * from score where sname in(select sname from score group by sname having count(*)>=2)";
    List<Score> li = scoreUtil.getList(sql, Score.class);
    Set<String> s = new HashSet<String>();
    // 把集合 li 中的每个成绩对象的名字取出来放进集合 s 中,并返回
    // 请补全以下代码
    
    
    return s;
}

答案:

public Set<String> queryName() {
        // 查询出满足条件的成绩集合
        String sql = "select * from score where sname in(select sname from score group by sname having count(*)>=2)";
        List<Score> li = scoreUtil.getList(sql, Score.class);
        Set<String> s = new HashSet<String>();
        // 把集合 li 中的每个成绩对象的名字取出来放进集合 s 中,并返回
        // 请补全以下代码
        for (Score score : li){
                s.add(score.getSname());
        }

        return s;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

实验16:20211219 Java大数据1+X 中级实操考试(id:2846) 的相关文章

随机推荐

  • 七天搞定Node.js微信公众号

    课程介绍 微信公众号已经1000多万个了 即使不为市场 为自己也应该学会开发它 环境参数 技术语言 Node js 框架 Node js gt 0 12 Koa1 2 0 课程所需开发系统 不限 编译环境 不限 数据库 Mongodb gt
  • 关于静态和动态代码块

    静态代码块 static 实例代码块 静态代码块相当于静态方法 实例代码块相当于实例方法 实例方法在静态方法后面执行 一个对象时 静态代码块和实例代码块只执行一次 当有多个对象时 静态代码块只执行一次 因为静态代码块是属于类的 在将clas
  • 类加载的过程

    1 加载 注意 加载 是 类加载 Class Loading 过程的第一步 1 1 加载的过程 在加载过程中 JVM主要做3件事情 通过一个类的全限定名来获取定义此类的二进制字节流 class文件 在程序运行过程中 当要访问一个类时 若发现
  • 构建跨平台应用的利器——UniApp入门指南

    文章目录 什么是UniApp 介绍UniApp的概念与特点 UniApp相对于其他跨平台框架的优势 UniApp入门指南 安装与环境配置 创建UniApp项目 UniApp项目结构解析 UniApp开发基础 Vue js基础知识回顾 Uni
  • Beautiful Mirrors【Codeforces 1265 E】【期望DP】

    Codeforces Round 604 Div 2 E 题记 不是杭电今年份的原题嘛 为什么比赛的时候没想到这个方面呢 当然题也读错了 尬 杭电多校原题 然后再继续说一下这道题的特殊之处吧 随便说说 典型问题 没有特殊之处 大概画了个图
  • matlab——级数

    级数 级数求和 泰勒级数 级数求和 1 级数求和 求无穷级数的和需要符号表达式求和函数symsum 其调 用格式为 symsum s v n m 其中 s表示一个级数的通项 是一个符号表达式 v是求 和变量 v省略时使用系统的默认变量 n和
  • dfs and bfs template

    在做题的时候发现别人的模板后 再加上自己的理解 形成的更适合自己的模板 相当于随笔 就是记录一下 不做排版 记忆方法 树 BFS queue gt 马的遍历 NOTICE bfs 最短路 DFS stack 递归 gt 红细胞数 BFS t
  • 真香!值得收藏的30道Python练手题(附详细答案)

    大家好 今天给大家分享30道 Python 练习题 建议大家先独立思考一下解题思路 喜欢本文点赞支持 文末提供技术交流群 1 已知一个字符串为 hello world yoyo 如何得到一个队列 使用 split 函数 分割字符串 并且将数
  • 图像分割___图像分割方法综述

    From 变分方法与模糊聚类在图像分割中的应用研究 这里主要简单介绍几类经典的方法 基于边缘检测的方法 基于边缘检测的方法主要是通过检测出区域的边缘来进行分割 利用区域之间特征的不一致性 首先检测图像中的边缘点 然后按一定策略连接成闭合的曲
  • C++自学记录(const限定符)

    目录 const限定符 初始化和 const 默认状态下 const对象仅在文件内有效 const的引用 初始化和对const的引用 对const的引用可能引用一个并非const的对象 指针和const const指针 关于常量指针和指针常
  • C++虚函数的作用和实现原理

    一 什么是虚函数 在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数 用法格式为 virtual 函数返回类型 函数名 参数表 函数体 实现多态性 通过指向派生类的基类指针或引用 访问派生类中同名覆盖成员函数 二
  • 【Linux内核设计与实现】Linux内核简介

    之前在读 APUE 的时候 更多的是从上层去了解如何使用Linux系统的API 那个时候就十分喜欢Linux的设计 觉得一切都很奇妙 最近有些迷茫 不知道自己以后更加具体的技术方向在哪 所以最近广泛阅读了很多方面的书 C 方面 服务端网络编
  • ‘jmeter‘ 不是内部或外部命令,也不是可运行的程序或批处理文件。

    C Users wtcai gt jmeter jmeter 不是内部或外部命令 也不是可运行的程序 或批处理文件 一般该现象产生的原因是没有配置环境变量 找到此电脑 点击鼠标右键 找到属性 点击鼠标左键 点击右侧的 高级系统设置 然后点击
  • 【机器学习入门】决策树算法(四):CART算法(Classification and Regression Tree)

    CART算法的简介 CART Classification and Regression Tree 算法 即分类回归树算法 也是决策树构建的一种常用算法 CART的构建过程采用的是二分循环分割的方法 每次划分都把当前样本集划分为两个子样本集
  • Git的下载和安装【详细】

    目录 一 前言 二 准备工作 三 安装 无特殊需求可只看第五步一路next即可 lt 1 gt 开始安装 lt 2 gt 选择安装目录 lt 3 gt 选择安装组件 lt 4 gt 选择开始菜单文件夹 lt 5 gt 选择 Git 默认编辑
  • 计算机毕业设计SSM电影推荐系统【附源码数据库】

    项目运行 环境配置 Jdk1 8 Tomcat7 0 Mysql HBuilderX Webstorm也行 Eclispe IntelliJ IDEA Eclispe MyEclispe Sts都支持 项目技术 SSM mybatis Ma
  • 【 linux系统入门管理篇-第三章权限管理】

    linux系统入门管理篇 第三章权限管理 本章介绍 一 基本权限UGO 二 基本权限 ACL 三 特殊权限 本章介绍 本章讲述了 Linux系统CentOS7中关于权限的相关概念 以及用户和组的管理方法 一 基本权限UGO 概述 假如你想设
  • anaconda3/lib/python3.6/site-packages/torch/lib/libtorch_python.so: undefined symbol: PySlice_Unpack

    集群上运行pytorch代码 运行时候发现报错 anaconda3 lib python3 6 sitepackages torch lib libtorch python so undefined symbol PySlice Unpac
  • spring-aop的切入表达式和JoinPoint的使用以及怎么返回通知获取结果和在异常通知中获取异常还有环绕通知

    前言 本篇的Spring AOP系类文章第四篇讲解了spring aop的切入不表达式和JoinPoint的使用以及返回通知获取结果和异常通知中获取异常还有环绕通知 个人主页 尘觉主页 个人简介 大家好 我是尘觉 希望我的文章可以帮助到大家
  • 实验16:20211219 Java大数据1+X 中级实操考试(id:2846)

    实验16 20211219 Java大数据1 X 中级实操考试 id 2846 一 项目背景说明 二 表结构 三 步骤 5 分 步骤 1 项目准备 5 分 步骤 2 完成实体类 Student 10 分 步骤 3 完成实体类 Course