当前位置:   article > 正文

实验13:20220625 1+X 中级实操考试(id:3411)_补全代码要求英语分数的范围在0<=num<=150之间

补全代码要求英语分数的范围在0<=num<=150之间

 笔记学习,记录步骤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

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

需求:补充有参构造函数

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

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

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

答案

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

 【10 分】步骤 4:完成 Score

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

答案

  1. public void setEnglish(int english) {
  2. if(english >= 0 && english < 150){
  3. this.english = english;
  4. }
  5. }

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

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

答案

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

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

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

答案

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

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

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

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

答案

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

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

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

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

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

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

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

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

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

答案

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

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

总分排序答案

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

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

  1. /**
  2. * 依据姓名更新年龄
  3. * @return name 姓名
  4. * @return age 年龄
  5. */
  6. public void updateAge(String name,int age){
  7. // 请补全sql语句
  8. String sql = "###";
  9. int i = infoUtil.update(sql,age,name);
  10. }

答案

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

声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop】
推荐阅读
相关标签
  

闽ICP备14008679号