主頁 > 後端開發 > Java實作學生資訊管理系統

Java實作學生資訊管理系統

2021-04-02 08:28:09 後端開發

一.題目要求:

對學生資訊管理系統,要求完成以下基本任務:
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

上一篇:java 集合小游戲 ->武將對戰V1.0.0(待完善...)

下一篇:Spring IOC容器初始化程序(二)配置資訊加載與注冊

標籤雲
其他(157675) Python(38076) JavaScript(25376) Java(17977) C(15215) 區塊鏈(8255) C#(7972) AI(7469) 爪哇(7425) MySQL(7132) html(6777) 基礎類(6313) sql(6102) 熊猫(6058) PHP(5869) 数组(5741) R(5409) Linux(5327) 反应(5209) 腳本語言(PerlPython)(5129) 非技術區(4971) Android(4554) 数据框(4311) css(4259) 节点.js(4032) C語言(3288) json(3245) 列表(3129) 扑(3119) C++語言(3117) 安卓(2998) 打字稿(2995) VBA(2789) Java相關(2746) 疑難問題(2699) 细绳(2522) 單片機工控(2479) iOS(2429) ASP.NET(2402) MongoDB(2323) 麻木的(2285) 正则表达式(2254) 字典(2211) 循环(2198) 迅速(2185) 擅长(2169) 镖(2155) 功能(1967) .NET技术(1958) Web開發(1951) python-3.x(1918) HtmlCss(1915) 弹簧靴(1913) C++(1909) xml(1889) PostgreSQL(1872) .NETCore(1853) 谷歌表格(1846) Unity3D(1843) for循环(1842)

熱門瀏覽
  • 【C++】Microsoft C++、C 和匯編程式檔案

    ......

    uj5u.com 2020-09-10 00:57:23 more
  • 例外宣告

    相比于斷言適用于排除邏輯上不可能存在的狀態,例外通常是用于邏輯上可能發生的錯誤。 例外宣告 Item 1:當函式不可能拋出例外或不能接受拋出例外時,使用noexcept 理由 如果不打算拋出例外的話,程式就會認為無法處理這種錯誤,并且應當盡早終止,如此可以有效地阻止例外的傳播與擴散。 示例 //不可 ......

    uj5u.com 2020-09-10 00:57:27 more
  • Codeforces 1400E Clear the Multiset(貪心 + 分治)

    鏈接:https://codeforces.com/problemset/problem/1400/E 來源:Codeforces 思路:給你一個陣列,現在你可以進行兩種操作,操作1:將一段沒有 0 的區間進行減一的操作,操作2:將 i 位置上的元素歸零。最終問:將這個陣列的全部元素歸零后操作的最少 ......

    uj5u.com 2020-09-10 00:57:30 more
  • UVA11610 【Reverse Prime】

    本人看到此題沒有翻譯,就附帶了一個自己的翻譯版本 思考 這一題,它的第一個要求是找出所有 $7$ 位反向質數及其質因數的個數。 我們應該需要質數篩篩選1~$10^{7}$的所有數,這里就不慢慢介紹了。但是,重讀題,我們突然發現反向質數都是 $7$ 位,而將它反過來后的數字卻是 $6$ 位數,這就說明 ......

    uj5u.com 2020-09-10 00:57:36 more
  • 統計區間素數數量

    1 #pragma GCC optimize(2) 2 #include <bits/stdc++.h> 3 using namespace std; 4 bool isprime[1000000010]; 5 vector<int> prime; 6 inline int getlist(int ......

    uj5u.com 2020-09-10 00:57:47 more
  • C/C++編程筆記:C++中的 const 變數詳解,教你正確認識const用法

    1、C中的const 1、區域const變數存放在堆疊區中,會分配記憶體(也就是說可以通過地址間接修改變數的值)。測驗代碼如下: 運行結果: 2、全域const變數存放在只讀資料段(不能通過地址修改,會發生寫入錯誤), 默認為外部聯編,可以給其他源檔案使用(需要用extern關鍵字修飾) 運行結果: ......

    uj5u.com 2020-09-10 00:58:04 more
  • 【C++犯錯記錄】VS2019 MFC添加資源不懂如何修改資源宏ID

    1. 首先在資源視圖中,添加資源 2. 點擊新添加的資源,復制自動生成的ID 3. 在解決方案資源管理器中找到Resource.h檔案,編輯,使用整個專案搜索和替換的方式快速替換 宏宣告 4. Ctrl+Shift+F 全域搜索,點擊查找全部,然后逐個替換 5. 為什么使用搜索替換而不使用屬性視窗直 ......

    uj5u.com 2020-09-10 00:59:11 more
  • 【C++犯錯記錄】VS2019 MFC不懂的批量添加資源

    1. 打開資源頭檔案Resource.h,在其中預先定義好宏 ID(不清楚其實ID值應該設定多少,可以先新建一個相同的資源項,再在這個資源的ID值的基礎上遞增即可) 2. 在資源視圖中選中專案資源,按F7編輯資源檔案,按 ID 型別 相對路徑的形式添加 資源。(別忘了先把檔案拷貝到專案中的res檔案 ......

    uj5u.com 2020-09-10 01:00:19 more
  • C/C++編程筆記:關于C++的參考型別,專供新手入門使用

    今天要講的是C++中我最喜歡的一個用法——參考,也叫別名。 參考就是給一個變數名取一個變數名,方便我們間接地使用這個變數。我們可以給一個變數創建N個參考,這N + 1個變數共享了同一塊記憶體區域。(參考型別的變數會占用記憶體空間,占用的記憶體空間的大小和指標型別的大小是相同的。雖然參考是一個物件的別名,但 ......

    uj5u.com 2020-09-10 01:00:22 more
  • 【C/C++編程筆記】從頭開始學習C ++:初學者完整指南

    眾所周知,C ++的學習曲線陡峭,但是花時間學習這種語言將為您的職業帶來奇跡,并使您與其他開發人員區分開。您會更輕松地學習新語言,形成真正的解決問題的技能,并在編程的基礎上打下堅實的基礎。 C ++將幫助您養成良好的編程習慣(即清晰一致的編碼風格,在撰寫代碼時注釋代碼,并限制類內部的可見性),并且由 ......

    uj5u.com 2020-09-10 01:00:41 more
最新发布
  • Rust中的智能指標:Box<T> Rc<T> Arc<T> Cell<T> RefCell<T> Weak

    Rust中的智能指標是什么 智能指標(smart pointers)是一類資料結構,是擁有資料所有權和額外功能的指標。是指標的進一步發展 指標(pointer)是一個包含記憶體地址的變數的通用概念。這個地址參考,或 ” 指向”(points at)一些其 他資料 。參考以 & 符號為標志并借用了他們所 ......

    uj5u.com 2023-04-20 07:24:10 more
  • Java的值傳遞和參考傳遞

    值傳遞不會改變本身,參考傳遞(如果傳遞的值需要實體化到堆里)如果發生修改了會改變本身。 1.基本資料型別都是值傳遞 package com.example.basic; public class Test { public static void main(String[] args) { int ......

    uj5u.com 2023-04-20 07:24:04 more
  • [2]SpinalHDL教程——Scala簡單入門

    第一個 Scala 程式 shell里面輸入 $ scala scala> 1 + 1 res0: Int = 2 scala> println("Hello World!") Hello World! 檔案形式 object HelloWorld { /* 這是我的第一個 Scala 程式 * 以 ......

    uj5u.com 2023-04-20 07:23:58 more
  • 理解函式指標和回呼函式

    理解 函式指標 指向函式的指標。比如: 理解函式指標的偽代碼 void (*p)(int type, char *data); // 定義一個函式指標p void func(int type, char *data); // 宣告一個函式func p = func; // 將指標p指向函式func ......

    uj5u.com 2023-04-20 07:23:52 more
  • Django筆記二十五之資料庫函式之日期函式

    本文首發于公眾號:Hunter后端 原文鏈接:Django筆記二十五之資料庫函式之日期函式 日期函式主要介紹兩個大類,Extract() 和 Trunc() Extract() 函式作用是提取日期,比如我們可以提取一個日期欄位的年份,月份,日等資料 Trunc() 的作用則是截取,比如 2022-0 ......

    uj5u.com 2023-04-20 07:23:45 more
  • 一天吃透JVM面試八股文

    什么是JVM? JVM,全稱Java Virtual Machine(Java虛擬機),是通過在實際的計算機上仿真模擬各種計算機功能來實作的。由一套位元組碼指令集、一組暫存器、一個堆疊、一個垃圾回收堆和一個存盤方法域等組成。JVM屏蔽了與作業系統平臺相關的資訊,使得Java程式只需要生成在Java虛擬機 ......

    uj5u.com 2023-04-20 07:23:31 more
  • 使用Java接入小程式訂閱訊息!

    更新完微信服務號的模板訊息之后,我又趕緊把微信小程式的訂閱訊息給實作了!之前我一直以為微信小程式也是要企業才能申請,沒想到小程式個人就能申請。 訊息推送平臺🔥推送下發【郵件】【短信】【微信服務號】【微信小程式】【企業微信】【釘釘】等訊息型別。 https://gitee.com/zhongfuch ......

    uj5u.com 2023-04-20 07:22:59 more
  • java -- 緩沖流、轉換流、序列化流

    緩沖流 緩沖流, 也叫高效流, 按照資料型別分類: 位元組緩沖流:BufferedInputStream,BufferedOutputStream 字符緩沖流:BufferedReader,BufferedWriter 緩沖流的基本原理,是在創建流物件時,會創建一個內置的默認大小的緩沖區陣列,通過緩沖 ......

    uj5u.com 2023-04-20 07:22:49 more
  • Java-SpringBoot-Range請求頭設定實作視頻分段傳輸

    老實說,人太懶了,現在基本都不喜歡寫筆記了,但是網上有關Range請求頭的文章都太水了 下面是抄的一段StackOverflow的代碼...自己大修改過的,寫的注釋挺全的,應該直接看得懂,就不解釋了 寫的不好...只是希望能給視頻網站開發的新手一點點幫助吧. 業務場景:視頻分段傳輸、視頻多段傳輸(理 ......

    uj5u.com 2023-04-20 07:22:42 more
  • Windows 10開發教程_編程入門自學教程_菜鳥教程-免費教程分享

    教程簡介 Windows 10開發入門教程 - 從簡單的步驟了解Windows 10開發,從基本到高級概念,包括簡介,UWP,第一個應用程式,商店,XAML控制元件,資料系結,XAML性能,自適應設計,自適應UI,自適應代碼,檔案管理,SQLite資料庫,應用程式到應用程式通信,應用程式本地化,應用程式 ......

    uj5u.com 2023-04-20 07:22:35 more