Java课程设计--学生成绩管理系统

一、团队名称:

团队成员

  • 林艺薇 201721123032 网络1712
  • 黄毓颖 201721123033 网络1712
  • 唐川 201721123034 网络1712
  • 梁才玉 201721123038 网络1712

任务分配

二、项目git地址

https://gitee.com/ev32/keshe/tree/master

三、项目git提交记录截图



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

思维导图

成绩管理流程图

五、项目运行截图

主界面

选择用户

教师登陆界面

教师增加学生信息


教师查看学生信息表

删除学生信息

修改学生信息



查找学生成绩

按班级查找

按姓名查找

按学号查找

各科成绩柱状图



将成绩导出到表格

学生登陆界面

学生功能



学生成绩查询功能


学生选课界面


六、项目关键代码

1.数据库代码导入表格

public  void LearningReport() throws SQLException {
		ArrayList<String>list1=new ArrayList<String>();
	
		Connection con = null;                   //建立数据库连接
        PreparedStatement ps = null;
        ResultSet rs = null;
		String sql ="select * from students ";   //数据库查询表格所有记录
        con = JDBCUtil.getConnection();
        ps = con.prepareStatement(sql);
        rs = ps.executeQuery();
        while(rs.next()){
        	list1.add(0,rs.getString("stunum"));
           	list1.add(1,rs.getString("name"));
           	list1.add(2,rs.getString("classes"));
           	list1.add(3,rs.getString("gender"));
           	list1.add(4,rs.getString("javaScore"));
           	list1.add(5,rs.getString("mathScore"));
           	list1.add(6,rs.getString("englishScore"));
           	System.out.println();
        }
		HSSFWorkbook wb=new HSSFWorkbook();//创建Workbook对象(excel的文档对象)
		HSSFSheet sheet=wb.createSheet("表");//创建工作表
		HSSFRow row1=sheet.createRow(0);
		
		//设置单元格内容
		HSSFCell cell=row1.createCell(0);
		cell.setCellValue("学生成绩表");

		
		//合并单元格CellRangeAddress构造参数依次表示起始行,截至行,起始列, 截至列
        sheet.addMergedRegion(new CellRangeAddress(0,0,0,6));
        
      //在sheet里创建第二行,创建单元格并添加表头内容
        HSSFRow row2=sheet.createRow(1);
        row2.createCell(0).setCellValue("学号");
        row2.createCell(1).setCellValue("名字");
        row2.createCell(2).setCellValue("班级");
        row2.createCell(3).setCellValue("性别");
        row2.createCell(4).setCellValue("JAVA成绩");
        row2.createCell(5).setCellValue("数学成绩");
        row2.createCell(6).setCellValue("英语成绩");
        
      //在sheet里从第三行开始创建表格中学生信息
        int j=1;
        for(int i=0;i<list1.size();i++) {
        	HSSFRow row=sheet.createRow(++j);
        	 row.createCell(0).setCellValue(list1.get(i++));
             row.createCell(1).setCellValue(list1.get(i++));
             row.createCell(2).setCellValue(list1.get(i++));
             row.createCell(3).setCellValue(list1.get(i++));
             row.createCell(4).setCellValue(list1.get(i++));
             row.createCell(5).setCellValue(list1.get(i++));
             row.createCell(6).setCellValue(list1.get(i));
        }
        
        //导入Excel表
        try {
        	FileOutputStream fout=new FileOutputStream("D:\\students.xlsx");//文件输出流将数据写入表格
        	wb.write(fout);//保存Excel文件
        	fout.close();//关闭文件流
        }catch(Exception e){
        	e.printStackTrace();
        }finally {
			JDBCUtil.realeaseAll(rs, null, con);
		}
}

	@Override
	//模糊查找
	public List<Student> findStudentByStunum(String stunum) {
		Connection con = null;
		PreparedStatement pt = null;
		ResultSet rs = null;
		String sql="select * from students where stunum like '%"+stunum+"%'";
		List<Student> list = new ArrayList<Student>();
		try {
			con = JDBCUtil.getConnection();
			pt = con.prepareStatement(sql);
			rs = pt.executeQuery();
			while (rs.next()) {
				// 封装数据
				Student stu = new Student();
				stu.setId(rs.getInt("id"));
				stu.setName(rs.getString("name"));
				stu.setStunum(rs.getString("stunum"));
				stu.setClasses(rs.getInt("classes"));
				stu.setGender(rs.getString("gender"));
				ArrayList<Course> scoreList=new ArrayList<Course>();
				Course java=new Course("java",rs.getDouble("javaScore"));
				Course math=new Course("math",rs.getDouble("mathScore"));
				Course english=new Course("english",rs.getDouble("englishScore"));
				scoreList.add(java);
				scoreList.add(math);
				scoreList.add(english);
				stu.setScoreList(scoreList);
				list.add(stu);
			}
		} catch (SQLException e) {
			e.printStackTrace();
		} finally {
			JDBCUtil.realeaseAll(rs, pt, con);
		}

		return list;
		
	}

2.柱状图的实现

public static JFreeChart createChart(CategoryDataset dataset) 
    {//创建一个JFreeChart
        JFreeChart chart=ChartFactory.createBarChart("hi", "成绩情况", 
                "人数", dataset, PlotOrientation.VERTICAL, true, true, false); 
      //设置主标题
        chart.setTitle(new TextTitle("学生成绩统计",new Font("宋体",Font.BOLD+Font.ITALIC,20)));
      //获得图标中间部分,即plot
        CategoryPlot plot=(CategoryPlot)chart.getPlot();
      //获得横坐标
        CategoryAxis categoryAxis=plot.getDomainAxis();
      //设置横坐标字体
        categoryAxis.setLabelFont(new Font("微软雅黑",Font.BOLD,12));
        return chart;
    }
    
    public static JPanel createPanel(String course) throws SQLException
    {
        JFreeChart chart =createChart(createDataset(course));
      //将chart对象放入Panel面板中去,ChartPanel类已继承Jpanel
        return new ChartPanel(chart); 
    }

七、项目代码扫描结果及改正。

错误一:重写类中的方法是没加方法重写标记

修改后

错误二:if语句缺少大括号

错误三:

八、尚待改进或者新的想法

  • 注册和登录功能还不太完善。
  • 没有实现多线程。
  • Gui界面不太美观。
  • jFreeChart柱状图关闭时会默认关闭所有窗口,柱状图功能还不够完善。
posted @ 2019-01-18 09:14  梁才玉  阅读(12014)  评论(0编辑  收藏  举报