JavaSE_day18(基于集合的学生管理系统--简易增删改查)

 * 1.ArrayList练习
 *        1.1   创建一个集合,存储学生对象,学生对象的数据来自键盘录入,最后,遍历集合
 *          !!!!学生管理系统        
 * 
 * 注意:如果不加break,则跳不出switch语句,他会在匹配标签那一行往下执行,直到default语句输完后跳出switch。()

public class A_One {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		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 choiceString = sc.nextLine();
			switch (choiceString) {   //如果不加break,则跳不出switch语句,他会在匹配标签那一行往下执行,直到default语句输完后跳出switch,可以试着注释掉某个break看效果
			case "1":
				System.out.println("查看学生");
				break;
			case "2":
				System.out.println("2 添加学生");
				break;
			case "3":
				System.out.println("3 删除学生");
				break;
			case "4":
				System.out.println("4 修改学生");
				break;
			case "5":
				System.out.println("5 退出");
			default:
				System.out.println("谢谢你的使用 ");
				System.exit(0);//结束运行
			}
		}
	}
}

switch (value) { case 1: case 2: case 3: System.out.println("Value is 1, 2, or 3"); break; case 4: System.out.println("Value is 4"); break; default: System.out.println("Value is not 1, 2, 3, or 4"); }

这段代码说明switch内的值和case的值的数据类型是对应的。如第一个代码是String,第二个代码是int。

 *    1.2   创建一个集合,存储学生对象,学生对象的数据来自键盘录入,最后,遍历集合
 * 
 * 分析:
 *         A:定义学生类
 *         B:创建集合对象
 *         C:键盘录入数据,创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
 *         D:把学生对象作为元素存储到集合中
 *         E:遍历集合

public class B_Student {

	private String name;
	private int age;
	public B_Student() {
		super();
		// TODO Auto-generated constructor stub
	}
	public B_Student(String name, int age) {
		super();
		this.name = name;
		this.age = age;
	}
	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 class B_ArrayListTest1 {
	
	public static void main(String[] args) {
		//创建集合对象
		ArrayList array = new ArrayList();
		
		//键盘录入
//		Scanner sc = new Scanner(System.in);
//		System.out.println("请输入学生姓名:");
//		String name=sc.nextLine();
//		System.out.println("请输入学生年龄:");
//		int age=sc.nextInt();
//		
//		//创建学生对象 并赋值键盘录入数据
//		B_Student s = new B_Student(name,age);
//		
//		//存储学生对象
//		array.add(s);
		
		//第二种方法:调用方法,可以一次运行存储多次。上面的只能一次运行 存储一次!
		addStudent(array);
		addStudent(array);
		addStudent(array);
		
		
		//遍历集合
		for(int i=0;i

1.3  学生管理系统

 * 学生管理系统的学生测试类

 *       步骤:
 *         A:定义学生类
 *         B:学生管理系统的主界面的代码编写
 *         C:学生管理系统查看所有学生代码编写  :  遍历集合 , 元素为学生对象 ,每个对象调用属性  .getXxx()
 *         D:学生管理系统增加学生的代码编写     :   直接创建学生对象,将对象调用set方法设置信息,最后将对象存入集合  .setXxx()与add(student);
 *         E:学生管理系统修改学生的代码编写     :  通过学号查找,然后重新设置属性,调用set(index,student)方法,即将index索引在的地方换成student,做到更新内容
 *         F:学生管理系统删除学生的代码编写     :   通过学号查找,然后remove(index)索引,直接删除索引位置的元素
 * 

/*
 * 学生管理系统的学生类
 * 
 * */

public class Student {
	private String sid;
	private String name;
	private String age;
	private String address;

	public Student() {
		super();
	}

	public Student(String sid, String name, String age, String address) {
		super();
		this.sid = sid;
		this.name = name;
		this.age = age;
		this.address = address;
	}

	public String getSid() {
		return sid;
	}

	public void setSid(String sid) {
		this.sid = sid;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getAge() {
		return age;
	}

	public void setAge(String age) {
		this.age = age;
	}

	public String getAddress() {
		return address;
	}

	public void setAddress(String address) {
		this.address = address;
	}

}

public class StudentManangerTest {
	public static void main(String[] args) {
		
		//1.创建集合对象 用于存储学生信息、查看学生信息、删除学生信息、修改学生信息
		ArrayList array = new ArrayList();
		
		//2.学生管理系统的主界面的编写
		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 choiceString = sc.nextLine();
			switch (choiceString) {   //如果不加break,则跳不出switch语句,他会在匹配标签那一行往下执行,直到default语句输完后跳出switch
			case "1":
				findAllStudent(array);
				break;
			case "2":
				addStudent(array);
				break;
			case "3":
				deleteStudent(array);
				break;
			case "4":
				updateStudent(array);
				break;
			case "5":
			default:
				System.out.println("谢谢你的使用 ");
				System.exit(0);
				break;
			}
		}
	}

	//3.修改学生信息代码编写
	private static void updateStudent(ArrayList array) {
		Scanner sc = new Scanner(System.in);
//		while(true){
		System.out.println("请输入你要修改学生的学号:");
		String sid = sc.nextLine();
		int index = -1;
		for (int x = 0; x < array.size(); x++) {  //遍历每一个集合元素
			Student s = array.get(x);
			if (s.getSid().equals(sid)) {        //遍历之后取得学生的sid属性与键盘输入的学号比较
				index = x;           //比较成功 , 那么index有值,即不等于-1了,同时这个index也是第n个元素的位置,方便用于后续更新指定位置的信息
				break;
			}
		}
		if (index != -1) {      //说明比较成功,可以进行更新
			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.set(index, s);//public E set(int index, E element)用指定的元素替代此列表中指定位置上的元素。 
//								注意:public void add(int i,E e)//在指定的索引处添加一个元素,所以综合考虑要选set
			System.out.println("修改学生成功");
//			break;  66行这里若加了一个while,那么就要break,意思是,找到学号修改的学生时,才会跳出循环,否则一直输入学号,因为else无break;
		} else {
			System.out.println("不好意思,你要修改的学号对应的学生信息不存在,请回去重新选择你的操作");
		}
//	}
}

	//4.删除学生信息代码编写
	private static void deleteStudent(ArrayList array) {
		Scanner sc = new Scanner(System.in);
		while(true){
		System.out.println("请输入你要删除学生的学号:");
		String sid = sc.nextLine();
		int index = -1;
		for (int x = 0; x < array.size(); x++) {
			Student s = array.get(x);
			if (s.getSid().equals(sid)) { //x代表索引  ,所以匹配上时, 将x赋值给index,再用remover(index)删除特定索引的学生对象元素
				index = x;
				break;
			}
		}
		if (index != -1) {
			array.remove(index);
			System.out.println("删除学生成功");
			break;  //跳出while循环
		} else {
			System.out.println("不好意思,你要删除的学号对应的学生信息不存在,请回去重新选择你的操作");
			//没有break,跳不出循环,直到找到学号,,或者就不要while了,只执行一次。然后回到27行的位置继续选择
		}
		}
	}

	//5.添加学生信息代码的编写
	private static void addStudent(ArrayList array) {
		Scanner sc = new Scanner(System.in);
		String sid;
		while (true) {
			System.out.println("请输入学号:");
			sid = sc.nextLine();

			boolean flag = false;
			for (int x = 0; x < array.size(); x++) {//遍历集合元素 ,是学生对象, 直接调用学号属性 ,判断已经存在的每一个学生的学号和输入的学号是否相等。相等继续循环,反之下一步
				Student s = array.get(x);
				if (s.getSid().equals(sid)) {
					flag = true;    //匹配到了 , 要继续循环 ,重新输入学号
				}
			}

			if (flag == true) {    //学号匹配到了 , 要继续循环 ,这里没有break;  重新输入学号
				System.out.println("你输入的学号已经被占用,请重新输入");
			} else {
				break;             //学号没有匹配到 , 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("添加学生成功");
	}
	
	//6.查询学生信息的代码编写
	//判断是否有值 , 节省资源  -在更新那里也可以用 判断没人的时候就不用继续更新了
	private static void findAllStudent(ArrayList array) {
		if (array.size() == 0) {
			System.out.println("不好意思,目前没有学生信息可供查看,请回去重新选择你的操作");
			return;
		}
		//集合通过get(i)遍历每个元素,元素.getXxx()方法获取学生的信息
		System.out.println("学号\t姓名\t年龄\t居住地");   //  \t就是一个制表符 , 会有空格效果
		for (int x = 0; x < array.size(); x++) {
			Student s = array.get(x);
			System.out.println(s.getSid() + "\t" + s.getName() + "\t" + s.getAge() + "\t" + s.getAddress());
		}
	}
}



 *        2.回顾成员方法:
 *             添加元素:
 *                     public boolean add(E e)//添加元素(上面不返回值,但是添加了)
 *                     public void add(int i,E e)//在指定的索引处添加一个元素
 * 
 *             获取元素:
 *                     public E get(int index);返回指定索引处的元素  (上面返回值)
 * 
 *             集合长度:
 *                     public int size();返回集合中的元素的个数
 *         
 *             删除元素:
 *                     public E remove(int index);删除指定索引的元素  , 返回该删除的元素(上面不返回值,但是删除了)
 *                     public boolean remove(Object o);删除指定的元素 , 返回是否成功
 * 
 *             修改元素:
 *                     public E set(int index,E e);修改指定索引处的元素 , 返回被修改的元素(上面不返回值,但是更新了)

你可能感兴趣的:(java,eclipse,学习)