学生管理系统实现增删改查
文章目录
- 学生管理系统实现增删改查
- 前言
- 一、代码块
- 二、代码分析
- 1.代码思路
- 2,学生类
- 3,接口
- 4,chuli类
- 5, 在主类中,kaishi方法
- 5,显示效果
前言
学生管理系统通过集合实现学生信息添加,修改,删除,查找,输出所有信息等功能。
一、代码块
import java.util.ArrayList;
import java.util.Scanner;
public class test {
static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
kaishi();
}
public static void kaishi(){
jiekou jk = new chuli();
while(true){
System.out.println("===========学生管理系统==============");
System.out.println("\t1,添加新学生信息");
System.out.println("\t2,删除学生信息");
System.out.println("\t3,修改学生信息");
System.out.println("\t4,查询学生信息");
System.out.println("\t5,输出所有学生信息");
System.out.println("\t6,退出系统");
int key = sc.nextInt();
switch(key){
case 1:
if (jk.add()) System.out.println("添加成功");
else System.out.println("添加失败");
break;
case 2:
if(jk.rmove()) System.out.println("删除成功");
else System.out.println("删除失败");
break;
case 3:
if(jk.updata()) System.out.println("修改成功");
else System.out.println("修改失败");
break;
case 4:
jk.show();
break;
case 5:
jk.print();
break;
case 6:
System.out.println("退出成功");
return;
default:
System.out.println("输入有误");
}
}
}
}
interface jiekou{
boolean add(); //添加
boolean rmove(); //删除
boolean updata(); //修改
void show(); //查询
void print(); //输出
}
class chuli implements jiekou{
Scanner sc = new Scanner(System.in);
public ArrayList<Student> arr = new ArrayList<>();
//构造方法
public chuli(){
arr.add(new Student("aierken","nan",18,"19199467744" ,"xinjiang"));
arr.add(new Student("nijia","nan",18,"19199466445" ,"shandong"));
arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
arr.add(new Student("ken","nv",36,"19199467744" ,"xinjiang"));
arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
}
//添加
@Override
public boolean add(){
try{
System.out.println("-------添加学生信息--------");
System.out.print("\t请输入学生姓名:");
String name = sc.next();
System.out.print("\t请输入学生性别:");
String bl = sc.next();
System.out.print("\t请输入学生年龄:");
int age = sc.nextInt();
System.out.print("\t请输入学生电话:");
String phone = sc.next();
System.out.print("\t请输入学生地址:");
String address = sc.next();
arr.add(new Student(name,bl,age,phone,address));
return true;
}catch(Exception e){
sc.next();
System.out.println("输入格式有误");
}
return false;
}
//删除
@Override
public boolean rmove(){
System.out.println("-------删除学生信息--------");
System.out.print("\t请输入要删除的学生姓名:");
String name = sc.next();
Student[] stunum = chazhao(name);
int num = stunum.length;
if(num!=0){
if (num == 1){
arr.remove(stunum[0]);
return true;
}
System.out.println("您要删除哪一个?(请输入序号)");
int key = sc.nextInt();
if(key<=num){
arr.remove(stunum[key-1]);
return true;
}
System.out.println("输入有误");
}
return false;
}
//修改 查询要修改的学生
@Override
public boolean updata() {
System.out.println("-------修改学生信息--------");
System.out.print("\t请输入要修改的学生姓名:");
String name = sc.next();
Student[] stunum = chazhao(name);
int num = stunum.length;
if(num!=0){
if (num == 1){
arr.add(xiugai(stunum[0]));
arr.remove(stunum[0]);
return true;
}
System.out.println("您要修改哪一个?(请输入序号)");
int key = sc.nextInt();
if(key<=num){
arr.add(xiugai(stunum[0]));
arr.remove(stunum[0]);
return true;
}
System.out.println("输入有误");
}
return false;
}
//查询
@Override
public void show(){
System.out.println("---------查询学生信息--------");
System.out.print("请输入要查询的学生姓名:");
String name = sc.next();
chazhao(name);
}
//输出所有
@Override
public void print(){
System.out.println("----------输出所有学生信息----------");
for (Student stu:arr){
System.out.println(stu.toString());
}
}
//修改方法 对值进行修改并返回
public Student xiugai(Student stu){
System.out.println("请输入修改选项:");
System.out.println("\t1,姓名:"+"\n"+
"\t2,年龄:"+"\n"+
"\t3,电话:"+"\n"+
"\t4,地址:");
int key = sc.nextInt();
switch(key){
case 1:
System.out.print("请输入新名:");
stu.setName(sc.next());
break;
case 2:
System.out.print("请输入年龄:");
stu.setAge(sc.nextInt());
break;
case 3:
System.out.print("请输入电话:");
stu.setPhone(sc.next());
break;
case 4:
System.out.print("请输入地址:");
stu.setAddress(sc.next());
break;
default:
System.out.println("输入有误");
}
return stu;
}
//查找方法 查找给定的学生信息并返回
public Student[] chazhao(String name){
Student[] stunum = new Student[arr.size()];
int num = 0;
for (Student stu : arr){
if(name.equals(stu.getName())){
stunum[num] = stu;
num++;
}
}
System.out.println("共找到"+num+"个"+name);
System.out.println();
Student[] students = new Student[num];
for(int i=0;i<num;i++){
System.out.println((i+1)+","+stunum[i].toString());
students[i] = stunum[i];
}
return students;
}
}
class Student{
private String name; //姓名
final String bl; //性别
private int age; //年龄
private String phone; //电话
private String address; //地址
public Student(String name,String bl,int age,String phone,String address){
this.name = name;
this.bl = bl;
this.age = age;
this.phone = phone;
this.address = address;
}
@Override
public String toString() {
return "姓名=" + name + "\t" +
", 性别=" + bl +
", 年龄=" + age +
", 电话=" + phone + "\t" +
", 地址=" + address + "\t" ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*public String isBl() {
return bl;
}
public void setBl(String bl) {
this.bl = bl;
}*/
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
/*public String getPhone() {
return phone;
}*/
public void setPhone(String phone) {
this.phone = phone;
}
/*public String getAddress() {
return address;
}*/
public void setAddress(String address) {
this.address = address;
}
}
二、代码分析
1.代码思路
代码是由简单工厂类思路编写,在编写好学生类之后,再编写一个jiekou类接口:
接口有 添加 删除 修改 查询 输出所有 等方法
这些方法由chuli类实现
在主类编写一个kaishi方法,在方法中处理用户的选择以及操作反馈。
2,学生类
在学生类定义属性,get set方法以及重写toString方法
class Student{
private String name; //姓名
final String bl; //性别
private int age; //年龄
private String phone; //电话
private String address; //地址
public Student(String name,String bl,int age,String phone,String address){
this.name = name;
this.bl = bl;
this.age = age;
this.phone = phone;
this.address = address;
}
@Override
public String toString() {
return "姓名=" + name + "\t" +
", 性别=" + bl +
", 年龄=" + age +
", 电话=" + phone + "\t" +
", 地址=" + address + "\t" ;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/*public String isBl() {
return bl;
}
public void setBl(String bl) {
this.bl = bl;
}*/
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
/*public String getPhone() {
return phone;
}*/
public void setPhone(String phone) {
this.phone = phone;
}
/*public String getAddress() {
return address;
}*/
public void setAddress(String address) {
this.address = address;
}
}
3,接口
在接口编写 添加 删除 修改 查询 输出所有 等方法,让chuli类实现接口
interface jiekou{
boolean add(); //添加
boolean rmove(); //删除
boolean updata(); //修改
void show(); //查询
void print(); //输出
}
4,chuli类
- chuli类实现接口jiekou
- 在处理类中定义容器,并把新添加的学生类添加到容器中。
- 编写构造方法,在构造方法中添加几个学生信息。
- 在实现接口jiekou的同时再编写两个方法,为实现接口方法使用。
class chuli implements jiekou{
Scanner sc = new Scanner(System.in);
public ArrayList<Student> arr = new ArrayList<>();
//构造方法
public chuli(){
arr.add(new Student("aierken","nan",18,"19199465744" ,"xinjiang"));
arr.add(new Student("nijia","nan",18,"19199466445" ,"shandong"));
arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
arr.add(new Student("ken","nv",36,"19199435744" ,"xinjiang"));
arr.add(new Student("aier","nv",25,"19199557744" ,"beijing"));
}
//添加
@Override
public boolean add(){
try{
System.out.println("-------添加学生信息--------");
System.out.print("\t请输入学生姓名:");
String name = sc.next();
System.out.print("\t请输入学生性别:");
String bl = sc.next();
System.out.print("\t请输入学生年龄:");
int age = sc.nextInt();
System.out.print("\t请输入学生电话:");
String phone = sc.next();
System.out.print("\t请输入学生地址:");
String address = sc.next();
arr.add(new Student(name,bl,age,phone,address));
return true;
}catch(Exception e){
sc.next();
System.out.println("输入格式有误");
}
return false;
}
//删除
@Override
public boolean rmove(){
System.out.println("-------删除学生信息--------");
System.out.print("\t请输入要删除的学生姓名:");
String name = sc.next();
Student[] stunum = chazhao(name);
int num = stunum.length;
if(num!=0){
if (num == 1){
arr.remove(stunum[0]);
return true;
}
System.out.println("您要删除哪一个?(请输入序号)");
int key = sc.nextInt();
if(key<=num){
arr.remove(stunum[key-1]);
return true;
}
System.out.println("输入有误");
}
return false;
}
//修改 查询要修改的学生
@Override
public boolean updata() {
System.out.println("-------修改学生信息--------");
System.out.print("\t请输入要修改的学生姓名:");
String name = sc.next();
Student[] stunum = chazhao(name);
int num = stunum.length;
if(num!=0){
if (num == 1){
arr.add(xiugai(stunum[0]));
arr.remove(stunum[0]);
return true;
}
System.out.println("您要修改哪一个?(请输入序号)");
int key = sc.nextInt();
if(key<=num){
arr.add(xiugai(stunum[0]));
arr.remove(stunum[0]);
return true;
}
System.out.println("输入有误");
}
return false;
}
//查询
@Override
public void show(){
System.out.println("---------查询学生信息--------");
System.out.print("请输入要查询的学生姓名:");
String name = sc.next();
chazhao(name);
}
//输出所有
@Override
public void print(){
System.out.println("----------输出所有学生信息----------");
for (Student stu:arr){
System.out.println(stu.toString());
}
}
//修改方法 对值进行修改并返回
public Student xiugai(Student stu){
System.out.println("请输入修改选项:");
System.out.println("\t1,姓名:"+"\n"+
"\t2,年龄:"+"\n"+
"\t3,电话:"+"\n"+
"\t4,地址:");
int key = sc.nextInt();
switch(key){
case 1:
System.out.print("请输入新名:");
stu.setName(sc.next());
break;
case 2:
System.out.print("请输入年龄:");
stu.setAge(sc.nextInt());
break;
case 3:
System.out.print("请输入电话:");
stu.setPhone(sc.next());
break;
case 4:
System.out.print("请输入地址:");
stu.setAddress(sc.next());
break;
default:
System.out.println("输入有误");
}
return stu;
}
//查找方法 查找给定的学生信息并返回
public Student[] chazhao(String name){
Student[] stunum = new Student[arr.size()];
int num = 0;
for (Student stu : arr){
if(name.equals(stu.getName())){
stunum[num] = stu;
num++;
}
}
System.out.println("共找到"+num+"个"+name);
System.out.println();
Student[] students = new Student[num];
for(int i=0;i<num;i++){
System.out.println((i+1)+","+stunum[i].toString());
students[i] = stunum[i];
}
return students;
}
}
5, 在主类中,kaishi方法
- 在方法中定义接口并创建处理类。
- 通过while循环判断用户选择,对用户选择进行处理并反馈处理结果。
public static void kaishi(){
jiekou jk = new chuli();
while(true){
System.out.println("===========学生管理系统==============");
System.out.println("\t1,添加新学生信息");
System.out.println("\t2,删除学生信息");
System.out.println("\t3,修改学生信息");
System.out.println("\t4,查询学生信息");
System.out.println("\t5,输出所有学生信息");
System.out.println("\t6,退出系统");
int key = sc.nextInt();
switch(key){
case 1:
if (jk.add()) System.out.println("添加成功");
else System.out.println("添加失败");
break;
case 2:
if(jk.rmove()) System.out.println("删除成功");
else System.out.println("删除失败");
break;
case 3:
if(jk.updata()) System.out.println("修改成功");
else System.out.println("修改失败");
break;
case 4:
jk.show();
break;
case 5:
jk.print();
break;
case 6:
System.out.println("退出成功");
return;
default:
System.out.println("输入有误");
}
}
}
5,显示效果
- 主页
===========学生管理系统==============
1,添加新学生信息
2,删除学生信息
3,修改学生信息
4,查询学生信息
5,输出所有学生信息
6,退出系统
- 添加学生
===========学生管理系统==============
1,添加新学生信息
2,删除学生信息
3,修改学生信息
4,查询学生信息
5,输出所有学生信息
6,退出系统
1
-------添加学生信息--------
请输入学生姓名:kenken
请输入学生性别:男
请输入学生年龄:25
请输入学生电话:19999999999
请输入学生地址:新疆
添加成功
- 删除学生
===========学生管理系统==============
1,添加新学生信息
2,删除学生信息
3,修改学生信息
4,查询学生信息
5,输出所有学生信息
6,退出系统
2
-------删除学生信息--------
请输入要删除的学生姓名:aier
共找到2个aier
1,姓名=aier , 性别=nv, 年龄=25, 电话=19199557744 , 地址=beijing
2,姓名=aier , 性别=nv, 年龄=25, 电话=19199557744 , 地址=beijing
您要删除哪一个?(请输入序号)
1
删除成功
- 修改学生信息
===========学生管理系统==============
1,添加新学生信息
2,删除学生信息
3,修改学生信息
4,查询学生信息
5,输出所有学生信息
6,退出系统
3
-------修改学生信息--------
请输入要修改的学生姓名:kenken
共找到1个kenken
1,姓名=kenken , 性别=男, 年龄=25, 电话=19999999999 , 地址=新疆
请输入修改选项:
1,姓名:
2,年龄:
3,电话:
4,地址:
4
请输入地址:北京
修改成功
- 查询学生信息
===========学生管理系统==============
1,添加新学生信息
2,删除学生信息
3,修改学生信息
4,查询学生信息
5,输出所有学生信息
6,退出系统
4
---------查询学生信息--------
请输入要查询的学生姓名:kenken
共找到1个kenken
1,姓名=kenken , 性别=男, 年龄=25, 电话=19999999999 , 地址=北京
===========学生管理系统==============
1,添加新学生信息
2,删除学生信息
3,修改学生信息
4,查询学生信息
5,输出所有学生信息
6,退出系统
4
---------查询学生信息--------
请输入要查询的学生姓名:baba
共找到0个baba
- 输出所有学生信息
===========学生管理系统==============
1,添加新学生信息
2,删除学生信息
3,修改学生信息
4,查询学生信息
5,输出所有学生信息
6,退出系统
5
----------输出所有学生信息----------
姓名=aierken , 性别=nan, 年龄=18, 电话=19199467744 , 地址=xinjiang
姓名=nijia , 性别=nan, 年龄=18, 电话=19199466445 , 地址=shandong
姓名=ken , 性别=nv, 年龄=36, 电话=19199467744 , 地址=xinjiang
姓名=aier , 性别=nv, 年龄=25, 电话=19199557744 , 地址=beijing
姓名=kenken , 性别=男, 年龄=25, 电话=19999999999 , 地址=北京