Java中用set 和map实现这段代码,谢谢!

Java中用set 和map实现这段代码,谢谢!,第1张

1、面向接口(DAO)编程,接口的实现。

构建User.java实体类,构建UserImpl.java类,实现UserDao接口,构建MapDal.java,模拟数据库,Main.java模拟UI,UI只调用UserImpl,UserImpl调用MapDal。

main.java

package baidu.zhidao

import java.util.*

/**

* Main 主方法

* @author bufei

*

*/

public class Main {

public static void main(String[] args) {

int userNum = 9

// 定义UserList

List<User> list = new ArrayList<User>()

for (int i = 0 i < userNum i++) {

User user = new User()

user.setPassWord("passWord" + i)

user.setUserName("userName" + i)

list.add(user)

}

// 实例化UserImpl

UserImpl userImpl = new UserImpl(list)

// 用户 张三 是否存在

String userName = "张三"

String passWord = "passWord"

User user = new User()

user.setUserName(userName)

user.setPassWord(passWord)

System.out.println("- - - baiduDemo - - -")

// 1、isExist(user)

System.out.println("查找用户 " + userName + "...")

if (userImpl.isExist(user)) {

System.out.println(userName + " 存在!")

} else {

System.out.println(userName + " 不存在!")

}

// 2、addUser

System.out.println("添加用户 " + userName + ",psw= " + passWord + " ...")

userImpl.addUser(user)

// 3、changePassword(userName)

System.out.println("修改密码...")

passWord = "zhangsanpasword"

if (userImpl.changePassword(userName, passWord)) {

System.out.println("修改成功!")

} else {

System.out.println("用户不存在!")

}

//  4 selectAll()

list = userImpl.selectAll()

System.out.println("获取全部User:")

for (User userItem : list) {

System.out.println(userItem.getUserName() + "," + userItem.getPassWord())

}

}

}

UserImpl.java

package baidu.zhidao

import java.util.*

/**

* UserDao接口实现

* @author bufei

*

*/

public class UserImpl implements UserDao {

private MapDal mapDal

/**

* 构造器,初始化Map数据库

*/

public UserImpl(List<User> list) {

mapDal = new MapDal(list)

}

/**

* 1.判断某个user是否存在

* @param user 用户对象

* @return 返回true/false用户是否存在

*/

public boolean isExist(User user) {

boolean rs = false

rs = mapDal.isExist(user)

return rs

}

/**

* 2.添加User

* 题目所给void 返回类型不合理

* @param user

*

* */

public void addUser(User user) {

if (mapDal.addUser(user)) {

System.out.println("添加完成!")

} else {

System.out.println("添加失败!")

}

}

/**

* 3.根据username修改password

* @param username

* @param password

* @return 成功与否

* */

public boolean changePassword(String userName, String password) {

boolean rs = false

User user = new User()

user.setUserName(userName)

user.setPassWord(password)

rs = mapDal.changePassword(user)

return rs

}

/**

* 根据用户对象修改密码

* @param user

* @return

*/

public boolean changePassword(User user) {

return mapDal.changePassword(user)

}

/**

* 4.得到所有的User,用List封装

* @return 从数据库查询到所有的User

* */

public List<User> selectAll() {

return mapDal.selectAll()

}

}

MapDal.java

package baidu.zhidao

import java.util.*

/**

* MapDml 用map模拟数据库,初始化生成一些User

* 单例模式,避免数据不同步

* @author bufei

*

*/

public class MapDal {

/** list中存map,实在绕得很,直接存User也是可以 */

public static List<Map<String, String>> userMapList = new ArrayList<Map<String, String>>()

/**

* 初始化,有参构造器

* 构造Map  map,存储全部的userName,passWord,模拟数据库

*

*/

public MapDal(List<User> list) {

for (User user : list) {

Map userMap = new HashMap<String, String>()

userMap.put(user.getUserName(), user.getPassWord())

userMapList.add(userMap)

}

}

/**

* 无参构造器

* */

public MapDal() {

}

/**

*

* @param user

* @return

*/

public boolean isExist(User user) {

boolean rs = false

//遍历userMapList 查找用户是否存在

for (Map<String, String> map : userMapList) {

// 找到该map

if (map.get(user.getUserName()) != null) {

rs = true

}

}

return rs

}

/**

* addUser,userName已存在则无法加入

* @param user

* @return boolean

*/

public boolean addUser(User user) {

boolean rs = false

//遍历userMapList 查找用户是否存在

for (Map<String, String> map : userMapList) {

// 找到该map,已经存在,无法添加

if (map.get(user.getUserName()) != null) {

return rs

}

}

if (!rs) {

Map<String, String> userMap = new HashMap<String, String>(8)

userMap.put(user.getUserName(), user.getPassWord())

userMapList.add(userMap)

rs = true

}

return rs

}

/**

* deleteUser

* @return

*/

public boolean deleteUser() {

boolean rs = false

return rs

}

/**

* changePassword

* @param user

* @return

*/

public boolean changePassword(User user) {

boolean rs = false

// 定义遍历索引

int i = 0

//遍历userMapList 查找用户是否存在

for (Map<String, String> map : userMapList) {

// 找到该map,remove,再次存入新的

if (map.get(user.getUserName())!=null) {

userMapList.remove(i)

//hashmap 初试默认值 0.75-16

Map userMap = new HashMap<String, String>(8)

userMap.put(user.getUserName(), user.getPassWord())

userMapList.add(userMap)

rs = true

}

i++

}

return rs

}

/**

* selectAll()

*

* @return 返回全体user

*/

public List<User> selectAll() {

List<User> list = new ArrayList<User>()

//遍历map

for (Map<String, String> userMap : userMapList) {

User user = new User()

//map访问需要使用Map.Entry<>

//entry 需要Set.iterator().next()

Set entriSet = userMap.entrySet()

Iterator<Map.Entry<String, String>> iterator = entriSet.iterator()

if (iterator.hasNext()) {

// 此时entry 是 Object

Map.Entry<String, String> entry = iterator.next()

user.setUserName(entry.getKey().toString())

user.setPassWord(entry.getValue().toString())

list.add(user)

}

}

return list

}

}

2、运行效果

最后一列为备注 1、 管理员表(tb_admin) 字段 类型 约束 备注 aId number(6) 主键 --管理员编号 aName varchar2(10) 唯一、非空 --管理员登陆名 aPassword varchar2(16) 非空 --管理员登陆密码 aLastDate date 非空 --上次登陆时间 aNowDate date 非空 --本次登陆时间 2、 yhk登陆表(tb_login) 字段 类型 约束 备注 lId number(8) 主键 --登录ID lCardNumber varchar2(19) 引用yhk信息表 卡号 lPassword number(6) 非空 yhk密码 bIsLock char(1) 默认1 是否被锁,0表示被锁,1表示开启 lTime number(10) 初始为0 登陆次数 aLastDate date 非空 上次登陆时间 aNowDate date 非空 本次登陆时间 3、 客户详细资料表(tb_userInfo) 字段 类型 约束 备注 usId number(8) 主键 客户ID usName varchar2(10) 非空 客户姓名 usIDNumber varchar2(18) 非空 客户身份z号码 usSex char(1) 默认0 客户性别,0表示男,1表示女 usTel varchar2(11) 非空 客户电话 usAddress varchar2(50) 非空 客户地址 4、 银行支行表(tb_Branch) 字段 类型 约束 备注 bId number(3) 主键 支行ID bName varchar2(20) 唯一、非空 支行名 bAddress varchar2(100) 非空 支行地址 5、 yhk信息表(tb_CardInfo) 字段 类型 约束 备注 bCardID number(19) 主键 卡号 bBalance number(8,2) 默认0.00 余额 bUserId number(8) 引用客户详细资料表 卡对应用户ID bBranchID number(4) 引用支行表 支行ID bDate date 默认系统时间 开户时间 6、 yhk交易类型表(tb_TransType) 字段 类型 约束 备注 tId number(2) 主键 类型ID tType nvarchar2(6) 唯一 类型(转账、存款、取出等) 7、 yhk个人账户存、取款记录表(tb_ Pacount) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardID number(19) 引用yhk信息表 交易卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间 8、 yhk转账等交易记录表(tb_TransInfo) 字段 类型 约束 备注 tId number(10) 主键 交易记录流水号 tType number(2) 引用交易类型表 交易类型ID tCardIDout number(19) 引用yhk信息表 交易金额转出卡号 tCardIDIn number(19) 引用yhk信息表 交易金额转入卡号 tamount number(10) 非空 交易金额 tDate date 非空 交易时间


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9639654.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存