题目.md 3.5 KB

javaSE阶段综合练习

已知用户类结构如下:

class User{
    private String username;
    private String password;
    // 省略有参构造方法、无参构造方法、getter方法、setter方法、toString方法
}

已知用户服务UserService接口如下:

public interface UserService {
    /**
     * 用户注册
     * @param user
     */
    void register(User user);

    /**
     * 用户登录
     * @param username
     * @param password
     * @return 登录结果
     */
    String login(String username,String password);
}

一、用户注册

案例描述:

创建UserService接口的实现类UserServiceImpl,重写register()方法,要求在方法中实现用户注册功能。

案例需求:

register(User user)方法内需要实现以下操作:

  1. 创建以user对象中username属性值为文件名的.properties文件。比如: > - user.getUsername()的返回值为zhangsan,则创建名为zhangsan.properties的文件
  2. 在已创建的.properties文件中写入user对象的password属性值。比如: > - user.getPassword()的返回值为123456,则在文件中写入password=123456
  3. 要求验证user对象的username值的唯一性,如果传入的user对象的username重复了,则抛出UsernameDuplicateException异常,该异常需要自定义。

实现步骤分析:

  • 当调用register(User user)方法传入user对象后,在方法中首先要验证user对象的用户名username是否重复,比如username=zhangsan。也就是查询是否具有zhangsan.properties文件,如果有,则直接抛出UsernameDuplicateException异常。
  • 如果没有重复,则创建文件名为zhangsan.properties的文件。
  • 获取user对象的password属性值,比如password属性值为zs123456。将password=zs123456进行字符串拼接。比如:password=zs123456
  • 拼接完成后,使用文件输出流将拼接好的字符串输出到zhangsan.properties文件中。
  • 释放资源,关闭流。

二、用户登录

案例描述:

创建UserService接口的实现类UserServiceImpl,重写login()方法,要求在方法中实现用户登录功能。

案例需求:

login(String username,String password)方法内需要实现以下操作:

  1. 搜索文件名为username实际参数的文件是否存在。比如: > - username为zhangsan,则搜索zhangsan.properties文件是否存在。
  2. 不存在,则返回结果:"用户名不正确,请重新输入",存在,则验证该文件中的password的值是否和传入方法的实参password一致。如果一致,则返回结果:"登录成功",否则返回结果"密码错误,登录失败"。
  3. 要求使用Properties集合来获取文件中的password属性值。

实现步骤分析:

  • 当调用login(String username,String password)方法传入user对象后,在方法中首先要验证user对象的用户名username是否存在,比如username=zhangsan。也就是查询是否具有zhangsan.properties文件,没有则直接返回结果:"用户名不正确,请重新输入"
  • 如果有该文件,则通过Properties对象的load()方法获取password属性的值。
  • 然后将获取到的密码,和传入方法的密码实参进行比较,如果相同则返回结果:"登录成功"。否则返回:"密码错误,登录失败"
  • 释放资源,关闭流。