JAVA课程设计——多源教学数据管理系统
团队简介
团队名称:
419圣斗士
团队成员
| 姓名 | 成员介绍 | 任务分配 |
|---|---|---|
| 周炳辉(组长) | 来自网络的一个大佬,穿女装很合适 | poi与servlet |
| 徐宏伟 | 网络中一个具有强大隐藏实力的大哥 | css,部分jsp与html |
| 李金谣 | 旭宝的忠实粉丝,来自格兰迪的挖矿者 | 部分jsp与echarts |
| 龚顺德 | 常规划水,一个默默无闻的人 | 团队博客,Student类 |
项目git地址
git项目地址
项目git提交记录

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

- 主要功能图

项目运行截图或屏幕录制










项目关键代码
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<ArrayList<Object>> 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<ArrayList<Object>> readExcel2003(File file){
try{
ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
ArrayList<Object> 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<Object>();
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<ArrayList<Object>> readExcel2007(File file){
try{
ArrayList<ArrayList<Object>> rowList = new ArrayList<ArrayList<Object>>();
ArrayList<Object> 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<Object>();
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<ArrayList<Object>> 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<ArrayList<Object>> ans;
String sql = "insert into study(id,name,sex,class,major,faculty) values(?,?,?,?,?,?)";
try {
con = JDBCUtil.getConnection();
con.setAutoCommit(false);
ans = new ArrayList<ArrayList<Object>>();
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<ArrayList<Object>> ans;
ArrayList<Object> cowList;
ArrayList<ArrayList<Object>> errorAns = new ArrayList<ArrayList<Object>>();
ArrayList<Object> temp = new ArrayList<Object>();
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<ArrayList<Object>> 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<result.get(i).size(); 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<Object>();
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<ArrayList<Object>>();
sql = "select COLUMN_NAME from information_schema.COLUMNS where table_name = 'study'";
rs = stmt.executeQuery(sql);
cowList = new ArrayList<Object>();
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<Object>();
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);
}
}
项目代码扫描结果及改正


根据提示的错误,修改相关的错误。
尚待改进
界面美化,数据库远程连接等等。
JAVA课程设计——多源教学数据管理系统的更多相关文章
- JAVA课程设计---多源教学数据管理系统
1.团队课程设计博客链接 https://www.cnblogs.com/hq9-/p/10278470.html 2.个人负责模块或任务说明 (1)到控制台实现GUI界面中浏览文件并选取文件的功能. ...
- Java课程设计(2019版)
参考资料 Java课程设计参考资料(2018-12-26更新) Java课程设计常见问题(程序部署.数据库.JSP) 项目开发参考-阿里巴巴Java开发手册(正式版) 更多参考资料请查看QQ群文件中的 ...
- Java课程设计——博客作业教学数据分析系统(201521123082 黄华林)
Java课程设计--博客作业教学数据分析系统(201521123082 黄华林) 一.团队课程设计博客链接 博客作业教学数据分析系统(From:网络五条狗) 二.个人负责模块或任务说明 1.网络爬虫 ...
- Java课程设计——学生成绩管理系统(201521123003 董美凤)
Java课程设计--学生成绩管理系统(201521123003 董美凤) 1.团队课程设计博客链接 学生成绩管理系统博客链接 2.个人负责模块或任务说明 信息修改 密码修改 部分界面设计 3.自己的代 ...
- Java课程设计——博客作业教学数据分析系统(201521123084 林正晟)
#课程设计--博客作业教学数据分析系统(201521123084 林正晟) 1.团队课程设计博客链接 博客作业教学数据分析系统 2.个人负责模块或任务说明 学生登陆界面的前端实现和与数据库的连接 学生 ...
- Java课程设计—学生成绩管理系统(201521123004-林艺如)
1.团队课程设计博客 团队课程设计博客链接 2.个人负责模块或任务说明 ①.Menu Menu.jsp 在页面中给出提示,用HTML的 MenuTeacher.jsp 利用Menu.jsp进行具体化完 ...
- java课程设计团队博客《基于学院的搜索引擎》
JAVA课程设计 基于学院网站的搜索引擎 对学院网站用爬虫进行抓取.建索(需要中文分词).排序(可选).搜索.数据摘要高亮.分页显示.Web界面. 一.团队介绍 学号 班级 姓名 简介 2016211 ...
- Java课程设计-算术运算测试(D级) 齐鲁工业大学 计科20-1 王瀚垠 202003010033
Java课程设计-算术运算测试(D级) 齐鲁工业大学 计科20-1 王瀚垠 202003010033 目录 1.项目简介 2.项目采用技术 3.功能需求分析 4.项目亮点 5.项目功能架构图和UML类 ...
- java课程设计--We Talk(201521123061)
java课程设计--We Talk(201521123061) 团队博客链接:http://www.cnblogs.com/slickghost/ 数据库 一.通过Dao模式建立与数据库的连接 1.数 ...
随机推荐
- js打开、关闭页面和运行代码那些事
<!doctype html> <html> <head> <meta charset="utf-8"> <meta name ...
- 软工作业No.1。Java实现WC.exe
网址:https://github.com/a249970271/WC WC 项目要求 wc.exe 是一个常见的工具,它能统计文本文件的字符数.单词数和行数.这个项目要求写一个命令行程序,模仿已有w ...
- 201621123010《Java程序设计》第13周学习总结
1. 本周学习总结 以你喜欢的方式(思维导图.OneNote或其他)归纳总结多网络相关内容. 2. 为你的系统增加网络功能(购物车.图书馆管理.斗地主等)-分组完成 为了让你的系统可以被多个用户通过网 ...
- 这是一个专注于电脑技术、软件应用、互联网、嵌入式,电子技术行业等的原创IT博客
http://www.choovin.com/ 这是一个专注于电脑技术.软件应用.互联网.嵌入式,电子技术行业等的原创IT博客
- Python判断变量的数据类型的两种方法
https://www.cnblogs.com/jessicaxu/p/7727264.html
- nw 调用系统命令
---------------------------------------------------------------------------------------------------- ...
- ES6.0 Generator 三种用法
// Generator start ------- thunk 用法 const Thunk = function(fn) { return function (...args) { return ...
- HDU 2181 哈密顿绕行世界问题(DFS)
Problem Description 一个规则的实心十二面体,它的 20个顶点标出世界著名的20个城市,你从一个城市出发经过每个城市刚好一次后回到出发的城市. Input 前20行的第i行有3个数, ...
- windows下perl的安装和脚本的运行
参考 1.windows下perl的安装和脚本的运行: 2.fddb测试fddb的评估方法: 3.gunplot5.2.4-download: 完
- [LeetCode&Python] Problem 868. Binary Gap
Given a positive integer N, find and return the longest distance between two consecutive 1's in the ...