一:问题描述
写一个学生管理系统,并且带有登录操作,登录包括注册,登录和忘记密码三部分,注册要填写用户名,手机号,密码,注册时要检查用户名,手机号,密码,格式是否正确,登录时要检查填写的用户名和密码是否匹配。
二:代码如下
import java.util.ArrayList;
import java.util.Random;
import java.util.Scanner;
public class Studentsystem {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
ArrayList<User> 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("请选择想要的序号:");
String choose=sc.next();
User us=new User();
switch(choose){
case "1":{
System.out.println("欢迎来到注册模式");
int num=0;
while (true) {
System.out.println("请输入要注册的用户名(用户名长度在3-15之间,且不能为纯数字):");
num++;
String username=sc.next();
boolean flag1=contains(list,username);//判断用户名是否存在
if(flag1){
System.out.println("该用户名已存在,请重新输入");
continue;
}
boolean flag2=checkusername(username);
if(!flag2){
System.out.println("输入的用户名格式不正确,请重新输入");
continue;
}
boolean flag3=haveusername(username);
if(!flag3){
System.out.println("输入的用户名格式不正确,请重新输入");
continue;
}
us.setUsername(username);
System.out.println("用户名注册成功,请输入其他数据!");
while (true) {
System.out.println("请输入密码");
String password=sc.next();
System.out.println("请再次输入密码");
String apassword=sc.next();
if(!password.equals(apassword)){
System.out.println("密码输入失败,请重新输入");
continue;
}
us.setUserpassword(apassword);
System.out.println("密码输入成功!");
break;
}
while (true) {
System.out.println("请输入手机号");
String phonenumber=sc.next();
boolean flag4=checkphonenumber(phonenumber);
if(!flag4){
System.out.println("手机号格式不正确,请重新输入!");
continue;
}
us.setPhonenumber(phonenumber);
while (true) {
System.out.println("验证码如下:");
String code=getcode();
System.out.println(code);
System.out.println("请输入收到的验证码(不区分大小写)!");
String writecode=sc.next();
if(!code.equalsIgnoreCase(writecode)){
System.out.println("验证码输入错误,请重新输入!");
continue;
}
System.out.println("验证码输入正确!");
break;
}
System.out.println("手机号注册成功!");
break;
}
break;
}
list.add(us);
System.out.println("用户注册成功!");
break;
}
case "2":{
System.out.println("欢迎来到登录模式");
System.out.println("请输入用户名:");
String username=sc.next();
Boolean flag5=contains(list,username);
if(!flag5){
System.out.println("用户名未注册,请先注册!");
break;
}
int a=getindex(list,username);
int i=1;
while (i<=3) {
System.out.println("请输入密码:");
String password=sc.next();
if(!list.get(a).getUserpassword().equals(password)){
System.out.println("密码错误,您还有"+(3-i)+"次机会!");
i++;
continue;
}
System.out.println("密码正确,登陆成功!");
Studenttest s=new Studenttest();
s.studesystem();
break loop;
}
break;
}
case "3":{
System.out.println("忘记密码");
System.out.println("请输入要修改的账号的用户名");
String removeusername=sc.next();
boolean flag6=contains(list,removeusername);
if(!flag6){
System.out.println("该用户名还未注册,请先注册!");
break;
}
while (true) {
System.out.println("请输入注册该用户名时所用的手机号");
String pnumber=sc.next();
int index=getindex(list,removeusername);
if(!list.get(index).getPhonenumber().equals(pnumber)){
System.out.println("用户名与手机号不匹配,请重新输入!");
continue;
}
String newpassword;
while (true) {
System.out.println("手机号验证成功,请输入修改后的密码!");
newpassword=sc.next();
System.out.println("请再次输入新密码");
String againnewpassword=sc.next();
if(!newpassword.equals(againnewpassword)){
System.out.println("两次密码输入不一致,请重新输入!");
continue;
}
break;
}
us.setUserpassword(newpassword);
list.add(us);
System.out.println("密码修改成功!");
break;
}
break;
}
case "4":{
System.out.println("退出成功!");
break loop;
}
default:{
System.out.println("输入的选择不正确,请重新输入!");
break;
}
}
}
}
public static Boolean contains(ArrayList<User> list,String username){
for (int i = 0; i < list.size(); i++) {
User u=list.get(i);
if(u.getUsername().equals(username)){
return true;
}
}
return false;
}//判断用户名是否存在
public static Boolean checkusername(String username){
int l=username.length();
if(l<3||l>15){//用户名在3-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')||(c>='0'&&c<='9')){
return false;
}
}
return true;
}//判断用户名是否正确
public static Boolean haveusername(String username){
int num=0;
for (int i = 0; i < username.length(); i++) {
char c=username.charAt(i);
if((c>='a'&&c<='z')||(c>='A'&&c<='Z')){
num++;
break;
}
}
return num>0;
}//判断用户名是否全是数字和字母组成
public static Boolean checkphonenumber(String phonenumber){//判断手机号格式是否正确
if(phonenumber.charAt(0)=='0'){
return false;
}
for (int i = 0; i < phonenumber.length(); i++) {
char c=phonenumber.charAt(i);
if(!(c>='0'&&c<='9')){
return false;
}
}
return true;
}//判断手机号格式是否正确
public static String getcode(){
ArrayList<Character> list=new ArrayList<>();
for (int i = 0; i < 26; i++) {
list.add((char)('a'+i));
list.add((char)('A'+i));
}
StringBuilder stb=new StringBuilder();
Random r=new Random();
for(int i=0;i<4;i++){
int index=r.nextInt(list.size());
char c=list.get(index);
stb.append(c);
}
int num=r.nextInt(10);
stb.append(num);
char [] arr=stb.toString().toCharArray();
int randomindex=r.nextInt(arr.length);
char ch=arr[randomindex];
arr[randomindex]=arr[4];
arr[4]=ch;
return new String(arr);
}//得到手机验证码
public static int getindex(ArrayList<User> list,String username){
for (int i = 0; i < list.size(); i++) {
User u=list.get(i);
if(u.getUsername().equals(username)){
return i;
}
}
return -1;
}//或得用户名索引
}
class Studentsys {
private String id;
private String name;
private int age;
private String address;
public Studentsys(String id, String name, int age, String address) {
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
public Studentsys() {
}
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;
}
}
class Studenttests {
public static void studesystem() {
ArrayList<Studentsys> 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.println("6.退出");
System.out.println("请输入想要选择的数字");
Scanner sc = new Scanner(System.in);
String choose = sc.next();
switch (choose) {
case "1": {
System.out.println("欢迎来到添加学生信息模式");
addstudent(list);//添加信息的函数
break;
}
case "2": {
System.out.println("欢迎来到删除学生信息模式");
Scanner sr=new Scanner(System.in);
System.out.println("请输入要删除的学生的id号");
String id=sr.next();
deletestudent(list,id);//删除信息的函数
break;
}
case "3": {
System.out.println("欢迎来到查询学生信息模式");
System.out.println("请输入要查询的学生的id号");
Scanner s=new Scanner(System.in);
String id2=s.next();
findstudent(list,id2);//查找信息的函数
break;
}
case "4": {
System.out.println("欢迎来到修改学生信息模式");
Scanner sn=new Scanner(System.in);
System.out.println("请输入要修改的学生的id号");
String id3=sc.next();
revisestudent(list,id3);//修改学生信息函数
break;
}
case "5": {
printstudent(list);//打印信息函数
break;
}
case "6": {
System.out.println("退出系统");
break loop;
}
default:
System.out.println("输入错误,请重新输入");
}
}
}
public static void addstudent(ArrayList<Studentsys> list){
Studentsys s= new Studentsys();
Scanner sc=new Scanner(System.in);
System.out.println("请输入要添加的学生id");
String id=sc.next();
Boolean flag=isexistence(list,id);//判断要添加的学生id号是否已存在
if(flag==true){
System.out.println("该id号已存在,请重新输入");
return;
}
s.setId(id);
System.out.println("请输入要添加的学生姓名");
String name=sc.next();
s.setName(name);
System.out.println("请输入要添加的学生年龄");
int age=sc.nextInt();
s.setAge(age);
System.out.println("请输入要添加的学生家庭住址");
String address=sc.next();
s.setAddress(address);
list.add(s);
System.out.println("学生信息添加成功!");
}
public static void deletestudent(ArrayList<Studentsys> list, String id){
if(list.size()==0){
System.out.println("当前无学生信息,请先添加学生信息");
return;
}
int flag=findid(list,id);//找到输入id号在集合中的索引
if(flag==-1){
System.out.println("该id号不存在,请重新输入!");
return;
}
else{
list.remove(flag);
}
System.out.println("学生信息删除成功!");
}
public static void findstudent(ArrayList<Studentsys> list, String id){
int flag=findid(list,id);
Studentsys stu=list.get(flag);
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getAddress());
}
public static void revisestudent(ArrayList<Studentsys> list, String id){
int flag=findid(list,id);
if(flag==-1){
System.out.println("要修改的学生id号不存在,请重新输入");
return;
}
Studentsys stu=list.get(flag);
Scanner sc=new Scanner(System.in);
System.out.println("请输入要修改的学生的名字");
String newname=sc.next();
stu.setName(newname);
System.out.println("请输入要修改的学生的年龄");
int newage=sc.nextInt();
stu.setAge(newage);
System.out.println("请输入要修改的学生的家庭住址");
String newaddress=sc.next();
stu.setAddress(newaddress);
System.out.println("学生信息修改成功!");
}
public static void printstudent(ArrayList<Studentsys> list){
System.out.println("打印学生信息");
System.out.println("id\t姓名\t年龄\t家庭住址\t");
for (int i = 0; i < list.size(); i++) {
Studentsys stu=list.get(i);
System.out.println(stu.getId()+"\t"+stu.getName()+"\t"+stu.getAge()+"\t"+stu.getAddress());
}
}
public static boolean isexistence(ArrayList<Studentsys> list, String id){
for (int i = 0; i < list.size(); i++) {
Studentsys stu=list.get(i);
String sid=stu.getId();
if(sid==id){
return true;
}
}
return false;
}
public static int findid(ArrayList<Studentsys> list, String id){//找某个id号在集合中的索引值
for (int i = 0; i < list.size(); i++) {
Studentsys s=list.get(i);
String sid=s.getId();
if(sid.equals(id)){
return i;
}
}
return -1;
}
}
class User {
private String username;
private String userpassword;
private String phonenumber;
public User() {
}
public User(String username, String userpassword, String phonenumber) {
this.username = username;
this.userpassword = userpassword;
this.phonenumber = phonenumber;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getUserpassword() {
return userpassword;
}
public void setUserpassword(String userpassword) {
this.userpassword = userpassword;
}
public String getPhonenumber() {
return phonenumber;
}
public void setPhonenumber(String phonenumber) {
this.phonenumber = phonenumber;
}
}
三:最终结果