基于ssm+前后分离的学生信息管理系统

目录

一、项目描述

1、使用技术

2、功能介绍

二、项目展示

1、登录模块

2、学籍信息模块

3、成绩信息模块 

4、活动信息模块

 5、成绩信息统计模块

 6、活动参与信息统计

三、项目部分代码

 1、活动信息、成绩信息统计后端代码(service模块)

 2、活动信息统计前端代码

3、成绩信息统计前端代码


一、项目描述

1、使用技术

(1)项目采用ssm框架进行搭建,前后分离;

(2)采用分布式架构,使用zookeeper作为注册中心;

(3)前端采用vue+elementui进行搭建,axios进行请求转发;

(4)采用echarts进行图表构建。

2、功能介绍

(1)学籍信息模块:对学生信息进行增删改查,以及分页;

(2)成绩信息模块:对学生成绩进行增删改查,以及根据成绩进行排名;

(3)活动信息模块:多表关联查询,添加,删除;

(4)成绩信息统计:根据学生成绩绩点信息,用柱状图展示;

(5)活动信息统计:根据学生参与活动情况,用饼状图展示

二、项目展示

1、登录模块

2、学籍信息模块

 

3、成绩信息模块 

 

4、活动信息模块

 

 活动信息修改

 5、成绩信息统计模块

 6、活动参与信息统计

三、项目部分代码

 1、活动信息、成绩信息统计后端代码(service模块)

@Service(interfaceClass = InfoService.class)
@Transactional
public class InfoServiceImpl implements InfoService{

    @Autowired
    private InfoMapper infoMapper;

    @Override
    public Map scopeInfo(Integer cId) {
        //x轴数据
        List<String> scopes=new ArrayList<>();
        //java个绩点人数分布
        List<Integer> javaNumber=new ArrayList<>();
        //python各科绩点人数分布
        List<Integer> pythonNumber=new ArrayList<>();
        //数据库各科人数分布
        List<Integer> dataNumber=new ArrayList<>();
        //安卓开发各科人数分布
        List<Integer> androidNumber=new ArrayList<>();

        Map map=new HashMap();
        //存储绩点

        //拼接值获取x轴数据
        for (int i =1; i <=4; i++) {
            String s=i+".0-"+(i+1)+".0";
            scopes.add(s);
        }

        //获取java各科人数分布
        for (int i = 1; i <=4 ; i++) {
            Map map1=new HashMap();
            map1.put("min",i);
            map1.put("max",i+1);
            map1.put("cId",cId);
            int javaCount=infoMapper.getJavaCount(map1);
            javaNumber.add(javaCount);
        }

        //获取python各绩点人数分布
        for (int i = 1; i <=4 ; i++) {
            Map map1=new HashMap();
            map1.put("min",i);
            map1.put("max",i+1);
            map1.put("cId",cId);
            int pythonCount=infoMapper.getPythonCount(map1);
            pythonNumber.add(pythonCount);
        }

        //获取数据库各绩点人数分布
        for (int i = 1; i <=4 ; i++) {
            Map map1=new HashMap();
            map1.put("min",i);
            map1.put("max",i+1);
            map1.put("cId",cId);
            int dataCount=infoMapper.getDataCount(map1);
            dataNumber.add(dataCount);
        }

        //获取安卓开发各绩点人数分布
        for (int i = 1; i <=4 ; i++) {
            Map map1=new HashMap();
            map1.put("min",i);
            map1.put("max",i+1);
            map1.put("cId",cId);
            int androidCount=infoMapper.getAndroidCount(map1);
            androidNumber.add(androidCount);
        }


        map.put("javaNumber",javaNumber);
        map.put("pythonNumber",pythonNumber);
        map.put("dataNumber",dataNumber);
        map.put("androidNumber",androidNumber);
        map.put("scopes",scopes);
        return map;
    }

    @Override
    public List<Map> activityInfo(Integer cId) {
        List<Map> list=new ArrayList<>();

        Map map1=new HashMap();//存储参数传递到mapper
        map1.put("cId",cId);

        String type="";
        Integer number=0;

        //查询创新创业类人数
        Map map=new HashMap();//存储name,value
        type="创新创业";
        map.put("name",type);
        map1.put("type",type);
        number=infoMapper.Count1(map1);
        map.put("value",number);
        list.add(map);

        //查询思想品德类人数
        Map map2=new HashMap();//存储name,value
        type="思想品德";
        map2.put("name",type);
        map1.put("type",type);
        number=infoMapper.Count1(map1);
        map2.put("value",number);
        list.add(map2);

        //查询互联网大赛人数2
        Map map3=new HashMap();//存储name,value
        type="互联网大赛";
        map3.put("name",type);
        map1.put("type",type);
        number=infoMapper.Count1(map1);
        map3.put("value",number);
        list.add(map3);

        //查询身心健康人数
        Map map4=new HashMap();//存储name,value
        type="身心健康";
        map4.put("name",type);
        map1.put("type",type);
        number=infoMapper.Count1(map1);
        map4.put("value",number);
        list.add(map4);

        //查询法律素养类人数
        Map map5=new HashMap();//存储name,value
        type="法律素养";
        map5.put("name",type);
        map1.put("type",type);
        number=infoMapper.Count1(map1);
        map5.put("value",number);
        list.add(map5);

        return list;
    }


}

 2、活动信息统计前端代码

<!DOCTYPE html>
<html lang="cn" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>活动参与统计图</title>
    <!--    引入样式-->
    <link rel="stylesheet" href="../elementui/index.css">
    <!--    引入组件库-->
    <script src="../js/vue.js"></script>
    <script src="../elementui/index.js"></script>
    <script src="../js/axios-0.18.0.js"></script>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
    <script src="../js/echarts.js"></script>
</head>
<body>
<h2 style="text-align: center">活动参与统计分析</h2>
<div  id="main" style="width: 700px;height:400px;margin: auto;margin-top: 4%"></div>
</body>
<script>
    var url=decodeURI(location.search)
    var cId;
    if(url.indexOf("?")!=-1){
        str=url.substr(1)
        strs=str.split("=")
        //获取登陆页面传来的id,即班级号
        cId=strs[1]
    }

    var chartDom = document.getElementById('main');
    var myChart = echarts.init(chartDom);

    axios.get('/info/activityInfo.do?cId='+cId).then(resp=>{
        myChart.setOption( {
            title: {
                left: 'center'
            },
            tooltip: {
                trigger: 'item'
            },
            legend: {
                orient: 'vertical',
                left: 'left'
            },
            series: [
                {
                    name: '参与人数',
                    type: 'pie',
                    radius: '90%',
                    data: resp.data.data,//返回list集合,集合类型为map,map里有name,value属性
                    emphasis: {
                        itemStyle: {
                            shadowBlur: 10,
                            shadowOffsetX: 0,
                            shadowColor: 'rgba(0, 0, 0, 0.5)'
                        }
                    }
                }
            ]
        })
    })





</script>
</html>

3、成绩信息统计前端代码

<!DOCTYPE html>
<html lang="cn" xmlns:th="http://www.thymeleaf.org">
<head>
    <meta charset="UTF-8">
    <title>学生成绩统计图</title>
    <!--    引入样式-->
    <link rel="stylesheet" href="../elementui/index.css">
    <!--    引入组件库-->
    <script src="../js/vue.js"></script>
    <script src="../elementui/index.js"></script>
    <script src="../js/axios-0.18.0.js"></script>
    <script type="text/javascript" src="../js/jquery.min.js"></script>
    <script src="../js/echarts.js"></script>
</head>
<body>

    <h2 style="text-align: center">学生成绩统计分析</h2>
    <div  id="main" style="width: 700px;height:400px;margin: auto;margin-top: 4%"></div>

</body>
<script type="text/javascript">
    var url=decodeURI(location.search)
    var cId;
    if(url.indexOf("?")!=-1){
        str=url.substr(1)
        strs=str.split("=")
        //获取登陆页面传来的id,即班级号
        cId=strs[1]
    }
    // 基于准备好的dom,初始化echarts实例
    var myChart = echarts.init(document.getElementById('main'));

    axios.get('/info/scopeInfo.do?cId='+cId).then(resp=>{
        myChart.setOption({
            // 指定图表的配置项和数据

            title: {
                text: '各科成绩分布图',

            },
            tooltip: {},
            legend: {
                left:'right',
                data: ['java','python','数据库应用','安卓开发']
            },
            xAxis: {
                name:'学生绩点',
                data: resp.data.data.scopes
            },
            yAxis: {
                name:'学生人数',
            },
            series: [
                {
                    name: 'java',
                    type: 'bar',
                    data: resp.data.data.javaNumber
                },
                {
                    name: 'python',
                    type: 'bar',
                    data: resp.data.data.pythonNumber
                },
                {
                    name: '数据库应用',
                    type: 'bar',
                    data: resp.data.data.dataNumber
                },
                {
                    name: '安卓开发',
                    type: 'bar',
                    data: resp.data.data.androidNumber
                }
            ]


        })
    })

</script>
</html>

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

swttws.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值