package com.qf.sms.impl;
import java.util.Arrays;
import com.qf.code.Code;
import com.qf.code.Code.AddCode;
import com.qf.code.Code.DeleteCode;
import com.qf.code.Code.UpdateCode;
import com.qf.pojo.Student;
import com.qf.sms.StudentManagerSystem;
import com.qf.utils.StuInfoUtil;
//学生管理系统实现类
public class StudentManagerSystemImpl implements StudentManagerSystem{
//默认容量
private static final int DEFAULT_CAPACITY = 3;
//学生容器 - 数据源
private Student[] stus;
//学生对象长度
private int size;
public StudentManagerSystemImpl() {
stus = new Student[DEFAULT_CAPACITY];
add(new Student("小陈", '男', 25, "2401", "001"));
add(new Student("小刘", '女', 23, "2401", "002"));
add(new Student("小桦", '女', 21, "2401", "003"));
add(new Student("小小", '男', 31, "2401", "004"));
add(new Student("小和", '女', 37, "2401", "005"));
add(new Student("小红", '女', 29, "2401", "006"));
add(new Student("小莲", '女', 42, "2401", "007"));
add(new Student("小阳", '女', 31, "2401", "008"));
add(new Student("小王", '女', 34, "2402", "001"));
add(new Student("小张", '女', 24, "2402", "002"));
add(new Student("小虎", '女', 21, "2402", "003"));
add(new Student("小会", '女', 31, "2402", "004"));
add(new Student("小高", '女', 27, "2402", "005"));
add(new Student("小彭", '女', 23, "2402", "006"));
add(new Student("小ge", '女', 28, "2402", "007"));
add(new Student("小马", '女', 34, "2402", "008"));
}
public StudentManagerSystemImpl(int capacity){
stus = new Student[capacity];
}
@Override
public Code.AddCode add(Student stu) {
//1.判断学生信息合法性
if(!StuInfoUtil.isStu(stu)){
return AddCode.ERR_1;
}
//2.判断是否有重复学生
if(query(stu) != -1){
return AddCode.ERR_2;
}
//3.判断是否扩容
if(stus.length == size){
expansion();
}
//4.添加学生
stus[size++] = stu;
return AddCode.OK;
}
@Override
public void expansion() {
int oldCapacity = stus.length;
int newCapacity = oldCapacity + (oldCapacity>>1);
// Student[] newStus = new Student[newCapacity];
// for (int i = 0; i < stus.length; i++) {
// newStus[i] = stus[i];
// }
// stus = newStus;
stus = Arrays.copyOf(stus, newCapacity);
}
@Override
public Code.DeleteCode delete(String classId, String id) {
//1.判断学生信息合法性
if(!StuInfoUtil.isClassId(classId) || !StuInfoUtil.isId(id)){
return DeleteCode.ERR_1;
}
//2.判断是否有该学生
int index = query(classId, id);
if(index == -1){
return DeleteCode.ERR_2;
}
//3.删除学生
// for (int i = index; i < size-1; i++) {
// stus[i] = stus[i+1];
// }
// size--;
int moveNum = size-index-1;//计算移动次数
System.arraycopy(stus, index+1, stus, index, moveNum);
return DeleteCode.OK;
}
@Override
public Code.UpdateCode update(String classId, String id, int type, Object val) {
//1.判断学生信息的合法性
if(!StuInfoUtil.isClassId(classId) || !StuInfoUtil.isId(id)){
return UpdateCode.ERR_1;
}
//2.判断是否有该学生
int index = query(classId, id);
if(index == -1){
return UpdateCode.ERR_2;
}
//3.判断修改类型
switch (type) {
case NAME:
String nameVal = (String) val;
//判断修改数据的合法性
if(!StuInfoUtil.isName(nameVal)){
return UpdateCode.ERR_3;
}
//修改数据
stus[index].setName(nameVal);
break;
case SEX:
char sexVal = (Character) val;
//判断修改数据的合法性
if(!StuInfoUtil.isSex(sexVal)){
return UpdateCode.ERR_3;
}
//修改数据
stus[index].setSex(sexVal);
break;
case AGE:
int ageVal = (Integer) val;
//判断修改数据的合法性
if(!StuInfoUtil.isAge(ageVal)){
return UpdateCode.ERR_3;
}
//修改数据
stus[index].setAge(ageVal);
break;
case CLASS_ID:
String classIdVal = (String) val;
//判断目标班级上是否有重复学生
if(query(classIdVal, id) != -1){
return UpdateCode.ERR_4;
}
//判断修改数据的合法性
if(!StuInfoUtil.isClassId(classIdVal)){
return UpdateCode.ERR_3;
}
//修改数据
stus[index].setClassId(classIdVal);
break;
case ID:
String idVal = (String) val;
//判断目标学号上是否有重复学生
if(query(classId, idVal) != -1){
return UpdateCode.ERR_5;
}
//判断修改数据的合法性
if(!StuInfoUtil.isId(idVal)){
return UpdateCode.ERR_3;
}
//修改数据
stus[index].setId(idVal);
break;
}
return UpdateCode.OK;
}
@Override
public int query(Student stu) {
for (int i = 0; i < size; i++) {
if(stus[i].equals(stu)){
return i;
}
}
return -1;
}
@Override
public int query(String classId, String id) {
//创建临时学生对象(注意:该学生对象中只有班级号和学号)
Student stu = new Student(classId, id);
int index = query(stu);
return index;
}
@Override
public Student[] getStusByName(String name) {
//1.验证学生信息合法性
if(!StuInfoUtil.isName(name)){
return null;
}
//2.获取符合条件的学生人数
int count = 0;
for (int i = 0; i < size; i++) {
if(stus[i].getName().equals(name)){
count++;
}
}
if(count == 0){
return null;
}
//3.创建新数组
Student[] newStus = new Student[count];
//4.遍历数据源,把符合条件的学生对象存入新数组中
int index = 0;
for (int i = 0; i < size; i++) {
if(stus[i].getName().equals(name)){
newStus[index++] = stus[i];
}
}
return newStus;
}
@Override
public Student[] getStusBySex(char sex) {
//1.验证学生信息合法性
if(!StuInfoUtil.isSex(sex)){
return null;
}
//2.获取符合条件的学生人数
int count = 0;
for (int i = 0; i < size; i++) {
if(stus[i].getSex() == sex){
count++;
}
}
if(count == 0){
return null;
}
//3.创建新数组
Student[] newStus = new Student[count];
//4.遍历数据源,把符合条件的学生对象存入新数组中
int index = 0;
for (int i = 0; i < size; i++) {
if(stus[i].getSex() == sex){
newStus[index++] = stus[i];
}
}
return newStus;
}
@Override
public Student[] getStusByAge(int start, int end) {
//1.验证学生信息合法性
if(!StuInfoUtil.isAge(start) || !StuInfoUtil.isAge(end)){
return null;
}
//2.获取符合条件的学生人数
int count = 0;
for (int i = 0; i < size; i++) {
int age = stus[i].getAge();
if(age>=start && age<end){
count++;
}
}
if(count == 0){
return null;
}
//3.创建新数组
Student[] newStus = new Student[count];
//4.遍历数据源,把符合条件的学生对象存入新数组中
int index = 0;
for (int i = 0; i < size; i++) {
int age = stus[i].getAge();
if(age>=start && age<end){
newStus[index++] = stus[i];
}
}
return newStus;
}
@Override
public Student[] getStusByClassId(String classId) {
//1.验证学生信息合法性
if(!StuInfoUtil.isClassId(classId)){
return null;
}
//2.获取符合条件的学生人数
int count = 0;
for (int i = 0; i < size; i++) {
if(stus[i].getClassId().equals(classId)){
count++;
}
}
if(count == 0){
return null;
}
//3.创建新数组
Student[] newStus = new Student[count];
//4.遍历数据源,把符合条件的学生对象存入新数组中
int index = 0;
for (int i = 0; i < size; i++) {
if(stus[i].getClassId().equals(classId)){
newStus[index++] = stus[i];
}
}
return newStus;
}
@Override
public void printAllStudent() {
for (int i = 0; i < size; i++) {
System.out.println(stus[i]);
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
学习JavaEE的day22
![preview](https://csdnimg.cn/release/downloadcmsfe/public/img/white-bg.ca8570fa.png)
共51个文件
class:25个
java:16个
md:3个
![preview-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/scale.ab9e0183.png)
需积分: 0 1 下载量 162 浏览量
2024-03-05
17:58:31
上传
评论
收藏 162KB ZIP 举报
温馨提示
代码、资料
资源推荐
资源详情
资源评论
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![7z](https://img-home.csdnimg.cn/images/20210720083312.png)
![txt](https://img-home.csdnimg.cn/images/20210720083642.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
共 51 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/1660aa62e702439192b51d147b12b518_gangain.jpg!1)
程序奇男子
- 粉丝: 966
- 资源: 27
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)