创建一个简单的学生信息管理系统,能够实现管理员登录,修改密码,录入教师账号和密码,录入学生账号和密码,查看个人信息,查看所有账号信息;教师登录,查看个人信息,修改密码,录入学生成绩,查询学生成绩;学生登录,查看个人信息,修改个人密码。
实现方法提示:
创建一个抽象父类Person,包括构造方法;属性:账号,密码,权限(其取值可以取整型常量,例如有3种取值,1表示管理员,2表示教师,3表示学生);方法:属性的get和set方法,登录(静态方法,参数是用户数组,方法体中输入账号密码,验证账号密码是否在数组中存在,返回存在的那个对象,若不存在,返回null),查看个人信息(输出账号,密码),修改密码;抽象方法:操作菜单(根据用户不同执行不同的菜单功能)。由该抽象父类派生出3个子类,分别是管理员,教师,学生。
管理员类包括构造方法;录入教师或学生账号的方法;查看所有账号信息的方法;覆盖的方法:操作菜单(1修改密码,2查看个人信息,3录入教师或学生信息,4查看教师和学生信息)
教师类包括构造方法;录入学生成绩的方法;查看所有学生信息的方法;覆盖的方法:操作菜单(1修改密码,2查看个人信息,3录入学生成绩,4查看所有学生信息)
学生类包括构造方法;成绩属性;属性的get和set方法;覆盖的方法:查看个人信息的方法(要求输出账号,密码和成绩),操作菜单(1修改密码,2查看个人信息)
测试类Test:包括main方法,该方法中创建一个Person数组用来存储管理员,教师和学生,第一个元素放固定的管理员,账号为001,密码为001,权限值为1。其他元素存教师或学生,系统可以选择不同权限的角色登录完成各种功能。运行测试过程要求先用管理员账号登录,录入教师和学生信息,查看所有教师和学生信息;再用教师账号登录,录入学生成绩,查看学生信息;再用学生账号登录,修改密码,查看成绩。可以循环操作,有退出功能。
package information_systemom;
public class Dome {
public static void main(String[] args) {
// TODO Auto-generated method stub
Person[] persons = new Person[100];
persons[0] = new Manager("001","001",Person.MANAGER);
while(true) {
Person person = Person.login(persons);
if(person!=null) {
person.menu(persons);
}else {
System.out.println("登录失败");
}
System.out.println("确定退出请输入n,继续请按y");
if("N".equalsIgnoreCase(KB.scan()))break;
}
}
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class KB {
public static String scan(){
String string = "";
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try{
string = bufferedReader.readLine();
}catch(IOException e){
e.printStackTrace();
}
return string;
}
public static int scanInt(){
String string = "";
int n = 0;
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(System.in));
try{
string = bufferedReader.readLine();
n = Integer.parseInt(string);
}catch(IOException e){
//e.printStackTrace();
}
return n;
}
public static int arrayNum(Person[] p) {
int n= 0;
for(int i = 0; i<p.length;i++) {
if(p[i]!=null)n++;
}
return n ;
}
}
package information_systemom;
public abstract class Person {
private String id;
private String pwd;
private int role;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPwd() {
return pwd;
}
public void setPwd(String pwd) {
this.pwd = pwd;
}
public int getRole() {
return role;
}
public void setRole(int role) {
this.role = role;
}
public static final int MANAGER = 1;
public static final int TEACHER = 2;
public static final int STUDENT = 3;
// 有参和无参构造方法
public Person() {
super();
}
public Person(String id, String pwd, int role) {
super();
this.id = id;
this.pwd = pwd;
this.role = role;
}
public abstract void menu(Person[] person);
public void changePwd() {
System.out.println("输入新密码");
this.setPwd(KB.scan());
System.out.println("密码修改成功!");//添加的
}
public void search() {
String roles = "";
switch(role) {
case Person.MANAGER:
roles = "管理员";
break;
case Person.TEACHER:
roles = "教师";
break;
case Person.STUDENT:
roles = "学生";
break;
}
System.out.println(roles + "账号是:" + id + "\n密码是:" + pwd);
}
public static Person login(Person[] persons) {
System.out.println("请输入账号和密码:");
String name = KB.scan();
String pwd = KB.scan();
for(int i = 0;i < persons.length;i++) {
if(persons[i]!=null) {
if(name.equals(persons[i].getId())&&pwd.equals(persons[i].getPwd())) {
return persons[i];
}
}else break;
}
return null;
}
}
public class Manager extends Person{
public Manager() {
super();
}
public Manager(String id, String pwd, int role) {
super(id, pwd, role);
}
public void searchAll(Person[] persons) {
for(int i = 0; i < persons.length; i++) {
if(persons[i]!=null&&persons[i].getRole()!=Person.MANAGER) persons[i].search();
}
}
public void luru(Person[] p) {
System.out.println("录入教师1,录入学生2");
int i = Integer.parseInt(KB.scan());
System.out.println("输入要录入的账号和密码");
if(i==1) {
p[KB.arrayNum(p)]=new Teacher(KB.scan(),KB.scan(),Person.TEACHER);
}else if(i==2) {
p[KB.arrayNum(p)]=new Student(KB.scan(),KB.scan(),Person.STUDENT);
}
System.out.println("录入成功!");
}
@Override
public void menu(Person[] persons) {
// TODO Auto-generated method stub
boolean flag = true;
while(flag) {
System.out.println("1修改密码,2查看个人信息,3录入教师或学生信息, 4查看教师和学生信息,5退出以上操作");
int i = KB.scanInt();
switch(i) {
case 1:
this.changePwd();
break;
case 2:
this.search();
break;
case 3:
this.luru(persons);
break;
case 4:
this.searchAll(persons);
break;
default:
flag = false;
break;
}
}
}
}
package information_systemom;
public class Teacher extends Person{
public Teacher() {
super();
}
public Teacher(String id, String pwd, int role) {
super(id, pwd, role);
}
public void luru (Person[] persons) {
System.out.println("输入要录入的学生的账号");
String name = KB.scan();
for(int i= 0;i<persons.length;i++) {
if(persons[i]!=null&&persons[i].getId().equals(name)&&persons[i].getRole()==Person.STUDENT) {
System.out.println("输入要录入的学生成绩:");
((Student)persons[i]).setScore(KB.scanInt());
System.out.println("成绩录入成功!");//添加的
}
}
}
public void searchAll(Person[] persons) {
for (int i = 0;i<KB.arrayNum(persons);i++) {
if(persons[i]!=null&&persons[i].getRole()==Person.STUDENT) persons[i].search();
}
}
@Override
public void menu(Person[] persons) {
// TODO Auto-generated method stub
boolean flag = true;
while(flag) {
System.out.println("1修改密码,2查看个人信息,3录入学生成绩,4查看所有学生信息,5退出以上操作");
int i = KB.scanInt();
switch(i) {
case 1:
this.changePwd();
break;
case 2:
this.search();
break;
case 3:
this.luru(persons);
break;
case 4:
this.searchAll(persons);
break;
default:
flag = false;
break;
}
}
}
}
package information_systemom;
public class Student extends Person {
private int score;
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public Student() {
super();
}
public Student(String id, String pwd, int role) {
super(id, pwd, role);
}
@Override
public void search() {
super.search();
System.out.println("成绩是:"+score);
}
@Override
public void menu(Person[] person) {
// TODO Auto-generated method stub
boolean flag = true;
while(flag) {
System.out.println("1修改密码,2查看个人信息,3退出以上操作");
int i = KB.scanInt();
switch(i) {
case 1:
this.changePwd();
break;
case 2:
this.search();
break;
default:
flag = false;
break;
}
}
}
}
运行结果: