一开始自己写的学生管理系统被老师说了一通,说我写的学生管理系统是面向过程的,是c语言的逻辑,学java就应该用java的思想。
这个是我一开始写的面向过程的方法也就是错误示例:
package StudentManager;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManager {
public static void main(String[] args) {
ArrayList<Student> array = new ArrayList<>();
Scanner sc = new Scanner(System.in);
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 line = sc.nextLine();
switch (line) {
case "1":
addStudent(array);
break;
case "2":
deleteStudent(array);
break;
case "3":
updateStudent(array);
break;
case "4":
findStudent(array);
break;
case "5":
System.exit(0);
System.out.println("感谢使用");
break;
default:
throw new IllegalStateException("Unexpected value: " + line);
}
}
}
private static void findStudent(ArrayList<Student> array) {
if (array.size() == 0) {
System.out.println("没有内容,请先添加");
} else {
System.out.println("姓名" + "\t" + "年龄" + "\t" + "学号" + "\t" + "地址");
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getName() + "\t" + s.getAge() + "\t" + s.getSid() + "\t" + s.getAddress());
}
}
}
private static void updateStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入要修改的学生学号");
String sid = sc.nextLine();
if (array.size()==0){
System.out.println("系统中没有内容,修改失败");
break;
}else {
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("修改失败,没有该学号学生");
break;
} else {
System.out.println("请输入新的姓名");
String name = sc.nextLine();
System.out.println("请输入新的年龄");
String age = sc.nextLine();
System.out.println("请输入新的地址");
String address = sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
s.setAddress(address);
s.setSid(sid);
array.add(s);
System.out.println("修改成功");
return;
}
}
}
}
private static void deleteStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
while (true) {
System.out.println("请输入要删除的学号");
String sid = sc.nextLine();
if (array.size() == 0) {
System.out.println("系统中没有内容,删除失败");
break;
} else {
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
index = i;
break;
}
}
if (index == -1) {
System.out.println("删除失败,没有该学号");
break;
} else {
array.remove(index);
System.out.println("删除成功");
return;
}
}
}
}
private static void addStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学生姓名");
String name = sc.nextLine();
System.out.println("请输入学生年龄");
String age = sc.nextLine();
String sid;
while (true) {
System.out.println("请输入学生学号");
sid = sc.nextLine();
boolean flag = used(array, sid);
if (flag) {
System.out.println("您输入的学号已被使用,请重新输入");
}else {
break;
}
}
System.out.println("请输入学生地址");
String address = sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
s.setSid(sid);
s.setAddress(address);
array.add(s);
System.out.println("添加成功");
}
public static boolean used(ArrayList<Student> array, String sid) {
boolean flag = false;
for (int i = 0; i < array.size(); i++) {
Student student = array.get(i);
if (student.getSid().equals(sid)) {
flag = true;
break;
}
}
return flag;
}
}
//学生类:
package StudentManager;
public class Student {
private String name;
private String age;
private String sid;
private String address;
public Student() {
}
public Student(String name, String age, String sid, String address) {
this.name = name;
this.age = age;
this.sid = sid;
this.address = address;
}
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 getSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
接下来的是面向接口的方法,也就是老师指导我去写出来的:
//先是text测试项,这是要给顾客看的,所以要尽可能简洁,不要暴露自己太多的源代码
import utils.FuntionUtils;
public class text {
public static void main(String[] args) {
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.退出学生管理系统");
FuntionUtils.choiceFuntion();
}
}
}
//这里给出接口
package dao;
import bean.Student;
import java.util.ArrayList;
public interface StudentManageDao {
void addStudent(ArrayList<Student> array);
void deleteStudent(ArrayList<Student> array);
void updateStudent(ArrayList<Student> array);
void findStudent(ArrayList<Student> array);
boolean isEmpty(ArrayList<Student> array);
int isExist(ArrayList<Student> array, String sid);
}
//然后是choic类:
package utils;
import bean.Student;
import dao.StudentManageDao;
import impl.StudentManagerimpl;
import java.util.ArrayList;
import java.util.Scanner;
public class FuntionUtils {
static Scanner sc = new Scanner(System.in);
static ArrayList<Student> array = new ArrayList<>();
public static void choiceFuntion(){
StudentManageDao sm = new StudentManagerimpl();
String line = sc.nextLine();
switch (line){
case "1":
sm.addStudent(array);
break;
case "2":
sm.deleteStudent(array);
break;
case "3":
sm.updateStudent(array);
break;
case "4":
sm.findStudent(array);
break;
case "5":
System.out.println("谢谢使用");
System.exit(0);
default:
System.out.println("您的输入有误,请重新输入");
break;
}
}
}
//这里是重写的方法
package impl;
import bean.Student;
import dao.StudentManageDao;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManagerimpl implements StudentManageDao {
@Override
public void addStudent(ArrayList<Student> array) {
Scanner sc = new Scanner(System.in);
System.out.println("请输入学号");
String sid = sc.nextLine();
System.out.println("请输入姓名");
String name = sc.nextLine();
System.out.println("请输入年龄");
String age = sc.nextLine();
System.out.println("请输入地址");
String address = sc.nextLine();
Student s = new Student();
s.setSid(sid);
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.add(s);
System.out.println("添加成功!");
}
@Override
public void deleteStudent(ArrayList<Student> array) {
if (isEmpty(array)) {
System.out.println("暂无学生记录,请先添加");
return;
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的学生的学号");
String sid = sc.nextLine();
if (isExist(array,sid)==-1){
System.out.println("删除失败,没有该学号学生");
}else{
array.remove(isExist(array,sid));
System.out.println("删除成功!");
}
}
@Override
public void updateStudent(ArrayList<Student> array) {
if (isEmpty(array)) {
System.out.println("暂无学生记录,请先添加");
return;
}
Scanner sc = new Scanner(System.in);
System.out.println("请输入要修改的学生的学号");
String sid = sc.nextLine();
if (isExist(array,sid)==-1){
System.out.println("修改失败,无该学号学生");
}else{
System.out.println("请输入新的姓名");
String name = sc.nextLine();
System.out.println("请输入新的年龄");
String age = sc.nextLine();
System.out.println("请输入新的地址");
String address = sc.nextLine();
Student s = new Student();
s.setName(name);
s.setAge(age);
s.setAddress(address);
array.add(s);
System.out.println("修改成功!");
}
}
@Override
public void findStudent(ArrayList<Student> array) {
System.out.println("学号" + "\t" + "姓名" + "\t" + "年龄" + "\t" + "地址");
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress());
}
}
@Override
public boolean isEmpty(ArrayList<Student> array) {
if (array.size() == 0) {
return true;
} else {
return false;
}
}
@Override
public int isExist(ArrayList<Student> array, String sid) {
int index = -1;
for (int i = 0; i < array.size(); i++) {
Student s = array.get(i);
if (s.getSid().equals(sid)) {
index = i;
break;
}
}
if (index == -1){
return -1;
}else{
return index;
}
}
}
//最后再给出学生类:
package bean;
public class Student {
private String sid;
private String name;
private String age;
private String address;
public Student() {
}
public Student(String sid, String name, String age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
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 getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
这样的程序才是正规的java的写法,上面我自己写的完全就是c语言的方法,所以自己学的java还不够精,还得继续加油了😄,希望对大家也有帮助,一定要知道,java是面向对象面向接口的语言,而不是面向过程的语言🤣