现在有一个实现银行新客户注册,用户登录,用户开卡的需求需要你来实现。用户类包含身份证号(String)、姓名(String)、用户密码(String)、用户卡包属性(HashMap<String.Double>,key代表卡号,value代表卡内余额)。用户卡包的含义是一个用户可以有多张银行卡,该类已在后台定义,考生不可见。预设代码中的用户列表集合clientSet用于存储注册成功的用户。题目要求如下:设计一个registered()函数完成注册功能,需要参数传入姓名、身份证号、六位数字密码。函数要求判断用户身份证号是否合法(为简化操作,仅要求合法的身份证号为18位开头不为0的数字)、身份证易是否已被注册、密码长度是否合理、密码是否由数字组成。若注册失败则返回具体失败原因,如"身份证号不合法”,“该身份证号已被注册”。如果用户注册成功,则向用产卡包中存入一张卡号为他的身份证号+卡序号的银行卡,卡内余额为0,并返回已完成注册
时间: 2023-05-28 15:02:00 浏览: 106
的用户对象。
设计一个login()函数完成登录功能,需要参数传入身份证号和密码。函数要求判断身份证号和密码是否匹配。若匹配成功,则返回已登录的用户对象;否则返回“登录失败”。
设计一个addCard()函数完成添加银行卡功能,需要参数传入用户对象。函数要求生成一个新的卡号(卡号为用户身份证号+卡序号),并添加到用户的卡包中,卡内余额为0。若添加成功,则返回添加成功的卡号;否则返回“添加失败”。卡序号为用户已有卡的张数加一。
代码实现:
```
import java.util.HashMap;
import java.util.HashSet;
import java.util.Set;
public class Bank {
private static Set<User> clientSet = new HashSet<User>(); // 存储注册成功的用户
// 注册功能
public static User registered(String name, String idCard, String password) {
// 判断身份证号是否合法
if (idCard.length() != 18 || idCard.charAt(0) == '0') {
System.out.println("身份证号不合法");
return null;
}
// 判断身份证号是否已被注册
for (User user : clientSet) {
if (user.getIdCard().equals(idCard)) {
System.out.println("该身份证号已被注册");
return null;
}
}
// 判断密码长度是否合理,是否由数字组成
if (password.length() != 6 || !password.matches("\\d+")) {
System.out.println("密码不合法");
return null;
}
User user = new User(name, idCard, password); // 创建新用户
HashMap<String, Double> cardBag = new HashMap<String, Double>(); // 创建卡包
cardBag.put(idCard+"1", 0.0); // 向卡包中存入默认新卡
user.setCardBag(cardBag); // 设置卡包属性
clientSet.add(user); // 添加到用户列表集合中
System.out.println("注册成功");
return user; // 返回注册成功的用户对象
}
// 登录功能
public static User login(String idCard, String password) {
for (User user : clientSet) {
if (user.getIdCard().equals(idCard) && user.getPassword().equals(password)) {
System.out.println("登录成功");
return user; // 返回已登录的用户对象
}
}
System.out.println("登录失败");
return null;
}
// 添加银行卡功能
public static String addCard(User user) {
int cardNum = user.getCardBag().size() + 1; // 计算新卡的卡序号
String newCardNo = user.getIdCard() + cardNum; // 生成新卡号
user.getCardBag().put(newCardNo, 0.0); // 添加新卡到卡包中
System.out.println("添加成功,新卡号为:" + newCardNo);
return newCardNo; // 返回添加成功的卡号
}
public static void main(String[] args) {
User user1 = registered("张三", "510102200102030101", "123456");
User user2 = registered("李四", "510102200103040102", "abcdef");
User user3 = login("510102200102030101", "123456");
String cardNo = addCard(user1);
}
}
class User {
private String idCard; // 身份证号
private String name; // 姓名
private String password; // 密码
private HashMap<String, Double> cardBag; // 卡包属性
public User(String name, String idCard, String password) {
this.name = name;
this.idCard = idCard;
this.password = password;
}
// getter/setter方法
public String getIdCard() {
return idCard;
}
public void setIdCard(String idCard) {
this.idCard = idCard;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public HashMap<String, Double> getCardBag() {
return cardBag;
}
public void setCardBag(HashMap<String, Double> cardBag) {
this.cardBag = cardBag;
}
}
```