实操考试题其他系列请移步专栏:JAVA实操题_疯狂的格式化的博客-CSDN博客步骤2(10分):完成抽象类 User
目标说明
系统提供登录功能,需要存在用户,涉及到的用户有学生和老师,我们选择使用抽象来创建基类。 org.lanqiao.bean.User 是一个用户的抽象类,请根据注释要求,补全空缺的代码。
public User(int type,String name,String pwd){
// 缺失代码
}
构造方法代码不多,可以直接手写。也可以把代码复制粘贴到 Eclipse 中,自动生成构造函数
右键——>Source——>Generate Constructor using Fields...
public User(int type,String name,String pwd){
// 缺失代码
this.type=type;
this.name=name;
this.pwd=pwd;
}
步骤3(10分):完成实体类 Student
目标说明
org.lanqiao.bean.Student 是一个实体类,表示的是学生,请根据注释要求,补全空缺的代码。
public Student(String name, String pwd) {
// 缺失代码
}
public Student(String name, String pwd,double score) {
// 缺失代码
}
可以发现第一个构造方法传的参数在 Student 类中并没有,但是上一步的 User 类中有这两个参数,所以可以使用 super 关键字调用 Student 类的父类 User 类中的构造方法(上一步写的构造方法),不过只填 name 和 pwd 两个参数会报错,看注释的注意中提到的 type ,将User.STUDENT 填上去。
第二个构造方法直接把第一个构造方法的代码复制过来加上 score 即可。
public Student(String name, String pwd) {
// 缺失代码
super(User.STUDENT,name,pwd);
}
public Student(String name, String pwd,double score) {
// 缺失代码
super(User.STUDENT,name,pwd);
this.score=score;
}
步骤4(15分):完成配置类 Config
目标说明
模拟的系统中存在很多的提示信息,以及需要用到一些全局的操作,我们把他们封装在 org.lanqiao.config.Config 类中,请根据注释要求,补全空缺的代码。
public static boolean goon() {
// 缺失代码
return false;
}
使用 equals 进行字符串的值比较即可。
public static boolean goon() {
// 缺失代码
String str = input.next();
if(str.equals("y")||str.equals("Y")){
return true;
}
return false;
}
步骤5(20分):完成数据操作类 Db
目标说明
系统需要的存储功能,我们使用 org.lanqiao.db.Db 类来进行实现,请根据注释要求,补全空缺的代码。
static{
//初始化teacher数据
teachers.add(new Teacher("luozy", "123"));
//补充代码###初始化student数据
}
根据注释的提示使用 add 添加数据。有一个 teachers.add 的例子,其余的照着写就可以。
static{
//初始化teacher数据
teachers.add(new Teacher("luozy", "123"));
//补充代码###初始化student数据
students.add(new Student("peter", "123",90));
students.add(new Student("jerry", "123456",95));
students.add(new Student("lucy", "12345",98));
}
步骤6(10分):完成学生服务类 StudentService
目标说明
系统为学生提供了一系列的操作,我们把他封装在 org.lanqiao.service.StudentService 类中,请根据注释要求,补全空缺的代码。
public void showAll() {
// 补全代码
// 注意1:数据来自Db.students
// 注意2:是直接输出
}
用 for 循环取出 students 中的数据,获取 List 的长度用 size()。
public void showAll() {
// 补全代码
// 注意1:数据来自Db.students
// 注意2:是直接输出
for (int i = 0; i < Db.students.size(); i++) {
// if(Db.students.get(i)!=null){
// }
System.out.println((i+1)+"t"+Db.students.get(i).getName()+"t"+Db.students.get(i).getScore());
}
}
步骤7(15分):完成服务类 LoginService
目标说明
org.lanqiao.service.LoginService 是登录服务类,请根据注释要求,补全空缺的代码。
public static void login(int type, String name, String pwd) {
// 补全代码,下列代码仅供参考
if(type==User.TEACHER){
}
else{
}
}
从 Db 类获取数据来判断用户名和密码是否相等,相等则根据注释要求写代码。
public static void login(int type, String name, String pwd) {
// 补全代码,下列代码仅供参考
if(type==User.TEACHER){
for(int i = 0;i
步骤8(15分):继续完善服务类 LoginService
目标说明
org.lanqiao.service.LoginService 还有一个更改密码的功能未完成:
public void changePwd() {
Scanner input = new Scanner(System.in);
// 补全代码:
input.close();
}
根据提示可以直接使用 loginUser 调用 get 和 set 方法获取和修改数据。
public static void changePwd() {
Scanner input = new Scanner(System.in);
// 补全代码:
// 接收用户输入原密码,
if(input.next().equals(loginUser.getPwd())){
// 比对成功后:
// 接收用户输入新密码,修改当前登录的用户的密码为新密码
loginUser.setPwd(input.next());
}
input.close();
} 


