学生管理系统实验报告(详细设计)

【1】 存储学生信息
package data;

import Student.student;

import java.util.ArrayList;
import java.util.List;
public class studentData {
private List studentList = new ArrayList<>();
public studentData() {
student student1 = new student(1, “赵”, “软件工程”, 99, 98, 97, 96);
student student2 = new student(2, “钱”, “计算机科学”, 89, 88, 87, 86);
student student3 = new student(3, “孙”, “人工智能”, 79, 78, 77, 76);
student student4 = new student(4, “李”, “信息安全”, 69, 68, 67, 66);
student student5 = new student(5, “周”, “物联网”, 59, 58, 57, 56);
//使用Arrays.asList,可以直接导入多个对象,不用一直add,但是该方法后边不允许使用add方法
studentList.add(student1);
studentList.add(student2);
studentList.add(student3);
studentList.add(student4);
studentList.add(student5);
}

public List<student> getStudentList() {
    return studentList;
}
public void setStudentList(List<student> studentList) {
    this.studentList = studentList;
}

}
4.2 学生类
【1】 学生信息
package Student;

public class student {
private int Id;
private String username;
private String major;
private double score1;
private double score2;
private double score3;
private double score4;
private double scoreAll;
private int rank;

public student(int id, String username, String major, double score1, double score2, double score3, double score4) {
    Id = id;
    this.username = username;
    this.major = major;
    this.score1 = score1;
    this.score2 = score2;
    this.score3 = score3;
    this.score4 = score4;
    this.scoreAll = score1 + score2 + score3 + score4 ;
}

public int getId() {
    return Id;
}

public String getUsername() {
    return username;
}

public String getMajor() {
    return major;
}

public double getScore1() {
    return score1;
}

public double getScore2() {
    return score2;
}

public double getScore3() {
    return score3;
}

public double getScore4() {
    return score4;
}

public double getScoreAll() {
    return scoreAll;
}

public int getRank() {
    return rank;
}

public void setId(int id) {
    Id = id;
}

public void setUsername(String username) {
    this.username = username;
}

public void setMajor(String major) {
    this.major = major;
}

public void setScore1(double score1) {
    this.score1 = score1;
}

public void setScore2(double score2) {
    this.score2 = score2;
}

public void setScore3(double score3) {
    this.score3 = score3;
}

public void setScore4(double score4) {
    this.score4 = score4;
}

public void setScoreAll(double scoreAll) {
    this.scoreAll = scoreAll;
}

public void setRank(int rank) {
    this.rank = rank;
}

}
4.3 学生方法
【1】 处理学生信息
package studentDao;

import Student.student;
import data.studentData;

import java.util.List;

public class studentDao {

//链表类型元素
private studentData studentData;
public studentDao(studentData studentData) {
    this.studentData = studentData;
}


public void printLink(){
    System.out.println();
    System.out.println("学号\t\t"+"姓名\t\t"+"专业\t\t\t"+"成绩1\t\t"+"成绩2\t\t"+"成绩3\t\t"+"成绩4\t\t"+"总分\t\t\t");
    for (int i = 0; i<studentData.getStudentList().size();i++){
        int count = i;
        printStudentTwo(count);
    }
}



/**
 * 添加学生信息
 */
public void addStudentMassage(student student){
    studentData.getStudentList().add(student);
}

/**
 * 删除学生信息
 */
public void delStudent(int delId){
    for (int i=0;i<studentData.getStudentList().size();i++){
        if (studentData.getStudentList().get(i).getId()== delId){
            studentData.getStudentList().remove(i);
            break;
        }
    }
}

/**
 * 修改学生信息
 */
public void modStudent(int modID,double newScore1,double newScore2,double newScore3,double newScore4){
    for (int i=0;i<studentData.getStudentList().size();i++){
        if (studentData.getStudentList().get(i).getId() == modID){
            double allScore = newScore1+newScore2+newScore3+newScore4;
            studentData.getStudentList().get(i).setScore1(newScore1);
            studentData.getStudentList().get(i).setScore2(newScore2);
            studentData.getStudentList().get(i).setScore3(newScore3);
            studentData.getStudentList().get(i).setScore4(newScore4);
            studentData.getStudentList().get(i).setScoreAll(allScore);
            break;
        }
    }

}

/**
 * 通过姓名搜索
 */
public void searchStudentByName(String SerName){
    for (int i=0;i<studentData.getStudentList().size();i++){
        if (studentData.getStudentList().get(i).getUsername().equals(SerName)){
            int count = i;
            printStudent();
            printStudentTwo(count);
        }
    }
}


/**
 * 输出显示格式
 */
public void printStudent(){
    System.out.println("学号\t\t"+"姓名\t\t"+"专业\t\t\t"+"成绩1\t\t"+"成绩2\t\t"+"成绩3\t\t"+"成绩4\t\t"+"总分\t\t\t");
    System.out.println("***********************************************************************************************");
}

/**
 * 输出显示结果
 */
public void printStudentTwo(int count){
    System.out.println(studentData.getStudentList().get(count).getId()+"\t\t"+studentData.getStudentList().get(count).getUsername()+"\t\t"+studentData.getStudentList().get(count).getMajor()+"\t\t"+studentData.getStudentList().get(count).getScore1()+"\t\t"+studentData.getStudentList().get(count).getScore2()+"\t\t"+studentData.getStudentList().get(count).getScore3()+"\t\t"+studentData.getStudentList().get(count).getScore4()+"\t\t"+studentData.getStudentList().get(count).getScoreAll()+"\t\t");
}


/**
 * 通过学号搜索
 */
public void searchStudentByID(int SerID){
    for (int i=0;i<studentData.getStudentList().size();i++){
        if (studentData.getStudentList().get(i).getId()==SerID){
            int thisCount = i;
            printStudent();
            printStudentTwo(thisCount);
        }
    }
}

/**
 * 排名赋值并打印
 */
public void showPlace(List<student> studentList){
    System.out.println("学号\t\t"+"姓名\t\t"+"专业\t\t\t"+"总分\t\t\t"+"名次\t\t\t");
    System.out.println("********************************************");
    for(int i=0;i<studentList.size();i++){
        studentList.get(i).setRank(i+1);
    }
    int i=1;
    for(student each:studentList){
        System.out.println(each.getId()+"\t\t"+each.getUsername()+"\t\t"+each.getMajor()+"\t\t"+each.getScoreAll()+"\t\t"+each.getRank());
        i++;
    }
}

/**
 * 双向冒泡排序
 */
public List<student> doubleBubbleSort(List<student> studentList){
    List<student> list = studentList;
    student student = null;
    int left=0,right = studentList.size()-1;
    while(left<right)
    {
        for(int i=left+1;i<=right;i++){
            if(list.get(left).getScoreAll()<list.get(i).getScoreAll()){
                student = list.get(i);
                list.set(i,list.get(left));
                list.set(left,student);
            }
        }
        left++;
        for(int i=right-1;i>=left;i--){
            if(list.get(right).getScoreAll()>list.get(i).getScoreAll()){
                student=list.get(i);
                list.set(i,list.get(right));
                list.set(right,student);
            }
        }
        right--;
    }
    return list;
}

/**
 * 希尔排序
 */
public List<student> shellSort(List<student> studentList){
    List<student> list = studentList;
    student student = null;
    int j;
    for (int gap = list.size() / 2; gap >  0; gap /= 2) {
        for (int i = gap; i < list.size(); i++) {
            student=list.get(i);
            double tmp=student.getScoreAll();
            for (j = i; j >= gap && tmp>list.get(j-gap).getScoreAll(); j -= gap) {
                list.set(j,list.get(j-gap));
            }
            list.set(j,student);
        }
    }
    return list;
}

/**
 * 快速排序
 */
public List<student> quickSort(List<student> studentList){
    List<student> list=studentList;
    quickSort1(list,0,list.size()-1);
    return list;
}
public void quickSort1(List<student> studentList, int left, int right){
    if(left<right){
        int i=left,j=right;
        student student=studentList.get(left);
        double x=student.getScoreAll();
        while(i<j){
            while((i<j)&&(studentList.get(j).getScoreAll()<x)){
                j--;
            }
            if(i<j){
                studentList.set(i,studentList.get(j));
                i++;
            }
            while((i<j)&&(studentList.get(i).getScoreAll()>x)){
                i++;
            }
            if(i<j){
                studentList.set(j,studentList.get(i));
                j--;
            }
        }
        studentList.set(i,student);
        quickSort1(studentList,left,i-1);
        quickSort1(studentList,i+1,right);
    }
}

/**
 * 堆排序
 */
public List<student> heapSort(List<student> studentList){
    List<student> list=studentList;
    int len = list.size();

    buildMaxHeap(list, len);

    for (int i = len - 1; i > 0; i--) {
        swap(list, 0, i);
        len--;
        heapify(list, 0, len);
    }
    return list;
}

private void buildMaxHeap(List<student> studentList, int len) {
    for (int i = (int) Math.floor(len / 2); i >= 0; i--) {
        heapify(studentList, i, len);
    }
}
private void heapify(List<student> studentList, int i, int len) {
    int left = 2 * i + 1;
    int right = 2 * i + 2;
    int largest = i;

    if (left < len && studentList.get(left).getScoreAll() < studentList.get(largest).getScoreAll()) {
        largest = left;
    }

    if (right < len && studentList.get(right).getScoreAll() < studentList.get(largest).getScoreAll()) {
        largest = right;
    }

    if (largest != i) {
        swap(studentList, i, largest);
        heapify(studentList, largest, len);
    }
}

private void swap(List<student> studentList, int i, int j) {
    student student=studentList.get(i);
    studentList.set(i,studentList.get(j));
    studentList.set(j,student);
}

}
4.4 服务模块
【1】 服务
package serves;

import Student.student;
import data.studentData;
import studentDao.studentDao;

import java.util.List;
import java.util.Scanner;

public class serves {

Scanner scanner = new Scanner(System.in);

studentData data ;
studentDao studentDao ;

public serves(studentData studentData) {
    this.data = studentData;
    studentDao=new studentDao(data);
}

public void begin(){
    //起始界面
    studentDao.printLink();

    System.out.println();
    System.out.println("请选择功能");
    System.out.println("1. 学生信息增加");
    System.out.println("2. 学生信息删除");
    System.out.println("3. 学生信息修改");
    System.out.println("4. 学生信息排序");
    System.out.println("5. 学生信息查询");
    System.out.println("6. 学生信息打印");
    System.out.println("7. 退出系统");
    int choice1 = scanner.nextInt();

    //判断
    switch (choice1){
        case 1:
            addStudent();
            break;
        case 2:
            deleteStudent();
            break;
        case 3:
            modifyStudent();
            break;
        case 4:
            sortStudent();
            break;
        case 5:
            System.out.println("请选择查询方式:1.按姓名查询  2.按学号查询");
            int search = scanner.nextInt();
            switch (search){
                case 1:
                    searchStudentByName();
                    break;
                case 2:
                    searchStudentByID();
                    break;
                default:
                    System.out.println("非法输入");
                    begin();
            }

            break;
        case 6:
            studentDao.printLink();
            System.out.println("打印结果");
            System.out.println("按5返回主菜单");
            int count5 = scanner.nextInt();
            if (count5==5){
                begin();
            }else{
                System.out.println("非法输入");
                begin();
            }
            break;
        case 7:
            System.out.println("已退出系统");
            break;
        default:
            System.out.println("非法输入");
            System.out.println(" ");
            begin();
    }


}

/**
 * 新增学生信息
 */
public void addStudent(){
    System.out.println("请输入学号:");
    int newId = scanner.nextInt();
    System.out.println("请输入学生姓名:");
    String newName = scanner.next();
    System.out.println("请输入专业:");
    String newMajor = scanner.next();
    System.out.println("请输入成绩1:");
    double newScore1 = scanner.nextDouble();
    System.out.println("请输入成绩2:");
    double newScore2 = scanner.nextDouble();
    System.out.println("请输入成绩3:");
    double newScore3 = scanner.nextDouble();
    System.out.println("请输入成绩4:");
    double newScore4 = scanner.nextDouble();

    student newStudent = new student(newId,newName,newMajor,newScore1,newScore2,newScore3,newScore4);
    studentDao.addStudentMassage(newStudent);
    System.out.println("学生信息已添加成功,输入0返回主菜单");
    int count = scanner.nextInt();
    if (count==0){
        begin();
    }else{
        System.out.println("非法输入");
        begin();
    }
}

/**
 * 删除学生信息
 */
public void deleteStudent(){
    System.out.println("输入要删除的学生学号:");
    int delId = scanner.nextInt();
    studentDao.delStudent(delId);
    System.out.println("已成功删除该学生的信息,按1返回主菜单");
    int count2 = scanner.nextInt();
    if (count2==1){
        begin();
    }else{
        System.out.println("非法输入");
        begin();
    }
}

/**
 * 修改学生信息
 */
public void modifyStudent(){
    System.out.println("请输入你要修改的学生的学号:");
    int modId = scanner.nextInt();
    System.out.println("请输入新的成绩1:");
    double newScore1 = scanner.nextDouble();
    System.out.println("请输入新的成绩2:");
    double newScore2 = scanner.nextDouble();
    System.out.println("请输入新的成绩3:");
    double newScore3 = scanner.nextDouble();
    System.out.println("请输入新的成绩4:");
    double newScore4 = scanner.nextDouble();
    studentDao.modStudent(modId,newScore1,newScore2,newScore3,newScore4);
    System.out.println("已成功修改该学生的信息,按2返回主菜单");
    int count3 = scanner.nextInt();
    if (count3==2){
        begin();
    }else{
        System.out.println("非法输入");
        begin();
    }
}

/**
 * 通过学生姓名查询学生信息
 */
public void searchStudentByName(){
    System.out.println("请输入你要查询的学生的姓名:");
    String SerName = scanner.next();
    studentDao.searchStudentByName(SerName);
    System.out.println("按3返回主菜单");
    int count4 = scanner.nextInt();
    if (count4==3){
        begin();
    }else{
        System.out.println("非法输入");
        begin();
    }
}

/**
 * 通过学号查询
 */
public void searchStudentByID(){
    System.out.println("请输入要查询的学生的学号:");
    int  SerId = scanner.nextInt();
    studentDao.searchStudentByID(SerId);
    System.out.println("按4返回主菜单");
    int count5 = scanner.nextInt();
    if (count5==4){
        begin();
    }else{
        System.out.println("非法输入,已自动返回主菜单");
        begin();
    }
}


/**
 * 排序总方法
 */
public void sortStudent(){
    List<student> list = null;
    System.out.println("请选择排序方式:");
    System.out.println("1.双向冒泡排序");
    System.out.println("2.希尔排序");
    System.out.println("3.快速排序");
    System.out.println("4.堆排序");
    System.out.println("按0返回主菜单:");
    int choice2 = scanner.nextInt();
    switch (choice2){
        case 0:
            begin();
            break;
        case 1:
            list=studentDao.doubleBubbleSort(data.getStudentList());
            studentDao.showPlace(list);
            sortOutput();
            break;
        case 2:
            list=studentDao.shellSort(data.getStudentList());
            studentDao.showPlace(list);
            sortOutput();
            break;
        case 3:
            list=studentDao.quickSort(data.getStudentList());
            studentDao.showPlace(list);
            sortOutput();
            break;
        case 4:
            list=studentDao.heapSort(data.getStudentList());
            studentDao.showPlace(list);
            sortOutput();
            break;
        default:
            System.out.println("非法输入,请重新选择:");
            sortStudent();
    }
}

public void sortOutput(){
    System.out.println("排序成功,按0返回上一菜单:");
    int dearLiu = scanner.nextInt();
    if (dearLiu==0){
        sortStudent();
    }else{
        System.out.println("非法输入");
        begin();
    }
}

}
package test;

import data.studentData;
import serves.serves;
import studentDao.studentDao;

public class test {
public static void main(String[] args) {
studentData data = new studentData();
serves serves = new serves(data);
serves.begin();
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值