文章目录
总体思路
本程序使用了Object(对相应的方法进行重写) Arrays(数组扩充) String(字符串比较)对应的常用方法,方法的重写
- 把学生和教师共有抽象为一个Person的抽象类,去设置共有属性
- 创建Student类继承Person类去实现学生的特有属性信息
- 创建Teacher类继承Person类去实现教师特有属性信息
- 完成信息创建后,就写一个管理方法Manage接口,去定义一些管理方法
- 创建StudentManage和TeacherManage去实现Manage接口的方法对信息进行处理
- 创建可视化菜单,让用户可以再终端进行输入
- 创建MainManageRun负责运行调用实现方法之间的拼接
创建Person抽象类
对toString进行重写方便展示
package com.ffyc.edums.educationMS;
public abstract class Person{
private String name;
private String age;
private String gender;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
@Override
public String toString() {
return "姓名:" + name +"\n"+
"年龄:" + age +"\n"+
"性别:" + gender +"\n";
}
}
创建Manage接口 写出对应
package com.ffyc.edums.educationMS;
/*
定义管理操作标准
*/
public interface Manage {
void menu();//菜单
void add();//添加属性
void delete();//删除对象
void update();//修改对象属性
void findAll();//查找所有对象
void search();//查找对象对象的信息
}
实现菜单
package com.ffyc.edums.educationMS;
import java.util.Scanner;
public class ManagerMain {
public void managerMenu(){
Manage studentManager = new StudentManage();
Manage teacherManager = new TeacherManage();
loop:while (true){
System.out.println("-------------------------------------------------------------------------------------");
System.out.println("-------------------------------欢迎来到陕理工教务管理系统----------------------------------");
System.out.println("----------------------------------请输入您的操作选项:------------------------------------");
System.out.println("----------------------------------1.老师管理:------------------------------------------");
System.out.println("----------------------------------2.学生管理:------------------------------------------");
System.out.println("----------------------------------3.退出系统-------------------------------------------");
Scanner scanner = new Scanner(System.in);
String item = scanner.next();
/*使用字符串原因是避免输入其他字符到时系统出错*/
switch (item){
case "1" :
teacherManager.menu();
break;
case "2":
studentManager.menu();
break;
case "3":
System.out.println("您确定要退出系统吗? Y-退出,N-取消");
String s = scanner.next();
if(s.equals("Y")){
break loop;
}
break;
default:
System.out.println("输入有误!");
}
}
}
}
创建ManageRun类来实现程序的运行
package com.ffyc.edums.educationMS;
import java.util.Scanner;
public class ManagerMain {
public void managerMenu(){
Manage studentManager = new StudentManage();
Manage teacherManager = new TeacherManage();
loop:while (true){
System.out.println("-------------------------------------------------------------------------------------");
System.out.println("-------------------------------欢迎来到陕理工教务管理系统----------------------------------");
System.out.println("----------------------------------请输入您的操作选项:------------------------------------");
System.out.println("----------------------------------1.老师管理:------------------------------------------");
System.out.println("----------------------------------2.学生管理:------------------------------------------");
System.out.println("----------------------------------3.退出系统-------------------------------------------");
Scanner scanner = new Scanner(System.in);
String item = scanner.next();
/*使用字符串原因是避免输入其他字符到时系统出错*/
switch (item){
case "1" :
teacherManager.menu();
break;
case "2":
studentManager.menu();
break;
case "3":
System.out.println("您确定要退出系统吗? Y-退出,N-取消");
String s = scanner.next();
if(s.equals("Y")){
break loop;
}
break;
default:
System.out.println("输入有误!");
}
}
}
}
首先实现学生管理系统
创建Student类
对toString进行在此重写进一步可以显示对象所有属性,以及对compareTo重写,来方便对学号进行排序
package com.ffyc.edums.educationMS;
import java.util.Arrays;
public class Student extends Person implements Comparable<Student> {
private String id;//学号,私有化
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return super.toString()+"学号:" + id+"\n";
}
@Override
public int compareTo(Student o) {
return this.id.compareTo(o.id);
}
}
创建StudentManage类 实现对Student类的管理
使用了数组的扩充方便对象的添加,对各个输入信息都进行了判断来规定输入内容的准确性
package com.ffyc.edums.educationMS;
import java.util.Arrays;
import java.util.Scanner;
public class StudentManage implements Manage {
int count=0;//计数器,计算功能使用次数
//先初始化一个容量的数组,然后每次输入都对其进行扩容,这样就能节省内存
Student [] students = new Student[0];
Scanner in = new Scanner(System.in);
@Override
public void menu() {
loop:while (true){
System.out.println("学生管理");
System.out.println("-------------------------------------------------------------------------------------");
System.out.println("--------------------------------请输入您的操作选项:--------------------------------------");
System.out.println("----------------------------------1.添加学生:------------------------------------------");
System.out.println("----------------------------------2.删除学生:------------------------------------------");
System.out.println("----------------------------------3.修改学生-------------------------------------------");
System.out.println("----------------------------------4.搜索学生-------------------------------------------");
System.out.println("----------------------------------5.查询所有学生----------------------------------------");
System.out.println("----------------------------------6.退出系统-------------------------------------------");
System.out.println("-------------------------------------------------------------------------------------");
String item = in.next();
switch (item){
case "1" :
add();
break;
case "2":
delete();
break;
case "3":
update();
break;
case "4":
search();
break;
case "5":
findAll();
break;
case "6":
System.out.println("您确定要退出学生管理吗? Y-退出,N-取消");
String s = in.next();
if(s.equals("Y")){
break loop;
}
break;
default:
System.out.println("输入有误!");
}
}
}
@Override
public void add() {
//每次调用时对其长度+1处理
students=Arrays.copyOf(students, students.length+1);
//添加学生个个信息
System.out.println("添加学生");
Student stu = new Student();
//
System.out.println("请输入学生姓名");
stu.setName(in.next());
System.out.println("请输入学生年龄");
while(true){
String age=in.next();
stu.setAge(age);
break;
}
//
System.out.println("请输入学生性别");
//使用循环判断是否格式正确
while(true){
String sex=in.next();
if(sex.equals("男")||sex.equals("女")){
stu.setGender(sex);
break;
}else{
System.out.println("请输入正确性别");
}
}
//
System.out.println("请输入学生学号(长度12)");//规定学号长度为12
//使用循环判断是否格式正确
tap1: while(true){
String id=in.next();
if(id.length()==12){
//放置学号重复
//count大于等于一个学生时,就必须判断输入的学号是否重复
//设置一个控制变量
boolean temp=true;
if(count>=1){
tap2:for(int i=0;i<count;i++){
if(id.equals(students[i].getId())) {
System.out.println("输入学号重复,请重新输入:");
temp=false;
break tap2;
}
}
if(temp){
stu.setId(id);
break tap1;
}
}else{
stu.setId(id);
break tap1;
}
}else{
System.out.println("输入有误,请重新输入");
}
}
//
for(int i=0;i<students.length;i++){
if(students[i]==null){
students[i]=stu;
break;
}
}
System.out.println("添加成功");
//每次添加完对学生按照学号排序,方便查找
count++;
if(count>1) {
Arrays.sort(students,0,count);
}
}
@Override
public void delete() {
System.out.println("输入想删除学生的学号");
//使用循环判断是否格式正确
int item=0;
boolean temp=true;
tap5:while(true){
String id=in.next();
if(id.length()==12){
for(int i=0;i< students.length;i++) {
if(id.equals(students[i].getId())) {
students[i]=null;
item=i;
temp=false;
break;
}
}
//如果遍历都无法查找则显示无法查询
if(temp){
System.out.println("无法查询");
break tap5;
}
//前进一格
for(int i=item;i<students.length-1;i++){
students[i]=students[i+1];
}
students[students.length-1]=null;
count--;//学生-1;
students=Arrays.copyOf(students, students.length-1);//释放空间
//无需排序
System.out.println("删除成功");
break;
} else{
System.out.println("输入有误,请重新输入");
}
}
}
@Override
public void update() {
System.out.println("修改学生");
//先根据学号搜到学生
tap3:while(true){
System.out.println("请输入想要修改学生的学号:");
String id=in.next();
//判断学号格式
if(id.length()==12){
for(int i=0;i<count;i++){
if(id.equals(students[i].getId())){
while(true){
System.out.println("请输入你想修改的内容");
System.out.println("1.姓名");
System.out.println("2.性别");
System.out.println("3.年龄");
System.out.println("4.退出");
String choose=in.next();
switch (choose){
case "1":
System.out.println("请输入新名字");
students[i].setName(in.next());
break;
case "2":
System.out.println("请输入男或女:");
students[i].setGender(in.next());
break;
case "3":
System.out.println("请输入新的年龄");
students[i].setAge(in.next());
break;
case "4":
System.out.println("退出成功");
break tap3;
default:
System.out.println("输入有误");
break;
}
System.out.println("修改成功");
}
}
}
System.out.println("无法查找");//遍历完已有的没查找
break tap3;//无法查找直接跳出
}else{
System.out.println("输入长度有误,请重新输入");
}
}
}
@Override
public void findAll() {
System.out.println("查询所有学生");
/*
* 当系统没有录入学生时,显示相应提示语句
* */
if(count==0){
System.out.println("暂无学生输入");
}
for(int i=0;i<count;i++){
System.out.println("姓名:"+students[i].getName());
System.out.println("年龄"+students[i].getAge());
System.out.println("性别:"+students[i].getGender());
System.out.println("学号"+students[i].getId());
}
}
@Override
public void search() {
System.out.println("根据学号查询学生");
tap3:while(true){
System.out.println("请输入学号:");
String id=in.next();
if(id.length()==12){
for(int i=0;i<count;i++){
if(id.equals(students[i].getId())){
System.out.println("姓名:"+students[i].getName());
System.out.println("年龄"+students[i].getAge());
System.out.println("性别:"+students[i].getGender());
System.out.println("学号"+students[i].getId());
break tap3;
}
}
System.out.println("无法查询到此学生信息");
break tap3;
}else{
System.out.println("输入长度有误,请重新输入");
}
}
}
}
测试学生管理系统
这样就把学生的管理系统实现了,然后就以相似的思路去实现教师管理系统
创建TeacherManage类 实现对Teacher的管理
代码如下
package com.ffyc.edums.educationMS;
import java.util.Arrays;
import java.util.Scanner;
public class TeacherManage implements Manage {
Scanner in = new Scanner(System.in);
int count = 0;//计数器,计算功能使用次数
//先初始化一个容量的数组,然后每次输入都对其进行扩容,这样就能节省内存
Teacher[] teachers = new Teacher[0];
@Override
public void menu() {
loop:
while (true) {
System.out.println("老师管理");
System.out.println("请输入您的操作选项:");
System.out.println("1.添加老师:");
System.out.println("2.删除老师:");
System.out.println("3.修改老师");
System.out.println("4.搜索老师");
System.out.println("5.查询所有老师");
System.out.println("6.退出系统");
String item = in.next();
switch (item) {
case "1":
add();
break;
case "2":
delete();
break;
case "3":
update();
break;
case "4":
search();
break;
case "5":
findAll();
break;
case "6":
System.out.println("您确定要退出老师管理吗? Y-退出,N-取消");
String s = in.next();
if (s.equals("Y")) {
break loop;
}
break;
default:
System.out.println("输入有误!");
}
}
}
@Override
public void add() {
System.out.println("添加老师");
//每次调用时对其长度+1处理
teachers = Arrays.copyOf(teachers, teachers.length + 1);
//添加学生个个信息
Teacher teacher = new Teacher();
//
System.out.println("请输入教师姓名");
teacher.setName(in.next());
System.out.println("请输入教师年龄");
while (true) {
String age = in.next();
teacher.setAge(age);
break;
}
//
System.out.println("请输入教职工性别");
//使用循环判断是否格式正确
while (true) {
String sex = in.next();
if (sex.equals("男") || sex.equals("女")) {
teacher.setGender(sex);
break;
} else {
System.out.println("请输入正确性别");
}
}
//
System.out.println("请输入教职工号(长度12)");//规定学号长度为12
//使用循环判断是否格式正确
tap1:
while (true) {
String id = in.next();
if (id.length() == 12) {
//放置学号重复
//count大于等于一个学生时,就必须判断输入的学号是否重复
//设置一个控制变量
boolean temp = true;
if (count >= 1) {
tap2:
for (int i = 0; i < count; i++) {
if (id.equals(teachers[i].getId())) {
System.out.println("输入教职工号重复,请重新输入:");
temp = false;
break tap2;
}
}
if (temp) {
teacher.setId(id);
break tap1;
}
} else {
teacher.setId(id);
break tap1;
}
} else {
System.out.println("输入有误,请重新输入");
}
}
//
//教师工职位
System.out.println("请输入教职工职位");
teacher.setPosition(in.next());
//
for (int i = 0; i < teachers.length; i++) {
if (teachers[i] == null) {
teachers[i] = teacher;
break;
}
}
System.out.println("添加成功");
//每次添加完对老师按照教职工号排序,方便查找
count++;
if (count > 1) {
Arrays.sort(teachers, 0, count);
}
}
@Override
public void delete() {
System.out.println("删除老师");
System.out.println("输入想删除的教职工号");
//使用循环判断是否格式正确
int item=0;
boolean temp=true;
tap5:while(true){
String id=in.next();
if(id.length()==12){
for(int i=0;i< teachers.length;i++) {
if(id.equals(teachers[i].getId())) {
teachers[i]=null;
item=i;
temp=false;
break;
}
}
//如果遍历都无法查找则显示无法查询
if(temp){
System.out.println("无法查询");
break tap5;
}
//前进一格
for(int i=item;i<teachers.length-1;i++){
teachers[i]=teachers[i+1];
}
teachers[teachers.length-1]=null;
count--;//学生-1;
teachers=Arrays.copyOf(teachers, teachers.length-1);//释放空间
//无需排序
System.out.println("删除成功");
break;
} else{
System.out.println("输入有误,请重新输入");
}
}
}
@Override
public void update() {
System.out.println("修改老师");
tap3:while(true){
System.out.println("请输入想要修改的教职工号:");
String id=in.next();
//判断学号格式
if(id.length()==12){
for(int i=0;i<count;i++){
if(id.equals(teachers[i].getId())){
while(true){
System.out.println("请输入你想修改的内容");
System.out.println("1.姓名");
System.out.println("2.性别");
System.out.println("3.年龄");
System.out.println("4.职位");
System.out.println("5.退出");
String choose=in.next();
switch (choose){
case "1":
System.out.println("请输入新名字");
teachers[i].setName(in.next());
break;
case "2":
System.out.println("请输入男或女:");
teachers[i].setGender(in.next());
break;
case "3":
System.out.println("请输入新的年龄");
teachers[i].setAge(in.next());
break;
case "4":
System.out.println("请输入新的职位");
teachers[i].setPosition(in.next());
break;
case "5":
System.out.println("退出成功");
break tap3;
default:
System.out.println("输入有误");
break;
}
System.out.println("修改成功");
}
}
}
System.out.println("无法查找");//遍历完已有的没查找
break tap3;//无法查找直接跳出
}else{
System.out.println("输入长度有误,请重新输入");
}
}
}
@Override
public void findAll() {
System.out.println("查询所有老师");
System.out.println("查询所有学生");
/*
* 当系统没有录入教师时,显示相应提示语句
* */
if(count==0){
System.out.println("暂无学生输入");
}
for(int i=0;i<count;i++){
System.out.println("姓名:"+teachers[i].getName());
System.out.println("年龄"+teachers[i].getAge());
System.out.println("性别:"+teachers[i].getGender());
System.out.println("教职工号"+teachers[i].getId());
System.out.println("职位"+teachers[i].getPosition());
}
}
@Override
public void search() {
System.out.println("根据工号查询老师");
tap3:while(true){
System.out.println("请输入教职号:");
String id=in.next();
if(id.length()==12){
for(int i=0;i<count;i++){
if(id.equals(teachers[i].getId())){
System.out.println("姓名:"+teachers[i].getName());
System.out.println("年龄"+teachers[i].getAge());
System.out.println("性别:"+teachers[i].getGender());
System.out.println("学号"+teachers[i].getId());
System.out.println("职位"+teachers[i].getPosition());
break tap3;
}
}
System.out.println("无法查询到此教师信息");
break tap3;
}else{
System.out.println("输入长度有误,请重新输入");
}
}
}
}
测试教师管理系统
OK,以上就是实现思路,等进一步学习了界面设计可以对其进行改造成界面