Java圖書管理系統練習程序(二)

Java圖書管理系統練習程序(二)java

第二部分ide

本部分主要實現系統用戶這部分的功能,實現用戶的註冊、登陸、修改密碼等功能ui

程序各種及調用關係以下圖所示code

1、建立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方法與默認構造方法
}

2、建立IUserRepository接口get

IUserRepository接口主要模擬數據的基本操做,實現用戶的更新、查找、添加、等功能,代碼以下it

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);
}

3、建立IUserRepository接口的實現類UserRepository類class

該類具體實現IUserRepository接口的功能,代碼以下email

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("admin@126.com");

        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;
    }
}

4、建立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();
}

5、建立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();
    }
}

6、建立services層的工廠類

該類主要向ui層提供services層的對象

package sky.book.services;

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

7、建立用戶管理程序的界面

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;
        }
    }
}
相關文章
相關標籤/搜索