栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java 学生信息管理系统(无界面版 单链表实现)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java 学生信息管理系统(无界面版 单链表实现)

项目说明

本文使用单链表(SinglyList)制作学生信息管理系统(以下简称系统),本系统简单实现对学生信息的添加,修改,删除,查找的功能。
注1:没有单链表,可直接使用列表(ArrrayList)替代
注2:附详细代码

1.目的

简单实现对系统的增删改查功能

2.主要模块

3.次要模块
  • 学生信息类(Students)
  • 中文性别输入判断类 (DetermineGenderException)
4.组成结构

代码实现 1.创建学生信息类(Students)
public class Students {
    private String name;
    private String sex;
    private int age;

    public Students(String name, String sex, int age) {
        this.name = name;
        this.sex = sex;
        this.age = age;
    }

    public String getName() {
        return name;
    }

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

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

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

    @Override
    public String toString() {
        return "Students msg:" +
                "name='" + name + ''' +
                ", sex='" + sex + ''' +
                ", age=" + age +
                '.';
    }
}
2.创建添加学生信息类(AddStudentsInformation)
import demo04.SinglyList;			//没有可导入ArrayList

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class AddStudentsInformation extends SearchStudentInformation{
    private String name;
    private String sex;
    private int age;

    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

    public SinglyList addStudents(SinglyList students) throws Exception {
        System.out.println("************添加学生信息**************");
        System.out.println("根据提示添加,退出请在姓名处输入exit");
        while (true){
            try{
                System.out.print("学生姓名:");
                name=reader.readLine();
                if(name.equals("exit")){
                    break;
                }
                setSex();
                System.out.print("学生年龄:");
                age=Integer.parseInt(reader.readLine());
                Students student=new Students(name,sex,age);
                students.insert(student);
            }catch (Exception e){
                System.out.println("输入有误,请重新输入....");
            }
        }
        return students;
    }

    public String setSex() throws IOException {
        while (true){
            try{
                System.out.print("学生性别:");
                sex=reader.readLine();
                GenderException(sex);
                if(sex.equals("男")|| sex.equals("女")){
                    break;
                }
            }catch (DetermineGenderException e){
                System.out.println(e.getMessage());
            }
        }
        return sex;
    }

    public static void GenderException(String sex) throws DetermineGenderException{     //判断输入性别是否是"男'or"女'
        if(sex.equals("男") || sex.equals("女")){
        }else {
            throw new DetermineGenderException("输入错误.....");
        }
    }
}
3.创建修改学生信息类(UpdateStudentInformation)
import demo04.SinglyList;		//没有记得修改

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;


public class UpdateStudentInformation extends AddStudentsInformation{
    private int index;
    private int selectNum;
    private String newName;
    private String newSex;
    private int newAge;
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

    public SinglyList updateStudent(SinglyList students) throws IOException {
        System.out.println("************修改学生信息**************");
        while (true){
            System.out.print("请根据编号选择要修改的信息,退出请输入0:");
            index=Integer.parseInt(reader.readLine());  //为防止有bug这里用try-catch,我就不加了
            if(index==0){
                break;
            }
            Students student=students.get(index-1);
            if(student==null){
                System.out.println("请重新输入......");
            }else {
                System.out.println("所要修改项:");
                System.out.println(student);

                System.out.print("所要修改信息:(n" +
                        "修改姓名选1,n" +
                        "修改性别选2,n" +
                        "修改年龄选3,n" +
                        "修改姓名和性别选4,n" +
                        "修改姓名和年龄选5n" +
                        "修改性别和年龄选6n" +
                        "重新输入选7n" +
                        "退出请选9):");
                selectNum=Integer.parseInt(reader.readLine());      //这里也一样用try-catch,我懒就不加了,
                // 总之就是输入数字的时候用try-catch,就是无bug版本....
                if(selectNum==0){
                    break;
                }
                if(selectNum==1){
                    setName();
                    students.get(index-1).setName(newName);
                }else if(selectNum==2){
                    setSex();
                    students.get(index-1).setSex(newSex);
                }else if(selectNum==3){
                    setAge();
                    students.get(index-1).setAge(newAge);
                }else if(selectNum==4){
                    setName();
                    students.get(index-1).setName(newName);
                    setSex();
                    students.get(index-1).setSex(newSex);
                }else if(selectNum==5){
                    setName();
                    students.get(index-1).setName(newName);
                    setAge();
                    students.get(index-1).setAge(newAge);
                }else if(selectNum==6){
                    setSex();
                    students.get(index-1).setSex(newSex);
                    setAge();
                    students.get(index-1).setAge(newAge);
                }else if(selectNum==7){
                    setName();
                    students.get(index-1).setName(newName);
                    setSex();
                    students.get(index-1).setSex(newSex);
                    setAge();
                    students.get(index-1).setAge(newAge);
                }else if(selectNum==9){
                    System.out.println("退出程序中.....");
                    break;
                }
            }
        }
        return students;
    }

    public String setName() throws IOException{
        System.out.print("学生姓名:");
        newName=reader.readLine();
        return newName;
    }

    @Override
    public String setSex() throws IOException {
        return newSex=super.setSex();
    }

    public int setAge() throws IOException{
        System.out.print("学生年龄:");
        newAge=Integer.parseInt(reader.readLine());
        return newAge;
    }

}
4.创建查找学生信息类(searchStudent)
import demo04.SinglyList;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class SearchStudentInformation {
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

    public void searchStudent(SinglyList students) throws IOException {
        System.out.println("************查找学生信息**************");
        while (true){
            System.out.print("请输入要查找的信息(退出输入exit):");
            String s=reader.readLine();
            if(s.equals("exit")) break;
            System.out.println("查找结果如下...");
            for (int i = 0; i  
5.创建删除学生信息类(DeleteStudentsInformation) 
import demo04.SinglyList;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;

public class DeleteStudentsInformation {
    BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

    public SinglyList deleteStudent(SinglyList students) throws IOException {
        System.out.println("************删除学生信息**************");
        System.out.println("学生信息如下:");
        for (int i = 0; i < students.size(); i++) {
            System.out.println((i + 1) + ":" + students.get(i));
        }
        while (true) {
            System.out.print("请选择要删除的学生信息的编号,退出请按0:");
            int index = Integer.parseInt(reader.readLine());
            if (index==0){
                break;
            }else if(index > students.size()){
                System.out.println("没有这个编号....");
            }
            System.out.print("确定是否删除以下信息:(Y/N)n" + students.get(index - 1)+":");
            while (true) {
                String op = reader.readLine();
                if (op.equals("Y")) {
                    students.remove(index - 1);
                    System.out.println("删除完毕....");
                    break;
                }else if(op.equals("N")){
                    break;
                }
                System.out.print("确定是否删除以下信息:(Y/N)n" + students.get(index - 1)+":");
            }
        }
        return students;
    }
}

6.创建学生主界面(StudentSystem)
import demo04.SinglyList;

import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;

public class StudentSystem {
    static BufferedReader reader=new BufferedReader(new InputStreamReader(System.in));

    public static void main(String[] args) throws Exception {
        Students student1=new Students("张三","男",12);
        Students student2=new Students("王五","女",21);
        Students student3=new Students("李四","男",12);
        SinglyList students = new SinglyList<>();
        students.insert(student1);
        students.insert(student2);
        students.insert(student3);
        studentSystem(students);
    }


    public static void studentSystem(SinglyList students){
        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.print("请选择需要的功能:(退出请选0):");
            try{
                int index= Integer.parseInt(reader.readLine());
                if(index==0){
                    break;
                }
                if(index==1){
                    SearchStudentInformation searchStudentInformation=new SearchStudentInformation();
                    searchStudentInformation.searchStudent(students);
                }
                if(index==2){
                    AddStudentsInformation addStudentsInformation=new AddStudentsInformation();
                    students=addStudentsInformation.addStudents(students);
                }
                if(index==3){
                    UpdateStudentInformation updateStudentInformation=new UpdateStudentInformation();
                    students=updateStudentInformation.updateStudent(students);
                }
                if(index==4){
                    DeleteStudentsInformation deleteStudentsInformation=new DeleteStudentsInformation();
                    students=deleteStudentsInformation.deleteStudent(students);
                }
                if(index==5){
                    System.out.println("学生信息如下:");
                    for (int i = 0; i  
7.其他附加类(DetermineGenderException) 
public class DetermineGenderException extends Exception{

    
    public DetermineGenderException(String message) {
        super(message);
    }

}

注1:修改类(update)可通过继承添加类(add)继承查找类(search),重写查找方法,修改update类
注2:附加类(DetermineGenderException)可移动到添加类(add)

项目总结

系统基本实现了增删改查,且bug较少。具体如下:

  • 添加类基本实现学生的信息添加,但是是单项添加,不能够做到单条添加。
  • 修改类能够修改学生的信息,通过继承查找类可改进
  • 查找类能够通过学生年龄,性别,姓名查找学生信息,但是对于输入详细信息查找会出现年龄不正确的问题
  • 删除类能够实现删除信息功能,但不能单项删除,后来想一想单项删除没有意义。
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/301282.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号