赞
踩
笔记学习,记录步骤7与步骤8中出现的错误
目录
【10 分】步骤 3:完成 Info 的 toString 方法
【10 分】步骤 5:完成 SSDaoImpl 的 queryInfo 方法
复制粘贴即可
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;
- }
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+"\"}";
- }
Score
- // 缺失代码:请补全以下方法,要求英语成绩的范围在:0<=num<150 之间
- // 当参数在规定范围外时,不做任何动作
- public void setEnglish(int english) {
-
-
- }
答案
- public void setEnglish(int english) {
- if(english >= 0 && english < 150){
- this.english = english;
- }
-
- }
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;
- }
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;
- }
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;
- }
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;
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);
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。