Java的学生管理系统
希望通过前面所学的类的封装知识和String类与ArrayList集合来实现一个简单的学生管理系统
功能要求:添加、删除、修改、查看所有、退出
注意:为了保证学号是唯一键值,一定要在学号添加和修改时进行判断。同时对输入异常的数据进行处理。
注:代码并不完善,还有问题需要测试,尽量自己编写内容。
package studentmanager;
/*
定义一个学生类
*/
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;
}
//set/get/show方法
public void setSid(String sid){
this.sid = sid;
}
public String getSid(){
return this.sid;
}
public void setName(String name){
this.name = name;
}
public String getName(){
return this.name;
}
public void setAge(String age){
this.age = age;
}
public String getAge(){
return this.age;
}
public void setAddress(String address){
this.address = address;
}
public String getAddress(){
return this.address;
}
public void show(){
System.out.println(
"学生学号:" + sid + "\t" + "姓名:" + name + "\t" + "年龄:" + age + "\t" + "居住地址:" + address
);
}
}
package studentmanager;
/*
定义一个学生管理类
*/
//导包
import java.util.Scanner;
import java.util.ArrayList;
public class StudentManager {
public static void main(String[] args){
//1、显示菜单
menu();
//2、创建对象用于存储学生数据
ArrayList<Student> array = new ArrayList<Student>();
//3、开始
boolean flag = true; //定义一个boolean变量用于控制循环
while(flag){
Scanner sc = new Scanner(System.in);
int key = sc.nextInt();
if(key < 1 || key > 5){
System.out.println("对不起,你输入的数字系统无法识别!请重新输入:");
}
else{
switch(key){
case 1:
addStudent(array);
break;
case 2:
if(array.size() == 0){
System.out.println("当前没有数据,请重选菜单栏");
}
else{
findAllStudent(array);
}
break;
case 3:
if(array.size() == 0){
System.out.println("当前没有数据,请重选菜单栏");
}
else{
deleteStudent(array);
}
break;
case 4:
if(array.size() == 0){
System.out.println("当前没有数据,请重选菜单栏");
}
else{
updateStudent(array);
}
break;
default:
System.out.println("退出");
flag = false; //控制循环结束
break;
}
}
}
}
//定义一个方法查看学号是否重复
public static boolean sidDuplicateChecking(ArrayList<Student> array, String sid){
for(int i = 0; i < array.size(); i++){
if(array.get(i).getSid().equals(sid)){ //处理相同学号问题
System.out.println("此学号已经存在!请用户再次确定,返回菜单栏");
return true;
}
}
return false;
}
//定义一个方法用于修改时的单项信息处理
public static boolean singleInformation(ArrayList<Student> array, int i){
Scanner sc = new Scanner(System.in);
System.out.println("请输入你需要修改的*具体*信息(学号、姓名、年龄、地址):");
//接收需要修改的具体值 遍历元素时进行比对修改
String line = sc.nextLine();
if(line.equals(array.get(i).getSid())){
System.out.println("请输入修改后的数据:");
String sid = sc.nextLine();
array.get(i).setSid(sid);
if(sidDuplicateChecking(array, sid)){
return true;
}
}
else if(line.equals(array.get(i).getName())){
System.out.println("请输入修改后的数据:");
array.get(i).setName(sc.nextLine());
}
else if(line.equals(array.get(i).getAge())){
System.out.println("请输入修改后的数据:");
array.get(i).setAge(sc.nextLine());
}
else if(line.equals(array.get(i).getAddress())){
System.out.println("请输入修改后的数据:");
array.get(i).setAddress(sc.nextLine());
}
else{
System.out.println("输入的数据不符合要求!");
}
return false;
}
//定义一个方法用于修改时的单项信息处理
public static boolean moreInformation(ArrayList<Student> array, int i){
Scanner sc = new Scanner(System.in);
System.out.println("请依次输入修改后的学生的信息:");
System.out.println("学号:");
String sid = sc.nextLine();
//判断学号是否重复
if(sidDuplicateChecking(array, sid)){
return true;
}
System.out.println("姓名:");
String name = sc.nextLine();
System.out.println("年龄:");
String age = sc.nextLine();
System.out.println("住址:");
String address = sc.nextLine();
//此处使用了修改方法 set
array.set(i, new Student(sid, name, age, address));
return false;
}
//定义一个方法用于显示菜单
public static void menu(){
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("-------请输入你的选择:------");
}
//定义一个方法,用于添加学生信息
public static void addStudent(ArrayList<Student> array){
Scanner sc = new Scanner(System.in);
System.out.println("请输入你要添加学生的信息:");
System.out.println("学号:");
String sid = sc.nextLine();
//判断输入的学号是否重复
if(sidDuplicateChecking(array, sid)){
return;
}
System.out.println("姓名:");
String name = sc.nextLine();
System.out.println("年龄:");
String age = sc.nextLine();
System.out.println("住址:");
String address = sc.nextLine();
array.add(new Student(sid, name, age, address));
System.out.println("添加成功,返回菜单栏");
}
//定义一个方法,用于查看学生信息
public static void findAllStudent(ArrayList<Student> array){
for(int i = 0; i < array.size(); i++){
System.out.println(
"学号:" + array.get(i).getSid() + "\t" +
"姓名:" + array.get(i).getName() + "\t" +
"年龄:" + array.get(i).getAge() + "\t" +
"住址:" + array.get(i).getAddress()
);
}
System.out.println("显示结束请继续选择菜单栏:");
}
//定义一个方法,用于删除学生信息
public static void deleteStudent(ArrayList<Student> array){
//创建Scanner对像接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入你需要删除学生的学号:");
String sid = sc.nextLine();
//创建Student对象用于接收删除对象
Student element = new Student();
//查找对应学号第一次出现的索引
for(int i = 0; i < array.size(); i++){
//通过判断 Student对象中的学号是否相等获取 要删除元素的下标索引并进行删除
if(array.get(i).getSid().equals(sid)){
element = array.remove(i);
//显示删除对象进行确定
System.out.println("删除学生信息为:");
System.out.println(
"学号:" + element.getSid() + "\t" +
"姓名:" + element.getName() + "\t" +
"年龄:" + element.getAge() + "\t" +
"住址:" + element.getAddress()
);
System.out.println("删除成功,请继续选择菜单栏:");
return;
}
}
System.out.println("输入的学号信息不存在,返回菜单栏");
}
//定义一个方法,用于修改学生信息
public static void updateStudent(ArrayList<Student> array){
//创建Scanner对像接收数据
Scanner sc = new Scanner(System.in);
System.out.println("请输入你需要修改学生的学号:");
String sid = sc.nextLine();
//创建一个Student变量用于接收修改前的变量
Student element = new Student();
for(int i = 0; i < array.size(); i++){
if(array.get(i).getSid().equals(sid)){
System.out.println("请选择修改信息的方式:(1:单项 或者 2:所有):");
String str = sc.nextLine();
//处理单项信息
if(str.equals("1")){
//调用单项处理方法 返回值为真则表示 修改后的学号已经有存在的或者学号无变动
if(singleInformation(array, i)){
return;
}
}
//处理多项信息
else if(str.equals("2")){
//调用多项处理方法 返回值为真则表示 修改后的学号已经有存在的或者学号无变动
if(moreInformation(array, i)){
return;
}
}
//处理异常输入
else{
System.out.println("输入数据不符合要求!");
return;
}
}
else{
System.out.println("对不起,你输入的学号不存在!返回菜单栏");
return;
}
System.out.println("修改成功,请继续选择菜单栏:");
}
}
}
标签:清屏,Java,String,管理系统,System,sid,println,array,out
From: https://www.cnblogs.com/fragmentary/p/16747990.html