谁给个学生信息管理系统java的
学习用 --------------------编程问答-------------------- 找本书,然后找书上光盘,再然后拷贝就行 --------------------编程问答-------------------- 我过来围观一下 --------------------编程问答--------------------package com.star.studentmg;
import java.util.ArrayList;
public class MethodClass {
public static void showTitleMenu() {
System.out.println("******学生管理系统******");
System.out.println("1.登录");
System.out.println("2.注册");
System.out.println("3.退出");
}
public static void showAllStudentInfo(ArrayList<Student> stuAry) {
for(Student s : stuAry){
System.out.println(s);
}
}
public static void showAllStudentSid(ArrayList<Student> stuAry,int sid) {
for(Student s : stuAry){
if(sid==s.getSid())
System.out.println(s);
}
}
public static boolean checkStudentNum(ArrayList<Student> stuAry, int sid) {
boolean bl = false;
for (Student stu : stuAry) {
if (sid==stu.getSid()) {
bl = true;
break;
}
}
return bl;
}
public static boolean checkUserNum(ArrayList<User> userAry, String uname) {
boolean bl = false;
for (User user : userAry) {
if (uname.equals(user.getUname())) {
bl = true;
break;
}
}
return bl;
}
public static void putUser(ArrayList<User> userAry, User user) {
userAry.add(user);
}
public static void putStudent(ArrayList<Student> stuAry, Student stu) {
stuAry.add(stu);
}
public static boolean checkUser(ArrayList<User> userAry, User user) {
boolean flag = false;
for (int i = 0; i < userAry.size(); i++) {
if ((userAry.get(i).getUname().equals(user.getUname())) &&
(userAry.get(i).getUpass().equals(user.getUpass()))) {
flag = true;
break;
}
}
return flag;
}
public static int findStudentById(ArrayList<Student> stuAry, int sid){
for(int i=0;i<stuAry.size();i++){
if(stuAry.get(i).getSid()==sid){
return i;
}
}
return -1;
}
public static void deleteStudent(ArrayList<Student> stuAry,int sid){
int findIndex = findStudentById(stuAry, sid);
if (findIndex != -1) {
stuAry.remove(findIndex);
} else {
System.out.println("没有此人!");
}
}
public static void showMainMenu() {
System.out.println("*****************************");
System.out.println("******欢迎进入学生管理系统******");
System.out.println("*****************************");
System.out.println("** 1.添加学生信息 **");
System.out.println("** 2.删除学生信息 **");
System.out.println("** 3.修改学生信息 **");
System.out.println("** 4.查询学生信息 **");
System.out.println("** 5.重登录 **");
System.out.println("** 6.退出系统 **");
System.out.println("*****************************");
System.out.println("*****************************");
}
}
package com.star.studentmg;
public class Student {
private String sname;
private int sid;
private double yScore;
private double eScore;
private double mScore;
Student(int sid, String sname, double yScore, double eScore, double mScore) {
this.sid = sid;
this.sname = sname;
this.yScore = yScore;
this.eScore = eScore;
this.mScore = mScore;
}
public void setSname(String sname) {
this.sname = sname;
}
public String getSname() {
return sname;
}
public void setSid(int sid) {
this.sid = sid;
}
public int getSid() {
return sid;
}
public void setYscore(double s) {
yScore = s;
}
public double getYscore() {
return yScore;
}
public void setEscore(double s) {
eScore = s;
}
public double getEscore() {
return eScore;
}
public void setMscore(double s) {
mScore = s;
}
public double getMscore() {
return mScore;
}
public String toString(){
return "学号:"+sid+",姓名:"+sname+",语文成绩:"+yScore+",英语成绩:"+eScore+",数学成绩:"+mScore;
}
}
--------------------编程问答--------------------
package com.star.studentmg;
import java.util.Scanner;
import java.util.ArrayList;
class Test {
public static ArrayList<Student> stuList = new ArrayList<Student>();//存放全部学生对象的容器
public static ArrayList<User> userAry = new ArrayList<User>();//存放全部用户对象的容器
public static Scanner sc = new Scanner(System.in);
public static void main(String[] args) {
/////////////和用户信息相关的变量///////////
String uname = "";
String upass = "";
String rpass = "";
/////////////和学生信息相关的变量///////////
int sid = 0;
String sname = "";
double yScore = 0;
double eScore = 0;
double mScore = 0;
/////////////////////////////////////////
String flag = "";//用于表示是/否判断的变量(比如是否退出系统?(Y/N))
int sel = -1;//用于接受用户的输入选择,供switch语句使用
flag1:while (true) {
MethodClass.showTitleMenu();
switch ((sel = sc.nextInt())) {
case 1:
sc.nextLine();
System.out.println("******用户登录******");
System.out.println("用户名:");
uname = sc.nextLine();
System.out.println("密码:");
upass = sc.nextLine();
User tempUser = new User(uname, upass);
if (MethodClass.checkUser(userAry, tempUser)) {
flag3:while (true) {
MethodClass.showMainMenu();
switch ((sel = sc.nextInt())) {
case 1:
sc.nextLine();
System.out.println("******学生信息录入******");
System.out.println("编号:");
sid = sc.nextInt();
System.out.println("姓名:");
sc.nextLine();
sname = sc.nextLine();
System.out.println("语文成绩:");
yScore = sc.nextDouble();
System.out.println("英语成绩:");
eScore = sc.nextDouble();
System.out.println("数学成绩:");
mScore = sc.nextDouble();
if (!MethodClass.checkStudentNum(stuList, sid)) {
Student stuTemp = new Student(sid, sname,
yScore, eScore, mScore);
MethodClass.putStudent(stuList, stuTemp);
System.out.println("学生信息录入成功!");
continue flag3;
} else {
System.out.println("已存在此学生编号!");
continue flag3;
}
case 2:
sc.nextLine();
System.out.println("******学生信息删除******");
System.out.println("请输入删除的学生编号:");
sid=sc.nextInt();
MethodClass.deleteStudent(stuList,sid);
System.out.println("删除成功!");
break;
case 3:
sc.nextLine();
System.out.println("******学生信息修改******");
System.out.println("请输入学生编号:");
sid = sc.nextInt();
System.out.println("姓名:");
sc.nextLine();
sname = sc.nextLine();
System.out.println("语文成绩:");
yScore = sc.nextDouble();
System.out.println("英语成绩:");
eScore = sc.nextDouble();
System.out.println("数学成绩:");
mScore = sc.nextDouble();
Student stuTemp = new Student(sid, sname, yScore, eScore, mScore);
MethodClass.deleteStudent(stuList,sid);
MethodClass.putStudent(stuList, stuTemp);
System.out.println("修改成功!");
break;
case 4:
sc.nextLine();
System.out.println("******学生信息查询******");
System.out.println("***1.查询全部学生信息***");
System.out.println("***2.按学生编号查询*****");
System.out.println("***3.返回主页面*********");
switch ((sel = sc.nextInt())) {
case 1:
MethodClass.showAllStudentInfo(stuList);
break;
case 2:
System.out.println("请输入查询的学生编号:");
sid=sc.nextInt();
MethodClass.showAllStudentSid(stuList,sid);
break;
case 3:
System.out.println("真的要返回主页么?(Y/N)");
sc.nextLine();
flag = sc.nextLine();
if (flag.equals("Y") || flag.equals("y")) {
continue flag3;
}
break;
default:
System.out.println("请输入1~2的数字!");
}
break;
case 5:
System.out.println("确实要重登录吗?(Y/N)");
sc.nextLine();
flag = sc.nextLine();
if (flag.equals("Y") || flag.equals("y")) {
continue flag1;
}
break;
case 6:
System.out.println("真的要退出么?(Y/N)");
sc.nextLine();
flag = sc.nextLine();
if (flag.equals("Y") || flag.equals("y")) {
System.exit(0);
}
break;
default:
System.out.println("请输入1~5之间的数!");
}
}
} else {
System.out.println("用户名或密码错误!");
continue flag1;
}
case 2:
sc.nextLine();
flag2:
while (true) {
System.out.println("******用户注册******");
System.out.println("用户名:");
uname = sc.nextLine();
System.out.println("密码:");
upass = sc.nextLine();
System.out.println("确认密码:");
rpass = sc.nextLine();
if (!MethodClass.checkUserNum(userAry, uname)) {
if (upass.equals(rpass)) {
User tempUser2 = new User(uname, upass);
MethodClass.putUser(userAry, tempUser2);
System.out.println("注册成功!请在主页面登录。");
continue flag1;
} else {
System.out.println("两次密码输入不一致! 需要重新注册么?(Y/N)");
flag = sc.nextLine();
if (flag.equals("Y") || flag.equals("y")) {
continue flag2;
} else {
continue flag1;
}
}
} else {
System.out.println("已存在此用户! 需要重新注册么?(Y/N)");
flag = sc.nextLine();
if (flag.equals("Y") || flag.equals("y")) {
continue flag2;
} else {
continue flag1;
}
}
}
case 3:
System.out.println("真的要退出么?(Y/N)");
sc.nextLine();
flag = sc.nextLine();
if (flag.equals("Y") || flag.equals("y")) {
System.exit(0);
}
break;
default:
System.out.println("请输入1~3之间的数!");
}
}
}
}
--------------------编程问答-------------------- 使用了典型的Service, Dao, Bean来进行操作
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;--------------------编程问答-------------------- 我是来围观的 --------------------编程问答-------------------- 3楼控制台程序可以啊。 楼主凑合交了吧。 --------------------编程问答-------------------- *^_^*,没事又改了下
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读取完成");
}
}
/** 对学生数据进行执久化操作 **/--------------------编程问答-------------------- 3楼的真是耐得烦啊 --------------------编程问答-------------------- hao --------------------编程问答-------------------- 这年头,发现csdn上面的都是求作业的,这是当代程序员的悲哀! --------------------编程问答-------------------- 真耐心 --------------------编程问答-------------------- 怎么净是输出语句。。。 --------------------编程问答-------------------- 我有一个,不过是商业的。
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 --------------------编程问答-------------------- 顶,的确是这样子的现状!很多学生拿来完成毕业设计!闷
--------------------编程问答-------------------- 好啊,太好了。 --------------------编程问答-------------------- 刚刚好也用得上 --------------------编程问答--------------------
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的…… --------------------编程问答-------------------- 这种问题还用问....不就是最基本的增删改查嘛。。 --------------------编程问答-------------------- 应付作业而已了。。。。哈哈 --------------------编程问答-------------------- N年前偶也发过类似的贴。。。 --------------------编程问答--------------------
public static void showMainMenu() {
System.out.println("*****************************");
System.out.println("******欢迎进入学生管理系统******");
System.out.println("*****************************");
System.out.println("** 1.添加学生信息 **");
System.out.println("** 2.删除学生信息 **");
System.out.println("** 3.修改学生信息 **");
System.out.println("** 4.查询学生信息 **");
System.out.println("** 5.重登录 **");
System.out.println("** 6.退出系统 **");
System.out.println("*****************************");
System.out.println("*****************************");
}
--------------------编程问答-------------------- 这代码。。。。。。。。。
多久没看到了这么多println了,怀念啊
补充:Java , Java EE