本例要求编写一个程序,模拟用户注册。用户输入用户名、密码、确认密码、生日(格式为yyyy--mm—dd为正确)、手机号(手机号长度为11位,并且以13、15、17、18为开头的手机号为正确)、邮箱(包含符号“@”为正确)信息之后,判断信息正确后,验证用户是否重复,重复则给出相应提示,如果不重复则注册成功。案例要求使用HashSet集合实现。
时间: 2023-06-04 22:03:09 浏览: 191
好的,这是一个关于用户注册的问题,让我来帮您解答。根据您的要求,需要使用HashSet集合来实现注册过程。首先,您需要定义一个User类,包含用户名、密码、生日、手机号和邮箱等基本信息。然后,根据用户输入的信息创建一个新的User对象,并将其添加到HashSet集合中。在添加之前,需要判断用户输入的信息是否符合要求,例如生日必须按照yyyy--mm—dd的格式输入,手机号必须是11位并以13、15、17、18为开头,邮箱必须包含符号“@”等等。如果用户信息不符合要求,则给予相应提示;如果用户信息符合要求,需要进行重复性校验,以确保用户名、手机号和邮箱不与已有用户重复。如果重复,则给出相应提示;如果不重复,则将该用户对象添加到HashSet集合中,表示注册成功。
相关问题
用JAVA编写一个程序,模拟用户注册。用户输入用户名、密码、确认密码、生日(格式为yyyy-mm-dd为正确)、手机号(手机号长度为11位,并且以13、15、17、18为开头的手机号为正确)、邮箱(包含符号“@”为正确)信息之后,判断信息正确后,验证用户是否重复,重复则给出相应提示,如果不重复则注册成功。案例要求使用HashSet集合实现。
好的,下面是Java代码实现:
```java
import java.util.HashSet;
import java.util.Scanner;
public class UserRegister {
public static void main(String[] args) {
HashSet<User> userSet = new HashSet<>();
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.println("请输入用户名:");
String username = scanner.nextLine();
System.out.println("请输入密码:");
String password = scanner.nextLine();
System.out.println("请再次输入密码:");
String confirmPassword = scanner.nextLine();
System.out.println("请输入生日(格式为yyyy-mm-dd):");
String birthday = scanner.nextLine();
System.out.println("请输入手机号:");
String phoneNumber = scanner.nextLine();
System.out.println("请输入邮箱:");
String email = scanner.nextLine();
if (isValidInput(username, password, confirmPassword, birthday, phoneNumber, email)) {
User newUser = new User(username, password, birthday, phoneNumber, email);
if (userSet.contains(newUser)) {
System.out.println("该用户已经注册,请重新输入信息!");
} else {
userSet.add(newUser);
System.out.println("注册成功!");
break;
}
} else {
System.out.println("输入信息有误,请重新输入!");
}
}
}
private static boolean isValidInput(String username, String password, String confirmPassword, String birthday, String phoneNumber, String email) {
if (username.isEmpty() || password.isEmpty() || confirmPassword.isEmpty() || birthday.isEmpty() || phoneNumber.isEmpty() || email.isEmpty()) {
return false;
}
if (!password.equals(confirmPassword)) {
return false;
}
if (!birthday.matches("\\d{4}-\\d{2}-\\d{2}")) {
return false;
}
if (!phoneNumber.matches("1[3578]\\d{9}")) {
return false;
}
if (!email.contains("@")) {
return false;
}
return true;
}
}
class User {
String username;
String password;
String birthday;
String phoneNumber;
String email;
public User(String username, String password, String birthday, String phoneNumber, String email) {
this.username = username;
this.password = password;
this.birthday = birthday;
this.phoneNumber = phoneNumber;
this.email = email;
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
if (!username.equals(user.username)) return false;
if (!birthday.equals(user.birthday)) return false;
if (!phoneNumber.equals(user.phoneNumber)) return false;
return email.equals(user.email);
}
@Override
public int hashCode() {
int result = username.hashCode();
result = 31 * result + birthday.hashCode();
result = 31 * result + phoneNumber.hashCode();
result = 31 * result + email.hashCode();
return result;
}
}
```
程序中使用了一个`User`类来表示用户信息,使用`HashSet`集合来存储已经注册的用户信息,每次新注册用户时判断该用户是否已经存在于集合中,如果存在则提示用户重新输入信息,否则将该用户添加到集合中并提示用户注册成功。
同时,程序还使用了`isValidInput`方法来判断用户输入的信息是否有效。如果输入信息有误,则需要提示用户重新输入。
编写程序,让用户按yyyy-mm-dd的格式输入两个日期,判断两个日期的大小关系,以及两
个日期相差的天数。
编写程序如下:
```python
from datetime import datetime
def compare_dates(date1, date2):
if date1 > date2:
print("第一个日期大于第二个日期")
elif date1 < date2:
print("第一个日期小于第二个日期")
else:
print("两个日期相等")
def days_difference(date1, date2):
diff = abs(date2 - date1).days
print("两个日期相差的天数为", diff)
def main():
date_str1 = input("请输入第一个日期(yyyy-mm-dd):")
date_str2 = input("请输入第二个日期(yyyy-mm-dd):")
date1 = datetime.strptime(date_str1, '%Y-%m-%d')
date2 = datetime.strptime(date_str2, '%Y-%m-%d')
compare_dates(date1, date2)
days_difference(date1, date2)
if __name__ == "__main__":
main()
```
用户可以按照指定格式输入两个日期,程序会根据输入的日期比较大小关系,并计算两个日期相差的天数。通过datetime库中的strptime函数将用户输入的字符串转换为日期对象,然后使用比较符号进行大小关系的判断,最后计算日期相差的天数并输出。