java教学管理系统设计_JAVA课程设计——多源教学数据管理系统-程序员宅基地

技术标签: java教学管理系统设计  

团队简介

团队名称:

419圣斗士

团队成员

姓名

成员介绍

任务分配

周炳辉(组长)

来自网络的一个大佬,穿女装很合适

poi与servlet

徐宏伟

网络中一个具有强大隐藏实力的大哥

css,部分jsp与html

李金谣

旭宝的忠实粉丝,来自格兰迪的挖矿者

部分jsp与echarts

龚顺德

常规划水,一个默默无闻的人

团队博客,Student类

项目git地址

项目git提交记录

30957ef2d37b0f94d8ce8badc56e9806.png

项目功能架构图与主要功能流程图

367ddbd96cb1c2e480a75e7f5d730c56.png

主要功能图

f38dd2432b83746f0d4ca1c4e20c3364.png

项目运行截图或屏幕录制

3bcb0fcbbec30a15a2af3025e5ef92a0.png

f2efd7edb64df539a3ce855ba120df69.png

aff394ed7aaa02a0d1b34a72825d5aaf.png

b95e4209bd24b21a02d818200deb39da.png

8016e30ce2e45a9ce4b1fd51726031c6.png

f57c0b796cb7692baa836aa68187c653.png

3d77c97bdb04353ffb7b293e4c3b5e03.png

ad5995e696e0f2f07393902aa2c8bf8c.png

35aef9b6a07d71dba01534edfec66850.png

20a3babf74c13b33571cbe57718e42ec.png

项目关键代码

public class ExcelUtil {

//默认单元格内容为数字时格式

private static DecimalFormat df = new DecimalFormat("0");

// 默认单元格格式化日期字符串

private static SimpleDateFormat sdf = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss");

// 格式化数字

private static DecimalFormat nf = new DecimalFormat("0.00");

public static ArrayList> readExcel(File file){

if(file == null){

return null;

}

if(file.getName().endsWith("xlsx")){

//处理ecxel2007

return readExcel2007(file);

}else{

//处理ecxel2003

return readExcel2003(file);

}

}

/*

* @return 将返回结果存储在ArrayList内,存储结构与二位数组类似

* lists.get(0).get(0)表示过去Excel中0行0列单元格

*/

public static ArrayList> readExcel2003(File file){

try{

ArrayList> rowList = new ArrayList>();

ArrayList colList;

HSSFWorkbook wb = new HSSFWorkbook(new FileInputStream(file));

int length = wb.getNumberOfSheets();

int index = 0;

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

HSSFSheet tempSheet = wb.getSheetAt(i);

HSSFRow row = tempSheet.getRow(0);

HSSFCell cell = row.getCell(0);

String value = cell.getStringCellValue();

if(value.contains("网络17")) {

index = i;

break;

}

}

HSSFSheet sheet = wb.getSheetAt(index);

HSSFRow row;

HSSFCell cell;

Object value;

for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){

row = sheet.getRow(i);

colList = new ArrayList();

if(row == null){

//当读取行为空时

if(i != sheet.getPhysicalNumberOfRows()){//判断是否是最后一行

rowList.add(colList);

}

continue;

}else{

rowCount++;

}

for( int j = row.getFirstCellNum() ; j <= row.getLastCellNum() ;j++){

cell = row.getCell(j);

if(cell == null || cell.getCellType() == CellType.BLANK){

//当该单元格为空

if(j != row.getLastCellNum()){//判断是否是该行中最后一个单元格

colList.add("");

}

continue;

}

switch(cell.getCellType()){

case STRING:

value = cell.getStringCellValue();

break;

case NUMERIC:

value = df.format(cell.getNumericCellValue());

break;

case BOOLEAN:

value = Boolean.valueOf(cell.getBooleanCellValue());

break;

case BLANK:

value = "";

break;

default:

value = cell.toString();

}// end switch

colList.add(value);

}//end for j

rowList.add(colList);

}//end for i

return rowList;

}catch(Exception e){

return null;

}

}

public static ArrayList> readExcel2007(File file){

try{

ArrayList> rowList = new ArrayList>();

ArrayList colList;

XSSFWorkbook wb = new XSSFWorkbook(new FileInputStream(file));

int length = wb.getNumberOfSheets();

int index = 0;

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

XSSFSheet tempSheet = wb.getSheetAt(i);

XSSFRow row = tempSheet.getRow(0);

XSSFCell cell = row.getCell(0);

if(cell!=null&&cell.getCellType()!=CellType.BLANK) {

String value = cell.getStringCellValue();

if(value.contains("网络17")) {

index = i;

break;

}

}

}

XSSFSheet sheet = wb.getSheetAt(index);

XSSFRow row;

XSSFCell cell;

Object value;

for(int i = sheet.getFirstRowNum() , rowCount = 0; rowCount < sheet.getPhysicalNumberOfRows() ; i++ ){

row = sheet.getRow(i);

colList = new ArrayList();

if(row == null){

//当读取行为空时

if(i != sheet.getPhysicalNumberOfRows()){//判断是否是最后一行

rowList.add(colList);

}

continue;

}else{

rowCount++;

}

for( int j = row.getFirstCellNum() ; j <= row.getLastCellNum() ;j++){

cell = row.getCell(j);

if(cell == null || cell.getCellType() == CellType.BLANK){

//当该单元格为空

if(j != row.getLastCellNum()){//判断是否是该行中最后一个单元格

colList.add("");

}

continue;

}

switch(cell.getCellType()){

case STRING:

value = cell.getStringCellValue();

break;

case NUMERIC:

value = df.format(cell.getNumericCellValue());

break;

case BOOLEAN:

value = Boolean.valueOf(cell.getBooleanCellValue());

break;

case BLANK:

value = "";

break;

default:

value = cell.toString();

}// end switch

colList.add(value);

}//end for j

rowList.add(colList);

}//end for i

return rowList;

}catch(Exception e){

e.printStackTrace();

System.out.println("exception");

return null;

}

}

public static void writeExcel(ArrayList> result,String path){

if(result == null){

return;

}

XSSFWorkbook wb = new XSSFWorkbook();

XSSFSheet sheet = wb.createSheet("sheet1");

for(int i = 0 ;i < result.size() ; i++){

XSSFRow row = sheet.createRow(i);

if(result.get(i) != null){

for(int j = 0; j < result.get(i).size() ; j ++){

XSSFCell cell = row.createCell(j);

cell.setCellValue(result.get(i).get(j).toString());

}

}

}

ByteArrayOutputStream os = new ByteArrayOutputStream();

try

{

wb.write(os);

} catch (IOException e){

e.printStackTrace();

}

byte[] content = os.toByteArray();

File file = new File(path);//Excel文件生成后存储的位置。

OutputStream fos = null;

try

{

fos = new FileOutputStream(file);

fos.write(content);

os.close();

fos.close();

}catch (Exception e){

e.printStackTrace();

}

}

public static DecimalFormat getDf() {

return df;

}

public static void setDf(DecimalFormat df) {

ExcelUtil.df = df;

}

public static SimpleDateFormat getSdf() {

return sdf;

}

public static void setSdf(SimpleDateFormat sdf) {

ExcelUtil.sdf = sdf;

}

public static DecimalFormat getNf() {

return nf;

}

public static void setNf(DecimalFormat nf) {

ExcelUtil.nf = nf;

}

}

public class POIUtil {

public static void buildStandardScale(String path) {

Connection con = null;

PreparedStatement pStatement = null;

Statement stmt = null;

ResultSet rs = null;

ArrayList> ans;

String sql = "insert into study(id,name,sex,class,major,faculty) values(?,?,?,?,?,?)";

try {

con = JDBCUtil.getConnection();

con.setAutoCommit(false);

ans = new ArrayList>();

ans = TxtUtil.readFile(path);

//ans = TxtUtil.readFile("C:\\Users\\你们走啊\\Desktop\\study\\学生名单.txt");

stmt = con.createStatement();

pStatement = con.prepareStatement(sql);

for(int i = 1; i < ans.size(); i++) {

String id = ans.get(i).get(0).toString();

String newSql = "select * from study where id = "+id;

rs = stmt.executeQuery(newSql);

String c = "0";

while (rs.next()) {

c = rs.getString(1);

}

if(c.equals("0")) {

for(int j = 1; j <= ans.get(i).size(); j++) {

pStatement.setString(j, ans.get(i).get(j-1).toString());

}

pStatement.addBatch();

pStatement.executeBatch();

con.commit();

}

}

}catch (SQLException sqle) {

sqle.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtil.realeaseAll(rs, stmt, con, pStatement);

}

}

public static void mergeExcel(String path) {

Connection con = null;

PreparedStatement pStatement = null;

Statement stmt = null;

ResultSet rs = null;

ArrayList> ans;

ArrayList cowList;

ArrayList> errorAns = new ArrayList>();

ArrayList temp = new ArrayList();

temp.add("学号");

temp.add("姓名");

temp.add("该信息所在的文件夹");

errorAns.add(temp);

String sql = "insert into study(id,name,sex,class,major,faculty) values(?,?,?,?,?,?)";

try {

con = JDBCUtil.getConnection();

con.setAutoCommit(false);

stmt = con.createStatement();

//String Path = "C:\\Users\\你们走啊\\Desktop\\新建文件夹";

File file = new File(path);

File[] tempList = file.listFiles();

String tempNameList [] = new String [tempList.length];

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

if (tempList[i].isFile()) {

tempNameList[i] = tempList[i].toString();

}

}

int begin = 0, index = 0;

ArrayList> result;

for(int l = 0; l < tempNameList.length; l++) {

begin = 0;

index = 0;

if(tempNameList[l].contains("txt")) {

continue;

}

if(tempNameList[l].contains("错误")) {

continue;

}

if(tempNameList[l].contains("网络汇总")) {

continue;

}

String name;

File newFile = new File(tempNameList[l]);

if(newFile.getName().contains("期中")) {

name = "midterm";

}else if(newFile.getName().contains("期末")) {

name = "terminal";

}else if(newFile.getName().contains("语言程序设计")) {

name = "MOOC";

}else {

name = "pta";

}

result = ExcelUtil.readExcel(newFile);

for(int i = 0 ;i < result.size() ;i++){

for(int j = 0;j

if(result.get(i).get(j).toString().equals("学号")) begin = i+1;

if(result.get(i).get(j).toString().contains("总分")) {

index = j;

break;

}

}

}

boolean flag;

for(int i = begin; i < result.size(); i++) {

temp = new ArrayList();

String id = result.get(i).get(0).toString();

flag = false;

if(result.get(i).get(0)==null||result.get(i).get(0).toString().equals("")||result.get(i).get(1)==null||result.get(i).get(1).toString().equals("")) {

flag = false;

}

else {

String newSql2 = "select * from study where id = "+result.get(i).get(0)+" and name = '"+result.get(i).get(1)+"'";

rs = stmt.executeQuery(newSql2);

while(rs.next()) {

flag = true;

}

}

if(!flag) {

temp.add(result.get(i).get(0));

temp.add(result.get(i).get(1));

temp.add(tempNameList[l]);

errorAns.add(temp);

}

String newSql = "update study set "+name+" = (?) where id = "+id;

//String newSql = "update study set "+name.toString()+" = "+result.get(i).get(index).toString()+" where id = "+id;

if(NumberUtil.isNumber(id)){

pStatement = con.prepareStatement(newSql);

pStatement.setString(1, result.get(i).get(index).toString());

pStatement.addBatch();

pStatement.executeBatch();

con.commit();

}

}

}

//将合并excel文件写入新的excel

ans = new ArrayList>();

sql = "select COLUMN_NAME from information_schema.COLUMNS where table_name = 'study'";

rs = stmt.executeQuery(sql);

cowList = new ArrayList();

while(rs.next()) {

cowList.add(rs.getString(1));

}

ans.add(cowList);

rs.close();

String newSql="select * from study";

rs = stmt.executeQuery(newSql);

while(rs.next()) {

cowList = new ArrayList();

for(int i = 1; i <= 11; i++)

if(rs.getString(i)==null) {

cowList.add("");

}

else cowList.add(rs.getString(i));

ans.add(cowList);

}

ExcelUtil.writeExcel(ans, path+"/java网络汇总.xlsx");

ExcelUtil.writeExcel(errorAns, path+"/错误汇总表.xlsx");

}catch (SQLException sqle) {

sqle.printStackTrace();

}catch(Exception e){

e.printStackTrace();

}finally{

JDBCUtil.realeaseAll(rs, stmt, con, pStatement);

}

}

项目代码扫描结果及改正

59bb833b2c6fd783f471ab6eb519bd5a.png

6a2f5b86e769839d356a20c5f4f32f79.png

根据提示的错误,修改相关的错误。

尚待改进

界面美化,数据库远程连接等等。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_39677419/article/details/114727809

智能推荐

while循环&CPU占用率高问题深入分析与解决方案_main函数使用while(1)循环cpu占用99-程序员宅基地

文章浏览阅读3.8k次,点赞9次,收藏28次。直接上一个工作中碰到的问题,另外一个系统开启多线程调用我这边的接口,然后我这边会开启多线程批量查询第三方接口并且返回给调用方。使用的是两三年前别人遗留下来的方法,放到线上后发现确实是可以正常取到结果,但是一旦调用,CPU占用就直接100%(部署环境是win server服务器)。因此查看了下相关的老代码并使用JProfiler查看发现是在某个while循环的时候有问题。具体项目代码就不贴了,类似于下面这段代码。​​​​​​while(flag) {//your code;}这里的flag._main函数使用while(1)循环cpu占用99

【无标题】jetbrains idea shift f6不生效_idea shift +f6快捷键不生效-程序员宅基地

文章浏览阅读347次。idea shift f6 快捷键无效_idea shift +f6快捷键不生效

node.js学习笔记之Node中的核心模块_node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是-程序员宅基地

文章浏览阅读135次。Ecmacript 中没有DOM 和 BOM核心模块Node为JavaScript提供了很多服务器级别,这些API绝大多数都被包装到了一个具名和核心模块中了,例如文件操作的 fs 核心模块 ,http服务构建的http 模块 path 路径操作模块 os 操作系统信息模块// 用来获取机器信息的var os = require('os')// 用来操作路径的var path = require('path')// 获取当前机器的 CPU 信息console.log(os.cpus._node模块中有很多核心模块,以下不属于核心模块,使用时需下载的是

数学建模【SPSS 下载-安装、方差分析与回归分析的SPSS实现(软件概述、方差分析、回归分析)】_化工数学模型数据回归软件-程序员宅基地

文章浏览阅读10w+次,点赞435次,收藏3.4k次。SPSS 22 下载安装过程7.6 方差分析与回归分析的SPSS实现7.6.1 SPSS软件概述1 SPSS版本与安装2 SPSS界面3 SPSS特点4 SPSS数据7.6.2 SPSS与方差分析1 单因素方差分析2 双因素方差分析7.6.3 SPSS与回归分析SPSS回归分析过程牙膏价格问题的回归分析_化工数学模型数据回归软件

利用hutool实现邮件发送功能_hutool发送邮件-程序员宅基地

文章浏览阅读7.5k次。如何利用hutool工具包实现邮件发送功能呢?1、首先引入hutool依赖<dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.7.19</version></dependency>2、编写邮件发送工具类package com.pc.c..._hutool发送邮件

docker安装elasticsearch,elasticsearch-head,kibana,ik分词器_docker安装kibana连接elasticsearch并且elasticsearch有密码-程序员宅基地

文章浏览阅读867次,点赞2次,收藏2次。docker安装elasticsearch,elasticsearch-head,kibana,ik分词器安装方式基本有两种,一种是pull的方式,一种是Dockerfile的方式,由于pull的方式pull下来后还需配置许多东西且不便于复用,个人比较喜欢使用Dockerfile的方式所有docker支持的镜像基本都在https://hub.docker.com/docker的官网上能找到合..._docker安装kibana连接elasticsearch并且elasticsearch有密码

随便推点

Python 攻克移动开发失败!_beeware-程序员宅基地

文章浏览阅读1.3w次,点赞57次,收藏92次。整理 | 郑丽媛出品 | CSDN(ID:CSDNnews)近年来,随着机器学习的兴起,有一门编程语言逐渐变得火热——Python。得益于其针对机器学习提供了大量开源框架和第三方模块,内置..._beeware

Swift4.0_Timer 的基本使用_swift timer 暂停-程序员宅基地

文章浏览阅读7.9k次。//// ViewController.swift// Day_10_Timer//// Created by dongqiangfei on 2018/10/15.// Copyright 2018年 飞飞. All rights reserved.//import UIKitclass ViewController: UIViewController { ..._swift timer 暂停

元素三大等待-程序员宅基地

文章浏览阅读986次,点赞2次,收藏2次。1.硬性等待让当前线程暂停执行,应用场景:代码执行速度太快了,但是UI元素没有立马加载出来,造成两者不同步,这时候就可以让代码等待一下,再去执行找元素的动作线程休眠,强制等待 Thread.sleep(long mills)package com.example.demo;import org.junit.jupiter.api.Test;import org.openqa.selenium.By;import org.openqa.selenium.firefox.Firefox.._元素三大等待

Java软件工程师职位分析_java岗位分析-程序员宅基地

文章浏览阅读3k次,点赞4次,收藏14次。Java软件工程师职位分析_java岗位分析

Java:Unreachable code的解决方法_java unreachable code-程序员宅基地

文章浏览阅读2k次。Java:Unreachable code的解决方法_java unreachable code

标签data-*自定义属性值和根据data属性值查找对应标签_如何根据data-*属性获取对应的标签对象-程序员宅基地

文章浏览阅读1w次。1、html中设置标签data-*的值 标题 11111 222222、点击获取当前标签的data-url的值$('dd').on('click', function() { var urlVal = $(this).data('ur_如何根据data-*属性获取对应的标签对象

推荐文章

热门文章

相关标签