学生管理系统

项目演示:

———-欢迎来到学生管理系统———-
1、添加学生
2、删除学生
3、修改学生
4、查看所有学生
5、退出
请输入你的选择:

学生管理系统实现:
1、定义学生类
学生类 Student
2、成员变量
学号:sid
姓名: name
年龄: age
居住地: address
3、 构造方法
无参构造
带四个参数的构造
public class _Student {
// 学号 private _String sid;
// 姓名 private _String name;
// 年龄 private _String age;
// 居住地_ private _String address;

  1. _// Alt+insert 一键生成get/set方法_ public _String getSid() { _return _sid; }<br /> _public void _setSid(String sid) { _this_.sid = sid; }<br /> _public _String getName() { _return _name; }<br /> _public void _setName(String name) { _this_.name = name; }<br /> _public _String getAge() { _return _age; }<br /> _public void _setAge(String age) { _this_.age = age; }<br /> _public _String getAddress() { _return _address; }<br /> _public void _setAddress(String address) { _this_.address = address; }
  2. _// 生成不带参数的构造函数_ public _Student() {}<br /> _// 生成带四个参数的构造String sid,name,age,address 是该方法的局部变量(方法内或者方法声明上)_ public _Student(String sid,String name,String age,String address) {<br /> _// 用this修饰的变量 是成员变量 是在方法外的 ,左边的name等是局部变量<br /> // 该操作将局部变量赋值给就是用this修饰过的成员变量_ this_.sid = sid;<br /> _this_.name = name;<br /> _this_.age = age;<br /> _this_.address = address; } }<br />4、 主界面的代码编写<br />思路:<br />① 用输出语句完成主界面的编写<br />② 用Scanner实现键盘录入<br />③ 用switch语句实现操作的选择,JDK7可以输入字符串<br />④ 用while死循环包住整个方法然后再次回到主界面<br />_public class _StudentManager {<br /> _public static void _main(String[] args) {<br /> _// 创建一个学生集合对象用于保存数据_ _ArrayList_<_Student_> _array = new ArrayList_<>()_;_ _<br /> _// 用while死循环包住整个方法然后再次回到主界面_<br />_ while _(_true_) {<br /> _// 用输出语句完成主界面的编写_ _System._out_.println("-------欢迎来到学生管理系统-------");<br /> System._out_.println("1、添加学生");<br /> System._out_.println("2、删除学生");<br /> System._out_.println("3、修改学生");<br /> System._out_.println("4、查看所有学生");<br /> System._out_.println("5、退出");<br /> System._out_.println("请输入你的选择:");<br /> _// 用Scanner实现键盘录入_ _Scanner scanner = _new _Scanner(System._in_);<br /> String line = scanner.nextLine();<br /> _// 用switch语句实现操作的选择,JDK7可以输入字符串line_ switch _(line) {<br /> _case _"1":<br /> System._out_.println("添加学生");<br /> _break_;<br /> _case _"2":<br /> System._out_.println("删除学生");<br /> _break_;<br /> _case _"3":<br /> System._out_.println("修改学生");<br /> _break_;<br /> _case _"4":<br /> System._out_.println("查看所有学生");<br /> _break_;<br /> _case _"5":<br /> System._out_.println("退出");<br /> _break_;<br /> _case _"6":<br /> System._out_.println("谢谢使用!!!");<br /> _break_; } } } }<br /> _this_.address = address; } }<br />5、 添加学生的代码编写<br />思路:<br />① 用键盘录入选择添加学生<br />② 定义一个方法,用于添加学生<br />1.显示添加提示信息,提示需要输入的信息<br />2.键盘录入学生对象所需要的数据<br />3.创建学生对象,把键盘录入的数据赋值给学生对象的成员变量<br />4.将学生对象添加到集合中(保存)<br />5.给出添加成功的提示信息<br />③ 调用定义的添加方法<br />/*<br /> * 定义一个方法,用于添加学生addStudent<br /> * 需要确定两个明确:<br /> * 1、返回值类型:void<br /> * 2、参数:ArrayList<Student> array<br /> */<br />public static void addStudent(ArrayList<Student> array){<br /> // 显示提示信息,提示需要输入的信息<br /> // 键盘录入学生对象所需要的数据<br /> Scanner scanner = new Scanner(System._in_);<br /> System._out_.println("请输入要添加的学生的学号: ");<br /> String sid = scanner.nextLine();<br /> System._out_.println("请输入要添加的学生的姓名: ");<br /> String name = scanner.nextLine();<br /> System._out_.println("请输入要添加的学生的年龄: ");<br /> String age = scanner.nextLine();<br /> System._out_.println("请输入要添加的学生的地址: ");<br /> String address = scanner.nextLine();<br /> // 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量<br /> Student student = new Student();<br /> // 赋值给学生对象的成员变量使用set()方法<br /> student.setSid(sid);<br /> student.setName(name);<br /> student.setAge(age);<br /> student.setAddress(address);<br /> // 将学生对象添加到集合中使用add()方法<br /> array.add(student);<br /> // 给出添加成功的提示信息<br /> System._out_.println("添加成功"); }<br />6、 查看学生的代码编写(升级版本)<br />思路:<br />① 用键盘录入选择查看学生<br />② 定义一个方法,用于查看学生<br />** 升级版本:判断集合中是否有数据,如果没有显示提示信息**<br />1.显示查看表头信息<br />2.将集合中数据取出按照对应格式显示学生年龄,年龄显示补充“岁”<br />③ 调用定义的查看方法<br />/*<br /> * 定义一个方法,用于查看学生方法findAllStudent() --> 升级版<br /> * 需要确定两个明确:<br /> * 1、返回值类型:void<br /> * 2、参数:ArrayList<Student> array<br /> */<br />public static void findAllStudent(ArrayList<Student> array) {<br /> // ** 升级版本:判断集合中是否有数据,如果没有显示提示信息**<br /> // 写判断语句 如果集合的size() == 0 就是没有任何元素<br /> if (array.size() == 0){<br /> System._out_.println("无任何学生信息");<br /> // 为了程序不在往下执行,使用return返回值<br /> return; }<br /> // 使用缩进\t显示表头信息,\t就是tab键相当于缩进四个空格<br /> System._out_.println("学号\t\t\t姓名\t\t年龄\t\t居住地");<br /> // 将集合中数据取出按照对应格式显示学生年龄,年龄显示补充“岁”<br /> // 使用for循环遍历整个集合,使用get()方法取出每一个元素<br /> for (int i = 0; i < array.size(); i++) {<br /> Student student = array.get(i);<br /> System._out_.println(student.getSid() + "\t" + student.getName() + "\t" + student.getAge() + "岁\t\t" + student.getAddress()); } }<br />7、 删除学生的代码编写<br />思路:<br />① 用键盘录入选择删除学生<br />② 定义一个方法,用于删除学生<br />1.显示删除提示信息<br />2.键盘录入要删除的学生学号<br />3.遍历集合对应学生对象从集合中删除<br />4.给出删除成功的提示<br />③ 调用定义的删除方法<br />/*<br /> * 定义一个方法,用于删除学生方法deleteStudent()<br /> * 需要确定两个明确:<br /> * 1、返回值类型:void<br /> * 2、参数:ArrayList<Student> array<br /> */<br />public static void deleteStudent(ArrayList<Student> array) {<br /> // 用键盘录入选择删除学生,显示删除提示信息<br /> Scanner scanner = new Scanner(System._in_);<br /> System._out_.println("请输入要删除的学生学号");<br /> // 接收键盘录入的学生的学号<br /> String sid = scanner.nextLine();<br /> // 遍历集合对应学生对象从集合中删除,先获取集合中的元素<br /> for (int i =0; i< array.size();i++){<br /> Student student = array.get(i);<br /> // 使用判断语句,如果数组中获取的sid等于键盘录入的sid就执行删除语句<br /> // 因为sid定义的是String类型所以使用String的equals等于比较<br /> if (student.getSid().equals(sid)){<br /> // 根据学生的遍历的索引值i去remove()所以参数为i<br /> array.remove(i);<br /> break; // 一旦执行删除方法直接break判断语句<br /> }<br /> }<br /> // 删除提示<br /> System._out_.println("删除学生成功"); }<br />8、 修改学生的代码编写<br />思路:<br />① 用键盘录入选择修改学生信息<br />② 定义一个方法,用于修改学生信息<br />1.显示修改提示信息<br />2.键盘录入要修改的学生学号<br />3.键盘录入需要修改的学生信息-->将新的新学生信息封装成一个新的对象替换原有对象<br />4.遍历集合对应学生对象从集合中修改<br />5.给出修改成功的提示<br />③ 调用定义的修改方法<br />/*<br /> * 定义一个方法,用于修改学生方法updateStudent()<br /> * 需要确定两个明确:<br /> * 1、返回值类型:void<br /> * 2、参数:ArrayList<Student> array<br /> */<br />public static void updateStudent(ArrayList<Student> array) {<br /> // 用键盘录入选择修改学生,显示删除提示信息<br /> Scanner scanner = new Scanner(System._in_);<br /> System._out_.println("请输入要修改的学生学号");<br /> // 接收键盘录入的学生的学号<br /> String sid = scanner.nextLine();<br /> // 接收键盘录入选择修改学生信息<br /> System._out_.println("请输入需要修改的学生信息: ");<br /> System._out_.println("请输入需要修改的学生姓名 ");<br /> String name = scanner.nextLine();<br /> System._out_.println("请输入需要修改的学生年龄: ");<br /> String age = scanner.nextLine();<br /> System._out_.println("请输入需要修改的学生居住地: ");<br /> String address = scanner.nextLine();<br /> // 将新的新学生信息封装成一个新的对象<br /> Student student1 = new Student();<br /> student1.setSid(sid);<br /> student1.setAge(age);<br /> student1.setName(name);<br /> student1.setAddress(address);<br /> // 遍历集合对应学生对象从集合中修改,先获取集合中的元素<br /> for (int i =0; i< array.size();i++){<br /> // 得到每一个学生对象<br /> Student student = array.get(i);<br /> // 使用判断语句,如果数组中获取的sid等于键盘录入的sid就执行修改语句<br /> // 因为sid定义的是String类型所以使用String的equals等于比较<br /> if (student.getSid().equals(sid)){<br /> // 根据学生的遍历的索引值i进行修改,将新的学生元素传入<br /> array.set(i,student1);<br /> break; // 一旦执行修改方法直接break判断语句 } }<br /> // 修改提示<br /> System._out_.println("修改学生成功"); }<br />9、 解决删除/修改学生学号不存在问题<br />思路:<br />① 执行删除/修改学生操作前,对学号是否存在进行判断<br />① 如果不存在,显示提示信息<br />② 如果存在,执行删除/修改方法<br />/*<br /> * 定义一个方法,用于删除学生方法deleteStudent() --> 改进<br /> * 需要确定两个明确:<br /> * 1、返回值类型:void<br /> * 2、参数:ArrayList<Student> array<br /> */<br />public static void deleteStudent(ArrayList<Student> array) {<br /> // 用键盘录入选择删除学生,显示删除提示信息<br /> Scanner scanner = new Scanner(System._in_);<br /> System._out_.println("请输入要删除的学生学号");<br /> // 接收键盘录入的学生的学号<br /> String sid = scanner.nextLine();<br /> // 执行删除学生操作前,对学号是否存在进行判断<br /> // 遍历集合对应学生对象,先获取集合中的元素<br /> // 自定义的变量index给索引一个初始值为-1,因为索引的值不能为负数,所以不存在为-1<br /> int index = -1;<br /> for (int i =0; i< array.size();i++){<br /> Student student = array.get(i);<br /> // 使用判断语句,如果数组中获取的sid等于键盘录入的sid就执行删除语句<br /> // 因为sid定义的是String类型所以使用String的equals等于比较<br /> if (student.getSid().equals(sid)){<br /> // 使用自定义的变量index获取当前的索引<br /> // index = i;<br /> break; // 一旦执行获取当前的索引直接break判断语句<br /> }<br /> // 如果没有该索引值,就是索引值为-1,就是没有该学生<br /> if (index == -1){<br /> System._out_.println("没有该学生");<br /> }else {<br /> // 如果索引值为i 就是定义的index 执行remove()删除方法<br /> array.remove(index);<br /> // 删除提示<br /> System._out_.println("删除学生成功"); } } }<br />/*<br /> * 定义一个方法,用于修改学生方法updateStudent()--> 改进<br /> * 需要确定两个明确:<br /> * 1、返回值类型:void<br /> * 2、参数:ArrayList<Student> array<br /> */<br />public static void updateStudent(ArrayList<Student> array) {<br /> // 用键盘录入选择修改学生,显示删除提示信息<br /> Scanner scanner = new Scanner(System._in_);<br /> System._out_.println("请输入要修改的学生学号");<br /> // 接收键盘录入的学生的学号<br /> String sid = scanner.nextLine();<br /> int index = -1;<br /> for (int i =0;i< array.size();i++){<br /> Student student1 = array.get(i);<br /> if (student1.getSid().equals(sid)){<br /> // 接收键盘录入选择修改学生信息<br /> System._out_.println("请输入需要修改的学生姓名 ");<br /> String name = scanner.nextLine();<br /> System._out_.println("请输入需要修改的学生年龄: ");<br /> String age = scanner.nextLine();<br /> System._out_.println("请输入需要修改的学生居住地: ");<br /> String address = scanner.nextLine();<br /> student1.setSid(sid);<br /> student1.setAge(age);<br /> student1.setName(name);<br /> student1.setAddress(address);<br /> break;<br /> }if (index == -1){<br /> System._out_.println("没有该学生");<br /> }else {<br /> array.set(index,student1);<br /> // 修改提示<br /> System._out_.println("修改学生成功"); } } }<br />10、 解决添加学生学号重复问题<br />思路:<br />① 定义一个方法,判断学号是否被使用<br />方法的返回值是boolean类型,参数是集合和需要校验的学生号<br />如果与集合中的某一个学生学号相同,返回true,不同返回false<br />② 在添加方法录入学号后调用该方法判断是否重复<br />如果返回true,弹出提示:重新输入学号<br />如果返回false,正常添加学生对象<br />/*<br /> * 定义一个方法,用于添加学生addStudent<br /> * 需要确定两个明确:<br /> * 1、返回值类型:void<br /> * 2、参数:ArrayList<Student> array<br /> */<br />public static void addStudent(ArrayList<Student> array) {<br /> // 显示提示信息,提示需要输入的信息<br /> // 键盘录入学生对象所需要的数据<br /> Scanner scanner = new Scanner(System._in_);<br /> // 因为sid在while循环内部是局部变量,需要定义一个全局变量<br /> String sid;<br /> // 为了让程序可以回到输入学号,使用while死循环实现<br /> while (true) {<br /> System._out_.println("请输入要添加的学生的学号: ");<br /> // 因为已经为sid 定义了类型所以不用在定义类型<br /> // String sid = scanner.nextLine();<br /> sid = scanner.nextLine();<br /> // 判断学号是否被使用方法<br /> boolean flag = _isUsed_(array, sid);<br /> if (flag) { System._out_.println("你输入的学号被使用,请重新输入"); }<br />else { break; // 退出循环 } }<br /> System._out_.println("请输入要添加的学生的姓名: ");<br /> String name = scanner.nextLine();<br /> System._out_.println("请输入要添加的学生的年龄: ");<br /> String age = scanner.nextLine();<br /> System._out_.println("请输入要添加的学生的地址: ");<br /> String address = scanner.nextLine();<br /> // 创建学生对象,把键盘录入的数据赋值给学生对象的成员变量<br /> Student student = new Student();<br /> // 赋值给学生对象的成员变量使用set()方法<br /> student.setSid(sid);<br /> student.setName(name);<br /> student.setAge(age);<br /> student.setAddress(address);<br /> // 将学生对象添加到集合中使用add()方法<br /> array.add(student);<br /> // 给出添加成功的提示信息<br /> System._out_.println("添加成功"); }

/
定义一个方法,判断学号是否被使用
需要确定两个明确:
1、返回值类型:boolean
2、参数:ArrayList array 和需要校验的学生号
/
public static boolean isUsed(ArrayList array, String sid){
// 如果与集合中的某一个学生学号相同,返回true,不同返回false
// 首先定义一个boolean类型的变量flag为false
boolean flag = false;
// 遍历整个集合,获取每一个元素
for (int i = 0;i< array.size();i++){
// 定义一个变量student获取元素
Student student = array.get(i);
// 判断学号是否相同,相同将flag改为true,遍历结束
if (student.getSid().equals(sid)){
flag = true;
break; } } return flag; }