学习用

解决方案 »

  1.   

    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;
        }
    }
     
      

  2.   


    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;
        }
    }
      

  3.   

    使用了典型的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;
        }
    }
      

  4.   

    *^_^*,没事又改了下
    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);
        }
    }
      

  5.   

    *^_^*,这个学生管理系统我竟然还在写.
    支持执久化,可以保存到文件,从文件读取
    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读取完成");
        }
    }
      

  6.   

    接上面
    /** 对学生数据进行执久化操作 **/
    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();
        }
    }
      

  7.   

    这年头,发现csdn上面的都是求作业的,这是当代程序员的悲哀!
      

  8.   

    我有一个,不过是商业的。
    money
      

  9.   

    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(); }}
      

  10.   

    我有一个关于c的……这个是以前学习C语言的时候最后的那个作业呢……可惜你要java的……
      

  11.   


    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("*****************************");
        }
      

  12.   

    这代码
    多久没看到了这么多println了,怀念啊