一.題目要求:
對學生資訊管理系統,要求完成以下基本任務:
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://www.uj5u.com/houduan/271314.html
標籤:java
