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

一、团队名称:

团队成员

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

任务分配

1232159-20190118091146482-1939216480.png

二、项目git地址

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

三、项目git提交记录截图

1232159-20190118020634131-709900780.png
1232159-20190118092138245-502343213.png
1232159-20190118095455344-1327832698.png

1232159-20190118093333769-642882559.png

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

思维导图

1232159-20190117155117740-1185941168.png

成绩管理流程图

1232159-20190118003448192-1408360723.png

五、项目运行截图

主界面

1232159-20190117235954148-1299267808.png

选择用户

1232159-20190118000038883-792131745.png

教师登陆界面

1232159-20190118000118681-1965938951.png

教师增加学生信息

1232159-20190118000649444-763437055.png
1232159-20190118000705016-516157995.png

教师查看学生信息表

1232159-20190118002625794-1097702586.png

删除学生信息

1232159-20190118002718544-541075208.png

修改学生信息

1232159-20190118002842366-2069718463.png
1232159-20190118002755137-1932415559.png
1232159-20190118002905286-1409440711.png

查找学生成绩

按班级查找

1232159-20190118002948417-364008153.png

按姓名查找

1232159-20190118003020515-718211341.png

按学号查找

1232159-20190118003046882-237959601.png

各科成绩柱状图

1232159-20190118004154944-1994639653.png
1232159-20190118004317267-629447509.png
1232159-20190118004239399-222405417.png

将成绩导出到表格

1232159-20190118003333424-309674603.png

学生登陆界面

1232159-20190118000139258-836572909.png

学生功能

1232159-20190118000234769-1014439881.png
1232159-20190118000244502-1328327206.png
1232159-20190118000427466-1923580362.png

学生成绩查询功能

1232159-20190118000506125-73304499.png
1232159-20190118000518280-110531942.png

学生选课界面

1232159-20190118000255984-132867699.png
1232159-20190118000409045-309157640.png

六、项目关键代码

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); 
    }

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

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

1232159-20190118005214434-109081055.png

修改后

1232159-20190118005353613-68235281.png

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

1232159-20190118013843288-2098869732.png

错误三:

1232159-20190118013913915-2104132791.png

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

  • 注册和登录功能还不太完善。
  • 没有实现多线程。
  • Gui界面不太美观。
  • jFreeChart柱状图关闭时会默认关闭所有窗口,柱状图功能还不够完善。

转载于:https://www.cnblogs.com/q2634615476/p/10282638.html

  • 2
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值