Java实现学生信息管理系统

一.题目要求:

对学生信息管理系统,要求完成以下基本任务:
1.有良好程序风格(文档注释,函数注释,语句注释)。
2.将功能补充完全(基于文件处理,完成刷新和保存功能)。
3.将学生信息改为更好的数据组织,而非离散形式(结构体)。
4.实现管理员,教师,学生,不同身份的登录
5.具备学生选课功能


二.需求分析:

1.Main类
实现读取文档初始化学生对象和显示菜单功能
2.pojo包
包下的类分别是课程,管理员,学生的实体类,父类Person
3.data包
包下的类DataBase类,主要作用是一个简易的数据仓库,用来储存信息。
4.Manage包
主要是学生管理,成绩管理,课程管理,用户管理
5.view包
主要负责课程页面,成绩页面,学生管理页面,用户管理页面的显示。
6.tools包
工具包,为管理系统提供一些辅助型功能。


三.主要算法流程设计:

1.主方法流程图
在这里插入图片描述


四.算法实现:

1.Main类

import data.DataBase;
import pojo.Student;
import tools.StuInit;
import tools.Tools;
import view.CourseView;
import view.ManagerPersonView;
import view.GradeView;
import view.StudentView;

/**
 * 这是程序启动的入口
 *
 */
public class Main {

	public static void main(String[] args) {
		//启动初始化
		StuInit.start();
		boolean system=true;
		while (system) {
			System.out.println("欢迎使用学生管理系统");
			System.out.println("-------------------------------------");
			System.out.println("请选择登录的用户的类型:");
			System.out.println("0:管理员;1:学生;2:退出");
			int userType = Tools.getInteger(Tools.scanner.next(), 1);
			if (userType == 1) {
				System.out.println("欢迎同学使用本系统");
				System.out.println("-------------------------------------");
				if (StudentView.login()) {
					boolean flag = true;
					while (flag) {
						System.out.println("请选择你的操作:");
						System.out.println("-------------------------------------");
						System.out.println("1:查看自己的信息");
						System.out.println("2:查看自己的成绩");
						System.out.println("4:修改自己的密码");
						System.out.println("3:退出登录");
						int type = Tools.getInteger(Tools.scanner.next(), 0);
						
						switch (type) {
						case 1:
							System.out.println(DataBase.getRequest().get("login"));
							break;
						case 2:
							GradeView.find(((Student) DataBase.getRequest().get("login")).getUsername());
							break;
						case 3:
							flag = false;
							break;
						case 4:
							StudentView.updatePwd();
							break;

						default:
							break;
						}
						

					}
				} else {
					System.out.println("用户登录失败");
					System.out.println("-------------------------------------");

				}
			} else if(userType==0){
				System.out.println("欢迎管理员使用本系统");
				System.out.println("-------------------------------------");
				if (ManagerPersonView.login()) {
					boolean flag = true;
					while (flag) {
						System.out.println("请选择你的操作:");
						System.out.println("-------------------------------------");
						System.out.println("2:查看所有用户的信息");
						System.out.println("3:查看所有用户的成绩");
						System.out.println("4:查看指定用户的成绩");
						System.out.println("5:查看指定用户的信息");
						System.out.println("6:添加课程");
						System.out.println("7:添加用户");
						System.out.println("8:添加成绩");
						System.out.println("9:修改用户");
						System.out.println("10:修改成绩");
						System.out.println("11:修改课程");
						System.out.println("12:显示课程");
						System.out.println("20:删除学生");
						System.out.println("13:退出登录");
						System.out.println("**********************");
						System.out.println("1:查看本人的信息");
						System.out.println("14:修改本人信息");
						System.out.println("15:修改其他管理员信息(超级管理员权限)");
						System.out.println("16:添加一个新的管理员(超级管理员权限)");
						System.out.println("17:删除一个管理员(超级管理员权限)");
						System.out.println("18:查询所有的管理员的信息(超级管理员权限)");
						System.out.println("19:查询指定的管理员的信息(超级管理员权限)");
						System.out.println("-------------------------------------");
						int type = Tools.getInteger(Tools.scanner.next(), 0);
						switch (type) {
						case 1:
							System.out.println(DataBase.getRequest().get("login"));
							break;
						case 2:
							StudentView.find();
							break;
						case 3:
							GradeView.findAll();
							break;
						case 4:
							StudentView.find();
							GradeView.find();
							break;
						case 5:
							StudentView.findByUsername();
							break;
						case 6:
							CourseView.add();
							break;
						case 7:
							StudentView.add();
							break;
						case 8:
							StudentView.find();
							CourseView.find();
							GradeView.add();
							break;
						case 9:
							StudentView.find();
							StudentView.update();
							break;
						case 10:
							StudentView.find();
							CourseView.find();
							GradeView.update();
							break;
						case 11:
							CourseView.find();
							CourseView.update();
							break;
						case 12:
							CourseView.find();
							break;
						case 13:
							flag = false;
							break;
						case 14:
							ManagerPersonView.updateMy();
							break;
						case 15:
							ManagerPersonView.find();
							ManagerPersonView.update();
							break;
						case 16:
							ManagerPersonView.add();
							break;
						case 17:
							ManagerPersonView.find();
							ManagerPersonView.del();
							break;
						case 18:
							ManagerPersonView.find();
							break;
						case 19:
							ManagerPersonView.findByUsername();
							break;
						case 20:
							StudentView.find();
							StudentView.del();
							break;

						default:
							break;
						}
					}

				}
			}
			else{
				//结束保存
				StuInit.stop();
				system=false;
			}
		}
	}

}

2.DataBase类

import java.util.HashMap;
import java.util.Map;

import pojo.Course;
import pojo.ManagerPerson;
import pojo.Student;


public class DataBase {
	private static Map<String,Object> request=new HashMap<>();//存储一些数据
	private static Map<String,Student> students=new HashMap<>();//学生的数据
	private static Map<String,ManagerPerson> managerPersons=new HashMap<>();//管理员的数据
	private static Map<String,Course> courses=new HashMap<>();//课程的数据
	public static Map<String, Student> getStudents() {
		return students;
	}
	public static void setStudents(Map<String, Student> students) {
		DataBase.students = students;
	}
	public static Map<String, ManagerPerson> getManagerPersons() {
		return managerPersons;
	}
	public static void setManagerPersons(Map<String, ManagerPerson> managerPersons) {
		DataBase.managerPersons = managerPersons;
	}
	public static Map<String, Course> getCourses() {
		return courses;
	}
	public static void setCourses(Map<String, Course> courses) {
		DataBase.courses = courses;
	}
	public static Map<String, Object> getRequest() {
		return request;
	}
	public static void setRequest(Map<String, Object> request) {
		DataBase.request = request;
	}}

3.manager包
CourseManager类

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import data.DataBase;
import pojo.Course;

/**
 * 课程的业务处理
 *
 */
public class CourseManager {

	//增
	public static boolean add(Course course){
		if(DataBase.getCourses().containsKey(course.getId())){
			return false;
		}
		else{
			DataBase.getCourses().put(course.getId(), course);
			return true;
		}
		
	}
	

	
	//改
	public static void update(Course course){
		DataBase.getCourses().put(course.getId(), course);
	}
	
	//查
	public static List<Course> find(){
		Map<String, Course> stus = DataBase.getCourses();
		Set<String> kSet = stus.keySet();
		Object[] objs = kSet.toArray();
		List<Course> list = new ArrayList<Course>();
		for (int i = 0; i < objs.length; i++) {
			String sid = (String) (objs[i]);
			list.add(stus.get(sid));
		}
		return list;
	}
	
	/**
	 * 返回课程的信息
	 * @param id 课程的id
	 * @return 返回的课程的信息,如果输入的课程的id没有查到,返回空
	 */
	public static Course find(String id){
		return DataBase.getCourses().get(id);
	}
}

ManagerPersonManager类

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import data.DataBase;
import pojo.ManagerPerson;

/**
 * 管理员的业务处理
 *
 */
public class ManagerPersonManager {


	// 添加
	public static boolean add(ManagerPerson ManagerPerson) {
		if(DataBase.getManagerPersons().containsKey(ManagerPerson.getUsername())){
			return false;
		}
		else{
			DataBase.getManagerPersons().put(ManagerPerson.getUsername(), ManagerPerson);
			return true;
		}	
		
	}

	// 删除
	public static void del(String username) {
		DataBase.getManagerPersons().remove(username);
	}

	// 改
	public static void update(ManagerPerson ManagerPerson) {
		DataBase.getManagerPersons().put(ManagerPerson.getUsername(), ManagerPerson);
	}

	// 查所有
	public static List<ManagerPerson> find() {
		Map<String, ManagerPerson> stus = DataBase.getManagerPersons();
		Set<String> kSet = stus.keySet();
		Object[] objs = kSet.toArray();
		List<ManagerPerson> list = new ArrayList<ManagerPerson>();
		for (int i = 0; i < objs.length; i++) {
			String sid = (String) (objs[i]);
			list.add(stus.get(sid));
		}
		return list;
	}

	// 查一个
	public static ManagerPerson findByUserName(String username) {
		return DataBase.getManagerPersons().get(username);
	}

	// 登录
	public static boolean login(String username, String password) {
		try {
			ManagerPerson stu = DataBase.getManagerPersons().get(username);
			if (password.equals(stu.getPassword())) {
				// 登录成功
				DataBase.getRequest().put("login", stu);
				return true;
			} else {
				// 登录失败
				return false;
			}
		} catch (Exception e) {
			return false;
		}

	}
}

GradeManager类

import java.util.Map;
import java.util.Set;

import data.DataBase;
import pojo.Course;

/**
 * 成绩的业务
 *
 */
public class GradeManager {
	/**
	 * 增加成绩
	 * 
	 * @param username
	 *            用户名
	 * @param courseId
	 *            课程的id
	 * @param result
	 *            分数
	 */
	public static boolean add(String username, String courseId, double result) {

		try {
			Course course = DataBase.getCourses().get(courseId);
			if (course != null) {
				if (DataBase.getStudents().get(username).getResults().containsKey(course)) {
					return false;
				} else {
					DataBase.getStudents().get(username).getResults().put(course, result);
					return true;
				}

			} else {
				return false;
			}
		} catch (Exception e) {
			return false;
		}

	}

	/**
	 * 删除学生的成绩
	 * 
	 * @param username
	 *            用户名
	 * @param courseId
	 *            课程的id
	 */
	public static void del(String username, String courseId) {
		Course course = DataBase.getCourses().get(courseId);
		DataBase.getStudents().get(username).getResults().remove(course);
	}

	/**
	 * 修改用户的成绩
	 * 
	 * @param username
	 *            用户名
	 * @param courseId
	 *            课程的id
	 * @param result
	 *            成绩分数
	 */
	public static boolean update(String username, String courseId, double result) {
		Course course = DataBase.getCourses().get(courseId);
		if(DataBase.getStudents().get("username").getResults().containsKey(course)){
			DataBase.getStudents().get(username).getResults().put(course, result);
			return true;
		}
		else{
			return false;
		}
	}

	/**
	 * 查,显示课程的id和课程的名字,和成绩
	 * 
	 * @param username
	 *            查询的用户的用户名
	 */
	public static String[][] find(String username) {
		Map<Course, Double> stus = DataBase.getStudents().get(username).getResults();
		Set<Course> kSet = stus.keySet();
		Object[] objs = kSet.toArray();
		Course[] courses = new Course[objs.length];
		for (int i = 0; i < objs.length; i++) {
			courses[i] = (Course) objs[i];
		}
		String[][] result = new String[objs.length][3];
		for (int i = 0; i < objs.length; i++) {

			result[i][0] = courses[i].getId();
			result[i][1] = courses[i].getName();
			result[i][2] = stus.get(courses[i]) + "";
		}
		return result;
	}
}

StudentManager类

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Set;

import data.DataBase;
import pojo.Student;

/**
 * 学生的业务
 */
public class StudentManager {
	
	// 添加
	public static boolean add(Student student) {
		if(DataBase.getStudents().containsKey(student.getUsername())){
			return false;
		}
		else{
			DataBase.getStudents().put(student.getUsername(), student);
			return true;
		}
		
	}

	// 删除
	public static void del(String username) {
		DataBase.getStudents().remove(username);
	}

	// 改
	public static void update(Student student) {
		DataBase.getStudents().put(student.getUsername(), student);
	}

	// 查所有
	public static List<Student> find() {
		Map<String, Student> stus = DataBase.getStudents();
		Set<String> kSet = stus.keySet();
		Object[] objs = kSet.toArray();
		List<Student> list = new ArrayList<Student>();
		for (int i = 0; i < objs.length; i++) {
			String sid = (String) (objs[i]);
			list.add(stus.get(sid));
		}
		return list;
	}

	// 查一个
	public static Student findByUserName(String username) {
		return DataBase.getStudents().get(username);
	}

	// 登录
	public static boolean login(String username,String password){
		Student stu=DataBase.getStudents().get(username);
		try {
			if(password.equals(stu.getPassword())){
				//登录成功
				DataBase.getRequest().put("login", stu);
				return true;
			}
			else{
				//登录失败
				return false;
			}
		} catch (Exception e) {
			return false;
		}
		
	}
}

4.pojo包
Course类

public class Course {
	private String id;//课程的id
	private String name;//课程的名字
	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	@Override
	public String toString() {
		return " [课程编号=" + id + ", 课程名=" + name + "]";
	}}

Student类

import java.util.HashMap;
import java.util.Map;

public class Student extends Person {
	private Map<Course, Double> results=new HashMap<Course,Double>();//学生的成绩

	public Map<Course, Double> getResults() {
		return results;
	}

	public void setResults(Map<Course, Double> results) {
		this.results = results;
	}

	@Override
	public String toString() {
		return super.toString();
	}
	
}

Person类

import java.util.Date;

import tools.Tools;

public class Person {
	protected String username;//用户的账户和id
	protected String password;//用户的密码
	protected String name;//用户的姓名
	protected int sex;//用户的性别0女,1男,2不详
	protected int age;//年龄
	protected Date createDate;//用户添加的时间
	protected String address;//用户的地址
	
	public Person() {
		super();
	}
	public Person(String username, String password, String name, int sex, int age, Date createDate, String address) {
		super();
		this.username = username;
		this.password = password;
		this.name = name;
		this.sex = sex;
		this.age = age;
		this.createDate = createDate;
		this.address = address;
	}
	public String getAddress() {
		return address;
	}
	public void setAddress(String address) {
		this.address = address;
	}
	public String getUsername() {
		return username;
	}
	public void setUsername(String username) {
		this.username = username;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public int getSex() {
		return sex;
	}
	public void setSex(int sex) {
		this.sex = sex;
	}
	public int getAge() {
		return age;
	}
	public void setAge(int age) {
		this.age = age;
	}
	public String getCreateDate() {
		return Tools.format.format(createDate);
	}
	public void setCreateDate(Date createDate) {
		this.createDate = createDate;
	}
	@Override
	public String toString() {
		return "[用户名=" + username + ",  姓名=" + name + ", 性别=" + Tools.getSex(sex) + ", 年龄="
				+ age + ", 创建时间=" + Tools.format.format(createDate) + ", 地址=" + address + "]";
	}
	@Override
	public int hashCode() {
		final int prime = 31;
		int result = 1;
		result = prime * result + ((username == null) ? 0 : username.hashCode());
		return result;
	}
	@Override
	public boolean equals(Object obj) {
		if (this == obj)
			return true;
		if (obj == null)
			return false;
		if (getClass() != obj.getClass())
			return false;
		Person other = (Person) obj;
		if (username == null) {
			if (other.username != null)
				return false;
		} else if (!username.equals(other.username))
			return false;
		return true;
	}
}

ManagerPerson类

public class ManagerPerson extends Person{
	private int rank;//管理员的等级,0为超级管理员,1为普通管理员

	public int getRank() {
		return rank;
	}

	public void setRank(int rank) {
		this.rank = rank;
	}
}

5.view包
CourseView类

import java.util.List;

import pojo.Course;
import manager.CourseManager;
import tools.Tools;

public class CourseView {

	/**
	 * 添加一个课程
	 */
	public static void add() {
		// 请输入课程的编号
		System.out.println("请输入课程的编号:");
		Course course = new Course();
		course.setId(Tools.scanner.next());
		System.out.println("请输入课程的名字:");
		course.setName(Tools.scanner.next());

		if (CourseManager.add(course)) {
			System.out.println("添加成功");
		} else {
			System.out.println("添加失败,课程的编号可能已经存在");
		}

	}

	/**
	 * 修改课程的信息
	 */
	public static void update() {
		// 请输入课程的编号
		System.out.println("请输入课程的编号:");
		Course course = CourseManager.find(Tools.scanner.next());
		if (course == null) {
			System.out.println("输入的课程查不到,请查证后输入");
		} else {
			System.out.println("请输入新的课程的名字:");
			course.setName(Tools.scanner.next());
			System.out.println("修改成功");
		}
	}

	/**
	 * 查找所有课程的信息
	 */
	public static void find() {
		List<Course> list = CourseManager.find();
		for (Course course : list) {
			System.out.println(course);
		}
	}
	
	
	/**
	 * 查询指定的课程的信息
	 */
	public static Course findById(String id) {
		Course course = CourseManager.find(id);
		if (course == null) {
			System.out.println("输入的课程查不到,请查证后输入");
		} else {
			System.out.println(course);
		}
		return course;
	}

	/**
	 * 查询指定的课程的信息
	 */
	public static void findById() {
		// 请输入课程的编号
		System.out.println("请输入课程的编号:");
		Course course = CourseManager.find(Tools.scanner.next());
		if (course == null) {
			System.out.println("输入的课程查不到,请查证后输入");
		} else {
			System.out.println(course);
		}
	}
}

GradeView类

import java.util.List;

import pojo.Student;
import manager.GradeManager;
import manager.StudentManager;
import tools.Tools;

public class GradeView {

	/**
	 * 增加一个成绩
	 */
	public static void add() {
		System.out.println("请输入要添加成绩的用户名:");
		String username = Tools.scanner.next();
		System.out.println("请输入课程的编号:");
		String code = Tools.scanner.next();
		System.out.println("请输入分数:");
		double result = Tools.getDouble(Tools.scanner.next(), 0);
		try {
			if (GradeManager.add(username, code, result)) {
				System.out.println("添加成功");
			} else {
				System.out.println("添加失败,您输入的信息错误");
			}

		} catch (Exception e) {
			System.out.println("添加失败,您输入的信息错误");
		}
	}

	/**
	 * 删除用户的成绩
	 */
	public static void del() {
		System.out.println("请输入要删除成绩的用户名:");
		String username = Tools.scanner.next();
		System.out.println("请输入课程的编号:");
		String code = Tools.scanner.next();
		try {
			GradeManager.del(username, code);
			System.out.println("删除成功");
		} catch (Exception e) {
			System.out.println("删除失败。您输入的信息错误");
		}
	}

	/**
	 * 修改用户的成绩
	 */
	public static void update() {
		System.out.println("请输入要修改成绩的用户名:");
		String username = Tools.scanner.next();
		System.out.println("请输入课程的编号:");
		String code = Tools.scanner.next();
		System.out.println("请输入新的分数:");
		double result = Tools.getDouble(Tools.scanner.next(), 0);
		try {
			if(GradeManager.update(username, code, result)){
				System.out.println("修改成功");
			}
			else{
				System.out.println("修改失败,可能成绩信息不存在");
			}
		} catch (Exception e) {
			System.out.println("修改失败,您输入的信息错误");
		}
	}

	/**
	 * 查询指定用户的成绩
	 */
	public static void find() {
		System.out.println("请输入要查询成绩的用户名:");
		String username = Tools.scanner.next();
		try {
			Student student = StudentManager.findByUserName(username);
			String[][] result = GradeManager.find(username);

			for (int i = 0; i < result.length; i++) {
				System.out.println("用户账户:" + student.getUsername() + "姓名:" + student.getName() + ":课程编号:" + result[i][0]
						+ "课程名称:" + result[i][1] + "成绩:" + result[i][2]);
			}

		} catch (Exception e) {
			System.out.println("查询失败,您输入的信息有误");
		}
	}

	/**
	 * 查询指定用户的成绩
	 */
	public static void find(String username) {
		try {
			Student student = StudentManager.findByUserName(username);
			String[][] result = GradeManager.find(username);

			for (int i = 0; i < result.length; i++) {
				System.out.println("用户账户:" + student.getUsername() + "姓名:" + student.getName() + ":课程编号:" + result[i][0]
						+ "课程名称:" + result[i][1] + "成绩:" + result[i][2]);
			}

		} catch (Exception e) {
			System.out.println("查询失败,您输入的信息有误");
		}
	}

	/**
	 * 查询所有用户的成绩
	 */
	public static void findAll() {
		List<Student> list = StudentManager.find();

		try {
			for (int i = 0; i < list.size(); i++) {
				Student student = list.get(i);
				String[][] result = GradeManager.find(student.getUsername());

				for (int j = 0; j < result.length; j++) {
					System.out.println("用户账户:" + student.getUsername() + "姓名:" + student.getName() + ":课程编号:"
							+ result[j][0] + "课程名称:" + result[j][1] + "成绩:" + result[j][2]);
				}
			}

		} catch (Exception e) {
			System.out.println("查询失败");
		}

	}
}

StudentView类

import java.util.Date;
import java.util.List;

import data.DataBase;
import pojo.Student;
import manager.StudentManager;
import tools.Tools;

/**
 * 学生的交互界面
*/
public class StudentView {
/**
	 * 用户登录
	 * @return
	 */
	public static boolean login(){
		System.out.println("请输入学生的账户:");
		String username=Tools.scanner.next();
		System.out.println("请输入学生的密码:");
		String password=Tools.scanner.next();
		//判断是否登录成功,如果成功将登录用户的信息存放到request login中
		return StudentManager.login(username, password);
	}
	/**
	 * 增加一个学生
	 */
	public static void add() {
		// 新建一个学生的对象
		Student student = new Student();
		// 添加创建用户的时间
		student.setCreateDate(new Date());
		System.out.println("请输入用户的账户:");
		student.setUsername(Tools.scanner.next());
		System.out.println("请输入用户的密码:");
		student.setPassword(Tools.scanner.next());
		System.out.println("请输入用户的姓名:");
		student.setName(Tools.scanner.next());
		System.out.println("请选择用户的性别:");
		System.out.println("0:女;  1:男;  2:不详");

		// 输入用户的性别,并进行数据的校验
		int sex = Math.abs(Tools.getInteger(Tools.scanner.next(), 2));
		student.setSex(sex > 2 ? 2 : sex);

		System.out.println("请输入用户年龄:");
		student.setAge(Tools.getInteger(Tools.scanner.next(), 0));
		student.setCreateDate(new Date());// 添加用户的时间
		System.out.println("请输入用户的地址:");
		student.setAddress(Tools.scanner.next());

		if(StudentManager.add(student)){
			System.out.println("添加成功");
		}
		else{
			System.out.println("添加失败,输入的信息有误,或者用户的学号重复");
		}
		
	}

	/**
	 * 删除一个学生
	 */
	public static void del() {
		System.out.println("请输入用户的账户:");
		String username = Tools.scanner.next();
		Student student = StudentManager.findByUserName(username);
		if (student == null) {
			System.out.println("删除的用户不存在");
		} else {
			StudentManager.del(username);
			System.out.println("删除成功");
		}
	}
	
	/**
	 * 查找一个用户
	 */
	public static void findByUsername(){
		System.out.println("请输入用户的学号:");
		String username=Tools.scanner.next();
		Student student= StudentManager.findByUserName(username);
		if(student==null){
			System.out.println("你输入的学号找不到");
		}
		else{
			System.out.println(student);
		}
	}
	
	
	
	/**
	 * 查找所有的用户
	 */
	public static void find(){
		List<Student> list= StudentManager.find();
		for (Student student : list) {
			System.out.println(student);
		}
	}
		/**
	 * 用户修改自己的密码
	 */
	public static void updatePwd() {
		Student student = StudentManager.findByUserName(((Student)DataBase.getRequest().get("login")).getUsername());
		if (student == null) {
			System.out.println("要修改的用户不存在");
		} else {

			System.out.println("用户的密码是:*****" );
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入用户的密码:");
				student.setPassword(Tools.scanner.next());
			}
			System.out.println("修改成功");
		}
	}
	/**
	 * 修改用户的信息,这是所有的信息
	 */
	public static void update() {
		System.out.println("请输入用户的账户:");
		String username = Tools.scanner.next();
		Student student = StudentManager.findByUserName(username);
		if (student == null) {
			System.out.println("要修改的用户不存在");
		} else {
			System.out.println("用户的姓名是:" + student.getName());
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入用户的姓名:");
				student.setName(Tools.scanner.next());
			}

			System.out.println("用户的密码是:*****" );
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入用户的密码:");
				student.setPassword(Tools.scanner.next());
			}

			System.out.println("用户的性别是:" + Tools.getSex(student.getSex()));
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请选择用户的性别:");
				System.out.println("0:女;  1:男;  2:不详");

				// 输入用户的性别,并进行数据的校验
				int sex = Math.abs(Tools.getInteger(Tools.scanner.next(), 2));
				student.setSex(sex > 2 ? 2 : sex);
			}

			System.out.println("用户的年龄是:" + student.getAge());
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入用户的年龄:");
				student.setAge(Tools.getInteger(Tools.scanner.next(), 0));
			}

			System.out.println("用户的地址是:" + student.getAddress());
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入用户的地址:");
				student.setAddress(Tools.scanner.next());
			}
			System.out.println("修改成功");
		}
	}
}

ManagerPersonView类

import java.util.Date;
import java.util.List;

import data.DataBase;
import pojo.ManagerPerson;
import manager.ManagerPersonManager;
import tools.Tools;

/**
 * 管理员的交互界面
 */
public class ManagerPersonView {

	/**
	 * 管理员登录
*/
	public static boolean login() {
		System.out.println("请输入管理员的账户:");
		String username = Tools.scanner.next();
		System.out.println("请输入管理员的密码:");
		String password = Tools.scanner.next();
		// 判断是否登录成功,如果成功将登录管理员的信息存放到request login中
		if (ManagerPersonManager.login(username, password)) {
			if (((ManagerPerson) DataBase.getRequest().get("login")).getRank() == 0) {
				System.out.println("欢迎超级管理员");
			} else {
				System.out.println("欢迎管理员");
			}
			return true;
		} else {
			System.out.println("登录失败");
			return false;
		}
	}

	/**
	 * 增加一个管理员
	 */
	public static void add() {
		if (((ManagerPerson) DataBase.getRequest().get("login")).getRank() == 0) {
			// 新建一个学生的对象
			ManagerPerson managerPerson = new ManagerPerson();
			// 添加创建管理员的时间
			managerPerson.setCreateDate(new Date());
			managerPerson.setRank(1);
			System.out.println("请输入管理员的账户:");
			managerPerson.setUsername(Tools.scanner.next());
			System.out.println("请输入管理员的密码:");
			managerPerson.setPassword(Tools.scanner.next());
			System.out.println("请输入管理员的姓名:");
			managerPerson.setName(Tools.scanner.next());
			System.out.println("请选择管理员的性别:");
			System.out.println("0:女;  1:男;  2:不详");

			// 输入管理员的性别,并进行数据的校验
			int sex = Math.abs(Tools.getInteger(Tools.scanner.next(), 2));
			managerPerson.setSex(sex > 2 ? 2 : sex);

			System.out.println("请输入管理员年龄:");
			managerPerson.setAge(Tools.getInteger(Tools.scanner.next(), 0));
			managerPerson.setCreateDate(new Date());// 添加管理员的时间
			System.out.println("请输入管理员的地址:");
			managerPerson.setAddress(Tools.scanner.next());

			if(ManagerPersonManager.add(managerPerson)){
				System.out.println("添加成功");
			}
			else{
				System.out.println("添加失败,用户可能已经存在");
			}
			
		}
		else{
			System.out.println("您的权限不足");
		}
	}

	/**
	 * 删除一个管理员
	 */
	public static void del() {
		if (((ManagerPerson) DataBase.getRequest().get("login")).getRank() == 0) {
			System.out.println("请输入管理员的账户:");
			String username = Tools.scanner.next();
			ManagerPerson managerPerson = ManagerPersonManager.findByUserName(username);
			if (managerPerson == null) {
				System.out.println("删除的管理员不存在");
			} else {
				if(managerPerson.getRank()==1){
					ManagerPersonManager.del(username);
					System.out.println("删除成功");
				}
				else{
					System.out.println("删除失败,您的权限不足");
				}
				
			}
		} else {
			System.out.println("您的权限不足");
		}
	}

	/**
	 * 查找一个管理员
	 */
	public static void findByUsername() {
		if (((ManagerPerson) DataBase.getRequest().get("login")).getRank() == 0) {
			System.out.println("请输入管理员的编号:");
			String username = Tools.scanner.next();
			ManagerPerson managerPerson = ManagerPersonManager.findByUserName(username);
			if (managerPerson == null) {
				System.out.println("你输入的编号找不到");
			} else {
				System.out.println(managerPerson);
			}
		} else {
			System.out.println("您的权限不足");
		}
	}

	/**
	 * 查找所有的管理员
	 */
	public static void find() {
		if (((ManagerPerson) DataBase.getRequest().get("login")).getRank() == 0) {

			List<ManagerPerson> list = ManagerPersonManager.find();
			for (ManagerPerson managerPerson : list) {
				System.out.println(managerPerson);
			}
		} else {
			System.out.println("您的权限不足");
		}
	}

	/**
	 * 修改本人的信息
	 */
	public static void updateMy() {

		ManagerPerson managerPerson = ((ManagerPerson) DataBase.getRequest().get("login"));
		if (managerPerson == null) {
			System.out.println("要修改的管理员不存在");
		} else {
			System.out.println("管理员的姓名是:" + managerPerson.getName());
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入管理员的姓名:");
				managerPerson.setName(Tools.scanner.next());
			}

			System.out.println("管理员的密码是:*****");
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入管理员的密码:");
				managerPerson.setPassword(Tools.scanner.next());
			}

			System.out.println("管理员的性别是:" + Tools.getSex(managerPerson.getSex()));
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请选择管理员的性别:");
				System.out.println("0:女;  1:男;  2:不详");

				// 输入管理员的性别,并进行数据的校验
				int sex = Math.abs(Tools.getInteger(Tools.scanner.next(), 2));
				managerPerson.setSex(sex > 2 ? 2 : sex);
			}

			System.out.println("管理员的年龄是:" + managerPerson.getAge());
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入管理员的年龄:");
				managerPerson.setAge(Tools.getInteger(Tools.scanner.next(), 0));
			}

			System.out.println("管理员的地址是:" + managerPerson.getAddress());
			System.out.println("修改请选择1,不修改请选择2");
			if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
				System.out.println("请输入管理员的地址:");
				managerPerson.setAddress(Tools.scanner.next());
			}
			
			System.out.println("修改成功");
		}
	}

	/**
	 * 修改管理员的信息
	 */
	public static void update() {
		if (((ManagerPerson) DataBase.getRequest().get("login")).getRank() == 0) {

			System.out.println("请输入管理员的账户:");
			String username = Tools.scanner.next();
			ManagerPerson managerPerson = ManagerPersonManager.findByUserName(username);
			if (managerPerson == null) {
				System.out.println("要修改的管理员不存在");
			} else {
				System.out.println("管理员的姓名是:" + managerPerson.getName());
				System.out.println("修改请选择1,不修改请选择2");
				if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
					System.out.println("请输入管理员的姓名:");
					managerPerson.setName(Tools.scanner.next());
				}

				System.out.println("管理员的密码是:*****");
				System.out.println("修改请选择1,不修改请选择2");
				if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
					System.out.println("请输入管理员的密码:");
					managerPerson.setPassword(Tools.scanner.next());
				}

				System.out.println("管理员的性别是:" + Tools.getSex(managerPerson.getSex()));
				System.out.println("修改请选择1,不修改请选择2");
				if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
					System.out.println("请选择管理员的性别:");
					System.out.println("0:女;  1:男;  2:不详");

					// 输入管理员的性别,并进行数据的校验
					int sex = Math.abs(Tools.getInteger(Tools.scanner.next(), 2));
					managerPerson.setSex(sex > 2 ? 2 : sex);
				}

				System.out.println("管理员的年龄是:" + managerPerson.getAge());
				System.out.println("修改请选择1,不修改请选择2");
				if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
					System.out.println("请输入管理员的年龄:");
					managerPerson.setAge(Tools.getInteger(Tools.scanner.next(), 0));
				}

				System.out.println("管理员的地址是:" + managerPerson.getAddress());
				System.out.println("修改请选择1,不修改请选择2");
				if (Tools.getInteger(Tools.scanner.next(), 2) == 1) {
					System.out.println("请输入管理员的地址:");
					managerPerson.setAddress(Tools.scanner.next());
				}
				System.out.println("修改成功");
			}
		} else {
			System.out.println("您的权限不足");
		}
	}
}

6.tools包
Stulint类

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Date;
import java.util.Map;
import java.util.Set;

import data.DataBase;
import pojo.Course;
import pojo.ManagerPerson;
import pojo.Student;
import view.CourseView;
public class StuInit {
public static void start() {
		FileReader fileReader = null;
		BufferedReader bufferedReader = null;
		File file = new File(StuInit.class.getProtectionDomain().getCodeSource().getLocation().getPath() + "StuManagerConfig.ini");

		if (file.exists()) {
			// 配置文件存在,读取
			System.out.println("正在读取数据...");
			String courseStr = "";
			String managerPersonStr = "";
			String studentsStr = "";
			try {
				fileReader = new FileReader(file);
				bufferedReader = new BufferedReader(fileReader);
				courseStr = bufferedReader.readLine();// 课程信息的读取
				managerPersonStr = bufferedReader.readLine();// 管理信息的读取
				studentsStr = bufferedReader.readLine();// 用户信息的读取

			} catch (Exception e) {
				System.out.println("数据被破坏,不能读取,请删除数据重试");
			} finally {
				try {
					bufferedReader.close();
					fileReader.close();
				} catch (IOException e) {
					System.out.println("数据读取异常,数据可能已经被破坏");
					e.printStackTrace();
				}

			}


			// 初始化课程
			setCourses(courseStr);

			// 初始化管理员
			setManagerPersons(managerPersonStr);

			// 初始化用户
			setStudents(studentsStr);

		} else {
			// 不存在,初始化管理员
			ManagerPerson person = new ManagerPerson();
			person.setUsername("admin");
			person.setPassword("admin");
			person.setName("老李");
			person.setCreateDate(new Date());
			person.setSex(1);
			person.setAge(20);
			person.setRank(0);
			person.setAddress("陕西省");
			DataBase.getManagerPersons().put(person.getUsername(), person);
		}
	}

	/**
	 * 程序结束的时候保存数据
	 */
	public static void stop() {
		FileWriter fileWriter = null;
		BufferedWriter bufferedWriter = null;
		File file = new File(StuInit.class.getProtectionDomain().getCodeSource().getLocation().getPath() + "StuManagerConfig.ini");

		if (!file.exists()) {
			try {
				file.createNewFile();
			} catch (IOException e) {
				System.out.println("配置文件保存失败");
				e.printStackTrace();
			}
		}

		try {
			fileWriter = new FileWriter(file);
			bufferedWriter = new BufferedWriter(fileWriter);

			// 写入课程的信息
			bufferedWriter.write(getCourses());
			bufferedWriter.newLine();

			// 写入管理员的信息
			bufferedWriter.write(getManagerPersons());
			bufferedWriter.newLine();

			// 写入学生的信息
			bufferedWriter.write(getStudents());

		} catch (IOException e) {
			System.out.println("数据保存失败,可能出现异常");
			e.printStackTrace();
		} finally {
			try {
				bufferedWriter.close();
				fileWriter.close();
			} catch (IOException e) {
				System.out.println("数据保存出现异常,数据可能损坏");
				e.printStackTrace();
			}

		}

	}

	/**
	 * 组织课程的信息
	 * 
	 * @return
	 */
	public static String getCourses() {
		String string = "{";
		Set<String> set = DataBase.getCourses().keySet();

		Object[] objects = set.toArray();
		for (int i = 0; i < objects.length; i++) {
			String id = (String) objects[i];
			Course course = DataBase.getCourses().get(id);
			string = string + "<" + course.getId() + ":" + course.getName() + ">";
			if (i != objects.length - 1) {
				string += "╋";
			}
		}
		string += "}";
		return string;
	}
	
	/**
	 * 初始化学生的信息
	 * @param string
	 */
	public static void setStudents(String string){

		//去掉两边的{}
		string = string.substring(1, string.length() - 1);
		if (string.length() != 0) {
			
			// 分别取出每个学生
			String[] strings = string.split("╋");

			// 创建每个学生
			for (int i = 0; i < strings.length; i++) {

				// 取出一个学生
				String oneStudent = strings[i];


				// 去掉学生的<>
				oneStudent = oneStudent.substring(1, oneStudent.length() - 1);


				// 分割信息
				String[] oneStudentSplit = oneStudent.split(",");

				// 新建一个课程
				Student student = new Student();

				//设置账户
				student.setUsername(oneStudentSplit[0]);
				student.setPassword(oneStudentSplit[1]);
				student.setName(oneStudentSplit[2]);
				student.setSex(Tools.getInteger(oneStudentSplit[3], 1));
				student.setAge(Tools.getInteger(oneStudentSplit[4], 0));
				student.setCreateDate(Tools.getDate(oneStudentSplit[5]));
				student.setAddress(oneStudentSplit[6]);
				
				
				//学生的成绩
				if(oneStudentSplit.length>7){
					//有成绩的信息
					String resultStr=oneStudentSplit[7];
					
					//分割成绩
					
					String[] results=resultStr.split("\\|");
					
					for(int j=0;j<results.length;j++){
						//有几个成绩
						
						String[] oneResult=results[j].split(":");
						//根据编号查课程
						Course course=CourseView.findById(oneResult[0]);
						student.getResults().put(course, Tools.getDouble(oneResult[1], 0));
					}
				}
				
				

				// 存储
				DataBase.getStudents().put(student.getUsername(), student);
				
			

			}
		} else {
			// 无学生信息
			System.out.println("没有学生信息,跳过...");
		}
	}
	
	/**
	 * 初始化管理员的信息
	 * @param string
	 */
	public static void setManagerPersons(String string){

		//去掉两边的{}
		string = string.substring(1, string.length() - 1);
		if (string.length() != 0) {
			
			// 分别取出每个管理员
			String[] strings = string.split("╋");

			// 创建每个管理员
			for (int i = 0; i < strings.length; i++) {

				// 取出一个管理员
				String oneManagerPerson = strings[i];


				// 去掉管理员的<>
				oneManagerPerson = oneManagerPerson.substring(1, oneManagerPerson.length() - 1);


				// 分割id和名字
				String[] oneManagerPersonSplit = oneManagerPerson.split(",");

				// 新建一个课程
				ManagerPerson managerPerson = new ManagerPerson();

				//设置账户
				managerPerson.setUsername(oneManagerPersonSplit[0]);
				managerPerson.setPassword(oneManagerPersonSplit[1]);
				managerPerson.setName(oneManagerPersonSplit[2]);
				managerPerson.setSex(Tools.getInteger(oneManagerPersonSplit[3], 1));
				managerPerson.setAge(Tools.getInteger(oneManagerPersonSplit[4], 0));
				managerPerson.setCreateDate(Tools.getDate(oneManagerPersonSplit[5]));
				managerPerson.setAddress(oneManagerPersonSplit[6]);
				managerPerson.setRank(Tools.getInteger(oneManagerPersonSplit[7], 1));
				
				

				// 存储
				DataBase.getManagerPersons().put(managerPerson.getUsername(), managerPerson);
				
				

			}
		} else {
			// 无管理员信息
			System.out.println("没有管理员信息,跳过...");
		}
	}

	/**
	 * 初始化课程的信息
	 * 
	 * @param
	 */
	public static void setCourses(String string) {
		
		//去掉两边的{}
		string = string.substring(1, string.length() - 1);
		if (string.length() != 0) {
			

			
			// 分别取出每个课程
			String[] strings = string.split("╋");

			// 创建每个课程
			for (int i = 0; i < strings.length; i++) {

				// 取出一个课程
				String oneCourse = strings[i];


				// 去掉课程的<>
				oneCourse = oneCourse.substring(1, oneCourse.length() - 1);


				// 分割id和名字
				String[] onCourseSplit = oneCourse.split(":");

				// 新建一个课程
				Course course = new Course();

				// 设置id
				course.setId(onCourseSplit[0]);

				// 设置名称
				course.setName(onCourseSplit[1]);

				// 存储
				DataBase.getCourses().put(course.getId(), course);

			}
		} else {
			// 无课程信息
			System.out.println("没有课程信息,跳过...");
		}
	}

	/**
	 * 组织管理员的信息
	 * 
	 * @return
	 */
	public static String getManagerPersons() {
		String string = "{";
		Set<String> set = DataBase.getManagerPersons().keySet();
		Object[] objects = set.toArray();

		for (int i = 0; i < objects.length; i++) {
			String id = (String) objects[i];
			ManagerPerson managerPerson = DataBase.getManagerPersons().get(id);
			string = string + "<" + managerPerson.getUsername() + "," + managerPerson.getPassword() + ","
					+ managerPerson.getName() + "," + managerPerson.getSex() + "," + managerPerson.getAge() + ","
					+ managerPerson.getCreateDate() + "," + managerPerson.getAddress() + "," + managerPerson.getRank()
					+ ">";
			if (i != objects.length - 1) {
				string += "╋";
			}
		}
		string += "}";
		return string;

	}

	/**
	 * 组织学生的信息
	 * 
	 * @return
	 */
	public static String getStudents() {
		String string = "{";

		Set<String> set = DataBase.getStudents().keySet();
		Object[] objects = set.toArray();

		for (int i = 0; i < objects.length; i++) {
			String id = (String) objects[i];
			Student student = DataBase.getStudents().get(id);
			string = string + "<" + student.getUsername() + "," + student.getPassword() + "," + student.getName() + ","
					+ student.getSex() + "," + student.getAge() + "," + student.getCreateDate() + ","
					+ student.getAddress();

			// 学生的成绩
			Map<Course, Double> map = student.getResults();

			if (!map.isEmpty()) {
				// 不是空的
				string += ",";
				Set<Course> courses = map.keySet();
				Object[] objs = courses.toArray();
				for (int j = 0; j < objs.length; j++) {
					Course course = (Course) objs[j];
					string += course.getId() + ":" + map.get(course);
					if (j != objs.length - 1) {
						string += "|";
					}
				}
			}
			string += ">";

			if (i != objects.length - 1) {
				string += "╋";
			}
		}

		string += "}";
		return string;
	}

}

Tools类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;


public class Tools {
	// 时间格式化
	public static SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

	// 这是一个输入
	public static Scanner scanner = new Scanner(System.in);
	
	/**
	 * 时间的格式化
	 * @param string
	 * @return
	 */
	public static Date getDate(String string){
		try {
			return format.parse(string);
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return new Date();
	}
	
	/**
	 * 将字符串转为整型数,如果输入的字符串不是整型数,则返回参数中的int数
	 * 
	 * @param numStr
	 *            要转换的字符串
	 * @param deInt
	 *            默认的整型数
	 * @return 返回转换的结果
	 */
	public static int getInteger(String numStr, int deInt) {
		int num=0;
		try {
			num=Integer.parseInt(numStr);
		} catch (Exception e) {
			num=deInt;
		}
		return num;
	}

	/**
	 * 输入用户的性别编码,输出用户的性别字符
	 * 
	 * @param sex
	 *            用户的性别的编码
	 * @return 用户的性别的字符
	 */
	public static String getSex(int sex) {
		if (sex == 0) {
			return "女";
		} else if (sex == 1) {
			return "男";
		} else {
			return "不详";
		}
	}

	/**
	 * 将一个数字转为double,如果格式错误,就转为默认的数
	 * 
	 * @param numStr
	 *            要转的数字
	 * @param num
	 *            默认的数字
	 * @return 转换的结果
	 */
	public static double getDouble(String numStr, double num) {
		double num2 = 0;
		try {
			num2 = Double.parseDouble(numStr);
		} catch (NumberFormatException e) {
			System.out.println("你输入的数字的格式错误,已经存为默认的数");
			num2 = num;

		}
		return num2;
	}

}

六.部分测试截图

1.登录功能

在这里插入图片描述
2.添加一个用户
在这里插入图片描述
3.显示第二步添加的用户在这里插入图片描述
4.修改管理员信息
在这里插入图片描述
小结
设计程序时,若要判断某一段程序是否被执行,可合理设置flag布尔型变量进行判断。

  • 69
    点赞
  • 397
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 25
    评论
评论 25
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Mr_树先森

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值