ArrayList实现学生管理系统

目录

案例需求

实现步骤

代码演示


案例需求

针对目前我们的所学内容,完成一个综合案例:学生管理系统!该系统主要功能如下:
添加学生:通过键盘录入学生信息,添加到集合中
删除学生:通过键盘录入要删除学生的学号,将该学生对象从集合中删除
修改学生:通过键盘录入要修改学生的学号,将该学生对象其他信息进行修改
查看学生:将集合中的学生对象信息进行展示
退出系统:结束程序

实现步骤

1. 定义学生类,包含以下成员变量
学生类: Student 成员变量:
学号: sid
姓名: name
年龄: age
生日: birthday
构造方法:
无参构造
带四个参数的构造成员方法:
每个成员变量对应给出 get/set 方法
2. 学生管理系统主界面的搭建步骤
2.1 用输出语句完成主界面的编写
2.2 Scanner 实现键盘录入数据
2.3 switch 语句完成操作的选择
2.4 用循环完成再次回到主界面
3. 学生管理系统的添加学生功能实现步骤
3.1 用键盘录入选择添加学生
3.2 定义一个方法,用于添加学生
显示提示信息,提示要输入何种信息
键盘录入学生对象所需要的数据
创建学生对象,把键盘录入的数据赋值给学生对象的成员变量
将学生对象添加到集合中(保存)
给出添加成功提示
3.3 调用方法
4. 学生管理系统的查看学生功能实现步骤
4.1 用键盘录入选择查看所有学生信息
4.2 定义一个方法,用于查看学生信息
显示表头信息
将集合中数据取出按照对应格式显示学生信息,年龄显示补充
4.3 调用方法
5. 学生管理系统的删除学生功能实现步骤
5.1 用键盘录入选择删除学生信息
5.2 定义一个方法,用于删除学生信息
显示提示信息
键盘录入要删除的学生学号
调用 getIndex 方法,查找该学号在集合的索引
如果索引为 -1 ,提示信息不存在
如果索引不是 -1 ,调用 remove 方法删除并提示删除成功
5.3 调用方法
6. 学生管理系统的修改学生功能实现步骤
6.1 用键盘录入选择修改学生信息
6.2 定义一个方法,用于修改学生信息
显示提示信息
键盘录入要修改的学生学号
调用 getIndex 方法,查找该学号在集合的索引
如果索引为 -1 ,提示信息不存在
如果索引不是 -1 ,键盘录入要修改的学生信息
集合修改对应的学生信息
给出修改成功提示
6.3 调用方法
7. 退出系统
使用 System.exit(0); 退出 JVM

代码演示

package com.itheima.domain;

public class Student {
    private String sid; // 学号
    private String name; // 姓名
    private int age; // 年龄
    private String birthday; // 生日

    public Student() {
    }

    public Student(String sid, String name, int age, String birthday) {
        this.sid = sid;
        this.name = name;
        this.age = age;
        this.birthday = birthday;
    }

    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 int getAge() {
        return age;
    }

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

    public String getBirthday() {
        return birthday;
    }

    public void setBirthday(String birthday) {
        this.birthday = birthday;
    }
}
package com.itheima.test;

import com.itheima.domain.Student;

import java.util.ArrayList;
import java.util.Scanner;

public class StudentManager {
    public static void main(String[] args) {

        Scanner sc = new Scanner(System.in);

        // 创建集合容器对象
        ArrayList<Student> list = new ArrayList<>();

        lo:
        while (true) {
            // 1. 搭建主界面菜单
            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 choice = sc.next();

            switch (choice) {
                case "1":
                    //System.out.println("添加学生");
                    addStudent(list);
                    break;
                case "2":
                    //System.out.println("删除学生");
                    deleteStudent(list);
                    break;
                case "3":
                    //System.out.println("修改学生");
                    updateStudent(list);
                    break;
                case "4":
                    // System.out.println("查看学生");
                    queryStudents(list);
                    break;
                case "5":
                    System.out.println("感谢您的使用");
                    break lo;
                default:
                    System.out.println("您的输入有误");
                    break;
            }
        }


    }

    // 修改学生的方法
    public static void updateStudent(ArrayList<Student> list) {
        System.out.println("请输入您要修改的学生学号:");
        Scanner sc = new Scanner(System.in);
        String updateSid = sc.next();
        // 3. 调用getIndex方法, 查找该学号在集合中出现的索引位置
        int index = getIndex(list,updateSid);
        // 4. 根据索引判断, 学号在集合中是否存在
        if(index == -1){
            // 不存在: 给出提示
            System.out.println("查无信息, 请重新输入");
        }else{
            // 存在: 接收新的学生信息
            System.out.println("请输入新的学生姓名:");
            String name = sc.next();
            System.out.println("请输入新的学生年龄:");
            int age = sc.nextInt();
            System.out.println("请输入新的学生生日:");
            String birthday = sc.next();
            // 封装为新的学生对象
            Student stu = new Student(updateSid, name, age, birthday);
            // 调用集合的set方法, 完成修改
            list.set(index, stu);
            System.out.println("修改成功!");
        }
    }

    // 删除学生的方法
    public static void deleteStudent(ArrayList<Student> list) {
        // 1. 给出提示信息 (请输入您要删除的学号)
        System.out.println("请输入您要删除的学生学号:");
        // 2. 键盘接收要删除的学号
        Scanner sc = new Scanner(System.in);
        String deleteSid = sc.next();
        // 3. 调用getIndex方法, 查找该学号在集合中出现的索引位置
        int index = getIndex(list,deleteSid);
        // 4. 根据索引判断, 学号在集合中是否存在
        if(index == -1){
            // 不存在: 给出提示
            System.out.println("查无信息, 请重新输入");
        }else{
            // 存在:删除
            list.remove(index);
            System.out.println("删除成功!");
        }
    }

    // 查看学生的方法
    public static void queryStudents(ArrayList<Student> list) {
        // 1. 判断集合中是否存在数据, 如果不存在直接给出提示
        if(list.size() == 0){
            System.out.println("无信息, 请添加后重新查询");
            return;
        }
        // 2. 存在: 展示表头数据
        System.out.println("学号\t\t姓名\t年龄\t生日");
        // 3. 遍历集合, 获取每一个学生对象的信息, 打印在控制台
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            System.out.println(stu.getSid() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getBirthday());
        }
    }

    // 添加学生的方法
    public static void addStudent(ArrayList<Student> list) {
        Scanner sc = new Scanner(System.in);
        // 1. 给出录入的提示信息

        String sid;

        while(true){
            System.out.println("请输入学号:");
            sid = sc.next();

            int index = getIndex(list, sid);

            if(index == -1){
                // sid不存在, 学号可以使用
                break;
            }
        }

        System.out.println("请输入姓名:");
        String name = sc.next();
        System.out.println("请输入年龄:");
        int age = sc.nextInt();
        System.out.println("请输入生日:");
        String birthday = sc.next();
        // 2. 将键盘录入的信息封装为学生对象
        Student stu = new Student(sid,name,age,birthday);
        // 3. 将封装好的学生对象, 添加到集合容器当中
        list.add(stu);
        // 4. 给出添加成功的提示信息
        System.out.println("添加成功!");
    }

    /*
        getIndex : 接收一个集合对象, 接收一个学生学号

        查找这个学号, 在集合中出现的索引位置
     */
    public static int getIndex(ArrayList<Student> list, String sid){
        // 1. 假设传入的学号, 在集合中不存在
        int index = -1;
        // 2. 遍历集合, 获取每一个学生对象, 准备进行查找
        for (int i = 0; i < list.size(); i++) {
            Student stu = list.get(i);
            // 3. 获取每一个学生对象的学号
            String id = stu.getSid();
            // 4. 使用获取出的学生学号, 和传入的学号(查找的学号)进行比对
            if(id.equals(sid)){
                // 存在: 让index变量记录正确的索引位置
                index = i;
            }
        }

        return index;
    }
}

  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android实现学生管理系统可以包括以下几个步骤[^][^2]: 1. 设计用户界面:使用Android的布局文件来设计用户界面,可以使用ConstraintLayout布局来放置按钮和Fragment等组件。 2. 创建按钮和Fragment:在布局文件中添加按钮和Fragment组件,按钮用于切换不同的功能页面,Fragment用于显示不同的功能模块。 3. 设计数据库:使用SQLite数据库来存储学生信息,可以设计一个用户表来存储学生的基本信息,例如学生姓名学号年龄等。 4. 实现数据库操作:使用Android提供的SQLiteOpenHelper类来创建和管理数据库,可以编写相应的代码来实现学生信息的增删改查操作。 5. 实现功能模块:根据需求,可以实现学生信息的添加、删除、修改和查询功能,可以通过按钮点击事件来触发相应的操作。 6. 运行和测试:将代码编译并安装到Android设备上,进行功能测试,确保学生管理系统能够正常运行。 以下是一个简单的示例代码,演示了Android实现学生管理系统的部分功能[^1]: ```java // 创建数据库表 public class DBHelper extends SQLiteOpenHelper { private static final String DATABASE_NAME = "student.db"; private static final int DATABASE_VERSION = 1; private static final String TABLE_NAME = "student"; private static final String COLUMN_ID = "id"; private static final String COLUMN_NAME = "name"; private static final String COLUMN_NUMBER = "number"; private static final String COLUMN_AGE = "age"; public DBHelper(Context context) { super(context, DATABASE_NAME, null, DATABASE_VERSION); } @Override public void onCreate(SQLiteDatabase db) { String createTableQuery = "CREATE TABLE " + TABLE_NAME + " (" + COLUMN_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COLUMN_NAME + " TEXT, " + COLUMN_NUMBER + " TEXT, " + COLUMN_AGE + " INTEGER)"; db.execSQL(createTableQuery); } @Override public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) { String dropTableQuery = "DROP TABLE IF EXISTS " + TABLE_NAME; db.execSQL(dropTableQuery); onCreate(db); } // 添加学生信息 public void addStudent(Student student) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, student.getName()); values.put(COLUMN_NUMBER, student.getNumber()); values.put(COLUMN_AGE, student.getAge()); db.insert(TABLE_NAME, null, values); db.close(); } // 删除学生信息 public void deleteStudent(int id) { SQLiteDatabase db = this.getWritableDatabase(); db.delete(TABLE_NAME, COLUMN_ID + " = ?", new String[]{String.valueOf(id)}); db.close(); } // 修改学生信息 public void updateStudent(Student student) { SQLiteDatabase db = this.getWritableDatabase(); ContentValues values = new ContentValues(); values.put(COLUMN_NAME, student.getName()); values.put(COLUMN_NUMBER, student.getNumber()); values.put(COLUMN_AGE, student.getAge()); db.update(TABLE_NAME, values, COLUMN_ID + " = ?", new String[]{String.valueOf(student.getId())}); db.close(); } // 查询学生信息 public List<Student> getAllStudents() { List<Student> studentList = new ArrayList<>(); String selectQuery = "SELECT * FROM " + TABLE_NAME; SQLiteDatabase db = this.getWritableDatabase(); Cursor cursor = db.rawQuery(selectQuery, null); if (cursor.moveToFirst()) { do { Student student = new Student(); student.setId(cursor.getInt(cursor.getColumnIndex(COLUMN_ID))); student.setName(cursor.getString(cursor.getColumnIndex(COLUMN_NAME))); student.setNumber(cursor.getString(cursor.getColumnIndex(COLUMN_NUMBER))); student.setAge(cursor.getInt(cursor.getColumnIndex(COLUMN_AGE))); studentList.add(student); } while (cursor.moveToNext()); } cursor.close(); db.close(); return studentList; } } // 学生实体类 public class Student { private int id; private String name; private String number; private int age; // 省略构造方法和getter、setter方法 } // 添加学生信息 DBHelper dbHelper = new DBHelper(context); Student student = new Student(); student.setName("张三"); student.setNumber("20210001"); student.setAge(20); dbHelper.addStudent(student); // 查询学生信息 List<Student> studentList = dbHelper.getAllStudents(); for (Student student : studentList) { Log.d("Student", "姓名:" + student.getName() + ",学号:" + student.getNumber() + ",年龄:" + student.getAge()); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值