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.数 ...
随机推荐
- DevExpress WPF入门指南:跟随 Items Source 向导完成数据绑定
Items Source Wizard Items Source Configuration Wizard允许在设计时执行数据绑定.跟随这个向导可以自动生成XAML数据绑定代码. 下面就来展示下如何使 ...
- 使用Query进行HQL语句查询和SQL语句查询
HQL的语法比较简单,与普通SQL的区别之处是针对对象的不同,在查询语句中将sql中的表名替换成了sql中的持久化类名,因为hibernate机制是基于对象进行查询的. 不带参数的查询,语句是“fro ...
- influx+grafana自定义python采集数据和一些坑的总结
先上网卡数据采集脚本,这个基本上是最大的坑,因为一些数据的类型不正确会导致no datapoint的错误,真是令人抓狂,注意其中几个key的值必须是int或者float类型,如果你不慎写成了strin ...
- tunning-prime优化mysql建议
#!/bin/sh # set tabstop=8 ################################################################## ...
- linux C/C++服务器后台开发面试题总结
一.编程语言 1.根据熟悉的语言,谈谈两种语言的区别? 主要浅谈下C/C++和PHP语言的区别: 1)PHP弱类型语言,一种脚本语言,对数据的类型不要求过多,较多的应用于Web应用开发,现在好多互联网 ...
- magento的必备插件(转)
标签: 插件 magento magento插件 必备插件 Magento插件 ,插件,我要常见Magento必备插件 .. 都是免费的Magento插件,多而杂,乡亲们自己挑~~ [因收集而强大 & ...
- I.MX6 Android Linux UART send receive with multi-thread and multi-mode demo
/******************************************************************************************* * I.MX6 ...
- WinRAR的自解压模式 - imsoft.cnblogs
一个 SFX (SelF-eXtracting)自解压文件是压缩文件的一种,它结合了可执行文件模块,一种用以运行从压缩文件解压文件的模块.这样的压缩文件不需要外部程序来解压自解压文件的内容,它自己便可 ...
- 常用sql语法初级
博主在工作中,常常需要使用sql语句来进行查询,总结发现,灵活使用这几个要点,就可以应付大部分简单情况. 一.连接:根据两个或多个表中的列之间的关系,从这些表中查询数据. JOIN或INNER JOI ...
- LOJ2542. 「PKUWC2018」随机游走【概率期望DP+Min-Max容斥(最值反演)】
题面 思路 我们可以把到每个点的期望步数算出来取max?但是直接算显然是不行的 那就可以用Min-Max来容斥一下 设\(g_{s}\)是从x到s中任意一个点的最小步数 设\(f_{s}\)是从x到s ...