码迷,mamicode.com
首页 > 编程语言 > 详细

JAVA课程设计——多源教学数据管理系统

时间:2019-01-18 12:16:43      阅读:173      评论:0      收藏:0      [点我收藏+]

标签:位数组   sel   等等   orm   汇总   格式化数字   教学   粉丝   连接   

团队简介

团队名称:

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课程设计——多源教学数据管理系统

标签:位数组   sel   等等   orm   汇总   格式化数字   教学   粉丝   连接   

原文地址:https://www.cnblogs.com/gongshunde/p/10265492.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!