实操考试题其他系列请移步专栏:JAVA实操题_疯狂的格式化的博客-CSDN博客
步骤2(10分):完成抽象类 User
目标说明
系统提供登录功能,需要存在用户,涉及到的用户有学生和老师,我们选择使用抽象来创建基类。
org.lanqiao.bean.User
是一个用户的抽象类,请根据注释要求,补全空缺的代码。
/**
* User类的构造方法
* @param type
* @param name
* @param pwd
*/
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
是一个实体类,表示的是学生,请根据注释要求,补全空缺的代码。
/**
* Student类的构造方法1
* 注意:type固定为User.STUDENT
* @param name
* @param pwd
*/
public Student(String name, String pwd) {
// 缺失代码
}
/**
* Student类的构造方法2
* 注意:type固定为User.STUDENT
* @param name
* @param pwd
* @param score
*/
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
类中,请根据注释要求,补全空缺的代码。
/**
* 根据用户输入的是 y 还是 其他,返回是否继续的布尔值
* @return 输入 y 或 Y 返回真,输入其他返回假
*/
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
类来进行实现,请根据注释要求,补全空缺的代码。
/**
* 查询API得知,List中提供了方法add(T t),作用是将T类型的对象t存储到List中,
* 补充代码实现对teachers和students这两个List的初始化,要求可以直接通过
* Db.teachers和Db.students就能访问所有数据。初始化数据如下:
*
* 老师姓名 密码
* luozy 123
*
* 学生姓名 密码 成绩
* peter 123 90
* jerry 123456 95
* lucy 12345 98
*/
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
类中,请根据注释要求,补全空缺的代码。
/**
* 打印输出所有学生的信息,输出的格式如下:
* 属性之间用\t分隔,每输出一个学生信息后换行
* 格式如下:
* 序号1\t姓名1\t成绩1
* 序号2\t姓名2\t成绩2
*
* 样例:
* 1 张三 98
* 2 李四 99
*/
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
是登录服务类,请根据注释要求,补全空缺的代码。
/**
* 根据用户类型、姓名、密码,判断是否可以登录,
* 如果正常登录,设置loginUser为当前登录的用户,设置logined为真
* 登录失败,不执行任何操作
*
* @param type 账号类型(老师/学生)
* @param name 姓名
* @param pwd 密码
*/
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<Db.teachers.size();i++){
if(Db.teachers.get(i).getName().equals(name)&&Db.teachers.get(i).getPwd().equals(pwd)){
logined=true;
loginUser=Db.teachers.get(i);
}
}
}
else{
for(int i = 0;i<Db.students.size();i++){
if(Db.students.get(i).getName().equals(name)&&Db.students.get(i).getPwd().equals(pwd)){
logined=true;
loginUser=Db.students.get(i);
}
}
}
}
步骤8(15分):继续完善服务类 LoginService
目标说明
org.lanqiao.service.LoginService
还有一个更改密码的功能未完成:
/**
* 首先接收用户输入原密码,比对成功后:
* 接收用户输入新密码,修改当前登录的用户的密码为新密码
* 否则:
* 不做任何改变
* 提示:当前已登录的用户就是静态变量 loginUser
*/
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();
}