zoukankan      html  css  js  c++  java
  • 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);
    		}
    	}
    

    项目代码扫描结果及改正

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

    尚待改进

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

  • 相关阅读:
    MySQL事务处理
    MySQL触发器
    MySQL游标
    MySQL存储过程
    MySQL视图
    MySQL创建和操纵表
    Java异常体系结构以及异常处理机制、自定义异常
    Java的面向对象和抽象类、接口、内部类以及OOP实战
    Java数组声明创建和使用以及多维数组、Arrays类、稀疏数组
    Java通过循环结构和switch实现简易计算器
  • 原文地址:https://www.cnblogs.com/gongshunde/p/10265492.html
Copyright © 2011-2022 走看看