目录
1.学生管理系统
loop:while(true){
for(){
break loop;//给while循环取名loop,break loop;可以跳出while循环
}
}
或者使用System.exit(0);停止虚拟机运行,相当于让所有代码停止运行。
//学生类
public class Student {
//id,name,age,address
private String id;
private String name;
private int age;
private String address;
public Student() {
}
public Student(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
//功能代码
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
public static void main(String[] args) {
ArrayList<Student> list=new ArrayList<>();
loop: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.print("请输入您的选择:");
Scanner sc=new Scanner(System.in);
String choice=sc.next();
switch (choice){
case "1": addStu(list);
break;
case "2":delStu(list);
break;
case "3":changeStu(list);
break;
case "4":searchStu(list);
break;
case "5":{
System.out.println("退出");
break loop;
}
default:System.out.println("没有这个选项");
break;
}
}
}
//添加学生
public static void addStu(ArrayList<Student> list) {
Scanner sc=new Scanner(System.in);
Student stu=new Student();
while (true) {
System.out.print("请输入学生id:");
String id=sc.next();
boolean flag=checkOnly(list,id);
if (flag){
stu.setId(id);
break;
}else {
System.out.println("id已存在,请重新输入");
}
}
System.out.print("请输入学生姓名:");
String name=sc.next();
stu.setName(name);
System.out.print("请输入学生年龄:");
int age=sc.nextInt();
stu.setAge(age);
System.out.print("请输入学生地址:");
String address=sc.next();
stu.setAddress(address);
list.add(stu);
System.out.println("添加成功!!!");
}
//删除学生
public static void delStu(ArrayList<Student> list) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入学生id:");
String id=sc.next();
int index=getIndex(list,id);
if (index>=0){
list.remove(index);
System.out.println("删除成功!!!");
}else {
System.out.println("id不存在,删除失败");
}
}
//修改学生
public static void changeStu(ArrayList<Student> list) {
Scanner sc=new Scanner(System.in);
System.out.print("请输入学生id:");
String id=sc.next();
int index=getIndex(list,id);
if (index==-1){
System.out.println("需要修改的"+id+"不存在,请重新输入");
return;
}
Student stu=list.get(index);
System.out.print("请输入姓名:");
String newName=sc.next();
stu.setName(newName);
System.out.print("请输入年龄:");
int ageNew=sc.nextInt();
stu.setAge(ageNew);
System.out.print("请输入地址:");
String addressNew=sc.next();
stu.setName(addressNew);
System.out.println("修改成功!!!");
}
//查询学生
public static void searchStu(ArrayList<Student> list) {
if (list.size()==0){
System.out.println("当前无学生信息,请添加后再查询");
return;
}
System.out.println("id\t姓名\t年龄\t家庭地址");
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).getId()+"\t"+list.get(i).getName()+"\t"+list.get(i).getAge()+"\t"+list.get(i).getAddress());
}
}
//判断id在集合中是否存在
public static boolean checkOnly(ArrayList<Student> list,String id) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getId().equals(id)){
return false;
}
}
return true;
}
//通过id获取索引
public static int getIndex(ArrayList<Student> list,String id) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getId().equals(id)){
return i;
}
}
//当循环结束之后还没有找到,就表示不存在,返回-1
return -1;
}
}
2.学生管理系统升级
//用户类
package Test1;
public class User {
private String username;
private String password;
private String identifyId;
private String phoneNum;
public User() {
}
public User(String username, String password, String identifyId, String phoneNum) {
this.username = username;
this.password = password;
this.identifyId = identifyId;
this.phoneNum = phoneNum;
}
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 getIdentifyId() {
return identifyId;
}
public void setIdentifyId(String identifyId) {
this.identifyId = identifyId;
}
public String getPhoneNum() {
return phoneNum;
}
public void setPhoneNum(String phoneNum) {
this.phoneNum = phoneNum;
}
}
//功能代码
package Test1;
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class App {
public static void main(String[] args) {
//主界面
ArrayList<User> list=new ArrayList<>();
Scanner sc=new Scanner(System.in);
loop:while (true) {
System.out.println("-------欢迎来到学生管理系统-------");
System.out.println("1.登录 2.注册 3.忘记密码 4.退出");
System.out.print("请选择操作:");
int choice=sc.nextInt();
switch(choice){
case 1:{login(list);break;}
case 2:{register(list);break;}
case 3:{forgetPass(list);break;}
case 4:{
System.out.println("谢谢使用,再见");
break loop;
}
default:{
System.out.println("没有这个选项");
break;
}
}
}
}
//登录
private static void login(ArrayList<User> list) {
Scanner sc=new Scanner(System.in);
for(int i=0;i<3;i++) {
System.out.print("请输入用户名:");
String username=sc.next();
boolean flag=userOnly(list,username);
if(flag){
System.out.println("用户"+username+"未注册,请先注册");
return;
}
System.out.print("请输入密码:");
String password=sc.next();
while (true) {
String rightCode=getCodeCheck();
System.out.print("当前验证码为:"+rightCode);
System.out.print("请输入验证码:");
String code=sc.next();
if (code.equalsIgnoreCase(rightCode)){
System.out.println("验证码正确");
break;
}else{
System.out.println("验证码错误,请重新输入");
continue;
}
}
//封装思想:可以把零散的数据,封装成一个对象。以后传递参数的时候,只要传递一个整体就可以了,不需要零散数据。
User userInfo=new User(username,password,null,null);
boolean result=checkUserPass(list,userInfo);
if (result){
System.out.println("登陆成功,可以开始使用学生管理系统了");
break;
}
else {
System.out.println("登录失败,用户名或密码错误");
if (i==2){
System.out.println("当前账号"+username+"被锁定,请联系XXXX工作人员");
return;
}else {
System.out.println("用户或密码有误,还剩下"+(2-i)+"次机会");
}
}
}
}
//注册
private static void register(ArrayList<User> list){
//1.用户名
Scanner sc=new Scanner(System.in);
User u=new User();
while (true) {
System.out.print("输入用户名:");
String username=sc.next();
boolean flag=checkName(username);
if (flag){
//格式满足,判断唯一性
boolean flag1=userOnly(list,username);
if (flag1){
u.setUsername(username);
System.out.println("username successful");
break;
}else {
System.out.println("用户名已存在,请重新输入");
}
}else {
System.out.println("用户格式不满足条件,需要重新输入");
}
}
//2.密码
while (true) {
System.out.print("请输入密码:");
String password=sc.next();
System.out.print("确认密码:");
String password1=sc.next();
if(password.equals(password1)){
u.setPassword(password);
System.out.println("password successful");
break;
}
else {
System.out.println("两次密码不一致,请重新输入!");
}
}
//3.身份证号码
while (true) {
System.out.print("请输入身份证号码:");
String identifyId=sc.next();
boolean flag2=identifyIdNum(identifyId);
if (flag2){
u.setIdentifyId(identifyId);
System.out.println("identifyId successful!");
break;
}else {
System.out.println("身份证号码错误,请重新输入");
}
}
//4.手机号码
while (true) {
System.out.print("请输入手机号:");
String phoneNum=sc.next();
boolean flag3=checkPhoneNum(phoneNum);
if (flag3){
u.setPhoneNum(phoneNum);
System.out.println("phoneNumber successful!");
break;
}else {
System.out.println("电话号码错误,请重新输入");
}
}
//属性放到用户中,然后将用户放到集合中
list.add(u);
printList(list);
}
//忘记密码
private static void forgetPass(ArrayList<User> list) {
Scanner sc=new Scanner(System.in);
while (true) {
System.out.print("请输入用户名:");
String username=sc.next();
boolean flag=userOnly(list,username);
if (flag){
//用户名不存在
System.out.println("当前用户不存在,请注册");
return;
}
System.out.print("请输入身份证号码");
String identifyNum=sc.next();
System.out.print("请输入手机号码:");
String phoneNum=sc.next();
int index=checkIdentifyPhone(list,username,identifyNum,phoneNum );
if (index==-1){
System.out.println("验证未通过,请重新输入");
}
else {
System.out.println("验证通过,请重新设置密码");
System.out.print("请输入新密码:");
String newPass=sc.next();
System.out.println("请再次确认密码:");
String newPass1=sc.next();
if (newPass.equalsIgnoreCase(newPass1)){
list.get(index).setPassword(newPass);
System.out.println("修改密码成功");
break;
}
}
}
}
//用户名唯一
private static boolean userOnly(ArrayList<User> list,String username) {
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getUsername().equals(username)){
return false;
}
}
return true;
}
//检查用户名的格式
private static boolean checkName(String username) {
int len=username.length();
int count=0;
if (len<3||len>15) {
return false;
}
for (int i = 0; i < username.length(); i++) {
char c=username.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
count++;
break;
}
}
return count>0;
}
//身份证格式判断
private static boolean identifyIdNum(String identifyId) {
if (identifyId.length()!=18){
return false;
}
if (identifyId.charAt(0)=='0') {
return false;
}
for (int i = 0; i < identifyId.length()-1; i++) {
char word=identifyId.charAt(i);
if (!(word>='0'&&word<='9')){
return false;
}
}
char endChar=identifyId.charAt(identifyId.length()-1);
if ((endChar>='0'&&endChar<='9')||endChar=='x'||endChar=='X'){
return true;
}else {
return false;
}
}
//手机号判断
private static boolean checkPhoneNum(String phoneNum) {
if (phoneNum.length()!=11){
return false;
}
if (phoneNum.charAt(0)=='0'){
return false;
}
for (int i = 0; i < phoneNum.length(); i++) {
char c=phoneNum.charAt(i);
if (!(c>='0'&&c<='9')){
return false;
}
}
return true;
}
//打印集合
private static void printList(ArrayList<User> list) {
for (int i = 0; i < list.size(); i++) {
System.out.println("用户名:"+list.get(i).getUsername()+" 密码:"+list.get(i).getPassword()+" 身份证号码:"+list.get(i).getIdentifyId()+" 电话号码:"+list.get(i).getPhoneNum());
}
}
//生成验证码
private static String getCodeCheck() {
ArrayList<Character> list=new ArrayList<>();
for (int i = 0; i < 26; i++) {
list.add((char)('a'+i));
list.add((char)('A'+i));
}
StringBuilder sb=new StringBuilder();
Random r=new Random();
for (int i = 0; i < 4; i++) {
int randomIndex=r.nextInt(list.size());
char result=list.get(randomIndex);
sb.append(result);
}
int endNum=r.nextInt(10);
sb.append(endNum);
//打乱5位字符
char[]arr=sb.toString().toCharArray();
int index=r.nextInt(5);
for (int i = 0; i < arr.length; i++) {
char temp=arr[i];
arr[i]=arr[index];
arr[index]=temp;
}
return new String(arr);
}
//校验用户名和密码
//遍历集合,判断用户是否存在,如果存在登录成功,不存在就登陆失败
private static boolean checkUserPass(ArrayList<User>list,User userInfo){
for (int i = 0; i < list.size(); i++) {
User user=list.get(i);
if(user.getUsername().equalsIgnoreCase(userInfo.getUsername())&&user.getPassword().equalsIgnoreCase(userInfo.getPassword())){
return true;
}
}
return false;
}
//校验身份证号码和电话号码
private static int checkIdentifyPhone(ArrayList<User> list,String username,String identify,String phoneNum) {
for (int i = 0; i < list.size(); i++) {
if(list.get(i).getUsername().equalsIgnoreCase(username)){
if(list.get(i).getIdentifyId().equalsIgnoreCase(identify)&&list.get(i).getPhoneNum().equalsIgnoreCase(phoneNum)){
return i;
}
}
}
return -1;
}
}