学生管理系统:
简易版本,稍后博主会发出进阶版的~希望大家喜欢~
package student;
public class Student {
private String id;
private String name;
private int age;
private String address;
public Student() {
super();
// TODO Auto-generated constructor stub
}
public Student(String id, String name, int age, String address) {
super();
this.id = id;
this.name = name;
this.age = age;
this.address = address;
}
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 int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
}
package student;
import java.util.ArrayList;
import java.util.Scanner;
public class StudentSystem {
/*
* static ArrayList<Student> list=new ArrayList<>(); static { list.add(new
* Student("001","zhangsan",25,"beijing")); }
*/
//注册的时候再看吧,感觉现在学生增删改查没法用
public static void main(String[] args) {
final String ADD_STUDENT="1";
final String DELETE_STUDENT="2";
final String UPDATE_STUDENT="3";
final String QUERY_STUDENT="4";
final String EXIT="5";
//可以使后边的数据不能改变,而且将数字代替为英文增强了可读性
//idea中是可以写成 private static final String ADD_STUDENT="1";
ArrayList<Student> list=new ArrayList<>();
//要导包??如果有错误记得导包java.util.ArrayList包
Scanner sc=new Scanner(System.in);
while(true) {
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.退出");
String choose=sc.next();
switch(choose) {
case ADD_STUDENT->addStudent(list);
case DELETE_STUDENT->deleteStudent(list);
case UPDATE_STUDENT->updateStudent(list);
case QUERY_STUDENT->queryStudent(list);
//注意:当下面的函数中有形参时,也要将调用函数的括号中添加相应的list变量
case EXIT->{
System.out.println("感谢使用,下次再见~");
System.exit(0);
}
default->System.out.println("输入错误,重新输入!");
//那我们就以后用这种格式->,用:的话好像不行
}
}
}
private static void queryStudent(ArrayList<Student> list) {
// TODO Auto-generated method stub
if(list.size()==0) {
System.out.println("当前数据库无学生信息,请添加~");
}else {
System.out.println("id\tname\tage\taddress");
for(int i=0;i<list.size();i++) {
System.out.println(list.get(i).getId()+"\t"+list.get(i).getName()
+"\t"+list.get(i).getAge()+"\t"+list.get(i).getAddress());
}
}
}
private static void updateStudent(ArrayList<Student> list) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要修改的学生id:");
String id=sc.next();
Student s=new Student();
for(int i=0;i<list.size();i++) {
Student stu=list.get(i);
String sid=stu.getId();
int index=locate_id(list,id);
if(index>=0){
System.out.println("请输入你要修改的学生姓名:");
String newName=sc.next();
s.setName(newName);
System.out.println("请输入你要修改的学生年龄:");
int newAge=sc.nextInt();
s.setAge(newAge);
System.out.println("请输入你要修改的学生家庭地址:");
String newAddress=sc.next();
s.setAddress(newAddress);
System.out.println("修改成功!");
break;
}else {
System.out.println("还没有添加此学生信息哦~");
System.out.println("是否添加?是输入“1”,否输入“0”!");
String add=sc.next();
switch(add) {
case "0"->System.out.println("取消成功!");
case "1"->{
addStudent(list);
}
}
break;
}
}
}
private static void deleteStudent(ArrayList<Student> list) {
// TODO Auto-generated method stub
Scanner sc=new Scanner(System.in);
System.out.println("请输入你要删除的学生信息:");
String id=sc.next();
for(int i=0;i<list.size();i++) {
Student stu=list.get(i);
String sid=stu.getId();
int index=locate_id(list,id);
if(index>=0){
System.out.println("确认删除吗?删除后无法恢复数据!");
System.out.println("确认输入“0”,取消输入“1”");
String answer = sc.next();
switch(answer) {
case "0"-> {
list.remove(index);
System.out.println("删除成功!");
}
case "1"-> System.out.println("取消成功,返回主界面!");
}
break;
}else {
System.out.println("还没有添加此学生信息哦~");
break;
}
}
}
private static void addStudent(ArrayList<Student> list) {
// TODO Auto-generated method stub
Student stu=new Student();
Scanner sc=new Scanner(System.in);
while(true) {
System.out.println("请输入学生id");
String id=sc.next();
boolean flag=private_id(list,id);
if(!flag) {
stu.setId(id);
break;
}else {
System.out.println("id已存在,请重新输入吧~");
}
}
//记住这种思想,第一步判断只返回boolean类型的值,所以不用提示,
//第二部将返回值用主函数中flag变量接收,这时候因为还要重新输入和判断
//所以我们一应该将重新输入和重新判断布尔值来while循环嵌套
//从而得到最后结果,而不是直接把flag嵌套,从而无限循环输出提示语句
System.out.println("请输入学生姓名");
String name=sc.next();
stu.setName(name);
System.out.println("请输入学生年龄");
int age=sc.nextInt();
stu.setAge(age);
System.out.println("请输入学生家庭住址");
String address=sc.next();
stu.setAddress(address);
list.add(stu);
}
//判断id唯一
public static boolean private_id(ArrayList<Student> list,String id) {
for(int i=0;i<list.size();i++) {
Student stu=list.get(i);
String sid=stu.getId();
if(id.equals(sid)) {
return true;
}
}
return false;
}
//判断id索引的位置
public static int locate_id(ArrayList<Student> list,String id) {
for(int i=0;i<list.size();i++) {
Student stu=list.get(i);
String sid=stu.getId();
if(id.equals(sid)) {
return i;
}
}
return -1;
}
}
需要的朋友可自行拿走~