使用Java实现面向对象编程
源码展示:
package cdjj.s2t075.com;
import java.util.Scanner;
public class Door {
/*
* Door为门类
* 它包括:开门和关门的操作
* 然而,因为要通过记录Person输入的信息,交由
* Computer计算机类进行处理,之后,再交由Door门类
* 进行处理所以Person要继承于Computer类,Computer类又要
* 继承于Door类
*/
private String status=CLOSE;//定义门为关闭状态
public static final String CLOSE="门已打开";//定义门打开的时候
public static final String OPEN="门已关闭";//定义开门关闭的时候
private String noise;//响铃
public String getNoise() {
return noise;
}
public void setNoise(String noise) {
this.noise = noise;
}
public Door(){
/*
* 定义一个无参的构造函数
*/
}
public Door(String noise){
/*
* 定义一个带参数的构造函数
*/
this.noise=noise;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public void Do(){
System.out.println("这个门是一个全自动的哦...");
}
}
package cdjj.s2t075.com; public class AddEmp extends Admin {
/*
* DeleteEmp为增加内部人员信息
* 可实现增加内部人员操作
* 它继承于Admin高级用户类
*/
public void addemp() throws InterruptedException{
System.out.println("正在增加信息中...");
java.lang.Thread.sleep(5000);
System.out.println("此方法实现增加员工信息");
}
}
AddEmp
package cdjj.s2t075.com; public class Admin {
/*
*Admin为高级用户,他可以实现开门的动作(无限制的)
*而且,他还可以实现对内部人员的增、删、改的操作
*所以,其拥有很高的权限
*/
private String update;//修改信息操作
private String delete;//删除信息操作
private String add;//增加信息操作
private String adminOpen;//高级用户实现开门的操作
public String getUpdate() {
return update;
}
public void setUpdate(String update) {
this.update = update;
}
public String getDelete() {
return delete;
}
public void setDelete(String delete) {
this.delete = delete;
}
public String getAdd() {
return add;
}
public void setAdd(String add) {
this.add = add;
}
public String getAdminOpen() {
return adminOpen;
}
public void setAdminOpen(String adminOpen) {
this.adminOpen = adminOpen;
}
public Admin(){
/*
* 定义一个无参的构造函数
*/
}
public Admin(String update,String delete,String add,String AdminOpen){
/*
* 定义一个带参数的构造函数
*/
this.update=update;
this.delete=delete;
this.add=add;
this.adminOpen=AdminOpen;
}
public void Do(){
System.out.println("这个为高级用户,可进行特殊的操作");
}
}
Admin
package cdjj.s2t075.com; public class AdminOpenDoor extends Admin {
/*
* AdminOpenDoor为高级用户
* 可实现开门操作(无限制)
* 它继承于Admin高级用户类
*/
public void adminOpen() throws InterruptedException{
/*
* 高级用户实现开门的方法
*/
System.out.println("管理员,正在开门...");
java.lang.Thread.sleep(5000);
System.out.println("此时,门已经打开...");
}
}
AdminOpenDoor
package cdjj.s2t075.com; public class CloseDoor extends Door {
/*
* CloseDoor类为关门的操作
* 它继承与Door门类
*/
public void close() throws InterruptedException{
/*
* 实现关门的方法
*/
if(super.CLOSE.equals("门已打开")){
System.out.println("门的状态为...");
java.lang.Thread.sleep(5000);
System.out.println("此时门为关闭状态...");
super.setStatus("门已关闭");
}
} }
CloseDoor
package cdjj.s2t075.com;
import java.util.Scanner;
public class Computer extends Door {
/*
* Computer为计算机类
* 它可以实现获得数据、处理数据、返回数据、保存数据
* 并且,记录历史数据信息的操作
* 然而,因为要通过记录Person输入的信息,交由
* Computer计算机类进行处理,之后,再交由Door门类
* 进行处理所以Person要继承于Computer类,Computer类又要
* 继承于Door类
*/
public void Do(){
Scanner scan=new Scanner(System.in);
System.out.println("请选择你的操作【温馨提示:1保存信息 2删除信息 3处理信息 4获得信息】");
int temp1=scan.nextInt();
while(temp1>4 ||temp1<1){
if(temp1==1){
SaveInfo save=new SaveInfo();
save.saveInfo();
}
else if(temp1==2){
DeleteEmp del=new DeleteEmp();
try {
del.delete();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
else if(temp1==3){
GainInfo grain=new GainInfo();
grain.Gain();
}
else if(temp1==4){
UpdateEmp up=new UpdateEmp();
up.updateEmp();
}
}
System.out.println("是否退出此操作?【温馨提示:输入数字大于4或小于1即退出,否则,不成立】");
temp1=scan.nextInt();
} private String save;//计算机的保存信息操作
private String del;//计算机的删除信息操作
private String treat;//计算机的处理信息操作
private String giveInfo;//计算机的获得信息操作
public String getSave() {
return save;
}
public void setSave(String save) {
this.save = save;
}
public String getDel() {
return del;
}
public void setDel(String del) {
this.del = del;
}
public String getTreat() {
return treat;
}
public void setTreat(String treat) {
this.treat = treat;
}
public String getGiveInfo() {
return giveInfo;
}
public void setGiveInfo(String giveInfo) {
this.giveInfo = giveInfo;
}
public Computer(){
/*
* 定义一个无参数的构造函数
*/
}
public Computer(String save,String del,String treat,String giveInfo){
/*
* 定义一个带参的构造函数
*/
this.save=save;
this.del=del;
this.treat=treat;
this.giveInfo=giveInfo;
} }
Computer
package cdjj.s2t075.com; public class DeleteEmp extends Admin{
/*
* DeleteEmp为删除内部人员信息
* 可实现删除内部人员操作
* 它继承于Admin高级用户类
*/
public void delete() throws InterruptedException{
System.out.println("正在删除信息中...");
java.lang.Thread.sleep(5000);
System.out.println("此方法实现删除员工信息操作");
}
}
DeleteEmp
package cdjj.s2t075.com; public class DoorFinger extends Person {
/*
* DoorFinger类为指纹验证
* 它要继承于Person人类
*/
public void Finger() throws InterruptedException{
/*
* 指纹验证信息
*/
if(super.temp.length()==1){//指纹验证信息判断
System.out.println("指纹验证中,请稍后...");
java.lang.Thread.sleep(5000);
System.out.println("指纹验证通过...");
}
}
}
DoorFinger
package cdjj.s2t075.com; public class DoorPwd extends Person {
/*
* DoorPwd类为录入密码
* 它要继承于Person人类
*/
public void Pwd() throws InterruptedException{
/*
* 密码验证信息
*/
if(super.temp=="123456"){//高级用户密码判断
System.out.println("密码中,请稍后...");
java.lang.Thread.sleep(5000);
System.out.println("密码验证已通过..."); // }
// else if(super.temp==){//一般用户判断
}
}
}
DoorPwd
package cdjj.s2t075.com; public class DoorRing extends Person {
/*
* DoorRing类为按门铃
* 它要继承于Person人类
*/ public void input() throws InterruptedException{
/*
*输入信息
*/
if(super.temp==""){//呼叫信息判断
System.out.println("门铃响了:叮咚,叮咚...");
java.lang.Thread.sleep(5000);
System.out.println("呼叫信息已发出...");
}
} }
DoorRing
package cdjj.s2t075.com;
import java.awt.Component;
import java.util.*;
import javax.swing.JOptionPane;
public class DorrTest { /**
* 门禁系统测试类
* @param args
* @throws InterruptedException
*/
public static void main(String[] args) throws InterruptedException {
// TODO Auto-generated method stub
Scanner input=new Scanner(System.in);
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.println("\t\t\t门禁系统");
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * * * * *");
System.out.println("是否想进入该系统?【温馨提示 y 想进入 n 不想进入】");
String answer=input.next();
while(answer.equals("y")){
System.out.println("请输入你想了解某个信息【爱心提示:Person人类 Door门类 Admin高级用户类 Computer计算机类】");
String answer1=input.next();
if(answer1.equals("Person")){
Person person=new Person();
person.pressRing();
person.Do(); System.out.println("是否想细致的了解:Person人类、Door门类、Admin高级用户类、Computer计算机类?【温馨提示 y 想进入 n 不想进入】");
String answer2=input.next();
while(answer2.equals("y")){
System.out.println("请选择你要了解的项:DoorRing响铃类、DoorPwd密码类、DoorFinger指纹类?");
String a1=input.next();
if(a1.equals("DoorRing")){
DoorRing doorring=new DoorRing();
doorring.Do();
doorring.pressRing();
doorring.input();
}
else if(a1.equals("DoorPwd")){
DoorPwd doorPwd=new DoorPwd();
doorPwd.Do();
doorPwd.pressRing();
doorPwd.Pwd(); }
else if(a1.equals("DoorFinger")){
DoorFinger finger=new DoorFinger();
finger.Do();
finger.Finger();
finger.pressRing();
}
}
System.out.println("是否想退出此操作?【温馨提示 y 不想退出 n 想退出】");
answer2=input.next();//温馨提示用户 }
else if(answer1.equals("Door")){
Door door=new Door();
door.Do();
System.out.println("是否想细致的了解:Person人类、Door门类、Admin高级用户类、Computer计算机类?【温馨提示 y 想进入 n 不想进入】");
String answer3=input.next();
while(answer3.equals("y")){
System.out.println("请选择你要了解的项:CloseDoor关门类、OpenDoor开门类?【温馨提示:y是 n否】");
String a3=input.next();
while(a3.equals("y")){
if(a3.equals("CloseDoor")){
CloseDoor closedoor=new CloseDoor();
closedoor.Do();
closedoor.close();
}
else if(a3.equals("OpenDoor")){
OpenDoor opendoor=new OpenDoor();
opendoor.Do();
opendoor.open();
}
}
System.out.println("是否想退出此操作?【温馨提示:y是 n否】");
a3=input.next();
}
System.out.println("是否想退出此操作?【温馨提示 y 不想退出 n 想退出】");
answer3=input.next();//温馨提示用户 }
else if(answer1.equals("Computer")){
Computer computer=new Computer();
computer.Do();
System.out.println("是否想细致的了解:Person人类、Door门类、Admin高级用户类、Computer计算机类?【温馨提示 y 想进入 n 不想进入】");
String answer4=input.next();
while(answer4.equals("y")){
System.out.println("请选择你要了解的项:Person人类、Door门类、Admin高级用户类、Computer计算机类?");
String a4=input.next();
if(a4.equals("ReturnInfo")){
ReturnInfo returninfo=new ReturnInfo();
returninfo.Do();
returninfo.returnInfo();
}
else if(a4.equals("SaveInfo")){
SaveInfo save=new SaveInfo();
save.Do();
save.saveInfo();
}
else if(a4.equals("GainInfo")){
GainInfo grain=new GainInfo();
grain.Do();
grain.Gain();
}
}
System.out.println("是否想退出此操作?【温馨提示 y 不想退出 n 想退出】");
answer4=input.next();//温馨提示用户 }
else if(answer1.equals("Admin")){
Admin admin=new Admin();
admin.Do();
System.out.println("是否想细致的了解:Person人类、Door门类、Admin高级用户类、Computer计算机类?【温馨提示 y 想进入 n 不想进入】");
String answer5=input.next();
while(answer5.equals("y")){
System.out.println("请选择你要了解的项:AdminOpenDoor高级管理员类、AddEmp增加内部员工类、DeleteEmp删除内部员工类、UpdateEmp更新内部员工类?");
String a5=input.next();
if(a5.equals("AdminOpenDoor")){
AdminOpenDoor add=new AdminOpenDoor();
add.Do();
add.adminOpen();
}
else if(a5.equals("AddEmp")){
AddEmp emp=new AddEmp();
emp.Do();
emp.addemp();
}
else if(a5.equals("DeleteEmp")){
DeleteEmp delete=new DeleteEmp();
delete.Do();
delete.delete();
}
else if(a5.equals("UpdateEmp")){
UpdateEmp update=new UpdateEmp();
update.Do();
update.updateEmp();
}
}
System.out.println("是否想退出此操作?【温馨提示 y 不想退出 n 想退出】");
answer5=input.next();//温馨提示用户 }
}
System.out.println("是否想退出此系统?【温馨提示 y 不想退出 n 想退出】");
answer=input.next();//温馨提示用户
System.out.println("门禁系统结束!");
} }
DorrTest
package cdjj.s2t075.com;
import java.util.*;
public class GainInfo extends Computer {
/*
* GainInfo为获得信息类
* 它继承于Computer类
*/
Scanner i=new Scanner(System.in);
public void Gain(){
System.out.println("你是否想获得计算机的某些信息?【温馨提示:y是 n否】");
String n=i.next();
while(i.equals("y")){
Computer c=new Computer();
c.getGiveInfo();
c.getDel();
}
System.out.println("你是否想继续获得某些信息【温馨提示:y是 n否】");
String n1=i.next();
}
}
GainInfo
package cdjj.s2t075.com; public class OpenDoor extends Door{
/*
* OpenDoor类为开门的操作
* 它继承与Door门类
*/
public void open() throws InterruptedException{
/*
* 实现开门的方法
*/
if(super.CLOSE.equals("门已关闭")){
super.setStatus("门已打开");
System.out.println("门的状态为...");
java.lang.Thread.sleep(5000);
System.out.println("此时门为打开状态...");
} }
}
OpenDoor
package cdjj.s2t075.com; import java.util.Scanner; public class Person extends Computer{
/*
* Person为人类、包括普通人:如果要进入,按门铃
* 内部人员:录入密码、进行密码验证,按指纹、进行DNA验证
* 因此,Person保存这次操作
* 然而,因为要通过记录Person输入的信息,交由
* Computer计算机类进行处理,之后,再交由Door门类
* 进行处理所以Person要继承于Computer类,Computer类又要
* 继承于Door类
*/
Scanner scanner=new Scanner(System.in);
String temp=scanner.next();
private String name;//姓名
private String sex;//性别
private int age;//年龄
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public void pressRing(){
System.out.println("我是来我叔叔家的,请开一下们好吗?");
}
public Person(){
/*
* 定义一个无参的构造函数
*/
}
public Person(String name,String sex,int age){
/*
* 定义一个带参数的构造函数
*/
this.name=name;
this.sex=sex;
this.age=age;
} }
Person
package cdjj.s2t075.com;
import java.util.Scanner;
public class ReturnInfo extends Computer {
/*
* ReturnInfo为返回信息类
* 它继承于Computer类
*/
Scanner input=new Scanner(System.in);
String[] ComputerInfo =new String[200];//对计算机所以信息进行操作
public void returnInfo(){
/*
* 返回内部人员信息方法
*/
System.out.println("确认要获得此数组列表里面的信息吗?【温馨提示:y是 n否】");
String n=input.next();
while(n.equals("y")){
System.out.println("现在的数组元素包含:"+ComputerInfo); }
System.out.println("你是否要继续访问?【温馨提示 y是 n否】");
String n1=input.next(); }
}
ReturnInfo
package cdjj.s2t075.com;
import java.util.Scanner;
public class SaveInfo extends Computer {
/*
* SaveInfo为保存信息类
* 它继承于Computer类
*/
Scanner scann=new Scanner(System.in);
public void saveInfo(){
/*
* 保存内部人员信息方法
*/
System.out.println("请输入你所要保存的信息");
String temp2=scann.next();
String[] ComputerInfo =new String[200];//对计算机所以信息进行操作
for (int i = 0; i < ComputerInfo.length; i++) {
ComputerInfo [i]=temp2; }
System.out.println("现在的数组元素包含:"+ComputerInfo); }
}
SaveInfo
package cdjj.s2t075.com;
import java.util.Scanner;
public class UpdateEmp extends Admin {
/*
* UpdateEmp为更新内部人员信息
* 可实现更新内部人员操作
* 它继承于Admin高级用户类
*/
Scanner scanners=new Scanner(System.in);
String[] ComputerInfo =new String[200];//对计算机所以信息进行操作
public void updateEmp(){
/*
* 更新内部人员信息方法
*/
System.out.println("请输入你要修改的信息");
String temp3=scanners.next();
for (int i = 0; i < ComputerInfo.length; i++) {
ComputerInfo[i]=temp3;
}
System.out.println("现在的数组元素包含:"+ComputerInfo);
}
}
UpdateEmp
需求及详细介绍如下: