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