学生成绩档案管理系统(代码)

这是一个学生成绩档案管理系统,使用了不同的排序算法如双向冒泡排序、堆排序、快速排序和希尔排序,对学生的总成绩进行排序。系统包括StudentDao、Database、ReaderWriter等组件,实现了读写文件和数据管理的功能。
摘要由CSDN通过智能技术生成

StudentDao
package com.igek.Dao;
import com.igek.Data.Database;

public class StudentDao {
private Database database;

public StudentDao(Database database)
{
    this.database = database;
}

public Database getDatabase() {
    return database;
}

}
Database
package com.igek.Data;
import com.igek.pojo.Student;
import java.util.ArrayList;

public class Database {
public ReaderWriter rw = new ReaderWriter();
public ArrayList list = new ArrayList<>();

public Database() {
    ArrayList<String> list1 = rw.reader();
    for (String s : list1) {
        String student[] = s.split(" ");
        list.add(new Student(Integer.parseInt(student[0]), student[1], student[2],
                Double.parseDouble(student[3]), Double.parseDouble(student[4]),
                Double.parseDouble(student[5]), Double.parseDouble(student[6]),
                Double.parseDouble(student[7]), Integer.parseInt(student[8])));
    }
}

public Database(ArrayList<Student> list) {
    this.list = list;
}

/**
 * 保存信息
 */
public void save() {
    ArrayList<String> list1 = new ArrayList<>();
    for (Student s : list) {
        String s1 = s.getId() + " " + s.getName() + " " + s.getMajor() + " " + s.getMath_grade() + " " +
                s.getEnglish_grade() + " " + s.getJava_grade() + " " + s.getCpp_grade() + " " +
                s.getAll_grade() + " " + s.getSort();
        list1.add(s1);
    }
    rw.writer(list1);
}

}
ReaderWriter
package com.igek.Data;
import java.io.*;
import java.util.ArrayList;

public class ReaderWriter {
public BufferedReader br;
public BufferedWriter bw;
public File file = new File(“E:/student.txt”);

public ReaderWriter() {
}

public ArrayList<String> reader() {
    ArrayList<String> list = new ArrayList<>();
    //创建字符缓冲输入流
    try {
        br = new BufferedReader(
                new InputStreamReader(new FileInputStream(file)));
        String line = null;
        while ((line = br.readLine()) != null) {
            list.add(line);
        }
        br.close();
    } catch (Exception e) {
        e.printStackTrace();
    }
    return list;
}

public boolean writer(ArrayList<String> list) {
    try {
        bw = new BufferedWriter(
                new OutputStreamWriter(new FileOutputStream(file)));
        for (String s : list) {
            bw.write(s);
            bw.newLine();
        }
        bw.close();
        return true;
    } catch (Exception e) {
        e.printStackTrace();
    }
    return false;
}

}
Main
package com.igek.main;

import com.igek.system.StudentSystem;
import com.igek.Data.Database;

/**

  • 创建其他类的对象,调用这些对象的方法。

*/
public class Main {
public static void main(String[] args) {
Database database = new Database();
StudentSystem studentService = new StudentSystem(database);
studentService.start();
}

}
Student
private double all_grade;
private int sort;

public Student() {
}

public Student(int id, String name, String major, double 语文_grade,
               double 数学_grade, double 英语_grade, double 物理_grade,
               double all_grade, int sort) {
    this.id = id;
    this.name = name;
    this.major = major;
    this.语文_grade = 语文_grade;
    this.数学_grade = 数学_grade;
    this.英语_grade = 英语_grade;
    this.物理_grade = 物理_grade;
    this.all_grade = all_grade;
    this.sort = sort;
}

public int getId() {
    return id;
}

public void setId(int id) {
    this.id = id;
}

public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

public String getMajor() {
    return major;
}

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

public double getMath_grade() {
    return 语文_grade;
}

public void setMath_grade(double 语文_grade) {
    this.语文_grade = 语文_grade;
}

public double getEnglish_grade() {
    return 数学_grade;
}

public void setEnglish_grade(double 数学_grade) {
    this.数学_grade = 数学_grade;
}

public double getJava_grade() {
    return 英语_grade;
}

public void setJava_grade(double 英语_grade) {
    this.英语_grade = 英语_grade;
}

public double getCpp_grade() {
    return 物理_grade;
}

public void setCpp_grade(double 物理_grade) {
    this.物理_grade = 物理_grade;
}

public void setAll_grade() {
    this.all_grade = this.语文_grade + this.数学_grade + this.英语_grade + this.物理_grade;
}

public double getAll_grade() {
    return all_grade;
}

public int getSort() {
    return sort;
}

public void setSort(int sort) {
    this.sort = sort;
}


public boolean equals(Object o) {
    if (this == o) return true;
    if (o == null || getClass() != o.getClass()) return false;
    Student that = (Student) o;
    return id == that.id &&
            Double.compare(that.语文_grade, 语文_grade) == 0 &&
            Double.compare(that.数学_grade, 数学_grade) == 0 &&
            Double.compare(that.英语_grade, 英语_grade) == 0 &&
            Double.compare(that.物理_grade, 物理_grade) == 0 &&
            Double.compare(that.all_grade, all_grade) == 0 &&
   
技术特点:采用三层架构模式、数据分页、获取等均使用代码实现。注释详细、代码规范,非常适合学习和中小型学校使用。 功能描述: 一,可以导入和导出成绩,成绩单上的项目包括:姓名,学号,科目,班级,成绩,补考成绩,授课老师,考试日期。 其中成绩和补考成绩具体情况如下: 1,计算机课程:理论成绩,实践成绩,, 2,文化课:理论, 3,英语:考试成绩,平时成绩,总成绩 二,导入成绩后,系统会自动计算出该班级该科目的应考人数,实考人数,缺考人数,及格人数,不及格人数,平均分,通过率。 其中平均分和率具体情况如下: 1,计算机课程:理论成绩,实践成绩,总成绩(理论和实践各占50%) 2,文化课:理论, 3,英语:考试成绩,平时成绩,总成绩(考试成绩占80%,平时成绩占20%) 4,计算机课程: 理论平均分,通过率;实践平均分,通过率;总成绩的平均分,通过率。 5,文化课:理论成绩的平均分,通过率 6,英语:总成绩的平均分和通过率 三:查询: 1,可以通过班级,学号,姓名,科目,及格的人和不及格的人,授课老师进行查询, 2,可以查询该班的单科成绩,也可以查询该班的各科成绩汇总。 3,可以按月度查询该月所有考试的平均分和通过率,也可 以按年度查询该年度的平均分和通过率。 4,可以查询授课老师某一门的月度和年度平均分和通过率和该老师所授所有课程的月度和年度平均分和通过率。 四、成绩排序 可按照该班级某门课程的理论成绩,实践成绩、总成绩进行排序 五、任课教师的管理 任课教师基本信息,该门课程的授课教师 教务处: 学校全体成员的信息管理,对考试科目,时间及对所考科目的编号等进行具体的管理,并对任课老师等输入的信息进行管理,对学生的信息进行必要的维护,可打印学生的所有信息。 绝对是可用实际部署使用的。很实惠的。 注意事项:运行时请修改附加数据库并修改数据库连接字符串(在web.config里面)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值