Java初学五天创建的一个学生登陆系统,现在学到封装,基于之前的知识做的小项目,水平有限,还请各位多多指正,初学者共同交流,一起进步


文章目录

  • 一、学生登陆系统的思路
  • 二、思想步骤
  • 1.账号密码
  • 2.系统功能



一、学生登陆系统的思路

##1.账号用户名
##2.系统功能(学生查询成绩,课表,修改登录密码;老师添加删除学生老师账号)

二、思想步骤

1.账号密码

登陆系统肯定要有账号和密码才能进行登陆
定义一个类Users,属性为账号和密码,进行封装调用set/get函数,这里出于熟悉知识的目的我再创建了一个构造函数
由于学生要查询成绩课表,就加入了成绩和课表两个属性

代码如下(示例):

public class Users {
	//账号,密码
	private String user;
	private String password;
	private double grade;
	private String schedul;
	
	//get set函数
	public String getUser() {
		return user;
	}
	public void setUser(String user) {
		this.user = user;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	
	//构造函数
	public Users() {
		// TODO Auto-generated constructor stub
	}
	public Users(String user,String password) {
		this.user=user;
		this.password=password;
	}

2.系统功能

1.存储用户信息
即创建用户在系统内部,首先创建一个系统类,这里采用数组的方式进行构造存储用户,并对用户进行初始化操作

public class Manage {
		Users[] students=new Users[5];
		Users[] teachers=new Users[2];
		//用户的个数
		private int size1=4;
		private int size2=2;
		
		//初始化
		public void initial() {
			//创建用户1
			Users student1=new Users("11111", "111111");
			Users student2=new Users("22222", "222222");
			Users student3=new Users("33333", "333333");
			Users student4=new Users("44444", "444444");
			Users teacher1=new Users("55555", "555555");
			Users teacher2=new Users("66666", "666666");
			students[0]=student1; 
			students[1]=student2; 
			students[2]=student3; 
			students[3]=student4; 
			teachers[0]=teacher1; 
			teachers[1]=teacher2; 
			System.out.println("初始化完成");
			login();
		}

2.用户初始化完成,开始写登陆功能
创建名为login的函数,要登陆就要用键盘,所以选择Scanner。基本思想是当用户输入的账号和密码,在第一步所存储的用户信息里能够找到,便判定为登陆成功,否则失败,再根据不同的数组找到的内容判定为进入学生系统或是教师系统。

public void login(){
			Scanner input = new Scanner(System.in);
			System.out.println("请输入账号");
			String user=input.next();
			System.out.println("请输入密码");
			String password=input.next();
			Users users=null;
			int N=0;
			for(int i=0;i<size1;i++) {
				if(students[i].getUser().equals(user)&&students[i].getPassword().equals(password)) {
					//进入学生系统
					N=1;
					users=students[i];
					break;
				}
			}
			for(int j=0;j<size2;j++) {
				if(teachers[j].getUser().equals(user)&&teachers[j].getPassword().equals(password)) {
					//进入教师系统
					users=teachers[j];
					N=2;
					break;
				}
			}
			switch (N) {
				case 1: {
					System.out.println("登陆成功,进入学生系统");
					studentSystem(users);
					break;
							}
				case 2: {
					System.out.println("登陆成功,进入教师系统");
					teacherSystem(users);
					break;
				}
				default:
					System.out.println("登陆失败,账号或用户名错误");
					break;
				}
			}

3.学生,老师界面,上一步中进入不同的系统,就要分别写两个系统的功能,实际上都是类似的,篇幅长大家可能都不想看,这里贴出学生界面代码

//学生界面
		public void studentSystem(Users users) {
			System.out.println("=======欢迎进入学生界面=======");
			System.out.println("请选择您要进行的操作\n1.查询课程成绩  2.查询课表  3.修改密码");
			Scanner input=new Scanner(System.in);
			int choice=input.nextInt();
			switch (choice) {
			case 1: {
				grades(users);
				break;
			}
			case 2: {
				schedul(users);
				break;
			}
			case 3: {
				fixPassword(users);
				break;
			}
			default:
				System.out.println("输入错误,请重新输入");
				break;
			}
			}

3.学生功能1:修改密码
在本例中修改密码的思想是重新赋值学生的password属性,获取键盘上输入的新密码,来替换掉原密码

public void fixPassword(Users users) {
			System.out.println("当前为修改密码,请输入原密码");
			Scanner input=new Scanner(System.in);
			String password=input.next();
			if(users.getPassword().equals(password)) {
				System.out.println("请输入新密码");
				String newPasswordString=input.next();
				users.setPassword(newPasswordString);
				System.out.println("密码修改成功");
			}else {
				System.out.println("密码错误请重新输入");
			}
		}

4.教师功能1:添加学生
当登陆到教师系统后,通过获取新学生的账号密码,赋值到Students[size1],此时学生数组含有的用户个数+1;

//教师功能1,添加学生
		public void addStudent(Users users) {
			System.out.println("当前为添加学生");
			Scanner input =new Scanner(System.in);
			System.out.println("请输入新学生的账号");
			String newStudentUser=input.next();
			System.out.println("请输入新学生的密码");
			String newStudentPassword=input.next();
			Users newStudent=new Users(newStudentUser,newStudentPassword);
			students[size1]=newStudent;
			size1++;
			System.out.println("添加成功");
		}

5.教师功能2:删除学生
删除学生与增加学生类似,但是需要Students数组内容进行移动。删除学生,学生数组的用户个数-1;

//教师功能2,删除学生
		public void deleteStudent(Users users) {
			System.out.println("当前为删除学生,请输入要删除学生的账号");
			Scanner input = new Scanner(System.in);
			String user = input.next();
			//判断是否找到
			boolean n=false;
			for(int i=0;i<size1-1;i++) {
				if(students[i].getUser().equals(user)) {
					for(int j=i;j<size1-1;j++) {
						students[j]=students[j+1];
						n=true;
						System.out.println("剩余学生"+students[j].getUser());
					}
				}else {
						System.out.println("未搜索到该学生,请重新输入");
					}
				break;
				}
			if(n==true) {
				size1--;
			}
			}

6.增加老师,删除老师,与增加学生删除学生类似,不再重复
7.学生端功能:查询课表,查询成绩

水平有限,不知道怎么写,感觉按现在所学到的,直接在初始化里定义很麻烦,望各位指点。

8.不足项:
①程序运行后无法返回,比如在选择进入某个操作的时候如果选择错了,无法返回上一级。
②无法进行内容的保存,比如修改密码后,再次启动依旧回到初始化状态。
③由于是初学者,会存在各种问题,希望大家一起交流,欢迎指正各种问题,交流优化方法。