目录
前言
学生管理系统思路给小白一些借鉴
一、定义学生类
定义学生类:
1.成员变量,用private修饰,数据
类型统一使用String,方便接下来代码的编写
2.构造方法,无参带参构造
3.成员方法:提供get/set方法
二、主界面代码的编写
1.用输出语句完成主页面的编写
2.用Scanner录入数据
3.用switch语句完成操作的选择
4.用循环完成再次回到主界面
三、添加学生代码的编写
1.键盘录入选择添加学生
2.定义一个方法用于添加学生
①显示提示信息
②键盘录入学生对象要的信息
Ⅰ.在录入学生学号时作判断
Ⅱ.判断录入学号是否重复,重复则给出提示信息并且返回②
Ⅲ.不重复则向下继续执行
③创建学生对象,把键盘录入的值赋值给学生对象的成员变量
④将学生对象添加到集合中
⑤给出提示
3.调用方法
四、查看学生代码的编写
1.键盘录入选择查看所有学生信息
2.定义一个方法用于查看所有学生信息
①判断集合中有无数据,没有数据则给出提示信息
②有数据,则打印表头信息 \t 制表符
③将集合中的数据以对应格式打印出来
3.调用方法
五、删除学生代码的编写
1.键盘录入选择删除学生
2.定义一个方法用于删除学生
①显示提示信息
②键盘录入要删除学生的学号
③遍历集合,作判断有无对应的学生信息
④有则将对应学生删除,无则给出提示信息
⑤给出删除成功的提示
3.调用方法
六、修改学生代码的编写
1.键盘录入选择修改学生
2.定义一个方法用于修改学生
①显示提示信息
②键盘录入要修改学生的学号
③键盘录入要修改的学生信息
④遍历集合修改对应的学生信息
⑤给出修改成功的提示
3.调用方法
七、代码的实现
import java.util.Scanner;
import java.util.ArrayList;
//定义一个学生类
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;
}
//设置get方法
//获取学号
public String getSid() {
return sid;
}
//获取名字
public String getName() {
return name;
}
//获取年龄
public String getAge() {
return age;
}
//获取地址
public String getAddress() {
return address;
}
//设置set方法
//添加学号
public void setSid(String sid) {
this.sid = sid;
}
//添加名字
public void setName(String name) {
this.name = name;
}
//添加年龄
public void setAge(String age) {
this.age = age;
}
//添加地址
public void setAddress(String address) {
this.address = address;
}
}
public class 学生管理系统 {
public static void main(String[] args) {
//创建集合对象用于存储数据
ArrayList<Student> array = new ArrayList<>();
//程序主界面的实现
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.退出");
System.out.println("请输入你的选择:");
Scanner sc = new Scanner(System.in);
String line = sc.nextLine();
switch (line) {
case "1":
//System.out.println("添加学生");
addStudent(array);
break;
case "2":
//System.out.println("删除学生");
DelStudent(array);
break;
case "3":
//System.out.println("修改学生");
ChangeStudent(array);
break;
case "4":
//System.out.println("查看所有学生");
findAllStudent(array);
break;
case "5":
System.out.println(" 谢谢使用");
System.exit(0);//JVM退出
}
}
}
//创建一个方法用来添加学生
public static void addStudent(ArrayList<Student> array) {
//键盘录入学生信息
Scanner sc = new Scanner(System.in);
//要让sid在循环外可以使用,在循环外面定义
String sid;
while(true) {
System.out.println("请输入学生的学号:");
sid = sc.nextLine();
boolean flag = isUsed(array, sid);
if(flag==true) {
System.out.println("输入的学号已存在,请重新输入!");
} else if(sid.length() != 10){
System.out.println("输入的学号错误,请重新输入(学号长度为十)!");
} else {
break;
}
}
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("添加学生成功!");
}
//创建一个方法解决学生学号重复问题
public static boolean isUsed(ArrayList<Student> array,String sid) {
//遍历集合,判断录入的学号是否存在,存在为true,不存在为false
boolean flag = false;
for(int i = 0; i<array.size(); i++) {
Student s = array.get(i);
//字符串用equals()方法,判断是否相等
if(s.getSid().equals(sid)) {
flag = true;
break;
}
}
return flag;
}
//创建一个方法用来查看所有学生信息
public static void findAllStudent(ArrayList<Student> array){
//判断集合中是否有数据,没有数据给出提示信息
if(array.size()==0) {
System.out.println("无信息,请先录入学生信息再查询");
//return 程序不再向下执行
return;
}
//打印表头信息
// \t表示tab,制表符
System.out.println("学号\t\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());
}
}
//创建一个方法用来删除学生信息
public static void DelStudent(ArrayList<Student> array) {
//键盘录入要删除的学生学号
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的学生学号:");
String sid = sc.nextLine();
//遍历集合,将对应的学生对象从集合中删除
//定义一个变量表示索引
int index = -1;
for(int i = 0; i<array.size(); i++) {
Student s = array.get(i);
//字符串比较大小用equals()方法
if(s.getSid().equals(sid)) {
index = i;
break;
}
}
//判断录入的学号是否存在
if(index == -1) {
System.out.println("该信息不存在,请重新输入!");
} else {
array.remove(index);
System.out.println("删除成功!");
}
}
//创建一个方法用来修改学生信息
public static void ChangeStudent(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);
//遍历集合,找到与键盘录入相同的学号,修改学生信息
for(int i = 0; i<array.size(); i++) {
Student student = array.get(i);
if(student.getSid().equals(sid)) {
//修改i索引处的元素
array.set(i,s);
break;
}
}
System.out.println("修改成功!");
}
}
总结
学生管理系统的代码实现到这里就结束了,新手需要注意的几个点:
1.在添加学生时需要考虑到学号重复的问题
2.在查看学生时需要考虑到集合中无数据的情况
3.关于主界面代码的编写过程中新手遇到的死循环无法退出的情况,需要使用System.exit(0);这个代码是在Java中System类里的常用方法,它的含义是终止当前运行的Java虚拟机。
4.这篇文章起借鉴作用,每个人要的需求都不一样