使用MVC结构实现《学生管理系统》
MVC
Model类
Student
package com.bennett.model;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
/**
* @version:
* @Description:
*
* 常用方法数学顺序:
* 1、构造方法
* 2、hashCode/equals
* 3、toString
* 4、getter/setter
*
* @author gxd
* @date: 2021年10月12日 上午9:02:04
*/
public class Student {
// 学生属性
private int code;
private String name;
private Date birthday;
private int allCredit;
// 生日格式化
private final SimpleDateFormat dateFormat =new SimpleDateFormat("yyyy-MM-dd");
// 构造方法
public Student() {
super();
}
public Student(int code) {
super();
this.code = code;
}
public Student(String name) {
super();
this.name = name;
}
public Student(int code, String name, Date birthday, int allCredit) {
super();
this.code = code;
this.name = name;
this.birthday = birthday;
this.allCredit = allCredit;
}
public Student(String code, String name, String birthday, String allCredit) {
super();
this.code = Integer.parseInt(code);//将字符串转换为数字(学号)
this.name = name;
//日期格式化
try {
this.birthday = dateFormat.parse(birthday);
} catch (ParseException e) {
e.printStackTrace();
}
this.allCredit = Integer.parseInt(allCredit);
}
//
@Override
public String toString() {
return code + " " + name + " " + getAge(birthday) + " " + allCredit;
}
// 只为code属性重写hashCode和equals方法
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + code;
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
Student other = (Student) obj;
if (code != other.code)
return false;
return true;
}
// get/set方法
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Date getBirthday() {
return birthday;
}
public void setBirthday(Date birthday) {
this.birthday = birthday;
}
public int getallCredit() {
return allCredit;
}
public void setallCredit(int allCredit) {
this.allCredit = allCredit;
}
// 获取学生年龄
public static int getAge(Date oBirthDay) {
int age;
Calendar oCalendarToday = Calendar.getInstance();
oCalendarToday.setTime(new java.util.Date());
Calendar oCalendarBirthday = Calendar.getInstance();
oCalendarBirthday.setTime(oBirthDay);
Calendar oCalendarTemp = Calendar.getInstance();
oCalendarTemp.set(oCalendarToday.get(Calendar.YEAR), oCalendarBirthday.get(Calendar.MONTH),
oCalendarBirthday.get(Calendar.DATE));
age = oCalendarToday.get(Calendar.YEAR) - oCalendarBirthday.get(Calendar.YEAR);
if (!oCalendarToday.after(oCalendarTemp)) {
age--;
}
return age;
}
}
Dao类
—StudentDao
package com.bennett.dao;
import java.util.Collections;
import java.util.Comparator;
import java.util.LinkedList;
import java.util.List;
import com.bennett.model.Student;
import com.sun.org.apache.bcel.internal.generic.NEW;
public class StudentDao {
private List<Student> students = new LinkedList<Student>();
// 1、添加学生
public boolean add(Student student) {
// 1.1、判断学生是否重复
if (students.contains(student)) return false;//一定要重写equals()方法
// 1.2、添加学生
return students.add(student);
}
// 2、删除学生
// 2.1、删除学生信息(按照学生学号删除)s
public boolean deleteStudentByCode(int code) {
// 2.1.1、集合判空
if(students == null || students.size()==0) return false;
// 2.1.2、删除操作
for (Student student : students) {
if (code == student.getCode()) {
students.remove(student);
return true;
}
}
return false;
}
// 2.2、删除学生信息(按照学生姓名删除)
public boolean deleteStudentByName(String name) {
// 2.2.1、判空
if(students == null || students.size()==0) return false;
// 2.2.2、删除操作
for (Student student : students) {
if (name == student.getName()) {
students.remove(student);
return true;
}
}
return false;
}
// 2.3、删除学生信息(按照学生对象姓名删除)
public boolean delete(Student student) {//更面向对象
if (students.contains(student)) {
return students.remove(student);
}
return false;
}
// 3、学生信息更新(学号不可更改)
public boolean update(Student student1) {
int index = getStudentIndex(student1);
for (Student student : students) {
if (student1.getCode() == student.getCode()) {
students.set(index, student1);
return true;
}
}
return false;
}
// 获取指定对象在集合中下标
private int getStudentIndex(Student student1) {
for (int i = 0; i < students.size(); i++) {
if (student1.getCode() == students.get(i).getCode()) {
return i;
}
}
return -1;
}
// 4、获取学生信息
// 4.1、获取单个学生(根据学号)
public Student getStudent(int code) {
for (Student student : students) {
if (student.getCode() == code) {
return student;
}
}
return null;
}
// 4.2、获取所有的学生
public List<Student> getAllStudent() {
return students;
}
// 4.3、获取超过某个学分的学生
public List<Student> getStudentsByMoreThanCredit(int allDredit) {
// 4.2.1、数据保护
List<Student> results = new LinkedList<Student>();
// 4.2.2、数据复制
results.addAll(students);
// 4.2.3、根据要求对集合进行处理
for (int i = 0; i < results.size(); i++) {
if (students.get(i).getallCredit() < allDredit) {
students.remove(i);
}
}
return results;
}
// 4.4、根据学生总学分进行降序排序
public List<Student> getStudentsOrderByCreditDesc() {
// 4.3.1、定义数据保护集合
List<Student> results = new LinkedList<Student>();
// 4.3.2、数据复制
results.addAll(students);
// 4.3.3、进行排序(根据总学分进行降序排序)
Collections.sort(results, new Comparator<Student>() {
@Override
public int compare(Student o1, Student o2) {
return o2.getallCredit() - o1.getallCredit();
}
});
return results;
}
}
测试类
----StudentDaoTest
package com.bennett.dao.test;
import static org.junit.jupiter.api.Assertions.*;
import java.util.LinkedList;
import java.util.List;
import org.junit.jupiter.api.Test;
import com.bennett.dao.StudentDao;
import com.bennett.model.Student;
class StudentDaoTest {
private StudentDao studentDao = new StudentDao();
@Test
void testAdd() {
assertTrue(studentDao.add(new Student("11", "张三","2000-11-12", "78")));
assertTrue(studentDao.add(new Student("12", "李四","2001-07-09", "78")));
assertTrue(studentDao.add(new Student("13", "王五","2002-03-23", "78")));
assertTrue(studentDao.add(new Student("14", "赵六","2003-09-26", "78")));
}
@Test
void testDeleteStudentByCode() {
testAdd();
assertTrue(studentDao.deleteStudentByCode(11));//学号
}
@Test
void testDeleteStudentByName() {
testAdd();
assertTrue(studentDao.deleteStudentByName("张三"));//姓名
}
@Test
void testDelete() {
testAdd();
assertTrue(studentDao.delete(new Student("11", "张三","2000-11-12", "78")));
}
@Test
void testUpdate() {
testAdd();
studentDao.update(new Student("11", "张9","2000-11-12", "78"));
testGetAllStudent();
}
@Test
void testGetStudent() {
testAdd();
System.out.println(studentDao.getStudent(11));
}
@Test
void testGetAllStudent() {
testAdd();
List<Student> list = new LinkedList<Student>();
list = studentDao.getAllStudent();
for (Student student : list) {
System.out.println(student.toString());
}
}
@Test
void testGetStudentsByMoreThanCredit() {
testAdd();
List<Student> list = new LinkedList<Student>();
list = studentDao.getStudentsByMoreThanCredit(80);
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
@Test
void testGetStudentsOrderByCreditDesc() {
testAdd();
List<Student> list = new LinkedList<Student>();
list = studentDao.getStudentsOrderByCreditDesc();
for (int i = 0; i < list.size(); i++) {
System.out.println(list.get(i).toString());
}
}
}
View(视图类)
在这里插入代码片