注意:本程序完全用java语言实现,下面的每个代码段,都需要单独创建一个类,其中老师部分和学生部分大致相同,还有非常大的优化空间,如果觉得存储数据的空间太小,可以自行更改,或者将数组改为集合来进行存储(可参考我的另一篇文章),本程序较为简单,但对于新手来说,非常适合参考与编写。
运行时的控制台(小部分功能):
1、学生添加
2、 老师添加
程序源码如下:
1、程序入口
public class InfoManagerEntry {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
//主菜单搭建
while (true) {
System.out.println("---------欢迎来到湖南城市学院信息管理系统---------");
System.out.println("请输入您的选择:1、学生管理 2、教师管理 3、退出");
String choice = in.next();
switch (choice) {
case "1":
//System.out.println("欢迎来到学生管理系统");
//开启学生管理系统
StudentController studentController = new StudentController();
studentController.start();
break;
case "2":
// System.out.println("欢迎来到教师管理系统");
TeacherController teacherController = new TeacherController();
teacherController.start();
break;
case "3":
System.out.println("感谢您使用湖南城市学院信息管理系统,再见!");
//退出正在运行的JVM虚拟机
System.exit(0);
break;
default:
System.out.println("您的输入有误,请重新输入");
break;
}
}
}
}
2、学生管理部分
一、与用户沟通部分
public class StudentController {
//使用static关键字让in成为类对象
private Scanner in = new Scanner(System.in);
private StudentService studentService = new StudentService();
//开启学生管理系统
public void start() {
lo:
while (true) {
System.out.println("---------欢迎来到湖南城市学院学生管理系统---------");
System.out.println("请输入您的选择:1、添加学生 2、删除学生 3、修改学生 4、查看学生 5、退出");
String choice = in.next();
switch (choice) {
case "1":
// System.out.println("添加学生");
addStudent();
break;
case "2":
// System.out.println("删除学生");
deleteStudentBySid();
break;
case "3":
// System.out.println("修改学生");
updateStudent();
break;
case "4":
// System.out.println("查看学生");
findAllStudent();
break;
case "5":
System.out.println("感谢您使用湖南城市学院学生管理系统,再见!");
break lo;
default:
System.out.println("您的输入有误,请重新输入");
break;
}
}
}
//添加学生
public void addStudent() {
//接受学生信息
String sid;
while (true) {
System.out.println("请输入学生学号:");
sid = in.next();
//判断学号是否存在
boolean flag = studentService.isExists(sid);
//如果为true,重新输入
if (flag) {
System.out.println("学号已经被占用,请重新输入");
} else {
break;
}
}
Student stu = getStudent(sid);
//接受布尔值
boolean result = studentService.addStudent(stu);
//根据boolean值,在控制台打印成功\失败
if (result) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
}
//查看学生
public void findAllStudent() {
//接收数组
Student[] arr = studentService.findAllStudent();
if (arr != null) {
//输出表头
System.out.println("学号\t\t姓名\t年龄\t生日");
//遍历数组
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
//判断是否为空,不然会报错
if (stu != null) {
System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBirthday());
}
}
} else {
System.out.println("查无信息,请添加后重试");
}
}
//删除学生
public void deleteStudentBySid() {
//判断Id是否存在
String deleteid = CheckId();
//传送Id
studentService.deleteStudentBySid(deleteid);
System.out.println("删除成功");
}
//修改学生
public void updateStudent() {
//判断即将修改的学生Id是否存在
String updateid = CheckId();
//接收新的对象
Student newstu = getStudent(updateid);
//传递新的对象
studentService.updateStudent(newstu);
//提示信息
System.out.println("修改成功");
}
//封装学生对象
public Student getStudent(String sid) {
System.out.println("请输入姓名:");
//接收新的名字
String name = in.next();
System.out.println("请输入年龄:");
//新的年龄
String age = in.next();
System.out.println("请输入生日:");
//新的生日
String birthday = in.next();
//封装为一个新的对象
Student stu = new Student(sid, name, age, birthday);
return stu;
}
//录入查找学生学号
public String CheckId() {
String Id;
while (true) {
System.out.println("请输入学生学号:");
//接收学号
Id = in.next();
boolean flag = studentService.isExists(Id);
//如果存在跳出循环
if (flag) {
break;
}
//不存在则提示用户
else {
System.out.println("学号不存在,请重新输入");
}
}
return Id;
}
}
二、学生信息部分
public class Student {
private String sid;
private String name;
private String age;
private String birthday;
public Student() {
}
public Student(String sid, String name, String age, String birthday) {
this.sid = sid;
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
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 getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
三、学生信息存储部分
public class StudentDao {
//创建学生数组
private static Student[] arr = new Student[5];
//添加学生
public boolean addStudent(Student stu) {
int Index = -1;
//遍历数组,找空位
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student == null) {
//如果找到空位,就让Index记录该索引值
Index = i;
break;
}
}
if (Index == -1) {
//数组内无空位了
return false;
} else {
//存入学生对象
arr[Index] = stu;
return true;
}
}
//查找学生
public Student[] findAllStudent() {
return arr;
}
//删除学生
public void deleteStudentBySid(String sid) {
//找到位置
int Index = getIndex(sid);
//删除
arr[Index] = null;
}
//根据学号找位置
public int getIndex(String sid) {
//假设数组没有这个学号
int Index = -1;
//遍历数组
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
if (stu != null && stu.getSid().equals(sid)) {
Index = i;
break;
}
}
return Index;
}
//修改学生
public void updateStudent(Student stu) {
//获取被修改学生学号
String sid = stu.getSid();
//找到该学生的索引位置
int Index = getIndex(sid);
//添加新的学生对象进去
arr[Index] = stu;
}
}
四、代码逻辑部分
public class StudentService {
StudentDao studentDao = new StudentDao();
// 学号是否存在
public boolean isExists(String sid) {
//创建变量flag,假设学号不在数组中
boolean flag = false;
//获得学生数组
Student[] arr = studentDao.findAllStudent();
//遍历数组,判断数组中是否有相同学号
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student != null && student.getSid().equals(sid)) {
flag = true;
break;
}
}
return flag;
}
//添加学生
public boolean addStudent(Student stu) {
//传递学生对象
boolean result = studentDao.addStudent(stu);
//返回布尔值给上一层
return result;
}
// 查找学生
public Student[] findAllStudent() {
//接收数组
Student[] arr = studentDao.findAllStudent();
//判断返回值时有用,假定数组为空
boolean flag = false;
//遍历数组
for (int i = 0; i < arr.length; i++) {
Student stu = arr[i];
//如果数组内不为空
if (stu != null) {
flag = true;
break;
}
}
if (flag) {
//为真返回数组
return arr;
} else {
return null;
}
}
//删除学生
public void deleteStudentBySid(String deleteid) {
//传学号
studentDao.deleteStudentBySid(deleteid);
}
// 修改学生
public void updateStudent(Student stu) {
//传递对象
studentDao.updateStudent(stu);
}
}
2、老师管理部分
一、与用户沟通部分
public class TeacherController {
Scanner in = new Scanner(System.in);
TeacherService teacherService = new TeacherService();
//开启老师管理系统
public void start() {
lo:
while (true) {
System.out.println("---------欢迎来到湖南城市学院老师管理系统---------");
System.out.println("请输入您的选择:1、添加老师 2、删除老师 3、修改老师 4、查看老师 5、退出");
//接收选择
String choice = in.next();
//选择路线
switch (choice) {
case "1":
// System.out.println("添加老师");
addTeacher();
break;
case "2":
// System.out.println("删除老师");
deleteTeacher();
break;
case "3":
// System.out.println("修改老师");
updateTeacher();
break;
case "4":
// System.out.println("查看老师");
findAllTeacher();
break;
case "5":
System.out.println("感谢您使用湖南城市学院老师管理系统,再见!");
break lo;
default:
System.out.println("您输入有误,请重新输入!");
break;
}
}
}
//修改老师
public void updateTeacher() {
//获得Id
String updateId = CheckId();
//获得对象
Teacher teacher = getTeacher(updateId);
teacherService.upadateTeacher(teacher);
System.out.println("修改成功");
}
//删除老师
public void deleteTeacher() {
String deleteId;
while (true) {
System.out.println("请输入工号:");
deleteId = in.next();
//接收布尔值,判断工号是否存在数组中
boolean flag = teacherService.isExist(deleteId);
//如果存在,跳出删除
if (flag) {
break;
} else {
System.out.println("查无此人,请重新输入!");
}
}
teacherService.deleteTeacher(deleteId);
System.out.println("删除成功");
}
//查找老师
public void findAllTeacher() {
//获取数组地址
Teacher[] arr = teacherService.findAllTeacher();
//如果没有做添加老师的步骤,那么数组的地址是不存在的
if (arr != null) {
System.out.println("工号\t\t姓名\t年龄\t生日");
for (int i = 0; i < arr.length; i++) {
Teacher teacher = arr[i];
//要先判断是否为空,不然会报错
if (teacher != null) {
System.out.println(teacher.getTid() + "\t" + teacher.getName() + "\t" + teacher.getAge() + "\t\t" + teacher.getBirthday());
}
}
} else {
System.out.println("查无信息,请添加后重试!");
}
}
// 添加老师
public void addTeacher() {
String addId;
while (true) {
System.out.println("请输入工号:");
//接收Id,判断Id是否存在
addId = in.next();
//接收返回值
boolean flag = teacherService.isExist(addId);
//返回值为true,工号不能两个老师用
if (flag) {
System.out.println("工号被占用,请重新输入");
}
//返回值为false则跳出循环,继续完善其他信息
else {
break;
}
}
//获得对象
Teacher teacher = getTeacher(addId);
//将对象传出
boolean flag = teacherService.addTeacher(teacher);
if (flag) {
System.out.println("添加成功");
} else {
System.out.println("添加失败");
}
}
//查询,判断工号是否在数组内
public String CheckId() {
String Id;
while (true) {
System.out.println("请输入工号:");
Id = in.next();
//接受布尔值,判断工号是否在数组内
boolean flag = teacherService.isExist(Id);
//如果工号在数组内,跳出循环,修改其他信息
if (flag) {
break;
} else {
System.out.println("查无此人,请重新输入!");
}
}
return Id;
}
//信息录入与封装
public Teacher getTeacher(String Id) {
//完善其他信息
System.out.println("请输入姓名:");
String name = in.next();
System.out.println("请输入年龄:");
String age = in.next();
System.out.println("请输入生日:");
String birthday = in.next();
//封装为对象
Teacher teacher = new Teacher(Id, name, age, birthday);
return teacher;
}
}
二、老师信息
public class Teacher {
private String tid;
private String name;
private String age;
private String birthday;
public Teacher() {
}
public Teacher(String tid, String name, String age, String birthday) {
this.tid = tid;
this.name = name;
this.age = age;
this.birthday = birthday;
}
public String getTid() {
return tid;
}
public void setTid(String tid) {
this.tid = tid;
}
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 getBirthday() {
return birthday;
}
public void setBirthday(String birthday) {
this.birthday = birthday;
}
}
三、老师信息存储
public class TeacherDao {
//加static是为了保证此类的任何对象都在使用这个数组
static Teacher[] arr = new Teacher[5];
//传递数组,查看老师
public Teacher[] findAllTeacher() {
return arr;
}
//添加学生
public boolean addTeacher(Teacher teacher) {
//假设数组已经存满
int Index = -1;
//遍历数组,找空位,并且记录空位的位置
for (int i = 0; i < arr.length; i++) {
Teacher t = arr[i];
if (t == null) {
Index = i;
break;
}
}
//数组如果满了,就传false
if (Index == -1) {
return false;
} else {
//将传过来的对象添加到空位中去
arr[Index] = teacher;
return true;
}
}
//删除学生
public void deleteTeacher(String deleteId) {
//根据传来的学号找到相应的索引位置
int Index = getIndex(deleteId);
//将其删除
arr[Index] = null;
}
//根据工号找索引位置
public int getIndex(String Id) {
//先给索引赋初值,表示不在数组中
int Index = -1;
//遍历数组,找到工号所对应的索引位置
for (int i = 0; i < arr.length; i++) {
Teacher teacher = arr[i];
if (teacher != null && teacher.getTid().equals(Id)) {
Index = i;
}
}
return Index;
}
//修改老师
public void updateTeacher(Teacher teacher) {
//将要修改的Id
String Id = teacher.getTid();
//根据Id找到位置
int Index = getIndex(Id);
//将新的对象填入数组中
arr[Index] = teacher;
}
}
四、代码逻辑部分
public class TeacherService {
TeacherDao teacherDao = new TeacherDao();
//判断老师是否存在,根据工号查找老师
public boolean isExist(String addId) {
//先假设找不到老师
boolean flag = false;
//创建对象接收数组
Teacher[] arr = teacherDao.findAllTeacher();
//遍历数组,找相同的学号
for (int i = 0; i < arr.length; i++) {
Teacher teacher = arr[i];
if (teacher != null && teacher.getTid().equals(addId)) {
flag = true;
break;
}
}
//找到了,返回值为true
if (flag) {
return flag;
}
//找不到,返回值为false
else {
return flag;
}
}
//添加老师
public boolean addTeacher(Teacher teacher) {
//接受布尔值,并且返回
boolean flag = teacherDao.addTeacher(teacher);
if (flag) {
return flag;
} else {
return flag;
}
}
//查找老师
public Teacher[] findAllTeacher() {
Teacher[] arr = teacherDao.findAllTeacher();
//假设数组为空
boolean flag = false;
//遍历数组,看数组是否为空
for (int i = 0; i < arr.length; i++) {
Teacher teacher = arr[i];
if (teacher != null) {
flag = true;
break;
}
}
//假如数组不为空,flag为true
if (flag) {
return arr;
} else {
return null;
}
}
//删除老师
public void deleteTeacher(String deleteId) {
teacherDao.deleteTeacher(deleteId);
}
// 修改老师
public void upadateTeacher(Teacher teacher) {
teacherDao.updateTeacher(teacher);
}
}
如有疑问,欢迎交流!