创建登录类,属性包含用户名,密码,身份证号,手机号
public class toUser {
private String userName;//用户名
private String password;//密码
private String userId;//身份证号
private String userPhone;//手机号
public toUser(String userName, String password, String userId, String userPhone) {
this.userName = userName;
this.password = password;
this.userId = userId;
this.userPhone = userPhone;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getUserId() {
return userId;
}
public void setUserId(String userId) {
this.userId = userId;
}
public String getUserPhone() {
return userPhone;
}
public void setUserPhone(String userPhone) {
this.userPhone = userPhone;
}
public toUser() {
}
}
创建图书类,包括:图书编号,图书名称,图书作者,价格属性
public class toBook {
private int id;//图书编号
private String bookName;//图书名称
private String author;//图书作者
private int price;//图书价格
public toBook(int id, String bookName, String author, int price) {
this.id = id;
this.bookName = bookName;
this.author = author;
this.price = price;
}
public toBook() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPrice() {
return price;
}
public void setPrice(int price) {
this.price = price;
}
}
首界面系统包含:登录,注册,找回密码三个功能
/*
注册功能:
1,用户名需要满足以下要求:
验证要求:
1.用户名唯一
用户名长度必须在3~15位之间
只能是字母加数字的组合,但是不能是纯数字
2,密码键盘输入两次,两次一致才可以进行注册。
3,身份证号码需要验证。
验证要求:
长度为18位
不能以0为开头
前17位,必须都是数字
最为一位可以是数字,也可以是大写X或小写x
4,手机号验证。
验证要求:
长度为11位
不能以0为开头
必须都是数字
登录功能:
1,键盘录入用户名
2,键盘录入密码
3,键盘录入验证码
要求:
用户名如果未注册,直接结束方法,并提示:用户名未注册,请先注册
判断验证码是否正确,如不正确,重新输入
再判断用户名和密码是否正确,有3次机会
忘记密码:
1,键盘录入用户名,判断当前用户名是否存在,如不存在,直接结束方法,并提示:未注册
2,键盘录入身份证号码和手机号码
3,判断当前用户的身份证号码和手机号码是否一致,
如果一致,则提示输入密码,进行修改。
如果不一致,则提示:账号信息不匹配,修改失败。
验证码规则:
长度为5
由4位大写或者小写字母和1位数字组成,同一个字母可重复
数字可以出现在任意位置
*/
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class App {
private static final String LOGIN="1";
private static final String REGISTER="2";
private static final String RECOVER="3";
//初始化数据,只调用一次
static ArrayList<toUser> users=new ArrayList<>();
static {
toUser user1=new toUser("张三","54876","123456789037654876","12339836486");
toUser user2=new toUser("李四","87859","823457846934687859","19933367539");
users.add(user1);
users.add(user2);
//printUser(users);
}
public static void main(String[] args) {
userMenu(users);
}
public static void userMenu(ArrayList<toUser>users){
while(true){
System.out.println("-----图书信息管理系统-----");
System.out.println("请选择操作:");
System.out.println("1.登录 2.注册 3.忘记密码");
System.out.println("-----------------------");
Scanner sc = new Scanner(System.in);
String choice = sc.next();
switch (choice) {
case LOGIN->{
System.out.println("-----登录-----");
boolean flag=loginUser(users);
if(flag){
//调用图书管理系统
bookSystem bs=new bookSystem();
bs.startBooksSystem();
//bookMenu(books);
System.exit(0);
}
}
case REGISTER->{
System.out.println("-----注册-----");
enrollUser(users);
}
case RECOVER->{
System.out.println("-----找回密码-----");
retrieveUser(users);
}
// //后台测试
// case "4"->{
// printUser(users);
// }
default->{
System.out.println("输入有误,请重新输入");
}
}
}
}
//登录
public static boolean loginUser(ArrayList<toUser>user){
Scanner sc = new Scanner(System.in);
//System.out.println("-----登录-----");
for(int i=1;i<=3;) {
System.out.print("用户名:");
String username = sc.next();
//判断用户是否注册
boolean flag = IsExist(user, username);
if (!flag) {
System.out.println("用户名未注册,请先注册");
return false;
} else {
System.out.print("密码:");
String password = sc.next();
while (true) {
String captcha = captcha();
System.out.println(captcha);
System.out.print("验证码:");
String check = sc.next();
if(check.equalsIgnoreCase(captcha)){
break;
}
else{
System.out.println("验证码错误,请重新输入");
continue;
}
}
if (!IsExist(user, username, password)) {
System.out.println("用户名或密码错误,请重新输入,你还有" + (3 - i) + "次机会");
i++;
} else {
System.out.println("登录成功");
return true;
}
}
}
System.out.println("请点击找回密码");
return false;
}
//注册
public static void enrollUser(ArrayList<toUser>user)
{
Scanner sc = new Scanner(System.in);
System.out.print("用户名: ");
String username = sc.next();
while(judgeName(user,username)){
System.out.println("用户名已存在,请重新输入");
System.out.print("用户名: ");
username = sc.next();
}
System.out.print("密码: ");
String password = sc.next();
System.out.print("确认密码: ");
String checkPass = sc.next();
while(!(password.equals(checkPass))){
System.out.println("两次密码不一致,请重新输入");
System.out.print("密码: ");
password = sc.next();
System.out.println("1."+password);
System.out.print("确认密码: ");
checkPass = sc.next();
System.out.println("2."+checkPass);
}
//输入身份证号
String userId;
while(true) {
System.out.print("身份证: ");
userId = sc.next();
if(judgeId(userId)){
break;
}else{
System.out.println("身份证号码输入有误,请重新输入");
continue;
}
}
//输入手机号
String phone;
while(true){
System.out.print("手机号: ");
phone=sc.next();
if(judgePhone(phone)){
break;
}else{
System.out.println("手机号码输入有误,请重新输入");
continue;
}
}
System.out.println("注册成功!");
toUser newUser=new toUser(username,password,userId,phone);
user.add(newUser);
}
//找回密码
public static void retrieveUser(ArrayList<toUser>user){
Scanner sc = new Scanner(System.in);
System.out.print("用户名:");
String userName = sc.next();
if(!IsExist(user,userName)){
System.out.println("未注册");
return;
}
//输入身份证号
String userId;
while(true) {
System.out.print("身份证: ");
userId = sc.next();
if(judgeId(userId)){
break;
}else{
System.out.println("身份证号码输入有误,请重新输入");
continue;
}
}
//输入手机号
String phone;
while(true){
System.out.print("手机号: ");
phone=sc.next();
if(judgePhone(phone)){
break;
}else{
System.out.println("手机号码输入有误,请重新输入");
continue;
}
}
System.out.println("用户信息验证成功!");
if(judgeIdPhone(user,userName,userId,phone)){
System.out.print("请输入密码:");
String passWord = sc.next();
toUser oldUser=new toUser(userName,passWord,userId,phone);
//System.out.println(search(user,userName));
user.set(search(user,userName),oldUser);
System.out.println("用户密码已修改");
}else{
System.out.println("信息有误,修改失败");
}
}
//随机验证码
public static String captcha(){
char[] ch=new char[52];
for(int i=0;i<(ch.length/2);i++){
ch[i]=(char)('A'+i);
}
for(int i=(ch.length)/2,j=0;i<ch.length;i++,j++){
ch[i]=(char)('a'+j);
}
Random ra=new Random();
//建立StringBuilder,存入4个随机字母
StringBuilder sb=new StringBuilder();
for(int i=0;i<4;i++){
//获取随机索引值
int index=ra.nextInt(ch.length);
sb.append(ch[index]);
}
//获取随机数字
int num=ra.nextInt(10);
sb.append(num);
String str=sb.toString();
str=DisString(str);
return str;
}
//打乱验证码
public static String DisString(String str){
char[] charArray = str.toCharArray();
Random random=new Random();
//获取随机数字的位置
int index=random.nextInt(charArray.length);
//插入数字
char temp=charArray[index];
charArray[index]=charArray[charArray.length-1];
charArray[charArray.length-1]=temp;
return new String(charArray);
}
//判断用户名
public static boolean IsExist(ArrayList<toUser>users,String k){
for (int i = 0; i < users.size(); i++) {
if(users.get(i).getUserName().equalsIgnoreCase(k)){
return true;
}
}
return false;
}
//判断登录的用户名和密码
public static boolean IsExist(ArrayList<toUser>users,String name,String passWord){
for (int i = 0; i < users.size(); i++) {
if(users.get(i).getUserName().equalsIgnoreCase(name)){
if(users.get(i).getPassword().equals(passWord)){
return true;
}
return false;
}
}
return false;
}
//打印所以用户的信息
// public static void printUser(ArrayList<toUser>users){
// for(int i=0;i<users.size();i++){
// System.out.println(users.get(i).getUserName()+" "+users.get(i).getPassword()+" "+
// users.get(i).getUserId()+" "+users.get(i).getUserPhone());
// }
// }
//判断身份证号
public static boolean judgeId(String id){
char[] charArray = id.toCharArray();
if(id.length()==18){
if(charArray[0]!='0'&&judgeNumber(charArray)){
return true;
}
}
return false;
}
public static boolean judgeNumber(char[] charArray){
int count=0;
for(int i=0;i<charArray.length-1;i++){
if(charArray[i]-'0'>=0||charArray[i]-'0'<=9){
count++;
}
}
if(charArray[charArray.length-1]=='x'||charArray[charArray.length-1]=='X'||
charArray[charArray.length-1]-'0'>=0||charArray[charArray.length-1]-'0'<=9){
count++;
}
if(count==18){
return true;
}else{
return false;
}
}
//判断电话号码
public static boolean judgePhone(String phone){
char[] charArray = phone.toCharArray();
if(phone.length()==11){
if(charArray[0]!='0'&&judgePhoneNumber(charArray)){
return true;
}
}
return false;
}
public static boolean judgePhoneNumber(char[] charArray){
int count=0;
for(int i=0;i<charArray.length;i++){
if(charArray[i]-'0'>=0||charArray[i]-'0'<=9){
count++;
}
}
if(count==11){
return true;
}else{
return false;
}
}
//判断用户名
public static boolean judgeName(ArrayList<toUser>users,String name){
char[] charArray = name.toCharArray();
if((charArray.length>=3||charArray.length<=15)&&judgeName(charArray)&&IsExist(users,name)){
return true;
}
return false;
}
public static boolean judgeName(char[] charArray){
int count=0;
for(int i=0;i<charArray.length;i++){
if(charArray[i]-'0'>=0||charArray[i]-'0'<=9){
count++;
}
}
if(count==charArray.length){
return false;
}else{
return true;
}
}
//判断身份证与手机号
public static boolean judgeIdPhone(ArrayList<toUser>users,String name,String Id,String phone){
for(int i=0;i<users.size();i++){
if(users.get(i).getUserName().equalsIgnoreCase(name)){
if(users.get(i).getUserId().equals(Id)&&users.get(i).getUserPhone().equals(phone)){
return true;
}
return false;
}
}
return false;
}
//寻找用户的位置
public static int search(ArrayList<toUser>users,String k){
for(int i=0;i<users.size();i++){
if(users.get(i).getUserName().equalsIgnoreCase(k)){
return i;
}
}
return -1;
}
}
图书管理系统,功能有:添加,查询,删除,修改,打印,退出功能
import java.util.ArrayList;
import java.util.Scanner;
public class bookSystem {
//定义不可修改指定常量
private static final String ADD_BOOKS="1";
private static final String SEARCH_BOOKS="2";
private static final String DELETE_BOOKS="3";
private static final String MOFITY_BOOKS="4";
private static final String PRINT_BOOKS="5";
private static final String EXIT="6";
//初始化数据,只调用一次
static ArrayList<toBook> books = new ArrayList<>();
static {
toBook book1 = new toBook(12, "yueliang", "wulang", 23);
toBook book2 = new toBook(13, "太阳", "张三", 23);
toBook book3 = new toBook(14, "月亮", "李四", 45);
books.add(book1);
books.add(book2);
books.add(book3);
}
public static void startBooksSystem() {
//ArrayList<toBook>books=new ArrayList<>();
bookMenu(books);
}
public static void bookMenu(ArrayList<toBook> books) {
while (true) {
System.out.println("-------欢迎使用图书管理系统------");
System.out.println("1.添加图书信息");
System.out.println("2.查询图书信息");
System.out.println("3.删除图书信息");
System.out.println("4.修改图书信息");
System.out.println("5.打印所以图书信息");
System.out.println("6.退出系统");
System.out.println("-----------------------------");
Scanner sc = new Scanner(System.in);
String choice = sc.next();
switch (choice) {
case ADD_BOOKS -> {
System.out.println("添加图书信息");
addBook(books);
}
case SEARCH_BOOKS -> {
System.out.println("查询图书信息");
System.out.println("输入要查询图书的名称");
String name = sc.next();
findBook(books, name);
}
case DELETE_BOOKS -> {
System.out.println("删除图书信息");
System.out.println("输入要删除图书的编号");
int id = sc.nextInt();
deleteBook(books, id);
}
case MOFITY_BOOKS -> {
System.out.println("修改图书信息");
System.out.println("输入要修改图书的编号");
int id = sc.nextInt();
reviseBook(books, id);
}
case PRINT_BOOKS -> {
System.out.println("打印所以图书信息");
printBook(books);
}
case EXIT -> {
System.out.println("感谢你使用图书信息系统");
System.exit(0);
}
default -> System.out.println("没有此功能");
}
}
}
public static void addBook(ArrayList<toBook> books) {
//System.out.println("添加图书信息");
Scanner sc = new Scanner(System.in);
System.out.println("添加图书的数量");
int number = sc.nextInt();
for (int i = 1; i <= number; i++) {
toBook book = new toBook();
System.out.println("请输入图书编号");
int id = sc.nextInt();
boolean flag = IsExist(books, id);
while (flag) {
System.out.println("输出有误,请重新输入");
id = sc.nextInt();
flag = IsExist(books, id);
}
book.setId(id);
System.out.println("请输入图书书名");
String name = sc.next();
book.setBookName(name);
System.out.println("请输入图书作者");
String author = sc.next();
book.setAuthor(author);
System.out.println("请输入图书价格");
int price = sc.nextInt();
book.setPrice(price);
books.add(book);
}
}
public static void deleteBook(ArrayList<toBook> books, int id) {
//System.out.println("删除图书信息");
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getId() == id) {
books.remove(i);
System.out.println("删除成功!");
break;
}
if (i == books.size() - 1) {
System.out.println("未找到此图书");
}
}
}
public static void findBook(ArrayList<toBook> books, String k) {
//System.out.println("查询图书信息");
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getBookName().equalsIgnoreCase(k)) {
System.out.println("图书编号" + books.get(i).getId() + "图书名称" + books.get(i).getBookName() + "图书作者"
+ books.get(i).getAuthor() + "图书价格" + books.get(i).getPrice());
break;
}
if (i == books.size() - 1) {
System.out.println("未找到此图书");
}
}
}
public static void reviseBook(ArrayList<toBook> books, int id) {
//System.out.println("修改图书信息");
for (int i = 0; i < books.size(); i++) {
Scanner sc = new Scanner(System.in);
if (books.get(i).getId() == id) {
System.out.println("请输入修改后图书的名称");
String name = sc.next();
System.out.println("请输入修改后图书的作者");
String author = sc.next();
System.out.println("请输入修改后图书的价格");
int price = sc.nextInt();
toBook book = new toBook(id, name, author, price);
books.set(i, book);
System.out.println("图书信息修改成功!");
break;
}
if (i == books.size() - 1) {
System.out.println("未找到此图书");
}
}
}
public static void printBook(ArrayList<toBook> books) {
//System.out.println(books.size());
System.out.println("图书编号" + " " + "图书名称" + " " + "作者" + " " + "价格");
for (int i = 0; i < books.size(); i++) {
System.out.println(books.get(i).getId() + " " + books.get(i).getBookName() + " "
+ books.get(i).getAuthor() + " " + books.get(i).getPrice());
}
}
public static boolean IsExist(ArrayList<toBook> books, int index) {
for (int i = 0; i < books.size(); i++) {
if (books.get(i).getId() == index) {
return true;
}
}
return false;
}
}