java初级系统项目_JavaSE-初级阶段项目-基于excel表格的学生管理系统

这是一个基于Java的初级系统项目,使用Hutool库来读写Excel文件,实现了学生信息的增删查改功能。用户通过命令行输入学号、姓名和成绩,系统将操作的数据保存到Excel表格中。
摘要由CSDN通过智能技术生成

1.需求分析

14a08b81a1b3161f19e532b8690279e7.png

配置

项目文件

8890de4501727128890399e7cbf95bc4.png

环境:IDEA IntelliJ

工具包 :hutool-poi-apidocs

工具包导入:

右击项目文件

f8cd0bf7f2afd28468ba066b184e5bec.png

open module settings

6b21a39a6235c161e702c0a6f423d7a6.png

b211d9e6c5f40dabc73f45b8ce33cead.png

3.具体实现

(1)学生管理类StudentManager。java

import cn.hutool.poi.excel.ExcelReader;

import cn.hutool.poi.excel.ExcelUtil;

import cn.hutool.poi.excel.ExcelWriter;

import org.apache.poi.ss.usermodel.Row;

import org.apache.poi.ss.usermodel.Sheet;

import org.apache.poi.ss.usermodel.Workbook;

import java.io.FileOutputStream;

import java.io.IOException;

import java.util.ArrayList;

import java.util.List;

import java.util.Scanner;

/**

* ClassName StudentManager

* Description

*

* @author 阿木木

* @date 2020/12/26 10:26

* Version 1.0

*/

public class StudentManager {

static Scanner input = new Scanner(System.in);

public static Student[] studentArray = new Student[1000];

/**

*Description 显示主菜单

**/

public void showMenu(){

Menu.showOperation();

start();

}

/**

*Description 系统驱动类

**/

public void start(){

switch (input.nextInt()){

//增加学员信息

case 1:{

String flag;

Student student = new Student();

do {

if (addStudent(student)) {

System.out.println("增加学员成功");

//增加学员成功,显示成功加入的学员信息

for (Student student1 : studentArray) {

if (student1 == null) {

break;

}

System.out.println(student1);

}

} else {

System.out.println("增加学员失败");

}

System.out.println("是否继续增加:y/n?");

flag = input.next();

}while ("y".equals(flag));

excelInsert();

//执行完一次增加操作,清空student对象数组

for (int i = 0; i < studentArray.length; i++) {

if (studentArray[i] == null) {

break;

}

studentArray[i] = null;

}

break;

}

case 2:{

//查询学生信息

String flag;

do{

System.out.print("请输入学号:");

Student student = findByNo(input.next());

if (student.getStudentNo() == null) {

System.out.println("该学号不存在");

}else {

System.out.println(student);

}

System.out.println("是否继续查询:y/n?");

flag = input.next();

}while ("y".equals(flag));

break;

}

case 3:{

//更新学生信息

String flag;

Student student = new Student();

do{

System.out.println("请输入要更新的学生信息");

System.out.print("请输入学号:");

student.setStudentNo(input.next());

System.out.print("请输入学生姓名:");

student.setStudentName(input.next());

System.out.print("请输入成绩:");

student.setStudentScore(input.next());

updateStudent(student);

System.out.println("是否继续更新:y/n?");

flag = input.next();

}while ("y".equals(flag));

break;

}

case 4:{

System.out.println("请输入要删除的学号:");

removeStudent(input.next());

}

case 5:{

break;

}

default:{

break;

}

}

}

/**

*Description 信息写入excel表格

**/

void excelInsert(){

//信息写入excel表格

for (Student student1 : studentArray) {

if (student1 == null) {

break;

}

ExcelReader excelReader = ExcelUtil.getReader("C:\\Users\\Administrator\\Desktop\\学生成绩表.xlsx");

ExcelWriter excelWriter = ExcelUtil.getWriter("C:\\Users\\Administrator\\Desktop\\学生成绩表.xlsx");

int rowCount = excelReader.getRowCount();

excelWriter.writeCellValue(0, rowCount , student1.getStudentName());

excelWriter.writeCellValue(1, rowCount , student1.getStudentNo());

excelWriter.writeCellValue(2, rowCount , student1.getStudentScore());

excelWriter.flush();

excelWriter.close();

}

}

/**

*Description 添加学生对象到数组中

**/

boolean addStudent(Student student){

student = inputInfo();

for (int i = 0; i < studentArray.length; i++) {

if (studentArray[i] == null) {

studentArray[i] = student;

return true;

}

}

return false;

}

/**

*Description 输入学生信息,并返回学生对象

**/

Student inputInfo(){

Student student = new Student();

System.out.print("请输入学号:");

student.setStudentNo(input.next());

System.out.print("请输入学生姓名:");

student.setStudentName(input.next());

System.out.print("请输入成绩:");

student.setStudentScore(input.next());

return student;

}

/**

*Description 按学号查找学员信息

**/

Student findByNo(String stuNo) {

ExcelReader excelReader = ExcelUtil.getReader("C:\\Users\\Administrator\\Desktop\\学生成绩表.xlsx");

Student student = new Student();

for (int i = 1; i < excelReader.getRowCount(); i++) {

List objects = excelReader.readRow(i);

if (objects == null) {

String studentNo = objects.get(1).toString();

if (stuNo.equals(studentNo)) {

student.setStudentName(objects.get(0).toString());

student.setStudentNo(studentNo);

student.setStudentScore(objects.get(2).toString());

}

}

}

return student;

}

/**

*Description 更新学生数据

**/

void updateStudent(Student student){

ExcelReader excelReader = ExcelUtil.getReader("C:\\Users\\Administrator\\Desktop\\学生成绩表.xlsx");

for (int i = 1; i < excelReader.getRowCount(); i++) {

List objects = excelReader.readRow(i);

String studentNo = objects.get(1).toString();

if (student.getStudentNo().equals(studentNo)) {

ExcelWriter excelWriter = ExcelUtil.getWriter("C:\\Users\\Administrator\\Desktop\\学生成绩表.xlsx");

excelWriter.writeCellValue(0, i, student.getStudentName());

excelWriter.writeCellValue(1, i, student.getStudentNo());

excelWriter.writeCellValue(2, i, student.getStudentScore());

excelWriter.flush();

excelWriter.close();

System.out.println("更新成功");

}

}

}

/**

*Description 删除学生信息

**/

void removeStudent(String stuNo){

ExcelReader excelReader = ExcelUtil.getReader("C:\\Users\\Administrator\\Desktop\\学生成绩表.xlsx");

List objects = new ArrayList<>();

for (int i = 1; i < excelReader.getRowCount(); i++) {

objects = excelReader.readRow(i);

if (objects.get(1).equals(stuNo)) {

Workbook workbook = excelReader.getWorkbook();

Sheet sheet = workbook.getSheetAt(0);

Row row = sheet.getRow(i);

sheet.removeRow(row);

try {

workbook.write(new FileOutputStream("C:\\Users\\Administrator\\Desktop\\学生成绩表2.xlsx"));

workbook.close();

} catch (IOException e) {

e.printStackTrace();

}

}

}

}

}

(2)菜单类Menu.java

在这里插入代码片

package com.studentscoresystem;

/**

ClassName Menu

Description

@author 阿木木

@date 2020/12/26 10:37

Version 1.0

*/

public class Menu {

/**

*Description 输出学生信息管理系统操作

**/

static void showOperation(){

System.out.println(“±--------------学生信息管理系统--------------------+”);

System.out.println("|\t\t1.增加学员信息\t\t\t");

System.out.println("|\t\t2.查找学员信息\t\t\t");

System.out.println("|\t\t3.更新学员信息\t\t\t");

System.out.println("|\t\t4.删除学员信息\t\t\t");

System.out.println("|\t\t5.退出 \t\t\t");

System.out.println(“±------------------------------------------------+”);

System.out.println(“请选择操作项:(1)增加 (2)查找 (3)更新 (4)删除 (5) 注销”);

}

}

(3)学生信息数据类StudeBeam.java

package com.studentscoresystem;

/**

* ClassName Student

* Description

*

* @author 阿木木

* @date 2020/12/26 10:49

* Version 1.0

*/

public class Student {

private String studentNo;

private String studentName;

private String studentScore;

public String getStudentNo() {

return studentNo;

}

public void setStudentNo(String studentNo) {

this.studentNo = studentNo;

}

public String getStudentName() {

return studentName;

}

public void setStudentName(String studentName) {

this.studentName = studentName;

}

public String getStudentScore() {

return studentScore;

}

public void setStudentScore(String studentScore) {

this.studentScore = studentScore;

}

@Override

public String toString() {

return "学生信息:" +

"学号" + studentNo + '\t' +

"姓名:" + studentName + '\t' +

"成绩:" + studentScore ;

}

}

(4)系统测试类Main.java

import java.util.Scanner;

/**

* ClassName Main

* Description 系统测试主类

*

* @author 阿木木

* @date 2020/12/26 12:54

* Version 1.0

*/

public class Main {

static Scanner input = new Scanner(System.in);

public static void main(String[] args) {

StudentManager studentManager = new StudentManager();

String flag;

do {

studentManager.showMenu();

System.out.println("返回操作菜单:y/n?");

flag = input.next();

} while ("y".equals(flag));

}

}

4.测试截图

(1)增加

79e8bea99f0ba7f1d998ff5c53d8bb50.png

2bf2aa444ea1ef1172bbd554ad502457.png

(2)减少

09e0c19759eaa820a4b4eeb1762bc289.png

(3)更新

10f021c6941bac52d2d74ab3a719aab2.png

e37f0a62cedfbe85dbb17eab48ab1454.png

(4)删除

45be8005e3e0bc15caf1087ab962b69d.png

f500c83ce396c06cc6d7f70ad12fd3f7.png

标签:初级阶段,String,excel,System,student,Student,println,JavaSE,out

来源: https://blog.csdn.net/qq_44364267/article/details/111770619

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值