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

实现方法提示:

创建一个抽象父类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 stubPerson[] 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("录入成功!");}@Overridepublic void menu(Person[] persons) {// TODO Auto-generated method stubboolean 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();}}@Overridepublic void menu(Person[] persons) {// TODO Auto-generated method stubboolean 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);}@Overridepublic void search() {super.search();System.out.println("成绩是:"+score);}@Overridepublic void menu(Person[] person) {// TODO Auto-generated method stubboolean 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;}}}
}

运行结果:

java面向对象一些基本练习题4相关推荐

  1. java面向对象一些基本练习题6

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

  2. java面向对象上机题库_Java面向对象编程上机-练习题汇总

    Java面向对象编程上机-练习题汇总 [练习题1]类的成员变量: 猜数字游戏:一个类A有一个成员变量v,有一个初值100.定义一个类,对A类的成员变量v进行猜.如果大了则提示大了,小了则提示小了.等于 ...

  3. Java面向对象练习题

    练习题 题目分析 总结 题目分析 一. 定义一个Hero类 属性有 power,name,分别代表体力值和英雄的名子,体力值默认为100: 方法有 1.void go(); //行走的方法,如果体力值 ...

  4. java面向对象 程序设计题_java面向对象程序设计练习题

    java面向对象程序设计练习题 [练习题]01.类的成员变量 猜数字游戏 一个类 A 有一个成员变量 v有一个初值100.定义一个类 对 A 类的成员变量 v 进行猜.如果大了则提示大了 小 ...

  5. 【Java】Java学习笔记(2)——Java面向对象基础作业函数题

    本人私人博客:Megalomania,大部分文章会现在博客上传,有不足之处欢迎指正. 学校小学期Java课程的练习题,留个档便于以后需要时候有例子可以回忆,写的烂的地方请多多包含 1.求两个数值之和 ...

  6. java面向对象程序设计 习题答案_Java面向对象程序设计习题解答与实验 张桂珠.pdf...

    Java 面 向对 象 程 序 设 计 习题 解 答 与 实验 张桂珠 姚晓峰 陈爱国 主编 北 京 邮 电 大 学 出 版 社 ·北 京· 内 容 简 介 Java 面向对象程序设计需要做大量的练习 ...

  7. java面向对象-------静态初始化块

    1.构造方法用于对象的初始化!静态初始化块,用于类的初始化操作,在静态初始化块中不能直接访问非static成员. package java面向对象; /** * 测试静态初始化块 */public c ...

  8. JAVA面向对象-----final关键字

    JAVA面向对象-–final关键字 1:定义静态方法求圆的面积 2:定义静态方法求圆的周长 3:发现方法中有重复的代码,就是PI,圆周率.1:如果需要提高计算精度,就需要修改每个方法中圆周率. 4: ...

  9. Java学习笔记二十五:Java面向对象的三大特性之多态

    Java面向对象的三大特性之多态 一:什么是多态: 多态是同一个行为具有多个不同表现形式或形态的能力. 多态就是同一个接口,使用不同的实例而执行不同操作. 多态性是对象多种表现形式的体现. 现实中,比 ...

最新文章

  1. 转载 Sqlerver 计算 MD5
  2. NSIS中判断.net framework 是否安装
  3. labelme数据增强_NO. 21 标注工具 amp; 合成数据生成工具
  4. 诺贝尔化学奖得主田中耕一的故事
  5. #获得请求来源ip_以太网数据包TCP、IP、ICMP、UDP、ARP协议头结构详解
  6. Unity3D之NGUI基础5.1:代码控制UISprite
  7. ASP.NET:创建Linked ValidationSummary, 深入理解ASP.NET的Validation
  8. ios:uibutton 中title 和image 共存那点事
  9. 计算机常用文献管理工具,工具丨5款常用的文献管理软件
  10. “虚度”一下时光,给老友写封信
  11. React-Router 刷新后报错 or Cannot GET /detail
  12. linux系统安装全局翻译,CentOS 6.4下安装翻译软件StarDict
  13. MFC实现FTP客户端
  14. java实现微软文本转语音(TTS)经验总结
  15. linux 查询文件大小大于1g_必备linux命令有哪些?你了解多少
  16. assoc在php中,在PHP中使用array_diff_assoc函数
  17. 中国SaaS企业排名,龙头企业Top10梳理
  18. 【LogiSim】便利的仿真软件,有了这个我又对硬件有了兴趣~
  19. Python实现停车场管理系统
  20. 风险管理系列课程二:利用图技术优化反洗钱解决方案

热门文章

  1. JSP学习并实现的过程--day01
  2. 【10月月赛T9】射命丸文
  3. 做了五年Android,我顿悟了...
  4. python编程 迷你世界_迷你世界迷你编程
  5. 常用计算机制图软件,常用的电脑画图软件有什么?
  6. word参考文献交叉引用的多项引用,改逗号和破折号形式
  7. 26万人的巨复杂考勤自动核算,比亚迪搞定了!
  8. 磁力机航向角计算与补偿
  9. 数据仓库工具箱 第10节 金融服务
  10. Pandas数据探索