创建一个简单的学生信息管理系统,能够实现管理员登录,修改密码,录入教师账号和密码,录入学生账号和密码,查看个人信息,查看所有账号信息;教师登录,查看个人信息,修改密码,录入学生成绩,查询学生成绩;学生登录,查看个人信息,修改个人密码。(是java面向对象一些基本练习题4的一些修改,所有使用到Person数组的地方,用集合类对象取代,建议使用ArrayList类。)
我的答案:
package information_systemom2;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
public class Dome {
public static void main(String[] args) {
ArrayList<Integer> persons = new ArrayList<Integer>(100);
persons.add((Collection)new Manager("001","001",Person.MANAGER));
while(true) {
Integer 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;
}
}
}
package information_systemom2;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
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(ArrayList<Integer> p) {
int n= 0;
for(int i = 0; i<p.size();i++) {
if(p.get(i)!=null)n++;
}
return n ;
}
}
package information_systemom2;
import java.util.ArrayList;
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(ArrayList<Integer> 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 Integer login(ArrayList<Integer> persons) {
System.out.println("请输入账号和密码:");
String name = KB.scan();
String pwd = KB.scan();
for(int i = 0;i < persons.size();i++) {
if(persons.get(i)!=null) {
if(name.equals(persons.get(i).getId())&&pwd.equals(persons.get(i).getPwd())) {
return persons.get(i);
}
}else break;
}
return null;
}
}
package information_systemom2;
import java.util.ArrayList;
public class Manager extends Person{
public Manager() {
super();
}
public Manager(String id, String pwd, int role) {
super(id, pwd, role);
}
public void searchAll(ArrayList<Integer> persons) {
for(int i = 0; i < persons.size(); i++) {
if(persons.get(i)!=null&&persons.get(i).getRole()!=Person.MANAGER) persons.get(i).search();
}
}
public void luru(ArrayList<Integer> persons) {
System.out.println("录入教师1,录入学生2");
int i = Integer.parseInt(KB.scan());
System.out.println("输入要录入的账号和密码");
if(i==1) {
persons[KB.arrayNum(persons)]=new Teacher(KB.scan(),KB.scan(),Person.TEACHER);
}else if(i==2) {
persons[KB.arrayNum(persons)]=new Student(KB.scan(),KB.scan(),Person.STUDENT);
}
System.out.println("录入成功!");
}
@Override
public void menu(ArrayList<Integer> 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_systemom2;
import java.util.ArrayList;
public class Teacher extends Person{
public Teacher() {
super();
}
public Teacher(String id, String pwd, int role) {
super(id, pwd, role);
}
public void luru (ArrayList<Integer> persons) {
System.out.println("输入要录入的学生的账号");
String name = KB.scan();
for(int i= 0;i<persons.size();i++) {
if(persons.get(i)!=null&&persons.get(i).getId().equals(name)&&persons.get(i).getRole()==Person.STUDENT) {
System.out.println("输入要录入的学生成绩:");
(persons.get(i)).setScore(KB.scanInt());
System.out.println("成绩录入成功!");//添加的
}
}
}
public void searchAll(ArrayList<Integer> persons) {
for (int i = 0;i<KB.arrayNum(persons);i++) {
if(persons.get(i)!=null&&persons.get(i).getRole()==Person.STUDENT) persons.get(i).search();
}
}
@Override
public void menu(ArrayList<Integer> 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_systemom2;
import java.util.ArrayList;
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(ArrayList<Integer> 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;
}
}
}
}
这里其中还有一些bug,希望能多多指正,谢谢。