文章共分为4部分:
1.项目需求
1.代码上传
2.思路分析
3.细节补漏
4.总结经验
tips:因为个人经验有限,代码中肯定存在待优化的地方,欢迎大佬指点江山。不喜勿喷!
一.需求
利用ArrayList在控制台做一个学生管理系统,可以对学生信息进行增删查改。
二.代码上传
==============================================
话不多说先上代码 下面的是学生类:
==============================================
public class Student{
//定义一个标准类
private Stringsid;
private Stringname;
private Stringage;
private Stringaddress;
public Student() {
}
public StringgetSid() {
return sid;
}
public void setSid(String sid) {
this.sid = sid;
}
public StringgetName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public StringgetAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public StringgetAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public Student(String sid, String name, String age, String address) {
this.sid = sid;
this.name = name;
this.age = age;
this.address = address;
}
}
==============================================
下面是StudentManger 的执行程序
==============================================
import java.util.ArrayList;
import java.util.Scanner;
public class StudentManager{
public static void main(String[] args) {
//创建arraylist用作储存学生
ArrayList
//创建Scanner对象用于录入数据
Scanner sc =new Scanner(System.in);
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("请输入序号:");
String s = sc.nextLine();
switch (s) {
case "1":{
System.out.println("--------添加学生--------");
addStudent(array);
System.out.println("恭喜你添加成功");
break;
}
case "2":{
System.out.println("--------修改学生--------");
updateStudent(array);
System.out.println("恭喜你修改成功");
break;
}
case "3":{
System.out.println("--------删除学生--------");
removeStudent(array);
System.out.println("恭喜你删除成功");
break;
}
case "4":{
System.out.println("--------查看学生--------");
findStudent(array);
break;
}
case "5":{
//退出虚拟机
System.exit(0);
System.out.println("程序已退出,感谢您的使用");
}
}
}
}
//添加学生信息方法
public static void addStudent(ArrayList
//创建学生对象
Student stu =new Student();
//创建Scanner对象,用于录入数据导入Student类中
Scanner sc =new Scanner(System.in);
System.out.println("请输入学生学号");
String sid = sc.nextLine();
System.out.println("请输入学生姓名");
String name = sc.nextLine();
System.out.println("请输入学生年龄");
String age = sc.nextLine();
System.out.println("请输入学生地址");
String address = sc.nextLine();
//导入信息
stu.setSid(sid);
stu.setName(name);
stu.setAge(age);
stu.setAddress(address);
//追加到集合中
array.add(stu);
}
//修改学生信息
public static void updateStudent(ArrayList
int index =sidIndex(array);
//创建Scanner对象用于录入数据
Scanner sc =new Scanner(System.in);
//通过索引获取学生对象获取学生对象
Student stu = array.get(index);
//用户输入数据
System.out.println("请输入学生姓名");
String name = sc.nextLine();
System.out.println("请输入学生年龄");
String age = sc.nextLine();
System.out.println("请输入学生地址");
String address = sc.nextLine();
stu.setName(name);
stu.setAge(age);
stu.setAddress(address);
}
//删除学生信息
public static void removeStudent(ArrayList
int index =sidIndex(array);
array.remove(index);
}
//查看学生信息
public static void findStudent(ArrayList
System.out.println("----" +"学号" +"----" +"姓名" +"----" +"年龄" +"----" +"地址" +"----");
for (int i =0; i < array.size(); i++) {
Student stu = array.get(i);
String sid = stu.getSid();
String name = stu.getName();
String age = stu.getAge();
String address = stu.getAddress();
System.out.println(" " + sid +" " + name +" " + age +" " + address +" ");
}
}
//根据输入学号返回索引值
public static int sidIndex(ArrayList
//创建scanner对象
Scanner sc =new Scanner(System.in);
System.out.println("请输入学生学号");
String sid = sc.nextLine();
for (int i =0; i < array.size(); i++) {
Student stu = array.get(i);
if (stu.getSid().equals(sid)) {
return i;
}
}
return -1;
}
}
三.思路分析
这里需要用到面向对象的编程思想来简化代码
1.创建一个Student类 和StudentManage程序 (面向对象经典要素) 。
2.创建5个方法分别是增删查改 ,在细节部分我会解释为什么要多一个方法。
3.在main方法中调用使用方法。完成功能实现。
四.细节补漏
第五个方法的作用这个方法作用在于用户输入学生学号返回索引值。
在编程的时候我们要意识到的是,添加学生信息,可以直接调用ArrayList的add方法,查看学生信息,可以直接利用循环遍历输出。但是删除与修改,我们只能通过学号来进行确认这个类的位置,因为有两个方法需要用到通过学号来确定位置,为了减少代码的重复性,和可维护性,所以决定再写一个方法用于输入学号获取索引,这时我们可以用直接在修改与删除方法中调用第五个方法获取索引,来确定该类在集合中的位置。
上面说完添加,查看以及第五个方法的作用,下面我们讨论修改和删除方法与获取索引方法之间的调用
修改学生信息 :调用获取索引方法,利用集合的get方法确定位置,接着把这个类存起来,使用set方法给成员变量赋值。完成修改功能
删除学生信息:调用获取索引方法,然后直接利用集合的remove方法删除该类。完成删除功能。
上面方法调用很简单就不演示了,单独上传通过学号获取索引的方法代码:
五.总结经验
在这个项目中除去基础语法还用到的知识点有集合的remove,set,get,size方法,调用类的成员方法,以及面向对象的编程思想。
在Java编程中尽量把每一个功能进行封装这样可以减少代码量和增加可维护性。最重要的是在写程序之前务必需要先构思再上手,不然可能出现问题就需要重构,浪费不必要的时间和精力。