java面向对象一些基本练习题4

创建一个简单的学生信息管理系统,能够实现管理员登录,修改密码,录入教师账号和密码,录入学生账号和密码,查看个人信息,查看所有账号信息;教师登录,查看个人信息,修改密码,录入学生成绩,查询学生成绩;学生登录,查看个人信息,修改个人密码。

实现方法提示:

创建一个抽象父类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;
   }
     
  }
 }
}

运行结果:

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值