谁给个学生信息管理系统java的 学习用 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 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; }} *^_^*,没事又改了下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(); }} 这年头,发现csdn上面的都是求作业的,这是当代程序员的悲哀! 我有一个,不过是商业的。money 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(); }} 我有一个关于c的……这个是以前学习C语言的时候最后的那个作业呢……可惜你要java的…… 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了,怀念啊 javamail问题 java程序中执行脚本代码 struts2上传文件到服务器 使用JAVA创建EXCEL文件问题 如何编写j2ee的远程独立客户端? 新手求助,JDBC处理存储过程出错 RMI运行时的问题ClassNotFoundExeption server.Server_stub 什么时候使用链接池? Weblogic8.1在部署ejb时发生问题? j2ee启动问题 JAVA线程相关知识!向大牛们求解? IT大虾们,赚分啦赚分啦
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;
}
}
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;
}
}
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();
}
}
money
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(); }}
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了,怀念啊