Java图书管理系统练习程序(二)

Java图书管理系统练习程序(二)

第二部分

本部分主要实现系统用户这部分的功能,实现用户的注册、登录、修改密码等功能

程序各类及调用关系如下图所示

一、创建user实体类

User实体类:id、username、password、email

package sky.book.bean;

public class User {
    private int id;
    private String name;
    private String password;
    private String email;
    //省略其setter和getter方法与默认构造方法
}

二、创建IUserRepository接口

IUserRepository接口主要模拟数据的基本操作,实现用户的更新、查找、添加、等功能,代码如下

package sky.book.dao;

import sky.book.bean.User;

import java.util.ArrayList;
import java.util.List;

public interface IUserRepository {

    /**
     * 取得所有用户信息
     * @return 所有用户信息的集合
     */
    public List<User> selectAllUser();
    /**
     * 根据用户的id取得用户信息
     * @param id 用户的id
     * @return
     */
    public User selectUserById(int id);
    /**
     * 添加用户
     * @param user 欲添加的用户
     * @return 返回受影响的记录数
     */
    public int insertUser(User user);

    /**
     * 根据用户名查找用户
     * @param name 用户名
     * @return 如果有该用户返回用户对象,否则返回null
     */
    public User selectUserByName(String name);

    /**
     * 更新用户信息
     * @param user 欲更新的用户信息
     * @return 返回受影响的记录数
     */
    public int updateUser(User user);
}

三、创建IUserRepository接口的实现类UserRepository类

该类具体实现IUserRepository接口的功能,代码如下

package sky.book.dao;

import sky.book.bean.User;

import java.util.ArrayList;
import java.util.List;

public class UserRepository implements IUserRepository {
    private List<User> users=new ArrayList<>();//存储用户的列表集合
    private static int n;//存储用户数

    public UserRepository(){
        init();
    }
    /**
     * 初始化部分用户信息
     */
    private void init(){
        User user=new User();
        user.setId(n++);
        user.setName("admin");
        user.setPassword("admin");
        user.setEmail("[email protected]");

        users.add(user);
    }

    @Override
    public List<User> selectAllUser() {
        return users;
    }

    @Override
    public User selectUserById(int id) {
        if(id>=0 && id<n){
            return users.get(id);
        }
        return null;
    }

    @Override
    public int insertUser(User user) {
        //首先判断用户名是否存在,如果存在则,不能添加,否则添加
        boolean f=false;
        for (User u:users) {
            if(u.getName().equals(user.getName())){
                f=true;
                break;
            }
        }
        if(!f){
            user.setId(n++);
            users.add(user);
            return 1;
        }else{
            return 0;
        }
    }

    @Override
    public User selectUserByName(String name) {
        for (User u:users) {
            if(u.getName().equals(name))
                return u;
        }
        return null;
    }

    @Override
    public int updateUser(User user) {
        int id=user.getId();
        if(id>=n)
            return 0;
        users.get(id).setName(user.getName());
        users.get(id).setPassword(user.getPassword());
        users.get(id).setEmail(user.getEmail());
        return 1;
    }
}

四、创建IUserServicer接口

IUserService接口:制定UserService类必须实现的主要功能,用户注册、用户登录、修改密码,代码如下:

package sky.book.services;
import sky.book.bean.User;
import java.util.List;
/**
 * 用户业务接口,实现用户 注册、用户登录、修改密码功能
 */
public interface IUserService {
    /**
     * 注册用户
     * @param user 用户注册信息
     * @return
     */
    public boolean createUser(User user);

    /**
     * 用户登录
     * @param name 用户名
     * @param pwd 密码
     * @return 如果是合法用户返回true,否则返回false
     */
    public boolean userLogin(String name,String pwd);

    /**
     * 修改密码
     * @param id 用户编号
     * @param pwd 用户新密码
     * @param oldpwd 用户旧密码
     * @return
     */
    public boolean changePassWord(int id,String pwd,String oldpwd);

    /**
     * 取得所有用户列表
     * @return 所有的用户集合
     */
    public List<User> getUsers();
}

五、创建UserService类,实现IUserService接口

package sky.book.services;

import sky.book.bean.User;
import sky.book.dao.IUserRepository;
import sky.book.dao.UserRepository;

import java.util.List;

public class UserService implements IUserService {
    private IUserRepository userRepository=new UserRepository();

    /**
     * 注册用户
     * @param user 用户注册信息
     * @return 如果注册成功,返回true,否则返回false
     */
    @Override
    public boolean createUser(User user) {
        if(userRepository.insertUser(user)>0)
            return true;
        else
            return false;
    }

    /**
     * 用户登录
     * @param name 用户名
     * @param pwd 密码
     * @return 如果登录成功,返回true,否则返回false
     */
    @Override
    public boolean userLogin(String name, String pwd) {
        User user=userRepository.selectUserByName(name);
        if(user==null){
            return false;
        }
        if(user.getPassword().equals(pwd))
            return true;
        else
            return false;
    }

    /**
     * 修改密码
     * @param id 用户编号
     * @param newPwd 用户新密码
     * @param oldPwd 用户旧密码
     * @return
     */
    @Override
    public boolean changePassWord(int id, String oldPwd, String newPwd) {
        User user=userRepository.selectUserById(id);
        if(user==null)
            return false;
        if(user.getPassword().equals(oldPwd)){
            user.setPassword(newPwd);
            if(userRepository.updateUser(user)>0)
                return true;
            else{
                return false;
            }
        }
        return false;
    }

    /**
     * 取得所有用户 列表
     * @return
     */
    @Override
    public List<User> getUsers() {
        return userRepository.selectAllUser();
    }
}

六、创建services层的工厂类

该类主要向ui层提供services层的对象

package sky.book.services;

public class ServiceFactory {
    public static IUserService getUserService(){
        return new UserService();
    }
}

七、创建用户管理程序的界面

package sky.book.ui;

import sky.book.bean.User;
import sky.book.services.IUserService;
import sky.book.services.ServiceFactory;

import java.util.List;
import java.util.Scanner;

/**
 * 用户管理界面
 */
public class UserUI {
    /**
     * 取得业务逻辑层的对象
     */
    private IUserService userService=ServiceFactory.getUserService();

    private Scanner sc=new Scanner(System.in);


    /**
     * 输出所有用户信息
     */
    public void showAllUser(){
        List<User> users=userService.getUsers();
        System.out.println("编号\t用户名\t密码\t电子邮件");
        for(User user : users){
            System.out.println(user.getId()+"\t"+user.getName()+"\t"+user.getPassword()+"\t"+user.getEmail());
        }
    }


    /**
     * 用户登录
     * @return 如何合法返回true,否则返回false
     */
    public boolean login(){
        System.out.println("请输入用户名");
        String name=sc.next();
        System.out.println("请输入密码");
        String pwd=sc.next();
        if(userService.userLogin(name,pwd)){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 用户注册
     * @return 如果注册成功返回true,否则返回false
     */
    public boolean createUser(){
        User user=new User();
        System.out.println("请输入用户名");
        user.setName(sc.next());
        System.out.println("请输入密码");
        user.setPassword(sc.next());
        System.out.println("请输入email");
        user.setEmail(sc.next());
        if(userService.createUser(user)){
            return true;
        }else{
            return false;
        }
    }

    /**
     * 修改密码
     * @return 修改成功返回true,否则返回false
     */
    public boolean changePassWord(){
        System.out.println("请输入旧密码");
        String oldPwd=sc.next();
        System.out.println("请输入新密码");
        String pwd=sc.next();
        if(userService.changePassWord(0,oldPwd,pwd)){
            return true;
        }else{
            return false;
        }
    }
}

猜你喜欢

转载自my.oschina.net/u/3537796/blog/2254035