员工考勤管理系统是专门用来管理员工考勤的一套系统,本项目使用控制台来模拟其部分功能。
我们设计好了表的结构,本次考核涉及 2 张表:
表字段 | 数据库数据类型 | 含义 | 备注 |
---|---|---|---|
name | VARCHAR | 员工姓名 主键 | |
age | INT | 员工年龄 | |
sex | VARCHAR | 员工性别 | |
phone | VARCHAR | 员工电话 |
表字段 | 数据库数据类型 | 备注 | 备注 |
---|---|---|---|
name | VARCHAR | 员工姓名 | |
begintime | VARCHAR | 员工上班时间 | |
endtime | VARCHAR | 员工下班时间 |
复制粘贴、略。
题目:
rg.lanqiao.bean.Info是一个实体类,有 4 个属性,与数据库表 info 及其字段一一对应,对应关系如下。
【数据库表 info 的字段与实体类 Info 的属性的对应关系】
序号 | 类属性 | 表字段 | 数据库数据类型 | 备注 |
---|---|---|---|---|
1 | name | name | VARCHAR | 主键 |
2 | age | age | INT | |
3 | sex | sex | VARCHAR | |
4 | phone | phone | VARCHAR |
请根据注释要求,补全空缺的代码。
//补充完成该类的含参构造方法
public Info(String name, int age, String sex, String phone) {
}
答案:
public Info(String name, int age, String sex, String phone) {
this.setName(name);
this.setAge(age);
this.setSex(sex);
this.setPhone(phone);
}
题目:
请根据注释要求,补全 Info 的 toString 方法。
// 请修改该方法,以保证打印对象时输出格式如下:
// [name='zs';age=20;sex='男';phone='18812349876']
@Override
public String toString() {
return "";
}
答案:
@Override
public String toString() {
return "[name='"+this.getName()+"';age="+this.getAge()+";sex='"+this.getSex()+"';phone='"+this.getPhone()+"']";
}
题目:
org.lanqiao.bean.Account是一个实体类,有 3 个属性,与数据库表 account 及其字段一一对应,对应关系如下。
【数据库表 account 的字段与实体类 Account 的属性的对应关系】
序号 | 类属性 | 表字段 | 数据库数据类型 | 备注 |
---|---|---|---|---|
1 | name | name | VARCHAR | |
2 | begintime | begintime | VARCHAR | |
3 | endtime | endtime | VARCHAR |
请根据注释要求,补全空缺的代码。
// 请补全以下方法,要求下班时间不能大于20:00:00
// 时间格式如:2023-03-08 18:19:20
// 当参数在规定范围外时,不做任何动作
public void setEndtime(String endtime) {
String[] s1 = endtime.split(" ");
String time = "20:00:00";
// 缺失代码:
}
答案:
public void setEndtime(String endtime) {
String[] s1 = endtime.split(" ");
String time = "20:00:00";
// 缺失代码:
LocalTime end = LocalTime.parse(s1[1]);
LocalTime limit = LocalTime.parse(time);
if (end.isBefore(limit)){
this.endtime = endtime;
}
}
题目:
数据存入数据库之后,我们需要进行相关的 CRUD,进行数据的处理和展示,数据库的操作我们封装到 org.lanqiao.daoimpl.SSDaoImpl 里面,请帮忙完成。
请根据注释要求,补全 queryByName 方法。
/**
* 依据员工姓名查询员工信息
* @param name 员工姓名
* @return 有的话返回对象,没有的话返回null
*/
public Info queryByName(String name){
// 请补全sql代码
String sql = "###";
Info info = JDBCUtil.getSingleResult(sql, Info.class, name);
return info;
}
答案:
public Info queryByName(String name){
// 请补全sql代码
String sql = "select * from info where name=?";
Info info = JDBCUtil.getSingleResult(sql, Info.class, name);
return info;
}
题目:
请根据注释要求,补全 queryNum 方法。
/**
* 依据员工性别查询人数
* @param sex 员工性别
* @return 返回人数
*/
public int queryNum(String sex) {
// 请补全sql语句
String sql = "###";
List<Info> list = JDBCUtil.getResult(sql, Info.class, sex);
return list.size();
}
答案:
public int queryNum(String sex) {
// 请补全sql语句
String sql = "select name from info where sex=?";
List<Info> list = JDBCUtil.getResult(sql, Info.class, sex);
return list.size();
}
题目:
请根据注释要求,补全 check 方法。
/**
* 查看员工考勤是否正常
* 规则如下:
* 全天至少工作9个小时
*
* 需求:
* 员工考勤正常的话,返回true,考勤异常的话,返回false
*
* @param name 员工姓名
* @param date 考勤日期,如:2023-03-10
*/
public Boolean check(String name,String date) {
String sql = "select * from account where name=? and substr(begintime,1,10)=?";
Account a = JDBCUtil.getSingleResult(sql, Account.class, name, date);
boolean flag = false;
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date begintime = null;
Date endtime = null;
// 请补全代码实现该功能
return flag;
}
答案:
public Boolean check(String name,String date) {
String sql = "select * from account where name=? and substr(begintime,1,10)=?";
Account a = JDBCUtil.getSingleResult(sql, Account.class, name, date);
boolean flag = false;
SimpleDateFormat dfs = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
Date begintime = null;
Date endtime = null;
// 请补全代码实现该功能
try {
begintime = dfs.parse(a.getBegintime());
endtime = dfs.parse(a.getEndtime());
} catch (Exception e) {
// TODO: handle exception
}
long diff = endtime.getTime() - begintime.getTime();
if (diff / (1000 * 60 * 60) >= 9) {
flag = true;
}
return flag;
}
题目:
请根据注释要求,补全 queryTime 方法。
/**
* 依据员工姓名查询其哪天上班时间最早
* @param sex 员工性别
* @return 返回最早的上班时间
*/
public String queryTime(String name) {
// 请补全sql语句
String sql = "###";
Account a = JDBCUtil.getSingleResult(sql, Account.class, name);
return a.getBegintime();
}
答案:
public String queryTime(String name) {
// 请补全sql语句
String sql = "select min(begintime) as begintime from account where name=?";
Account a = JDBCUtil.getSingleResult(sql, Account.class, name);
return a.getBegintime();
}
题目:
请根据注释要求,补全 updateAge 方法。
/**
* 更新所有人的年龄,男人加1,女人加2
*/
public void updateAge() {
// 请补全sql语句
String sql = "###";
JDBCUtil.executeSql(sql);
}
答案:
public void updateAge() {
// 请补全sql语句
String sql = "update info set `age` = "
+ "case "
+ "when sex='男' then age + 1 "
+ "when sex='女' then age + 2 "
+ "end";
JDBCUtil.executeSql(sql);
}