当前位置:编程学习 > JAVA >>

谁给个学生信息管理系统java的

学习用 --------------------编程问答-------------------- 找本书,然后找书上光盘,再然后拷贝就行 --------------------编程问答-------------------- 我过来围观一下 --------------------编程问答--------------------
package com.star.studentmg;

import java.util.ArrayList;

public class MethodClass {
    public static void showTitleMenu() {
        System.out.println("******学生管理系统******");
        System.out.println("1.登录");
        System.out.println("2.注册");
        System.out.println("3.退出");
    }
    public static void showAllStudentInfo(ArrayList<Student> stuAry) {
        for(Student s : stuAry){
            System.out.println(s);
        }
    }
    public static void showAllStudentSid(ArrayList<Student> stuAry,int sid) {
         for(Student s : stuAry){
             if(sid==s.getSid())
             System.out.println(s);
            }
    }
    public static boolean checkStudentNum(ArrayList<Student> stuAry, int sid) {
        boolean bl = false;
        for (Student stu : stuAry) {
                if (sid==stu.getSid()) {
                    bl = true;
                    break;
                }
        }
        return bl;
    }
    public static boolean checkUserNum(ArrayList<User> userAry, String uname) {
        boolean bl = false;
        for (User user : userAry) {
                if (uname.equals(user.getUname())) {
                    bl = true;
                    break;
                }
        }
        return bl;
    }

    public static void putUser(ArrayList<User> userAry, User user) {
        userAry.add(user);
    }

    public static void putStudent(ArrayList<Student> stuAry, Student stu) {
        stuAry.add(stu);
    }


    public static boolean checkUser(ArrayList<User> userAry, User user) {
        boolean flag = false;
        for (int i = 0; i < userAry.size(); i++) {
                if ((userAry.get(i).getUname().equals(user.getUname())) &&
                    (userAry.get(i).getUpass().equals(user.getUpass()))) {
                    flag = true;
                    break;
                }
        }
        return flag;
    }

    public static int findStudentById(ArrayList<Student> stuAry, int sid){
      for(int i=0;i<stuAry.size();i++){
          if(stuAry.get(i).getSid()==sid){
              return i;
          }
      }
      return -1;
  }

  public static void deleteStudent(ArrayList<Student> stuAry,int sid){
      int findIndex = findStudentById(stuAry, sid);
      if (findIndex != -1) {
          stuAry.remove(findIndex);
      } else {
          System.out.println("没有此人!");
      }
  }

    public static void showMainMenu() {
        System.out.println("*****************************");
        System.out.println("******欢迎进入学生管理系统******");
        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("**         6.退出系统       **");
        System.out.println("*****************************");
        System.out.println("*****************************");
    }

}

package com.star.studentmg;

public class Student {
    private String sname;
    private int sid;
    private double yScore;
    private double eScore;
    private double mScore;
    Student(int sid, String sname, double yScore, double eScore, double mScore) {
        this.sid = sid;
        this.sname = sname;
        this.yScore = yScore;
        this.eScore = eScore;
        this.mScore = mScore;
    }

    public void setSname(String sname) {
        this.sname = sname;
    }

    public String getSname() {
        return sname;
    }

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

    public int getSid() {
        return sid;
    }

    public void setYscore(double s) {
        yScore = s;
    }

    public double getYscore() {
        return yScore;
    }

    public void setEscore(double s) {
        eScore = s;
    }

    public double getEscore() {
        return eScore;
    }

    public void setMscore(double s) {
        mScore = s;
    }

    public double getMscore() {
        return mScore;
    }
    public String toString(){
        return "学号:"+sid+",姓名:"+sname+",语文成绩:"+yScore+",英语成绩:"+eScore+",数学成绩:"+mScore;
    }
}
 

--------------------编程问答--------------------

package com.star.studentmg;

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

class Test {

    public static ArrayList<Student> stuList = new ArrayList<Student>();//存放全部学生对象的容器
    public static ArrayList<User> userAry = new ArrayList<User>();//存放全部用户对象的容器
    public static Scanner sc = new Scanner(System.in);

    public static void main(String[] args) {
        /////////////和用户信息相关的变量///////////
        String uname = "";
        String upass = "";
        String rpass = "";
        /////////////和学生信息相关的变量///////////
        int sid = 0;
        String sname = "";
        double yScore = 0;
        double eScore = 0;
        double mScore = 0;
        /////////////////////////////////////////
        String flag = "";//用于表示是/否判断的变量(比如是否退出系统?(Y/N))
        int sel = -1;//用于接受用户的输入选择,供switch语句使用
        flag1:while (true) {
            MethodClass.showTitleMenu();
            switch ((sel = sc.nextInt())) {
            case 1:
                sc.nextLine();
                System.out.println("******用户登录******");
                System.out.println("用户名:");
                uname = sc.nextLine();
                System.out.println("密码:");
                upass = sc.nextLine();
                User tempUser = new User(uname, upass);
                if (MethodClass.checkUser(userAry, tempUser)) {
                    flag3:while (true) {
                        MethodClass.showMainMenu();
                        switch ((sel = sc.nextInt())) {
                        case 1:
                            sc.nextLine();
                            System.out.println("******学生信息录入******");
                            System.out.println("编号:");
                            sid = sc.nextInt();
                            System.out.println("姓名:");
                            sc.nextLine();
                            sname = sc.nextLine();
                            System.out.println("语文成绩:");
                            yScore = sc.nextDouble();
                            System.out.println("英语成绩:");
                            eScore = sc.nextDouble();
                            System.out.println("数学成绩:");
                            mScore = sc.nextDouble();
                            if (!MethodClass.checkStudentNum(stuList, sid)) {
                            Student   stuTemp  = new Student(sid, sname,
                                        yScore, eScore, mScore);
                                MethodClass.putStudent(stuList, stuTemp);
                                System.out.println("学生信息录入成功!");
                                continue flag3;
                            } else {
                                System.out.println("已存在此学生编号!");
                                continue flag3;
                            }
                        case 2:
                            sc.nextLine();
                            System.out.println("******学生信息删除******");
                            System.out.println("请输入删除的学生编号:");
                            sid=sc.nextInt();
                            MethodClass.deleteStudent(stuList,sid);
                            System.out.println("删除成功!");
                            break;
                        case 3:
                           sc.nextLine();
                           System.out.println("******学生信息修改******");
                           System.out.println("请输入学生编号:");
                           sid = sc.nextInt();
                           System.out.println("姓名:");
                           sc.nextLine();
                           sname = sc.nextLine();
                           System.out.println("语文成绩:");
                           yScore = sc.nextDouble();
                           System.out.println("英语成绩:");
                           eScore = sc.nextDouble();
                           System.out.println("数学成绩:");
                           mScore = sc.nextDouble();
                           Student stuTemp = new Student(sid, sname, yScore, eScore, mScore);
                           MethodClass.deleteStudent(stuList,sid);
                           MethodClass.putStudent(stuList, stuTemp);
                           System.out.println("修改成功!");
                            break;
                        case 4:
                            sc.nextLine();
                            System.out.println("******学生信息查询******");
                            System.out.println("***1.查询全部学生信息***");
                            System.out.println("***2.按学生编号查询*****");
                            System.out.println("***3.返回主页面*********");
                            switch ((sel = sc.nextInt())) {
                            case 1:
                                MethodClass.showAllStudentInfo(stuList);
                                break;
                            case 2:
                                System.out.println("请输入查询的学生编号:");
                                sid=sc.nextInt();
                               MethodClass.showAllStudentSid(stuList,sid);

                                break;
                            case 3:
                                System.out.println("真的要返回主页么?(Y/N)");
                                sc.nextLine();
                                flag = sc.nextLine();
                                if (flag.equals("Y") || flag.equals("y")) {
                                    continue flag3;
                                }
                                break;
                            default:
                                System.out.println("请输入1~2的数字!");
                            }
                            break;
                        case 5:
                            System.out.println("确实要重登录吗?(Y/N)");
                            sc.nextLine();
                            flag = sc.nextLine();
                            if (flag.equals("Y") || flag.equals("y")) {
                                continue flag1;
                            }
                            break;
                        case 6:
                            System.out.println("真的要退出么?(Y/N)");
                            sc.nextLine();
                            flag = sc.nextLine();
                            if (flag.equals("Y") || flag.equals("y")) {
                                System.exit(0);
                            }
                            break;
                        default:
                            System.out.println("请输入1~5之间的数!");

                        }
                    }
                } else {
                    System.out.println("用户名或密码错误!");
                    continue flag1;
                }
            case 2:
                sc.nextLine();
                flag2:
                        while (true) {

                    System.out.println("******用户注册******");
                    System.out.println("用户名:");
                    uname = sc.nextLine();
                    System.out.println("密码:");
                    upass = sc.nextLine();
                    System.out.println("确认密码:");
                    rpass = sc.nextLine();
                    if (!MethodClass.checkUserNum(userAry, uname)) {
                        if (upass.equals(rpass)) {
                            User tempUser2 = new User(uname, upass);
                            MethodClass.putUser(userAry, tempUser2);
                            System.out.println("注册成功!请在主页面登录。");
                            continue flag1;
                        } else {
                            System.out.println("两次密码输入不一致!  需要重新注册么?(Y/N)");
                            flag = sc.nextLine();
                            if (flag.equals("Y") || flag.equals("y")) {
                                continue flag2;
                            } else {
                                continue flag1;
                            }
                        }
                    } else {
                        System.out.println("已存在此用户!  需要重新注册么?(Y/N)");
                        flag = sc.nextLine();
                        if (flag.equals("Y") || flag.equals("y")) {
                            continue flag2;
                        } else {
                            continue flag1;
                        }

                    }

                }
            case 3:
                System.out.println("真的要退出么?(Y/N)");
                sc.nextLine();
                flag = sc.nextLine();
                if (flag.equals("Y") || flag.equals("y")) {
                    System.exit(0);
                }
                break;
            default:
                System.out.println("请输入1~3之间的数!");

            }

        }

    }
}


package com.star.studentmg;
public class User {
    private String uname;
    private String upass;
    User(String name, String pass) {
        uname = name;
        upass = pass;
    }

    public void setUname(String name) {
        uname = name;
    }

    public String getUname() {
        return uname;
    }

    public void setUpass(String pass) {
        upass = pass;
    }

    public String getUpass() {
        return upass;
    }
}

--------------------编程问答-------------------- 使用了典型的Service, Dao, Bean来进行操作
package test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class StudentManageSystem {
    // StudentManager中提供的操作菜单
    public static void showServices() {
        System.out.println("----------------功能菜单------------------");
        System.out.println("******** 0. 退出管理操作");
        System.out.println("******** 1. 显示学生信息");
        System.out.println("******** 2. 查询学生");
        System.out.println("******** 3. 添加学生");
        System.out.println("******** 4. 删除学生");
        System.out.println("------------------结束------------------");
        System.out.println();
    }

    // 管理学生
    public void manageStudents() throws IOException {
        Scanner scanner = new Scanner(System.in);
        StudentDao sd = new StudentDao();
        StudentService ss = new StudentService(sd, scanner);

        showServices();
        int op = -1;

        while (op != 0) {
            System.in.skip(System.in.available());
            System.out.print("输入菜单编号: ");
            op = scanner.nextInt();
            scanner.nextLine(); // 吃掉输入菜单编号后无效的回车字符

            switch (op) {
            case 0:
                break;
            case 1:
                ss.showStudents();
                break;
            case 2:
                ss.findStudent();
                break;
            case 3:
                ss.addStudent();
                break;
            case 4:
                ss.removeStudent();
                break;
            case 5:
                showServices();
                break;
            default:
                System.out.println("没有提供此项操作\n");
            }
        }

    }

    public static void main(String[] args) throws IOException {
        StudentManageSystem sm = new StudentManageSystem();
        sm.manageStudents();
    }
}

class StudentService {
    private StudentDao studentDao;
    private Scanner scanner;

    public StudentService(StudentDao studentDao, Scanner scanner) {
        this.studentDao = studentDao;
        this.scanner = scanner;
    }

    // 添加学生
    public void addStudent() {
        System.out.print("输入学生资料进行添加: ");
        String name = scanner.nextLine();
        // 这里只处理了学生信息只有姓名
        // 可以做复杂一点,例如输入学生的学号,姓名,班级等
        Student s = new Student(name);
        studentDao.addStudent(s);
        System.out.println("添加成功\n");
    }

    public void removeStudent() {
        System.out.print("输入学生姓名进行删除: ");
        String name = scanner.nextLine();
        Student s = studentDao.findStudent(name);

        if (s == null) {
            System.out.println("查无此学生");
        } else {
            studentDao.removeStudent(s);
            System.out.println("已经删除学生: " + s);
        }
        System.out.println();
    }

    // 查找学生
    public void findStudent() {
        System.out.print("输入学生姓名进行查询: ");
        String name = scanner.nextLine();
        Student s = studentDao.findStudent(name);
        if (s == null) {
            System.out.println("查无此学生");
        } else {
            System.out.println("搜索查找到的学生: " + s);
        }
        System.out.println();
    }

    // 显示已经有的学生信息
    public void showStudents() {
        List<Student> students = studentDao.getStudents();

        if (students.size() == 0) {
            System.out.println("列表中还没有任何学生");
        } else {
            System.out.println("========学生信息:");
        }

        for (Student s : students) {
            System.out.println(s);
        }

        System.out.println();
    }
}

// 对学生数据进行执久化操作
class StudentDao {
    private List<Student> students;

    public StudentDao() {
        students = new ArrayList<Student>();
    }

    // 添加学生
    public void addStudent(Student student) {
        students.add(student);
    }

    // 删除学生
    public void removeStudent(Student student) {
        students.remove(student);
    }

    // 使用学生的名字查找进行查找
    public Student findStudent(String name) {
        for (Student s : students) {
            if (s.getName().equals(name)) { return s; }
        }

        return null;
    }

    // 返回学生列表的视图,不可修改
    public List<Student> getStudents() {
        return Collections.unmodifiableList(students);
    }
}

class Student {
    private String name;

    public Student() {
    }

    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }

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

    @Override
    public String toString() {
        return "Name: " + name;
    }
}
--------------------编程问答-------------------- 我是来围观的 --------------------编程问答-------------------- 3楼控制台程序可以啊。 楼主凑合交了吧。 --------------------编程问答-------------------- *^_^*,没事又改了下
package test;

import java.io.IOException;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Scanner;

public class StudentManageSystem {
    // StudentManager中提供的操作菜单
    public static void showMenus() {
        String format = "              %s\n";
        System.out.println("----------------功能菜单------------------");
        System.out.printf(format, "0. 退出管理");
        System.out.printf(format, "1. 显示学生");
        System.out.printf(format, "2. 查询学生");
        System.out.printf(format, "3. 添加学生");
        System.out.printf(format, "4. 删除学生");
        System.out.printf(format, "5. 功能菜单");
        System.out.println("-------------------结束------------------");
        System.out.println();
    }

    // 管理学生
    public void manageStudents() throws IOException {
        Scanner scanner = new Scanner(System.in);
        StudentDao sd = new StudentDao();
        StudentService ss = new StudentService(sd, scanner);

        showMenus();
        int op = -1;

        while (op != 0) {
            System.in.skip(System.in.available());
            System.out.print("输入菜单编号: ");
            op = scanner.nextInt();
            scanner.nextLine(); // 吃掉输入菜单编号后无效的回车字符

            try {
                switch (op) {
                case 0:
                    break;
                case 1:
                    ss.showStudents();
                    break;
                case 2:
                    ss.findStudent();
                    break;
                case 3:
                    ss.addStudent();
                    break;
                case 4:
                    ss.removeStudent();
                    break;
                case 5:
                    showMenus();
                    break;
                default:
                    System.out.println("没有提供此项操作\n");
                }
            } catch (Exception e) {
                System.out.println("\t" + e.getMessage() + "\n");
            }
        }
    }

    public static void main(String[] args) throws IOException {
        StudentManageSystem sm = new StudentManageSystem();
        sm.manageStudents();
    }
}

class StudentService {
    private StudentDao studentDao;
    private Scanner scanner;

    public StudentService(StudentDao studentDao, Scanner scanner) {
        this.studentDao = studentDao;
        this.scanner = scanner;
    }

    // 添加学生
    public void addStudent() {
        System.out.print("输入学生资料进行添加: "); // name|age
        String info = scanner.nextLine();
        Student s = Student.buildStudent(info);
        if (studentDao.findStudent(s.getName()) != null) { throw new RuntimeException("此学生信息已经存在"); }
        studentDao.addStudent(s);
        System.out.println("\t添加成功\n");
    }

    public void removeStudent() {
        System.out.print("输入学生姓名进行删除: ");
        String name = scanner.nextLine();
        Student s = studentDao.findStudent(name);

        if (s == null) {
            System.out.println("\t查无此学生");
        } else {
            studentDao.removeStudent(s);
            System.out.println("\t已经删除学生: " + s);
        }
        System.out.println();
    }

    // 查找学生
    public void findStudent() {
        System.out.print("输入学生姓名进行查询: ");
        String name = scanner.nextLine();
        Student s = studentDao.findStudent(name);
        if (s == null) {
            System.out.println("查无此学生");
        } else {
            System.out.println("\t搜索查找到的学生: " + s);
        }
        System.out.println();
    }

    // 显示已经有的学生信息
    public void showStudents() {
        List<Student> students = studentDao.getStudents();

        if (students.size() == 0) {
            System.out.println("列表中还没有任何学生");
        } else {
            System.out.println("========所有学生信息========");
        }

        for (Student s : students) {
            System.out.println("\t" + s);
        }

        System.out.println();
    }
}

// 对学生数据进行执久化操作
class StudentDao {
    private List<Student> students;

    public StudentDao() {
        students = new ArrayList<Student>();
    }

    // 添加学生
    public void addStudent(Student student) {
        students.add(student);
    }

    // 删除学生
    public void removeStudent(Student student) {
        students.remove(student);
    }

    // 使用学生的名字查找进行查找
    public Student findStudent(String name) {
        for (Student s : students) {
            if (s.getName().equals(name)) { return s; }
        }

        return null;
    }

    // 返回学生列表的视图,不可修改
    public List<Student> getStudents() {
        return Collections.unmodifiableList(students);
    }
}

class Student {
    private String name;
    private int age;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

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

    // Info format: name|age
    public static Student buildStudent(String studentInfo) {
        if (!studentInfo.matches("\\w+\\|\\d+")) { throw new RuntimeException(
            "The student information's format should be \"name|age\" without quote"); }

        String[] infos = studentInfo.split("\\|");
        String name = infos[0].trim();
        int age = Integer.parseInt(infos[1]);

        return new Student(name, age);
    }

    @Override
    public String toString() {
        return String.format("Name:%s, Age:%d", name, age);
    }
}
--------------------编程问答-------------------- *^_^*,这个学生管理系统我竟然还在写.
支持执久化,可以保存到文件,从文件读取
package test;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class StudentManageSystem {
    /** StudentManager中提供的操作菜单 **/
    public static void showMenus() {
        String format = "              %s\n";
        System.out.println("----------------功能菜单------------------");
        System.out.printf(format, "0. 退出管理");
        System.out.printf(format, "1. 功能菜单");
        System.out.printf(format, "2. 显示学生");
        System.out.printf(format, "3. 查询学生");
        System.out.printf(format, "4. 添加学生");
        System.out.printf(format, "5. 删除学生");
        System.out.printf(format, "6. 修改学生");
        System.out.printf(format, "7. 读取学生");
        System.out.printf(format, "8. 保存学生");
        System.out.println("-------------------结束------------------");
        System.out.println();
    }

    /** 管理学生信息 **/
    public void manageStudents() throws IOException {
        Scanner scanner = new Scanner(System.in);
        StudentDao sd = new StudentDao();
        StudentService ss = new StudentService(sd, scanner);

        showMenus();
        int op = -1;

        while (op != 0) {
            System.in.skip(System.in.available());
            System.out.print("输入菜单编号: ");
            op = scanner.nextInt();
            scanner.nextLine(); // 吃掉输入菜单编号后无效的回车字符

            try {
                switch (op) {
                case 0:
                    break;
                case 1:
                    showMenus();
                    break;
                case 2:
                    ss.showStudents();
                    break;
                case 3:
                    ss.findStudents();
                    break;
                case 4:
                    ss.addStudent();
                    break;
                case 5:
                    ss.removeStudent();
                    break;
                case 6:
                    ss.updateStudent();
                    break;
                case 7:
                    ss.readStudents();
                    break;
                case 8:
                    ss.saveStudents();
                    break;
                default:
                    System.out.println("没有提供此项操作\n");
                }
            } catch (Exception e) {
                System.out.println("\t" + e.getMessage() + "\n");
            }
        }
    }

    public static void main(String[] args) throws IOException {
        StudentManageSystem sm = new StudentManageSystem();
        sm.manageStudents();
        System.out.println("程序结束");
    }
}

/** Service中的很多功能都是委托给Dao对象去完成 **/
class StudentService {
    private StudentDao studentDao;
    private Scanner scanner;

    public StudentService(StudentDao studentDao, Scanner scanner) {
        this.studentDao = studentDao;
        this.scanner = scanner;
    }

    // 添加学生
    public void addStudent() {
        System.out.print("输入学生资料进行添加,格式为id|name|age: "); // name|age
        String info = scanner.nextLine();
        Student s = Student.buildStudent(info);
        if (studentDao.hasStudent(s)) { throw new RuntimeException("此学生信息已经存在"); }
        studentDao.addStudent(s);
        System.out.println("\t添加成功\n");
    }

    // 删除学生
    public void removeStudent() {
        System.out.print("输入学生id进行删除: ");
        int id = scanner.nextInt();
        Student s = studentDao.findStudent(id);

        if (s == null) {
            System.out.println("\t查无此学生");
        } else {
            studentDao.removeStudent(s);
            System.out.println("\t已经删除学生: " + s);
        }
        System.out.println();
    }
    
    /** 修改学生信息 **/
    public void updateStudent() {
        System.out.print("修改学生信息,输入学生id: ");
        int id = scanner.nextInt();
        Student s = studentDao.findStudent(id);

        if (s == null) {
            System.out.println("\t查无此学生");
        } else {
            scanner.nextLine(); // 吃掉回车
            System.out.println("\t学生: " + s);
            System.out.print("\t输入新的信息,格式为name|age: ");
            String line = scanner.nextLine().trim();
            if (!line.matches("\\w+\\|\\d+")) {
                throw new RuntimeException("输入的修改学生信息格式不对");
            }
            
            // 修改已搜索到的学生信息
            String[] infos = line.split("\\|");
            String name = infos[0];
            int age = Integer.parseInt(infos[1]);
            s.setName(name);
            s.setAge(age);
            System.out.println("\t修改完成");
        }
        System.out.println();
    }

    /** 输入学生的学号或者姓名进行查找 **/
    public void findStudents() {
        System.out.print("输入学生ID或者姓名进行查询: ");
        String info = scanner.nextLine().trim();
        List<Student> ss = new ArrayList<Student>();

        // 如果输入的是数字,默认为学号
        if (info.matches("\\d+")) {
            int id = Integer.parseInt(info);
            Student s = studentDao.findStudent(id);
            if (s != null) {
                ss.add(s);
            }
        } else {
            ss = studentDao.findStudents(info);
        }

        // 输出查询结果
        if (ss.size() == 0) {
            System.out.println("查无此学生");
        } else {
            for (Student s : ss) {
                System.out.println("\t" + s);
            }
        }
        System.out.println();
    }

    /** 显示已经有的学生信息 **/
    public void showStudents() {
        Set<Student> students = studentDao.getStudents();

        if (students.size() == 0) {
            System.out.println("\t列表中还没有任何学生");
            return;
        }

        System.out.println("========所有学生信息========");
        for (Student s : students) {
            System.out.println("\t" + s);
        }
        System.out.println();
    }

    public void saveStudents() {
        studentDao.saveStudents();
        System.out.println("\t保存成功");
    }

    public void readStudents() {
        studentDao.readStudents();
        System.out.println("\t读取完成");
    }
}
--------------------编程问答-------------------- 接上面
/** 对学生数据进行执久化操作 **/
class StudentDao {
    private Set<Student> students;
    private String fileName = "students.dat";

    public StudentDao() {
        students = new TreeSet<Student>(new StudentComparator());
    }

    /** 添加学生 **/
    public void addStudent(Student student) {
        students.add(student);
    }

    /** 删除学生 **/
    public void removeStudent(Student student) {
        students.remove(student);
    }

    /** 使用学生的id进行查找 **/
    public Student findStudent(int id) {
        for (Student s : students) {
            if (s.getId() == id) { return s; }
        }
        return null;
    }

    /** 使用学生的名字查找进行查找 **/
    public List<Student> findStudents(String name) {
        List<Student> found = new ArrayList<Student>();
        for (Student s : students) {
            if (s.getName().equals(name)) {
                found.add(s);
            }
        }

        return found;
    }

    /** 判断学生是否已经存在 **/
    public boolean hasStudent(Student s) {
        return students.contains(s);
    }

    /** 返回学生列表的视图,不可修改 **/
    public Set<Student> getStudents() {
        return Collections.unmodifiableSet(students);
    }

    /** 把学生信息保存到文件 **/
    public void saveStudents() {
        ObjectOutputStream oos = null;
        try {
            oos = new ObjectOutputStream(new FileOutputStream(fileName));
            oos.writeObject(students);
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("保存失败");
        } finally {
            if (oos != null) {
                try {
                    oos.close();
                } catch (Exception e2) {
                }
            }
        }
    }

    /** 从文件读取学生信息 **/
    public void readStudents() {
        ObjectInputStream ois = null;
        try {
            ois = new ObjectInputStream(new FileInputStream(fileName));
            students = (Set<Student>) ois.readObject();
        } catch (Exception e) {
            e.printStackTrace();
            throw new RuntimeException("读取失败");
        } finally {
            if (ois != null) {
                try {
                    ois.close();
                } catch (Exception e2) {
                }
            }
        }
    }
}

/** 学生类,可以序列化保存到文件 **/
class Student implements Serializable {
    private static final long serialVersionUID = 1L;
    private int id;
    private int age;
    private String name;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

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

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public int getAge() {
        return age;
    }

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

    // Info format: id|name|age
    public static Student buildStudent(String studentInfo) {
        if (!studentInfo.matches("\\d+\\|\\w+\\|\\d+")) { throw new RuntimeException(
            "The student information's format should be \"id|name|age\" without quote"); }

        String[] infos = studentInfo.split("\\|");
        int id = Integer.parseInt(infos[0]);
        String name = infos[1].trim();
        int age = Integer.parseInt(infos[2]);

        return new Student(id, name, age);
    }

    @Override
    public int hashCode() {
        return id;
    }

    @Override
    public boolean equals(Object obj) {
        if (obj == null || obj.getClass() != this.getClass()) { return false; }
        Student other = (Student) obj;
        if (other.id == this.id) { return true; }
        return false;
    }

    @Override
    public String toString() {
        return String.format("ID:%d, Name:%s, Age:%d", id, name, age);
    }
}

// 使用TreeSet时需要的比较器
class StudentComparator implements Comparator<Student>, Serializable {
    private static final long serialVersionUID = 1L;

    @Override
    public int compare(Student s1, Student s2) {
        return s1.getId() - s2.getId();
    }
}
--------------------编程问答--------------------     3楼的真是耐得烦啊 --------------------编程问答-------------------- hao --------------------编程问答-------------------- 这年头,发现csdn上面的都是求作业的,这是当代程序员的悲哀! --------------------编程问答-------------------- 真耐心 --------------------编程问答-------------------- 怎么净是输出语句。。。 --------------------编程问答-------------------- 我有一个,不过是商业的。
money --------------------编程问答-------------------- 顶,的确是这样子的现状!很多学生拿来完成毕业设计!闷
引用 12 楼 zhaoxin19920319 的回复:
hao
--------------------编程问答-------------------- 好啊,太好了。 --------------------编程问答-------------------- 刚刚好也用得上 --------------------编程问答--------------------
package 基础;

import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;

public class StudentManageSystem {

/** StudentManager中提供的操作菜单 * */

public static void showMenus() {

String format = "              %s\n";

System.out.println("----------------功能菜单------------------");

System.out.printf(format, "0. 退出管理");

System.out.printf(format, "1. 功能菜单");

System.out.printf(format, "2. 显示学生");

System.out.printf(format, "3. 查询学生");

System.out.printf(format, "4. 添加学生");

System.out.printf(format, "5. 删除学生");

System.out.printf(format, "6. 修改学生");

System.out.printf(format, "7. 读取学生");

System.out.printf(format, "8. 保存学生");

System.out.println("-------------------结束------------------");

System.out.println();

}

/** 管理学生信息 * */

public void manageStudents() throws IOException {

Scanner scanner = new Scanner(System.in);

StudentDao sd = new StudentDao();

StudentService ss = new StudentService(sd, scanner);

showMenus();

int op = -1;

while (op != 0) {

System.in.skip(System.in.available());

System.out.print("输入菜单编号: ");

op = scanner.nextInt();

scanner.nextLine(); // 吃掉输入菜单编号后无效的回车字符

try {

switch (op) {

case 0:

break;

case 1:

showMenus();

break;

case 2:

ss.showStudents();

break;

case 3:

ss.findStudents();

break;

case 4:

ss.addStudent();

break;

case 5:

ss.removeStudent();

break;

case 6:

ss.updateStudent();

break;

case 7:

ss.readStudents();

break;

case 8:

ss.saveStudents();

break;

default:

System.out.println("没有提供此项操作\n");

}

} catch (Exception e) {

System.out.println("\t" + e.getMessage() + "\n");

}

}

}

public static void main(String[] args) throws IOException {

StudentManageSystem sm = new StudentManageSystem();

sm.manageStudents();

System.out.println("程序结束");

}

}

/** Service中的很多功能都是委托给Dao对象去完成 * */

class StudentService {

private StudentDao studentDao;

private Scanner scanner;

public StudentService(StudentDao studentDao, Scanner scanner) {

this.studentDao = studentDao;

this.scanner = scanner;

}

// 添加学生

public void addStudent() {

System.out.print("输入学生资料进行添加,格式为id|name|age: "); // name|age

String info = scanner.nextLine();

Student s = Student.buildStudent(info);

if (studentDao.hasStudent(s)) {
throw new RuntimeException("此学生信息已经存在");
}

studentDao.addStudent(s);

System.out.println("\t添加成功\n");

}

// 删除学生

public void removeStudent() {

System.out.print("输入学生id进行删除: ");

int id = scanner.nextInt();

Student s = studentDao.findStudent(id);

if (s == null) {

System.out.println("\t查无此学生");

} else {

studentDao.removeStudent(s);

System.out.println("\t已经删除学生: " + s);

}

System.out.println();

}

/** 修改学生信息 * */

public void updateStudent() {

System.out.print("修改学生信息,输入学生id: ");

int id = scanner.nextInt();

Student s = studentDao.findStudent(id);

if (s == null) {

System.out.println("\t查无此学生");

} else {

scanner.nextLine(); // 吃掉回车

System.out.println("\t学生: " + s);

System.out.print("\t输入新的信息,格式为name|age: ");

String line = scanner.nextLine().trim();

if (!line.matches("\\w+\\|\\d+")) {

throw new RuntimeException("输入的修改学生信息格式不对");

}

// 修改已搜索到的学生信息

String[] infos = line.split("\\|");

String name = infos[0];

int age = Integer.parseInt(infos[1]);

s.setName(name);

s.setAge(age);

System.out.println("\t修改完成");

}

System.out.println();

}

/** 输入学生的学号或者姓名进行查找 * */

public void findStudents() {

System.out.print("输入学生ID或者姓名进行查询: ");

String info = scanner.nextLine().trim();

List<Student> ss = new ArrayList<Student>();

// 如果输入的是数字,默认为学号

if (info.matches("\\d+")) {

int id = Integer.parseInt(info);

Student s = studentDao.findStudent(id);

if (s != null) {

ss.add(s);

}

} else {

ss = studentDao.findStudents(info);

}

// 输出查询结果

if (ss.size() == 0) {

System.out.println("查无此学生");

} else {

for (Student s : ss) {

System.out.println("\t" + s);

}

}

System.out.println();

}

/** 显示已经有的学生信息 * */

public void showStudents() {

Set<Student> students = studentDao.getStudents();

if (students.size() == 0) {

System.out.println("\t列表中还没有任何学生");

return;

}

System.out.println("========所有学生信息========");

for (Student s : students) {

System.out.println("\t" + s);

}

System.out.println();

}

public void saveStudents() {

studentDao.saveStudents();

System.out.println("\t保存成功");

}

public void readStudents() {

studentDao.readStudents();

System.out.println("\t读取完成");

}

}

/** 对学生数据进行执久化操作 * */

class StudentDao {

private Set<Student> students;

private String fileName = "students.dat";

public StudentDao() {

students = new TreeSet<Student>(new StudentComparator());

}

/** 添加学生 * */

public void addStudent(Student student) {

students.add(student);

}

/** 删除学生 * */

public void removeStudent(Student student) {

students.remove(student);

}

/** 使用学生的id进行查找 * */

public Student findStudent(int id) {

for (Student s : students) {

if (s.getId() == id) {
return s;
}

}

return null;

}

/** 使用学生的名字查找进行查找 * */

public List<Student> findStudents(String name) {

List<Student> found = new ArrayList<Student>();

for (Student s : students) {

if (s.getName().equals(name)) {

found.add(s);

}

}

return found;

}

/** 判断学生是否已经存在 * */

public boolean hasStudent(Student s) {

return students.contains(s);

}

/** 返回学生列表的视图,不可修改 * */

public Set<Student> getStudents() {

return Collections.unmodifiableSet(students);

}

/** 把学生信息保存到文件 * */

public void saveStudents() {

ObjectOutputStream oos = null;

try {

oos = new ObjectOutputStream(new FileOutputStream(fileName));

oos.writeObject(students);

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException("保存失败");

} finally {

if (oos != null) {

try {

oos.close();

} catch (Exception e2) {

}

}

}

}

/** 从文件读取学生信息 * */

public void readStudents() {

ObjectInputStream ois = null;

try {

ois = new ObjectInputStream(new FileInputStream(fileName));

Set<Student> readObject2 = (Set<Student>) ois.readObject();
Set<Student> readObject = readObject2;
students = readObject;

} catch (Exception e) {

e.printStackTrace();

throw new RuntimeException("读取失败");

} finally {

if (ois != null) {

try {

ois.close();

} catch (Exception e2) {

}

}

}

}

}

/** 学生类,可以序列化保存到文件 * */

class Student implements Serializable {

private static final long serialVersionUID = 1L;

private int id;

private int age;

private String name;

public Student() {

}

public Student(int id, String name, int age) {

this.id = id;

this.age = age;

this.name = name;

}

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getId() {

return id;

}

public void setId(int id) {

this.id = id;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

// Info format: id|name|age

public static Student buildStudent(String studentInfo) {

if (!studentInfo.matches("\\d+\\|\\w+\\|\\d+")) {
throw new RuntimeException(

"The student information's format should be \"id|name|age\" without quote");
}

String[] infos = studentInfo.split("\\|");

int id = Integer.parseInt(infos[0]);

String name = infos[1].trim();

int age = Integer.parseInt(infos[2]);

return new Student(id, name, age);

}

@Override
public int hashCode() {

return id;

}

@Override
public boolean equals(Object obj) {

if (obj == null || obj.getClass() != this.getClass()) {
return false;
}

Student other = (Student) obj;

if (other.id == this.id) {
return true;
}

return false;

}

@Override
public String toString() {

return String.format("ID:%d, Name:%s, Age:%d", id, name, age);

}

}

// 使用TreeSet时需要的比较器

class StudentComparator implements Comparator<Student>, Serializable {

private static final long serialVersionUID = 1L;

public int compare(Student s1, Student s2) {
return s1.getId() - s2.getId();

}

}
--------------------编程问答--------------------
引用 13 楼 lidongya1181 的回复:
这年头,发现csdn上面的都是求作业的,这是当代程序员的悲哀!


求作业的肯定不是程序员了,所以不用悲哀~~~ --------------------编程问答-------------------- 真是为了赚分啊……好有耐心 --------------------编程问答-------------------- 学生管理系统这个作为学习再好不过了 --------------------编程问答-------------------- 我有一个关于c的……这个是以前学习C语言的时候最后的那个作业呢……可惜你要java的…… --------------------编程问答-------------------- 这种问题还用问....不就是最基本的增删改查嘛。。 --------------------编程问答-------------------- 应付作业而已了。。。。哈哈 --------------------编程问答-------------------- N年前偶也发过类似的贴。。。 --------------------编程问答--------------------

public static void showMainMenu() {
        System.out.println("*****************************");
        System.out.println("******欢迎进入学生管理系统******");
        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("**         6.退出系统       **");
        System.out.println("*****************************");
        System.out.println("*****************************");
    }




--------------------编程问答-------------------- 这代码。。。。。。。。。
多久没看到了这么多println了,怀念啊
补充:Java ,  Java EE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,