JAVA課程設計——多源教學數據管理系統
阿新 • • 發佈:2019-01-18
rds ble list stat mat work emp system val
團隊簡介
團隊名稱:
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課程設計——多源教學數據管理系統