一.题目要求:
对学生信息管理系统,要求完成以下基本任务:
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布尔型变量进行判断。
转载:https://blog.csdn.net/m0_46495243/article/details/115277921