Java团队课程设计-学生成绩管理系统 1. 团队人员及任务分配情况 2. 所参考的其他项目的博客与链接 3. 项目git地址 4. git提交记录 5. 前期调查 6. 项目功能架构及流程图 7. 面向对象设计包图与类图 8. 项目运行截图 9. 项目关键模块及其代码 10. 项目代码扫描结果 11. 项目总结

学生成绩管理系统
姓名 身份 任务分配
林洁颖 组长 功能4.5.7.8逻辑代码+整合代码
宋思坡 组员 所有GUI界面框架
漆靖 组员 功能1.2.3逻辑代码+团队博客

任务详情:

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

2. 所参考的其他项目的博客与链接

https://www.cnblogs.com/kawajiang/p/7062407.html


3. 项目git地址

https://gitee.com/palose/stusystem


4. git提交记录

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

5. 前期调查


  通过在网上浏览相关资料,以及参考往届学长学姐的课设博客后,我们对学生成绩管理系统的功能有了初步的构思:将用户分为老师与学生两类,在登入界面时选择。登入后,学生仅能进行查询信息与成绩操作;而老师可以进行增加、删除、查询、修改等操作,还可以查看各科目班级平均值,总成绩以及班级总成绩平均值,并能根据需要将查看到的结果输出到外部文件中,生成学生学习情况报表。在查询功能中,既可以通过学号查询,也可以通过姓名查询。

6. 项目功能架构及流程图

6.1功能架构图:

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

6.2功能流程图:

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

7. 面向对象设计包图与类图

7.1 包图

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

7.2 UML类图(仅展示关键类)

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

8. 项目运行截图

生成学生学习情况报表:

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

生成测试数据并导出为txt文件:

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结
Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

将生成的报表导出为Excel表格:

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

9. 项目关键模块及其代码

学生信息操作模块

提供对学生信息的查找、修改以及增加和删除学生的功能,同时还可以生成班级学生成绩情况报表。

public boolean addStudent(Student student) {
        Connection conn = null;
        Statement stat = null;
        PreparedStatement pstmt =null;
        //在数据库中插入学生姓名、学号、性别、出生年月日
        if(searchStuByStuId(student.getStudentId())!=null){
            return false;
        }
        String sql = "insert into test.student (stu_id,stu_name,stu_genda,stu_birthday,class_name,stu_pwd) values(?,?,?,?,?,?)";

        try {
            conn = JDBCUtil.getConnection();
            stat = conn.createStatement();
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1,student.getStudentId());
            pstmt.setString(2, student.getName());
            pstmt.setString(3,student.getGenda());
            pstmt.setDate(4, new java.sql.Date( student.getBirthday().getTime()));
            pstmt.setString(5,student.getClassName());
            pstmt.setString(6,student.getStudentPwd());

            int updateRow= pstmt.executeUpdate();
            //获得受sql语句影响的行数
            return updateRow>0;
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.closeConnection(conn);

        }

        return false;
    }

public Student searchStuByStuId(String studentId) {
        Connection conn = null;
        Statement stat = null;
        PreparedStatement pstmt =null;
        ResultSet rs=null;
        Student student=null;
        String sql="select * from test.student where stu_id = ?";
        try {
            conn = JDBCUtil.getConnection();
            stat = conn.createStatement();![](https://img2020.cnblogs.com/blog/1826326/202101/1826326-20210128195824928-1744496327.jpg)

            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1,studentId);
            rs= pstmt.executeQuery();
            //使用gui后此句不用
            if(rs.next()){
                student=new Student(studentId,rs.getString("stu_name"),rs.getString("math_score"),rs.getString("java_score"),rs.getString("PE_score"));

            }
        } catch (SQLException throwables) {
            throwables.printStackTrace();
        } finally {
            JDBCUtil.realeaseAll(rs,stat,conn);
        }


        return student;
    }

public boolean addStuScore(String studentId, String courseName, String score) {
        Connection conn = null;
        Statement stat = null;
        PreparedStatement pstmt =null;
        String sql="update  test.student set "+courseName+"_score = ? where stu_id = ?";
        int updateRow=0;
        try {
            conn = JDBCUtil.getConnection();
            pstmt= conn.prepareStatement(sql);
            pstmt.setString(1,score);
            pstmt.setString(2,studentId);
            updateRow=pstmt.executeUpdate();
            if(updateRow>0){
                return true;
            }

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.closeConnection(conn);
        }

        return false;
    }

public List<Student> searchStuByStuName(String studentName) {
        List<Student> studentList=new ArrayList<>();
        Connection conn = null;
        ResultSet rs = null;
        PreparedStatement pstmt =null;
        //模糊查找语句,like,%是可能还有多个字符
        String sql = "SELECT * From test.student where stu_name like ?";
        try {
            conn = JDBCUtil.getConnection();
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1,"%"+studentName+"%");
            rs = pstmt.executeQuery();
            //之后在gui页面中出现提示

            while (rs.next()) {
                Student student=new Student();
                student=new Student(rs.getString("stu_id"),rs.getString("stu_name"),rs.getString("math_score"),rs.getString("java_score"),rs.getString("PE_score"));
                studentList.add(student);
            }

        } catch (

                SQLException sqle) {
            sqle.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            JDBCUtil.realeaseAll(rs, pstmt, conn);
        }

        return studentList;

    }

public List<Student> generateClassStuReport(String className,String filePath) {
        Connection conn = null;
        PreparedStatement pstmt =null;
        ResultSet rs = null;
        List<Student> descOrderStudentList=new ArrayList<>();
        double mathScoreAvg=0.0;
        double javaScoreAvg=0.0;
        double PEScoreAvg=0.0;
        double totalScoreAvg=0.0;
        DecimalFormat df   =new   DecimalFormat("#.00");

        String sql="select * from test.student where class_name = ?";

        try {
            conn = JDBCUtil.getConnection();
            pstmt= conn.prepareStatement(sql);
            pstmt.setString(1,className);
            rs= pstmt.executeQuery();
            while(rs.next()){
                 String mathScore=rs.getString("math_score");
                 String javaScore=rs.getString("java_score");
                 String PEScore=rs.getString("PE_score");
              Student  student=new Student(rs.getString("stu_id"),rs.getString("stu_name"),mathScore,javaScore,PEScore);
             student.setClassName(className);
              mathScoreAvg+=Double.valueOf(mathScore);
              javaScoreAvg+=Double.valueOf(javaScore);
              PEScoreAvg+=Double.valueOf(PEScore);
              totalScoreAvg+=Double.valueOf(mathScore)+Double.valueOf(javaScore)+Double.valueOf(PEScore);

              student.setTotalScore(df.format(Double.valueOf(mathScore)+Double.valueOf(javaScore)+Double.valueOf(PEScore)));
                System.out.println(student);
              descOrderStudentList.add(student);
            }
            mathScoreAvg/=descOrderStudentList.size();
            javaScoreAvg/=descOrderStudentList.size();
            PEScoreAvg/=descOrderStudentList.size();
            totalScoreAvg/=descOrderStudentList.size();
            for (Student stu:
                 descOrderStudentList) {
                stu.setMathScoreAvg(df.format(mathScoreAvg));
                stu.setJavaScoreAvg(df.format(javaScoreAvg));
                stu.setPEScoreAvg(df.format(PEScoreAvg));
                stu.setTotalScoreAvg(df.format(totalScoreAvg));
            }
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
        }
         Collections.sort(descOrderStudentList, new Comparator<Student>() {
            @Override
            public int compare(Student o1, Student o2) {
               return o2.getTotalScore().compareTo(o1.getTotalScore());
            }
        });
        if(!POIUtil.exportExcel(filePath,descOrderStudentList)){
            System.out.println("导出到excel文件失败");
        }
        return descOrderStudentList;
    }

public boolean reviseStuInfo(Student student) {
        Connection conn = null;
        PreparedStatement pstmt =null;
        String sql="update test.student set stu_name = ? , stu_genda = ?, stu_birthday = ? ,class_name = ? ,math_score =? ,java_score =? ,PE_score =? where stu_id =?";
        int updateRow=0;
        try {
            conn = JDBCUtil.getConnection();
            pstmt=conn.prepareStatement(sql);
            pstmt.setString(1,student.getName());
            pstmt.setString(2,student.getGenda());
            pstmt.setDate(3, new java.sql.Date(student.getBirthday().getTime()));
            pstmt.setString(4,student.getClassName());
            pstmt.setString(5,student.getMathScore());
            pstmt.setString(6,student.getJavaScore());
            pstmt.setString(7,student.getPEScore());
            pstmt.setString(8,student.getStudentId());
            //获得受sql语句影响的行数
            updateRow=pstmt.executeUpdate();
            return  updateRow>0;

        } catch  (SQLException    e)  {
            e.printStackTrace();
        }
        finally {
            JDBCUtil.closeConnection(conn);
        }

        return false;
    }

public boolean deleteStudent(String studentId) {
        Connection conn = null;
        PreparedStatement pstmt =null;
        ResultSet rs = null;

        String sql="delete From test.student where stu_id = ?";
        try {
            conn = JDBCUtil.getConnection();
             pstmt= conn.prepareStatement(sql);
             pstmt.setString(1,studentId);
            int updateRow= pstmt.executeUpdate();
            //获得受sql语句影响的行数

            return updateRow>0;
        } catch  (SQLException    e)  {
            e.printStackTrace();
        }
        finally {
            JDBCUtil.closeConnection(conn);
        }

        return false;
    }

学生学习成绩报表输出模块

用于将学生学习成绩信息以Excel表格的形式输出;

public static boolean  exportExcel(String pathName, List<Student>  descOrderStudentList){
        File file = new File(pathName);
        /*
        当文件路径存在时,删除并重新创建。不存在时,直接重新创建
         */
        if(file.exists()){
            file.delete();
        }
        try {

            file.createNewFile();
        } catch (IOException e) {
            e.printStackTrace();
        }
        if (file.exists()) {
            XSSFWorkbook workbook = new XSSFWorkbook();
            XSSFSheet sheet = workbook.createSheet("学生学习情况报表");
            XSSFRow row = sheet.createRow(0);
            row.createCell(0).setCellValue("学号");
            row.createCell(1).setCellValue("姓名");
            row.createCell(2).setCellValue("班级");
            row.createCell(3).setCellValue("数学成绩");
            row.createCell(4).setCellValue("数学班级平均成绩");
            row.createCell(5).setCellValue("java成绩");
            row.createCell(6).setCellValue("java班级平均成绩");
            row.createCell(7).setCellValue("体育成绩");
            row.createCell(8).setCellValue("体育班级平均成绩");
            row.createCell(9).setCellValue("总成绩");
            row.createCell(10).setCellValue("班级平均总成绩");
            for(int i=1;i<=descOrderStudentList.size();i++){
                if(descOrderStudentList.get(i-1)!=null){
                    row=sheet.createRow(i);
                    XSSFCell cell;
                    cell=row.createCell(0, CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getStudentId());
                    cell=row.createCell(1,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getName());
                    cell=row.createCell(2,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getClassName());
                    cell=row.createCell(3,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getMathScore());
                    cell=row.createCell(4,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getMathScoreAvg());
                    cell=row.createCell(5,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getJavaScore());
                    cell=row.createCell(6,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getJavaScoreAvg());
                    cell=row.createCell(7,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getPEScore());
                    cell=row.createCell(8,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getPEScoreAvg());
                    cell=row.createCell(9,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getTotalScore());
                    cell=row.createCell(10,CellType.STRING);
                    cell.setCellValue(descOrderStudentList.get(i-1).getTotalScoreAvg());
                }
            }

            try ( FileOutputStream out=new FileOutputStream(pathName)){
                workbook.write(out);

            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return true;
        }

        return false;
    }

随机学生信息生成模块

用于随机生成学生的各项信息,其中,每名学生的学号均唯一,且每科的成绩以80分为中心成正态分布;

public static String getId() {
        StringBuilder idStringBuilder=new StringBuilder();
        idStringBuilder.append("2019211").append(new DecimalFormat("00000").format(id));
        id++;
        return idStringBuilder.toString();
    }

public static String getChineseName(){
        Random random=new Random(System.nanoTime());
        /* 598 百家姓 */
        String[] surName = {"赵","钱","孙","李","周","吴","郑","王","冯","陈","褚","卫","蒋","沈","韩","杨","朱","秦","尤","许",
                "何","吕","施","张","孔","曹","严","华","金","魏","陶","姜","戚","谢","邹","喻","柏","水","窦","章","云","苏","潘","葛","奚","范","彭","郎",
                "鲁","韦","昌","马","苗","凤","花","方","俞","任","袁","柳","酆","鲍","史","唐","费","廉","岑","薛","雷","贺","倪","汤","滕","殷",
                "罗","毕","郝","邬","安","常","乐","于","时","傅","皮","卞","齐","康","伍","余","元","卜","顾","孟","平","黄","和",
                "穆","萧","尹","姚","邵","湛","汪","祁","毛","禹","狄","米","贝","明","臧","计","伏","成","戴","谈","宋","茅","庞","熊","纪","舒",
                "屈","项","祝","董","梁","杜","阮","蓝","闵","席","季","麻","强","贾","路","娄","危","江","童","颜","郭","梅","盛","林","刁","钟",
                "徐","邱","骆","高","夏","蔡","田","樊","胡","凌","霍","虞","万","支","柯","昝","管","卢","莫","经","房","裘","缪","干","解","应",
                "宗","丁","宣","贲","邓","郁","单","杭","洪","包","诸","左","石","崔","吉","钮","龚","程","嵇","邢","滑","裴","陆","荣","翁","荀",
                "羊","于","惠","甄","曲","家","封","芮","羿","储","靳","汲","邴","糜","松","井","段","富","巫","乌","焦","巴","弓","牧","隗","山",
                "谷","车","侯","宓","蓬","全","郗","班","仰","秋","仲","伊","宫","宁","仇","栾","暴","甘","钭","厉","戎","祖","武","符","刘","景",
                "詹","束","龙","叶","幸","司","韶","郜","黎","蓟","溥","印","宿","白","怀","蒲","邰","从","鄂","索","咸","籍","赖","卓","蔺","屠",
                "蒙","池","乔","阴","郁","胥","能","苍","双","闻","莘","党","翟","谭","贡","劳","逄","姬","申","扶","堵","冉","宰","郦","雍","却",
                "璩","桑","桂","濮","牛","寿","通","边","扈","燕","冀","浦","尚","农","温","别","庄","晏","柴","瞿","阎","充","慕","连","茹","习",
                "宦","艾","鱼","容","向","古","易","慎","戈","廖","庾","终","暨","居","衡","步","都","耿","满","弘","匡","国","文","寇","广","禄",
                "阙","东","欧","殳","沃","利","蔚","越","夔","隆","师","巩","厍","聂","晁","勾","敖","融","冷","訾","辛","阚","那","简","饶","空",
                "曾","毋","沙","乜","养","鞠","须","丰","巢","关","蒯","相","查","后","荆","红","游","郏","竺","权","逯","盖","益","桓","公","仉",
                "督","岳","帅","缑","亢","况","郈","有","琴","归","海","晋","楚","闫","法","汝","鄢","涂","钦","商","牟","佘","佴","伯","赏","墨",
                "哈","谯","篁","年","爱","阳","佟","言","福","南","火","铁","迟","漆","官","冼","真","展","繁","檀","祭","密","敬","揭","舜","楼",
                "疏","冒","浑","挚","胶","随","高","皋","原","种","练","弥","仓","眭","蹇","覃","阿","门","恽","来","綦","召","仪","风","介","巨",
                "木","京","狐","郇","虎","枚","抗","达","杞","苌","折","麦","庆","过","竹","端","鲜","皇","亓","老","是","秘","畅","邝","还","宾",
                "闾","辜","纵","侴","万俟","司马","上官","欧阳","夏侯","诸葛","闻人","东方","赫连","皇甫","羊舌","尉迟","公羊","澹台","公冶","宗正",
                "濮阳","淳于","单于","太叔","申屠","公孙","仲孙","轩辕","令狐","钟离","宇文","长孙","慕容","鲜于","闾丘","司徒","司空","兀官","司寇",
                "南门","呼延","子车","颛孙","端木","巫马","公西","漆雕","车正","壤驷","公良","拓跋","夹谷","宰父","谷梁","段干","百里","东郭","微生",
                "梁丘","左丘","东门","西门","南宫","第五","公仪","公乘","太史","仲长","叔孙","屈突","尔朱","东乡","相里","胡母","司城","张廖","雍门",
                "毋丘","贺兰","綦毋","屋庐","独孤","南郭","北宫","王孙"};

        int index=random.nextInt(surName .length-1);
        //获得一个随机的姓氏
        String name = surName [index];

        /* 从常用字中选取一个或两个字作为名 */
        if(random.nextBoolean()){
            name+=getChinese()+getChinese();
        }else {
            name+=getChinese();
        }
        return name;
    }

public static String getChinese() {
        String str = null;
        //汉字以两个字节存储,称为“区位码”,高位叫区码,低位叫位码,有这俩字节组成汉字
        int highPos, lowPos;
        Random random = new Random();
        //随机取高位B0~D7,低位A1~FE的GB2312的汉字
        highPos = (176 + Math.abs(random.nextInt(39)));
        random=new Random();
        lowPos = 161 + Math.abs(random.nextInt(93));

        byte[] bArr = new byte[2];
        bArr[0] = (new Integer(highPos)).byteValue();
        bArr[1] = (new Integer(lowPos)).byteValue();
        try {
            //区位码组合成汉字
            str = new String(bArr, "GB2312");
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        return str;

    }

public  static String getRadomScore(){




        Random random=new Random(System.nanoTime());
        DecimalFormat df2 =new DecimalFormat("#0.00");
        List<String> radomGradeList=new ArrayList<>();

            //生成以80为中心,以0.5为方差的随机数
            double score=Math.sqrt(0.25)*random.nextGaussian()+80.00;
            String scoreString =df2.format(score);

        return  scoreString;

    }

部分代码扫描警告结果及其改正

(1)变量命名不规范:
Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结
解决过程:更改了涉及的两个变量的命名,使其符合驼峰命名法的规范。
(2)代码中出现了未经定义的常量:
Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结
解决过程:将涉及的常量先赋值给一变量,再将该变量代入使用

10. 项目代码扫描结果

Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结
根据错误提示,经仔细比对修改,可以改正的均已改正。
改正后代码扫描结果:
Java团队课程设计-学生成绩管理系统
1. 团队人员及任务分配情况
2. 所参考的其他项目的博客与链接
3. 项目git地址
4. git提交记录
5. 前期调查
6. 项目功能架构及流程图
7. 面向对象设计包图与类图
8. 项目运行截图
9. 项目关键模块及其代码
10. 项目代码扫描结果
11. 项目总结

11. 项目总结

  这个项目中未能实现教师端和老师端,以及课程只有Java、数学、体育;原本构思是将老师和被添加的学生的密码设为123456,而且在数据库中成绩添加的时候在对应的Score表中,然后不在表Student中涉及成绩相关信息,以达到课程不局限于Java、数学、体育的目的。但是后面因为时间以及能力不足,未能完成 在使用git方面,我们也仍然不太熟练,希望在假期可以完善该能力。 在界面输入的时候,要判断输入是否合法,但是我们对其的判断方法还不太完善 这次课设可以实现学生信息的增删改查、和将学生信息汇总成excel功能和在文本文件中生成测试数据,但还未实现生成柱状图的功能, 希望在暑假能进一步完善功能,做出真正能够投入使用的学生成绩管理系统。