实验13:20220625 1+X 中级实操考试(id:3411)

 笔记学习,记录步骤7与步骤8中出现的错误

目录

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

 【10 分】步骤 2:完成实体类 Info

 【10 分】步骤 3:完成 Info 的 toString 方法

 【10 分】步骤 4:完成 Score

 【10 分】步骤 5:完成 SSDaoImpl 的 queryInfo 方法

 【10 分】步骤 6:继续完善 SSDaoImpl 类

 【15 分】步骤 7:继续完善 SBDaoImpl 类

 【15 分】步骤 8:继续完善 SSDaoImpl 类

 【15 分】步骤 9:继续完善 SSDaoImpl 类


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

复制粘贴即可

 【10 分】步骤 2:完成实体类 Info

    //补充完成该类的含参构造方法
    public Info(String id, String name, int age, String sex, String provice) {
        
        
    }

需求:补充有参构造函数

	//补充完成该类的含参构造方法
	public Info(String id, String name, int age, String sex, String provice) {
		this.id = id;
		this.name = name;
		this.age = age;
		this.sex = sex;
		this.provice = provice;
	}

 【10 分】步骤 3:完成 Info 的 toString 方法

    // 请修改该方法,以保证打印对象时输出格式如下:
    // {id:"001";name:"zs";age:20;sex:"男";provice:"四川"}
    @Override
    public String toString() {
        return "";
    }

答案

	public String toString() {
		return "{id:\""+id+"\";name:\""+name+"\";age:"+age+";sex:\""+sex+"\";provice:\""+provice+"\"}";
	}

 【10 分】步骤 4:完成 Score

    // 缺失代码:请补全以下方法,要求英语成绩的范围在:0<=num<150 之间
    // 当参数在规定范围外时,不做任何动作
    public void setEnglish(int english) {
        
        
    }

答案

	public void setEnglish(int english) {
		if(english >= 0 && english < 150){
			this.english = english;
		}
		
	}

 【10 分】步骤 5:完成 SSDaoImpl 的 queryInfo 方法

    /**
     * 依据学生考号查询学生信息
     * @param id 学生考号
     * @return 有的话返回学生对象,没有的话返回null
     */
    public Info queryInfo(String id){
        // 请补全sql语句
        String sql = "###";
        Info i = infoUtil.getOne(sql, Info.class, id);
        return i;
    }

答案

	public Info queryInfo(String id){
                // 请补全sql语句
                String sql = "select * from info where id=?";
                Info i = infoUtil.getOne(sql, Info.class, id);
                return i;
        }

 【10 分】步骤 6:继续完善 SSDaoImpl 类

    /**
     * 依据学生考号查询学生成绩,返回4门成绩之和
     * @param id 学生考号
     * @return 返回4门成绩之和
     */
    public int querySum(String id){
        // 请补全sql语句
        String sql = "###";
        Score s = infoUtil.getOne(sql, Score.class, id);
        int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
        return sum;
    }
        

答案

	public int querySum(String id){
                // 请补全sql语句
                String sql = "select * from score where id = ?";
                Score s = scoreUtil.getOne(sql, Score.class, id);
                int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
                return sum;
        }

 【15 分】步骤 7:继续完善 SBDaoImpl 类

    /**
     * 依据学生姓名查询学生成绩,返回4门成绩之和
     * @param name 学生姓名
     * @return 返回4门成绩之和
     */
    public int querySumByName(String name){
        // 请补全sql语句
        String sql = "###";
        Score s = scoreUtil.getOne(sql, Score.class, name);
        int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
        return sum;
    }

这里是通过info表的name获取到id,然后通过id去查找到四门的成绩

答案

                String sql_in = "select * from info where name = ?";
                Info in = infoUtil.getOne(sql_in, Info.class, name);
                String sql_sc = "select * from score where id="+in.getId();
                Score sc = scoreUtil.getOne(sql_sc, Score.class);
                int sum = sc.getChinese() + sc.getMaths() + sc.getEnglish() + sc.getComposite();
                return sum;

这个代码在实验13是可以通过的,但是不够完整,如果说找不到人或者找到人没成绩,那就要判断是不是null

                // 请补全sql语句
                String sql_in = "select * from info where name = ?";
                Info in = infoUtil.getOne(sql_in, Info.class, name);
                if (in != null){
                        String sql_sc = "select * from score where id="+in.getId();
                        Score sc = scoreUtil.getOne(sql_sc, Score.class);
                        if(sc != null){
                        int sum = sc.getChinese() + sc.getMaths() + sc.getEnglish() + sc.getComposite();
                        return sum;
                        }
                } 
                return 0;

(这里是用了分布查询,当然还可以通过子查询查询到数据)

============子查询================

	public int querySumByName(String name){
                // 请补全sql语句
                String sql = "select * from score where id = (select id from info where name = ?)";
                Score s = scoreUtil.getOne(sql, Score.class, name);
                int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
                return sum;
        }

 【15 分】步骤 8:继续完善 SSDaoImpl 类

    /**
     * 查询4门成绩之和的最大值
     * @return 返回最大值
     */
    public int queryMaxSum(){
        // 请补全sql语句
        String sql = "###";
        Score s = scoreUtil.getOne(sql, Score.class);
        int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
        return sum;
    }
        

这里查询的四门成绩最大值,是查询几个学生里面的总分最高的

答案

                // 请补全sql语句
                String sql = "select * from score order by chinese DESC,maths DESC,English DESC,Composite DESC limit 1";
                Score s = scoreUtil.getOne(sql, Score.class);
                int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
                return sum;

这个是可以通过的,但是存在bug(因为这个题目给出的成绩数据里面,这样排序刚好获取到了总分数最高的,如果不是,就出现了错误),所以对总成绩做一个排序

总分排序答案

                // // 请补全sql语句
                String sql = "select * from score order by chinese+maths+english+composite desc limit 1";
                Score s = scoreUtil.getOne(sql, Score.class);
                int sum = s.getChinese() + s.getMaths() + s.getEnglish() + s.getComposite();
                return sum;

 【15 分】步骤 9:继续完善 SSDaoImpl 类

    /**
     * 依据姓名更新年龄
     * @return name 姓名
     * @return age 年龄
     */
    public void updateAge(String name,int age){
        // 请补全sql语句
        String sql = "###";
        int i = infoUtil.update(sql,age,name);
    }

答案

	public void updateAge(String name,int age){
               // 请补全sql语句
               String sql = "update info set age = ? where name = ?";
               int i = infoUtil.update(sql,age,name);
        }

  • 14
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长风沛雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值