20210610 1+X 初级实操项目

实操考试题其他系列请移步专栏: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();
	}
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值