学生成绩档案管理系统——代码实现

本文介绍了一个使用Java实现的学生成绩档案管理系统,包括读写Excel文件、学生信息管理、排序功能、用户交互等模块。系统能够从硬盘文件中读取和写入学生信息,支持增删改查操作,并利用四种排序算法对数据进行排序。通过命令行界面与用户交互,实现了对学生成绩档案的有效管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


项目需求我在 之前的博客已经具体分析了,现在就是具体实现

学生信息存取

项目特别指出对学生信息要从硬盘文件中读写,这就涉及到java读取文件操作
我是读取Excel文件,这也方便我们在物理文件中直接打开该文件查看
读入java程序中需要有实体类支撑,所以我创建了个实体类
在这里插入图片描述
其方法都是各属性的get set方法,这里就不占用空间了

类结构如下
在这里插入图片描述
init是初始化操作,随机生成1000条 学生信息,供排序算法体现复杂度

java读写xlsx文件

Excel文件有两种格式xls和xlsx
区别如下
在这里插入图片描述
后者能兼容前者,那毫无疑问用后者就行

这个首先需要下载jar包并导入
在这里插入图片描述
下载这个即可
在这里插入图片描述
下载完后把所有的jar文件复制到项目中
在这里插入图片描述

并设置为库文件
在这里插入图片描述
然后就可以写代码了,以下是常规的读写操作,基本流程如下

  1. 建立输入/输出流,参数为目标文件的绝对路径(我本想写成相对路径,但是失败了)
  2. 创建工作簿,参数就是刚才的i/o流
  3. 在工作簿中获取工作表,毕竟Excel中可能含多个表嘛
  4. 在工作簿中获取目标行
  5. 对目标行进行操作(get获取或者create创建)
package system.data.database;

import org.apache.poi.xssf.usermodel.XSSFRow;
import org.apache.poi.xssf.usermodel.XSSFSheet;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;

import java.io.FileInputStream;
import java.io.FileOutputStream;

public class RoW {
   
   

    public static void main(String[] args) {
   
   
        try {
   
   
            //1、建立输入 输出流
            FileInputStream fip = new FileInputStream("F:\\java项目\\student_manage_system\\src\\system\\data\\database\\test.xlsx");
            FileOutputStream fop = new FileOutputStream("F:\\java项目\\student_manage_system\\src\\system\\data\\database\\test1.xlsx");
            //2、在输入流中获取工作簿
            XSSFWorkbook wb = new XSSFWorkbook(fip);
            XSSFWorkbook wb1 = new XSSFWorkbook();
            //3、在工作簿中获取目标工作表
//            XSSFSheet sheet = wb.getSheet("Sheet1");通过表名获取
            XSSFSheet sheet = wb.getSheetAt(0);
            XSSFSheet sheet1 = wb1.createSheet("ceshi");
            //4、在工作表中获取目标行
            XSSFRow row = sheet.getRow(0);
            XSSFRow row1 = sheet1.createRow(0);
            //5、获取目标单元格的值
            for(int i=0;i<row.getPhysicalNumberOfCells();i++){
   
   
                if(i>2){
   
   
                    System.out.print(" ");
                }
                System.out.printf("%10s",row.getCell(i).getStringCellValue());
                row1.createCell(i).setCellValue(row.getCell(i).getStringCellValue());
            }
            System.out.println();
//          /*以上为输出列名,以下输出数据*/
            for (int i=1;i<sheet.getPhysicalNumberOfRows();i++){
   
   
                row = sheet.getRow(i);
                row1 = sheet1.createRow(i);
                int a1= (int) (row.getCell(0).getNumericCellValue());
                String a2 = row.getCell(1).getStringCellValue();
                String a3 = row.getCell(2).getStringCellValue();
                int a4= (int) (row.getCell(3).getNumericCellValue());
                int a5= (int) (row.getCell(4).getNumericCellValue());
                int a6= (int) (row.getCell(5).getNumericCellValue());
                int a7= (int) (row.getCell(6).getNumericCellValue());
                int a8= (int) (row.getCell(7).getNumericCellValue());
                int a9= (int) (row.getCell(8).getNumericCellValue());
                System.out.printf("%10d\t%10s\t%10s\t%10d\t%10d\t%10d\t%10d\t%10d\t%10d\n",a1,a2,a3,a4,a5,a6,a7,a8,a9);
                /*以下为设置新表值*/
                row1.createCell(0).setCellValue(a1);
                row1.createCell(1).setCellValue(a2);
                row1.createCell(2).setCellValue(a3);
                row1.createCell(3).setCellValue(a4);
                row1.createCell(4).setCellValue(a5);
                row1.createCell(5).setCellValue(a6);
                row1.createCell(6).setCellValue(a7);
                row1.createCell(7).setCellValue(a8);
                row1.createCell(8).setCellValue(a9);

            }
            fip.close();
            wb1.write(fop);
            fop.close();
        } catch (Exception e) {
   
   
            e.printStackTrace();
        }
    }
}

存取在项目中实现

但要落实到项目中,应当做适应性调整
这是读取Excel表中的信息

public void read(){
   
   
    try {
   
   
        //1、建立输入流
        FileInputStream fis = new FileInputStream("F:\\java项目\\student_manage_system\\src\\system\\data\\database\\list.xlsx");
        //2、读取工作簿
        XSSFWorkbook wb = new XSSFWorkbook(fis);
        //3、获取工作表
        XSSFSheet sheet = wb.getSheetAt(0);
        XSSFRow row;
        for(int i=1;i<sheet.getPhysicalNumberOfRows();i++){
   
   
            row = sheet.getRow(i);
            Student s = new Student();
            s.setId((int)(row.getCell(0).getNumericCellValue()));
            s.setName(row.getCell(1).getStringCellValue());
            s.setMajor(row.getCell(2).getStringCellValue());
            s.setMath((int)(row.getCell(3).getNumericCellValue()));
            s.setEnglish((int)(row.getCell(4).getNumericCellValue()));
            s.setPolitics((int)(row.getCell(5).getNumericCellValue()));
            s.setProfession((int)(row.getCell(6).getNumericCellValue()))
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值