运用集合实现——学生信息管理系统
开发工具:IDEA
使用集合存储学生信息。
部分运行图
源代码下载地址:
https://download.csdn.net/download/w_tf2017/11286364
——————————————————————————————
完整代码如下,
仅供学习参考:
Student.java
import java.io.Serializable;
import java.util.Objects;
/**
* @author wangtengfei
* @date 2019/7/5 8:52
*/
public class Student implements Serializable {
private String id; //学号
private String name; //姓名
private String gender; //性别
private int age; //年龄
public Student() {
}
public Student(String id, String name, int age, String gender) {
this.id = id;
this.name = name;
this.gender = gender;
this.age = age;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getGender() {
return gender;
}
public void setGender(String gender) {
this.gender = gender;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Student{" +
"id='" + id + '\'' +
", name='" + name + '\'' +
", gender='" + gender + '\'' +
", age=" + age +
'}';
}
}
StudentManagement.java
import org.omg.CORBA.OBJ_ADAPTER;
import java.io.*;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Scanner;
/**
* @author wangtengfei
* @date 2019/7/5 9:09
*/
public class StudentManagement {
static ArrayList<Student> message = new ArrayList<Student>();
public static void main(String[] args) {
initDate();//进入系统时,读取之前所存储的数据到缓冲区
Scanner sc = new Scanner(System.in);//键盘输入
dis();
while (true) {
String in = sc.next();
switch (in) {
case "1":
addStudent();
break;
case "2":
findStudent();
break;
case "3":
changeStudent();
break;
case "4":
delStudent();
break;
case "5":
showStudent();
break;
case "6":
System.out.println("退出程序成功");
break;
default:
System.out.println("输入错误,请选择1-6!");
dis();
}
}
}
private static void addStudent() {
String flag = "y";
do {
//isInt对年龄是否为整数做异常处理
//isYN对是否继续输入做异常处理
boolean isInt = true, isYN = true;
Scanner sc = new Scanner(System.in);
//随意设定初始值,不影响程序,只为了创建对象,类型对应即可
Student stu = new Student(null, null, 10, null);
System.out.println("请输入学生学号:");
String in = sc.next();
stu.setId(in);
for (Student hasStu : message) {
if (hasStu.getId().equals(in)) {//集合内已经输入的学号
System.out.println("已存在该学生,不能重复添加");
dis();
return;
}
}
System.out.println("请输入学生的姓名:");
stu.setName(sc.next());
System.out.println("请输入学生的年龄:");
//对于年龄为整数的异常处理
while (isInt) {
Scanner intsc = new Scanner(System.in);
try {
isInt = false;
int intAge = intsc.nextInt();//键盘输入的年龄存入intAge
if (intAge > 150 || intAge <= 0) {
System.out.println("年龄必须大于0小于150");
isInt = true;
continue;
}
stu.setAge(intAge);
} catch (Exception e) {
isInt = true;
System.out.println("年龄必须为整数,且大于0小于150");
}
}
System.out.println("请输入学生性别,男输入boy,其余任意键为女性");
if (sc.next().equals("boy")) {
stu.setGender("男");
} else {
stu.setGender("女");
}
message.add(stu);//将stu对象存入集合
//System.out.println(message.size());//调试时使用
System.out.println("是否继续输入? y/n");
flag = sc.next();
//对于是否继续输入的选择做异常处理
if (flag.equals("y") || flag.equals("n")) {
isYN = true;
} else {
System.out.println("请输入y或n");
flag = sc.next();
}
if (flag.equals("n")) {
dis();
break;
}
} while (flag.equals("y"));
}
private static void findStudent() {
if (message.size() == 0) {
System.out.println("学生信息库为空,请先添加学生");
dis();
return;
}
System.out.println("请输入你要查找的学生学号");
Scanner sc = new Scanner(System.in);
String in = sc.next();
Iterator<Student> it = message.iterator();//构建迭代器
while (it.hasNext()) {
Student stu3 = it.next();
if (stu3.getId().equals(in)) {
System.out.println("该学生信息如下:");
System.out.println("学号\t姓名\t年龄\t性别");
System.out.println(stu3.getId() + "\t" + stu3.getName() + "\t" + stu3.getAge() + "\t" + stu3.getGender());
dis();
return;
}
}
System.out.println("删除失败,没有该学生信息");
dis();
}
private static void changeStudent() {
if (message.size() == 0) {
System.out.println("学生信息为空,您无法进行该项操作");
dis();
return;
}
System.out.println("请输入您要修改的学生学号");
Scanner sc = new Scanner(System.in);
String in = sc.next();
Iterator<Student> it = message.iterator();//构造一个迭代器
while (it.hasNext()) {
Student stu1 = it.next();
if (stu1.getId().equals(in)) {
aa:
while (true) {
boolean isInt = true;
System.out.println("1、学号 2、姓名 3、年龄 4、性别 5、【保存】");
String type = sc.next();//修改内容项
switch (type) {
case "1":
boolean flag = true;
System.out.println("学号修改为:");
//修改学号时,原则是不能出现相同的学号
while (flag) {
String isHad = sc.next();//isHad:输入的学号,与集合中进行对比
for (Student hasStu : message) {
if (hasStu.getId().equals(isHad)) {
System.out.println("已存在该学生,不能修改");//要修改的学号已经有学生占用
flag = true;
break;
} else {
flag = false;
}
}
if (flag == false) {
stu1.setId(isHad);//学号修改为我输入的值
System.out.println("学号修改成功");
}
}
break;
case "2":
System.out.println("姓名修改为:");
stu1.setName(sc.next());
System.out.println("姓名修改成功!!");
break;
case "3":
System.out.println("年龄修改为:");
//对于年龄为整数的异常处理
while (isInt) {
Scanner intsc = new Scanner(System.in);
try {
isInt = false;
int intAge = intsc.nextInt();//键盘输入的年龄存入intAge
if (intAge > 150 || intAge <= 0) {
System.out.println("年龄必须大于0小于150");
isInt = true;
continue;
}
stu1.setAge(intAge);
System.out.println("年龄修改成功!!");
} catch (Exception e) {
isInt = true;
System.out.println("年龄必须为整数,且大于0小于150");
}
}
break;
case "4":
System.out.println("性别修改为:(男性修改为boy,其余任意键为女性)");
if (sc.next().equals("buy")) {
stu1.setGender("男");
} else {
stu1.setGender("女");
}
System.out.println("性别修改成功!!");
break;
case "5":
System.out.println("学生信息更新已保存");
dis();
break aa;
default:
System.out.println("输入错误,请重新输入!");
}
}
return;
}
}
System.out.println("对不起,没有找到改学生信息。");
dis();
}
private static void delStudent() {
if (message.size() == 0) {
System.out.println("学生信息库为空,您无法进行该项操作");
dis();
return;
}
System.out.println("请输入您要删除的学生学号");
Scanner sc = new Scanner(System.in);
String in = sc.next();
Iterator<Student> it = message.iterator();//构建迭代器
while (it.hasNext()) {
Student stu2 = it.next();
if (stu2.getId().equals(in)) {
message.remove(stu2);
System.out.println("删除该学生信息成功!!");
dis();
return;
}
}
System.out.println("对不起,没有找到该学生信息。");
dis();
}
private static void showStudent() {
if (message.size() == 0) {
System.out.println("学生信息为空,请先添加学生信息");
} else {
System.out.println("学号\t姓名\t年龄\t性别");
for (Student msg : message) {
System.out.println(msg.getId() + "\t\t" + msg.getName() + "\t" + msg.getAge() + "\t\t" + msg.getGender());
}
}
dis();
}
private static void initDate() {
System.out.println("---------首次加载,请添加学生信息!!!-------");
}
static void dis() {
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("***** 请输入你要进行的操作(1-6) *****");
}
}