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