标签: 软件

  • 柒微自动发卡系统源码

    柒微自动发卡系统源码

    简介:

    1.功能亮点

    a.对接微信公众号(个人订阅号也可以),实现快速购买,快速查询卡密,更加方便快捷

    b.不仅支持卡密类商品,还支持固定卡密类和代充类商品

    c.优惠券和满减活动,增强用户粘性

    d.对接免签约支付,个人无需也可以实现轻松支付

    e会员系统,用户开通会员后可以享受会员价

    2.你可以用它来干什么?

    1.论坛邀请码或者论坛的积分卡密出售(对接码支付和易支付)

    2.网盘资源类型出售

    3.代充商品出售,如话费

    4.甚至你还可以用来卖实体商品

    注意:本程序免费开源,当请勿用于违法用途!

    3.微信使用演示

    A253 柒微自动发卡系统

    4.支付方式介绍

    我们接入了两种免签约支付方式:码支付和易支付

    码支付:需要24小时挂电脑软件,但是用户付款后金额直接到自己支付宝或者微信,建议量大的用户使用此方式,此方式配置起来稍微有点麻烦,它免费使用QQ钱包和支付宝支付,开通微信支付另外收费58块

    易支付:目前市面上有N多易支付,好处就是不用挂软件,用户支付后金额先到易支付平台,坏处就是易支付提现收取手续费

    5.邮件配置说明

    邮件的话建议使用139邮箱

    smtp:smtp.139.com

    端口:465

    以下操作需要先授权,

    并且服务器php版本要求安装sg11扩展,

    建议:使用宝塔、php56版本

    开始安装:

    1.打开根目录下的文件conf.php配置数据库信息

    2.进入: 域名/?install 安装,安装成功后请删除install目录

    后台地址 域名/?admin 默认账号密码 admin 123456

    请给文件777权限,否则可能会异常

    柒微自动发卡系统源码

  • 【手机解锁电脑】Remote Fingerprint Unlock

    【手机解锁电脑】Remote Fingerprint Unlock

    之前看见有人发指纹解锁软件有问题,链接也挂了,所以我今天发个新版软件。远程指纹解锁app是一款可以用你通过Android上的指纹,解锁Windows系统的应用。远程指纹解锁app能够让大家使用手机远程控制你的电脑。

    注意是项:电脑的账户必须是本地账户,而且名字必须是英文或者数字注意一定不要有中文。因为我的版本是英文,所以就做了一期视频到时候大家看视频跟着操作。 由于我的电脑软件版本较旧所以只能用wifi了,当然可以使用局域网。

    【手机解锁电脑】Remote Fingerprint Unlock

    【手机解锁电脑】Remote Fingerprint Unlock

    教程视频地址:【手机解锁电脑教程-哔哩哔哩】 https://b23.tv/zkIaDos

    软件下载地址:

    链接:https://pan.baidu.com/s/120ifnUo01s97PFqAVEUIiQ?pwd=1234 提取码:1234

  • WordPress网站首页添加好看的四格小工具教程

    WordPress网站首页添加好看的四格小工具教程

    直接到网站根目录创建一个css文件(文件名:sige.css),文件名可自定义(注意文件名一致)

    <link rel="stylesheet" href="你的网站/sige.css" type="text/css" >

    然后在header.php模板最上方添加引入代码
    也可自定义HTML里添加css代码最上方写入标签<style></style>,将css代码放入标签内即可!
    css代码如下:

    .hide_sm{display: flex;}
    
    .container .col-1-4{float: left;box-sizing: border-box;margin-right: 7.3333px;width: 100%;}
    
    .container .col-1-4:last-child{margin-right: 0;}
    
    @media (min-width:768px){.container .col-1-4{width: 50%}}
    
    @media (min-width:1024px){.container .col-1-4{width: 25%}}
    
    @media (min-width:1024px){.ripro-dark .home-first{background: #232425;}}
    
    @media (min-width:768px){.home-first .h-images:after{display: none}}
    
    @media (min-width:768px){.home-first .h-images{display: box;display: -ms-flexbox;display: flex;width: 100%;justify-content: space-between}}
    
    @media (min-width:1024px){.home-first .h-images{width: 25%}}
    
    .home-first .h-images .item-tuwen{float: left;padding: 0 6.5px;width: 50%}
    
    @media (min-width:1024px){.home-first .h-images .item-tuwen{float: none}}
    
    @media (min-width:1024px){.home-first .h-images{display: block;box-sizing: border-box;padding: 0 7.3333px}.home-first .h-images .item-tuwen{padding: 0;width: auto}}
    
    .home-first .item-tuwen{margin-bottom: 15px}
    
    @media (min-width:768px){.home-first .item-tuwen{margin-bottom: 13px}}
    
    .home-first .item-tuwen a{position: relative;display: block;overflow: hidden;border-radius: 3px}
    
    .home-first .item-tuwen a .thumb{padding-top: 57%;transition: all .2s;transform-origin: center}
    
    .home-first .item-tuwen a strong{position: absolute;right: 0;bottom: 0;left: 0;z-index: 10;display: block;padding: .4em .8em .6em;background-image: linear-gradient(to bottom,rgba(0,0,0,.2) 0,rgba(0,0,0,.6) 100%);background-repeat: repeat-x;box-shadow: 0 -7px 15px rgba(0,0,0,.2);color: #fff;letter-spacing: .5px;font-weight: 700;font-size: 9pt;line-height: 1.3}
    
    @media (min-width:768px){.home-first .item-tuwen a strong{letter-spacing: 1px;font-size: 14px;line-height: 1.4}}
    
    .home-first .hf-widget{box-sizing: border-box;padding: 14px 17px 0;background: #17161600;box-shadow: 0 34px 20px -24px rgba(220, 220, 220, 0.18);border-radius: 3px;}
    
    .ripro-dark .home-first .hf-widget{border: 1px solid #2b2b2b;background: #232425;box-shadow: 8px 8px 9pt #212121;}
    
    @media (min-width:768px){.home-first .hf-widget{overflow: hidden;height: 135px}}
    
    @media (min-width:1024px){.home-first .hf-widget{margin-bottom: 0}}
    
    .home-first .hf-widget [class*=" icon-"]:before,.home-first .hf-widget [class^=icon-]:before{margin: 0}
    
    .home-first .hf-widget .hf-widget-title{margin-bottom: 14px;padding: 0 0 10px;border-bottom: 1px solid #f2f2f2;color: #383838;letter-spacing: 1px;font-weight: 700;font-size: 15px;line-height: 20px;margin-bottom: 10px;}
    
    .ripro-dark .home-first .hf-widget .hf-widget-title{border-bottom: 1px solid #696969;}
    
    .ripro-dark .home-first .hf-widget .hf-widget-title a{color: #ccc;}
    
    .home-first .hf-widget .hf-widget-title>i{margin-right: 2px;color: #448aff;}
    
    .ripro-dark .home-first .hf-widget .hf-widget-title>i{margin-right: 2px;color: #ffa363}
    
    .home-first .hf-widget .hf-widget-title span{margin-left: 10px;color: #a7a7a7;font-weight: 400;font-size: 9pt;line-height: 20px}
    
    @media (min-width:1024px){.home-first .hf-widget .hf-widget-title span{display: none}}
    
    @media (min-width:1330px){.home-first .hf-widget .hf-widget-title span{display: inline}}
    
    .home-first .hf-widget .hf-widget-title .pages{float: right;padding-top: 2px}
    
    .home-first .hf-widget .hf-widget-title .pages .next,.home-first .hf-widget .hf-widget-title .pages .prev{float: left;margin: 0;padding: 0 2px;height: 1pc;border: 1px solid #eee;color: #ccc;font-size: 9px;line-height: 15px;cursor: pointer}
    
    .home-first .hf-widget .hf-widget-title .pages .next:hover,.home-first .hf-widget .hf-widget-title .pages .prev:hover{color: #448aff}
    
    .home-first .hf-widget .hf-widget-title .pages .prev{border-right: none}
    
    .home-first .hf-widget .hf-tags{margin-bottom: -10px}
    
    @media (min-width:768px){.home-first .hf-widget .hf-tags{overflow: hidden;height: 4pc}}
    
    .home-first .hf-widget .hf-tags a{display: inline-block;margin: 0 5px 10px;padding: 0 5px;height: 22px;border-radius: 2px;background: #f9f9f9;color: #888;white-space: nowrap;font-size: 9pt;line-height: 22px;word-break: break-all}
    
    .home-first .hf-widget .hf-tags a.style_orange,.home-first .hf-widget .hf-tags a:hover{background: #448aff;color: #fff;}
    
    .ripro-dark .home-first .hf-widget .hf-tags a{background: #2c2e2f;}
    
    .home-first .hf-widget-4 .hf-widget-content{color: #888;font-size: 14px}
    
    .home-first .hf-widget-4 .hf-widget-content a{color: #888}
    
    .home-first .hf-widget-4 .hf-widget-content a:hover{color: #448aff;}
    
    .home-first .hf-widget-4 .hf-widget-content h3{overflow: hidden;height: 22px;font-weight: 400;font-size: 13px;line-height: 22px;margin: 0 0 10px;}
    
    .home-first .hf-widget-4 .hf-widget-content em{float: right;padding: 0 5px;height: 22px;border-radius: 2px;background: #fff5ef;color: #ff5c00;font-style: normal;font-size: 9pt;line-height: 22px}
    
    .home-first .hf-widget-4 .hf-widget-content ul li{margin-bottom: 5px}
    
    .home-first .hf-widget-4 .hf-widget-content ul li:last-child{margin-bottom: 0}
    
    .home-first .hf-widget-1 .hf-widget-content a{color: #888}
    
    .ripro-dark .home-first .hf-widget-1 .hf-widget-content a{color: #ccc}
    
    .home-first .hf-widget-1 .hf-widget-content a:hover{color: #69a1ff;}
    
    .home-first .hf-widget-1 .hf-widget-content li{float: left;box-sizing: border-box;padding: 0 10px;width: 25%;text-align: center;font-size: 9pt}
    
    .home-first .hf-widget-1 .hf-widget-content li .thumb{margin: 0 auto 4px;padding-top: 36px;width: 36px}
    
    .home-first .hf-widget-1 .hf-widget-content li span{display: block; height: 16px; line-height: 16px; overflow: hidden;}
    
    .home-first .hf-widget-1 .hf-widget-content .scroll-h{margin: 0 -10px;}
    
    .home-first .scroll-h{position: relative;overflow: hidden;height: 56px;}
    
    .home-first .scroll-h ul{list-style: none;position: absolute;top: 0;left: 0;width: 100%;transition: all .2s; margin:0;padding-left:0;}
    
    .home-first .scroll-h ul:after,.home-first .scroll-h ul:before{clear: both;display: block;visibility: none;height: 0;content: "";line-height: 0}
    
    .home-first .scroll-h .holdon{position: absolute;top: 0;left: 100%}
    
    .home-first .scroll-h .holdon-prev{left: -100%}
    
    .home-first .hf-widget-hot-cats .hhicon{display: inline-block;margin-bottom: 5px;width: 36px;height: 36px;border-radius: 100%;background: #e8fbff;color: #448aff;text-align: center;font-size: 20px;line-height: 36px;}
    
    .ripro-dark .home-first .hf-widget-hot-cats .hhicon{background: #2c2e2f;color: #ffa363;}
    
    .home-first .hf-widget-hot-cats .scroll-h li a{display: block}
    
    .home-first .hf-widget-hot-cats .scroll-h li a:hover .hhicon{background: #448aff;color: #fff;}
    
    .home-first .thumb{position: relative;display: block;overflow: hidden;padding-top: 66.7%;width: 100%;height: 0;background-color: transparent;background-position: center;background-size: cover;background-repeat: no-repeat;transition: all .2s}
    
    .home-first i{font-weight: 300}
    
    @media screen and (max-width:720px){.home-first .hf-widget-1 .hf-widget-content .scroll-h,.home-first .hf-widget-content{margin: 1pc -10px}}
    
    @media (max-width: 768px){.sxweb {display:none;}}
    
    .icon-b i{
    
    display: inline-block;
    
    margin-bottom: 5px;
    
    width: 36px;
    
    height: 36px;
    
    border-radius: 100%;
    
    background: #e8fbff;
    
    color: #448aff;
    
    text-align: center;
    
    font-size: 20px;
    
    line-height: 36px;
    
    }
    
    .icon-b i:hover{
    
    background: #448aff;
    
    color: #fff;
    
    }

    外观-小工具-自定义HTML添加如下代码

    <div class="section">
    
    <div class="home-first">
    
    <div class="container hide_sm">
    
    <div class="col-1-4">
    
    <div class="hf-widget hf-widget-1 hf-widget-software">
    
    <h3 class="hf-widget-title">
    
    <i class="fa fa-cloud"></i>
    
    <a href="#" target="_blank">推荐产品</a>
    
    <span>云服务器等云产品推荐</span>
    
    </h3>
    
    <div class="hf-widget-content">
    
    <div class="scroll-h">
    
    <ul>
    
    <li>
    
    <a href="#" rel="external nofollow" target="_blank">
    
    <i class="thumb " style="background-image:url(https://ae01.alicdn.com/kf/H026cdceabc1942e1b82b1eb2cd5b9e41P.png)"></i>
    
    <span>阿里云</span></a>
    
    </li>
    
    <li>
    
    <a href="#" target="_blank">
    
    <i class="thumb " style="background-image:url(https://ae01.alicdn.com/kf/H006240f97bff40f5aea223eb51b33c3dq.png)"></i>
    
    <span>腾讯云</span></a>
    
    </li>
    
    <li>
    
    <a href="#" target="_blank">
    
    <i class="thumb " style="background-image:url(https://ae01.alicdn.com/kf/H2da200a36ce2401595f8e03f8c750deeT.png)"></i>
    
    <span>企业云</span></a>
    
    </li>
    
    <li>
    
    <a href="#" target="_blank">
    
    <i class="thumb " style="background-image:url(https://ae01.alicdn.com/kf/H128bb4d1c77d4f6f9032b934a6a234beD.png)"></i>
    
    <span>香港云</span></a>
    
    </li>
    
    </ul>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
    
    <div class="col-1-4 sxweb">
    
    <div class="hf-widget hf-widget-2">
    
    <h3 class="hf-widget-title">
    
    <i class="fa fa-tint"></i>
    
    <a href="#" target="_blank">热门看点</a>
    
    <span>精品内容推荐</span></h3>
    
    <div class="hf-widget-content">
    
    <div class="no-scroll hf-tags">
    
    <a class="style_orange" href="http://www.lxh5068.com" target="_blank">
    
    <span>手机壁纸</span></a>
    
    <a class="" href="/topics/jc-fx" target="_blank">
    
    <span>教程分享</span></a>
    
    <a class="" href="/topics/wz-ym" target="_blank">
    
    <span>源码分享</span></a>
    
    <a class="" href="/topics/rj-android" target="_blank">
    
    <span>Android软件</span></a>
    
    <a class="" href="/topics/xw-zx" target="_blank">
    
    <span>新闻资讯</span></a>
    
    <a class="" href="/xb-zh" target="_blank">
    
    <span>线报活动</span></a>
    
    <a class="" href="/topics/meihua" target="_blank">
    
    <span>美化代码</span></a>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
    
    <div class="col-1-4 sxweb">
    
    <div class="hf-widget hf-widget-1 hf-widget-hot-cats">
    
    <h3 class="hf-widget-title">
    
    <i class="fa fa-dropbox"></i>
    
    <a href="http://bbs.lxh5068.com/sort/huodong" target="_blank">热门专区</a>
    
    <span>推荐设计热点</span></h3>
    
    <div class="hf-widget-content">
    
    <div class="icon-b">
    
    <ul>
    
    <li>
    
    <a href="http://bbs.lxh5068.com/sort/zhide" target="_blank">
    
    <i class="fa fa-thumbs-up" aria-hidden="true"></i>
    
    <span>每日推荐</span></a>
    
    </li>
    
    <li>
    
    <a href="http://bbs.lxh5068.com/sort/mianfeirj" target="_blank">
    
    <i class="fa fa-cloud-download" aria-hidden="true"></i>
    
    <span>软件下载</span></a>
    
    </li>
    
    <li>
    
    <a href="http://bbs.lxh5068.com/sort/yuanma" target="_blank">
    
    <i class="fa fa-graduation-cap"></i>
    
    <span>源码教程</span></a>
    
    </li>
    
    <li>
    
    <a href="http://bbs.lxh5068.com/sort/guanzhu" target="_blank">
    
    <i class="fa fa-picture-o" aria-hidden="true"></i>
    
    <span>福利美图</span></a>
    
    </li>
    
    </ul>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
    
    <div class="col-1-4 sxweb">
    
    <div class="hf-widget hf-widget-4">
    
    <h3 class="hf-widget-title">
    
    <i class="fa fa-book"></i>
    
    <a href="#" target="_blank">最新活动</a>
    
    <span>免费会员享福利</span>
    
    </h3>
    
    <div class="hf-widget-content">
    
    <div class="scroll-h">
    
    <ul>
    
    <li>
    
    <h3>
    
    <a href="#" target="_blank">
    
    <i class="icon-time"></i>
    
    <span>美化服务火热售卖中</span>
    
    <em>网站美化</em></a>
    
    </h3>
    
    </li>
    
    <li>
    
    <h3>
    
    <a href="#" target="_blank">
    
    <i class="icon-time"></i>
    
    <span>关于本站学分付费阅读获取内容说明</span>
    
    <em>学分说明</em></a>
    
    </h3>
    
    </li>
    
    </ul>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
    
    </div>
  • 毕业设计源码:学生综合素质评价WEB系统

    一、介绍
    本科毕业设计,可以帮助高校更好的开展学生综合素质评价工作。
    系统特色功能
    • 预先配置加分规则,根据加分规则提交学分申请、审核学分申请,非常丝滑~
    • 可视化呈现学生的综合素质成长情况(尚处于开发阶段),形成一份”第二课堂成绩单“。
    • 根据学生的各种赛事经历形成一份简历,后续可能考虑开发一个简单的简历制作模块
    • 自动计分并基于”学分法“给出排名。后续可能会增加质性评价模块,实现质性评价和量化评价相结合。
    • 自由配置综合素质评价指标,满足不同专业的学生培养要求。
    • 各项功能均比较完善,包括学生申请与审核、异议提交和审核、自动化加分与排名、评价结果和配置文件导出、学生名单和成绩文件导入、学生账号管理等。



    系统设计理念说明

    • 系统的核心设计理念理解起来可能会比较生涩,专门研究过学生综合素质评价这一块的应该会比较清楚。综合素质评价说简单点可以看作是期末综评、评优评奖的时候需要做的事情。
    • 一般来说,学校会根据学生的比赛获奖、社会实践等给学生加分,排名靠前的可以获得奖学金、荣誉称号甚至保研资格。
    • 这些比赛、社会实践加分以往基本都是通过学生复印纸质材料,然后提交excel表格,然后由学委汇总这一套流程实现的。一些学生已经有了信息化的系统,但是迄今为止的本科和现在研究生院校都没怎么用。原因可能是学习这个系统的成本比较高吧;也可能是已有的系统不够灵活,不能满足不同学院、不同专业的个性化要求。
    • 这个系统会将比赛单独出来,因为根据我个人的经历,比赛在高校加分中占比算是比较大的。除了比赛之外的加分项,称之为”其他“,比如班干部加分、团日活动加分等。
    • 由于一些高校会给不同的比赛不同的加分等级,同一个比赛获奖的不同级别加分肯定也是不同的,因此可以通过配置文件来提前配置好。
    • 比如我写个json文件,国家级一等奖加多少分,国家级二等奖加多少分,先配置好,学生提交学分申请的时候只需要选择对应的等级就可以了;同时,老师审核的时候,只需要关注学生选择的等级是否与学生提交的证明材料(电子版)能够对应上就行了,不需要关注这个过程中到底加了多少分(前提是对应等级和加分分值对应且无误)。

     

    详细安装、配置教程
    https://www.bilibili.com/video/BV1TD4y1Y7CV?share_source=copy_web


    二、核心功能说明

    系统一共有三个使用角色,相当于有三套系统,在这里只介绍核心的一些功能及实现。

    导入学生名单或者成绩名单

    • 这个功能实现的是教师上传学生名单或者学生成绩的时候,后端能够自动读取文件并将数据处理后存入数据库。这里需要提前确定好学生名单和成绩文件的格式。核心代码如下:
     复制代码 隐藏代码
    public class ReadStudentXlsFiles {
        private static String basePath = "G:\\Projects\\Materials\\cqes4cs\\files\\students\\";
        public static List<HashMap<String, Object>> readStudentXlsx(String fileFinalName) throws FileNotFoundException {
            // 将文件存入本地,便于读取
            String filePath = basePath + fileFinalName;
            File file = new File(filePath);
            FileInputStream fs = new FileInputStream(file);
            List<HashMap<String, Object>> lst = new ArrayList<>();
            try {
                String fileName = file.getName();
                String[] fileParts = fileName.split("\\.");
                Workbook sheets;
                if (fileParts[fileParts.length - 1].equals("xls")) {
                    sheets = new HSSFWorkbook(fs);
                } else {
                    sheets = new XSSFWorkbook(fs);
                }
                Sheet sheet = sheets.getSheetAt(0);
                int rowCount = sheet.getLastRowNum();
                int colNum = sheet.getRow(0).getPhysicalNumberOfCells();
                // 遍历行
                for (int i=1; i<=rowCount; i++) {
                    HashMap<String, Object> map = new HashMap<>();
                    Row row = sheet.getRow(i);
                    // 遍历列
                    for(int j = 0; j < colNum; j++){
                        if(row.getCell(j) != null){
                            row.getCell(j).setCellType(CellType.STRING);
                            String cellValue = row.getCell(j).getStringCellValue();
                            switch (j) {
                                case 0:
                                    map.put("userid", cellValue);
                                    break;
                                case 1:
                                    map.put("name", cellValue);
                                    break;
                                case 2:
                                    map.put("major_code", cellValue);
                                    break;
                                case 3:
                                    map.put("class", cellValue);
                                    break;
                                case 4:
                                    map.put("year", cellValue);
                                    break;
                                default: break;
                            }
                        }
                    }
                    lst.add(map);
                }
                fs.close();
                return lst;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    }

     

    处理加分规则配置

    • 这个功能实现的是教师修改加分规则的时候,后端进行请求处理。与简单的请求处理不同,这个接口会在处理数据之前把数据存储到一个临时表中。这是因为加分规则配置比较复杂(但是配置完成之后用起来非常丝滑),需要确保数据存取过程中不会出。
    [Java] 纯文本查看 复制代码
    // notation
    
    @RequestMapping("/modifyContestConfig")
    
    @Transactional
    
    @RequiresRoles("manager")
    
    public ResponseEntity modifyContestConfig(@RequestParam Map<String, String> map) {
    
                    List<HashMap<String, Object>> list = new ArrayList<>();
    
                    Map<String, String> nameMap = new HashMap<>();
    
                    Map<String, String> indexMap = new HashMap<>();
    
                    for (Map.Entry<String, String> entry : map.entrySet()) {
    
                                    if (entry.getKey().equals("name")) {
    
                                                    nameMap = JSON.parseObject(entry.getValue(), HashMap.class);
    
                                    }
    
                                    if (entry.getKey().equals("index")) {
    
                                                    indexMap = JSON.parseObject(entry.getValue(), HashMap.class);
    
                                    }
    
                    }
    
    
    
    
                    // 清空配置表
    
                    if (nameMap.size() == 0 || indexMap.size() == 0) {
    
                                    basicInfoMapper.deleteContestConfig();
    
                                    return ResponseEntity.ok().body(ResultVOUtil.successSimple());
    
                    }
    
                    // 组装list
    
                    for (Map.Entry<String, String> entry : map.entrySet()) {
    
                                    if (entry.getKey().equals("name")) break;
    
                                    if (entry.getKey().equals("index")) break;
    
                                    HashMap<String, Object> mapp = new HashMap<>();
    
                                    mapp.put("uuid", entry.getKey());
    
                                    mapp.put("config", entry.getValue());
    
                                    mapp.put("name", nameMap.get(entry.getKey()));
    
                                    mapp.put("indexid", indexMap.get(entry.getKey()));
    
                                    list.add(mapp);
    
                    }
    
                    Boolean flag = false;
    
                    try {
    
                                    // 先存入临时表
    
                                    basicInfoMapper.updateContestConfigTemp(list);
    
                                    // 再删除原始表里面的所有数据
    
                                    basicInfoMapper.deleteAllContestConfig();
    
                                    // 最后将临时表的数据复制到原始表中
    
                                    basicInfoMapper.updateContestConfig();
    
                                    // 最后删除临时的规则表,方便下一次的数据存储
    
                                    basicInfoMapper.deleteContestsConfigTemp();
    
                    } catch (Exception e) {
    
                                    flag = true;
    
                                    throw new RuntimeException("New Error");
    
                    }
    
                    if (flag) return ResponseEntity.ok().body(ResultVOUtil.error(1, "操作失败,请联系管理员"));
    
                    return ResponseEntity.ok().body(ResultVOUtil.successSimple());
    
    }
     


    编辑加分规则:

    • 这是系统最主要的功能,也是比较复杂的部分。一是因为整个实现的思路并不常见,而是有比较多的东西可以/需要配置,所以稍显复杂。以设置叶子节点为例,代码如下。其实可以看到,首先要遍历配置数据(JSON格式),然后再给叶子节点设置新的属性,同时还要判断用户的输入是否合法。设置根节点仅仅是加分规则配置的好多个功能之一而已!
    [JavaScript] 纯文本查看 复制代码
    setroot(node, data) {
    
            // 取消设置为叶子节点
    
            if (data.tag == 'root') {
    
                    let parent = node.parent
    
                    let newChild = { uuid: data.uuid, name: data.name, children: [] }
    
                    let children = parent.data.children || parent.data
    
                    let index = children.findIndex(d => d.uuid === data.uuid)
    
                    children.splice(index, 1)
    
                    if (!parent.data.children) {
    
                            this.$set(parent.data, 'children', [])
    
                    }
    
                    parent.data.children.push(newChild)
    
                    return
    
            }
    
            // 设置叶子节点
    
            if (data.children.length > 0) return this.$msg.error("存在下一级的时候不能设置为叶子节点")
    
            let temp = {
    
                    uuid: data.uuid,
    
                    name: data.name,
    
                    tag: 'root',
    
                    score: 0
    
            }
    
            this.$prompt('请为叶子节点设置分值,最多保留两位小数', '提示', {
    
                    confirmButtonText: '确定',
    
                    cancelButtonText: '取消'
    
            }).then(({ value }) => {
    
                    if (isNaN(value) || value.trim().length == 0) return this.$msg.error("请输入正确的数值")
    
                    temp.score = value
    
                    let parent = node.parent
    
                    let children = parent.data.children || parent.data
    
                    let index = children.findIndex(d => d.uuid === data.uuid)
    
                    children.splice(index, 1)
    
                    parent.data.children.push(temp)
    
            }).catch(()=>{return this.$msg.error("输入加分分值才能设置为叶子节点")})
    
    }
     
     
    学分申请:
    • 这是系统最核心的功能之一。实现起来也是比较复杂的,因为系统需要根据配置文件去自动形成多级选择菜单,同时要根据用户的选择去读取该菜单下的加分分值到底是多少;用户切换主规则的时候,还需要动态的去加载配置,然后进行处理。这个也只算是学分申请的一小部分而已!
    [JavaScript] 纯文本查看 复制代码
    // 选择某个比赛后搜索比赛的相关配置
    
    async handleSelect(item) {
    
            let {data: res} = await this.$http.post('/getContestConfigById', this.$qs.stringify({id: item.id}))
    
            if (!res) return
    
            if (res.code != 0) return this.$msg.error(res.message)
    
            this.curLevelConfig = JSON.parse('[' + res.data.classconfig + ']')
    
            this.stepForm.ruleid = res.data.uuid
    
            this.stepForm.name = res.data.name
    
            this.toNext()
    
    },

     

    三、系统界面一览

     

     
    登陆页面:

     

    教师端:

     

    学生端:
    管理员端:
    学分申请:

    学分评价结果总览:



    学分评价整体结果:



    处理学分申请异议:



    管理常见专业赛事配置:

    学生信息&学分管理:



    加分规则配置:



    学生综合素质可视化分析:

    四、配置运行
     

    项目下载

    • github克隆:前端地址https://github.com/quarkape/cqes4cs,后端地址https://github.com/quarkape/cqes4csbe(包含了SQL、静态资源文件、接口文档)
    • gitee镜像:前端地址https://gitee.com/quarkape/cqes4cs,后端地址https://gitee.com/quarkape/cqes4csbe(包含了SQL、静态资源文件、接口文档)
     
     
    运行环境
    • MySQL5.7
    • Redis3.0
    • Vue2.6
    • SpringBoot4
    运行说明
    • 如果你上手起来比较困难,可以看看视频版本的教程:https://www.bilibili.com/video/BV1KG4y1Z7Pd?share_source=copy_web

     

    前端搭建
    • 安装各种依赖。在项目根目录下面的package.conf中可以找到开发依赖和生产依赖的列表。开发环境依赖使用npm install 依赖名称 -D进行安装,生产环境依赖可以使用npm install 依赖名称 -S进行安装。
    • 运行。安装完成后,运行npm run serve没有问题的话就可以了。地址栏输入http://localhost:8080就可以进入登录页。

    后端搭建

    • 安装各类依赖。在项目根目录下面的pom.xml中可以看到依赖列表,使用maven下载下来就可以了。如果你使用的是IDEA的话,你可以导入项目文件,IDEA会自动给你下载pom文件里面的各个依赖。
    • 运行。安装完成后,运行项目,没有报错即可。

    数据导入

    • 将后端项目中的SQL文件导入到数据库中即可。我是用的MySQL WorkBench工具导入的。具体操作是:连接本地MySQL,新建一个名为cqes4cs的数据库,软件右上角file-open SQL Script-选择本项目的sql文件,在打开的脚本中前20行都是注释,在注释结束后、正式的SQL语句之前,加上use cqes4cs;这行代码,执行即可。

    Redis和数据库

    • 我用的phpstudy最新版来安装MySQL,数据库用户名和密码都为root。
    • 我参照网上的教程把下载安装的Redis,Redis端口默认,密码设置的是kkty。注意你安装的时候要么修改redis的配置文件,把密码改为kkty;要么你自己在redis的配置文件中设置别的密码,然后在后端项目中的application.yml中把redis密码那一行的配置给修改了。
    • 记得运行的时候启动Redis。
    • 你也可以使用php study安装和配置redis,不过我没有用过这个功能。

    静态资源映射

    • 系统用的静态资源映射做静态资源管理。
    • 静态资源文件夹结构请参照项目文件中Readme.md部分的说明。另外完整的文件夹结构在后端项目的assets里面可以找到。
    • 静态资源文件夹的位置必须要与后端项目中MvcConfig.java文件中的文件地址要一致,不然静态资源文件无法正常访问。

    系统使用入门

    • 初次使用的时候,需要登录管理员账号:用户名admin,密码admin,然后新增一个教师账号,管理年级建议设置为2021,因为我给的静态资源里面有一些预先提供的数据,大家到时候可以直接用。
    • 右上角头像点击,然后退出管理员账号,使用上一步新建的教师账号登录系统。在学生管理中,上传静态资源文件夹student目录下的文件,系统会自动导入学生账号,学生学号为学生系统的登录用户名和账号。
    • 在教师系统中,在学生评价页面,点击上传学生成绩,选择静态资源文件夹grades目录下面的默认文件,可以导入默认的成绩数据,导入后,可以切换年份为2021-2022年,查看学生成绩。
    • 第2步导入学生账号之后,登录学生账号,已51214108037为例,登陆后可以查看综合素质评价结果,在学分管理页面可以申请学分。

    【重要说明】

    • 因为加分规则比较难配置,所以数据库会预先配置好一些加分规则,建议不要删除。如果真正要用的时候再删除也不迟。
    • 必须要先上传学生成绩之后,学生评价页面才会有结果,因为当初设计的时候就默认学业成绩必须是综合素质评价的一部分。其他加分可以没有,但是学生学业成绩必须要有。

     

    五、写在后面
     
    • 其实整个系统实现起来还是很耗费时间的,功能个人角色也比较完善,作用也比较突出,但是配置起来确实需要一定的时间和精力
    • 整个系统的核心思想囿于篇幅不能详细说明,个人认为初次理解起来比较费劲,毕竟这个系统功能和作用在那里对吧。反正感兴趣的小伙伴可以私戳~
    • 其实本来有线上的体验地址的,但是服务器过期了,没办法让大家即时访问查看效果~
  • 小龟视频1.6APP双端影视对接苹果CMS反编译源码+视频教程

    小龟视频1.6APP双端影视对接苹果CMS反编译源码+视频教程

    小龟视频是一款基于苹果CMS系统的移动端在线视频播放软件,支持mp4、flv、m3u8、rmvb、mkv等主流视频格式的播放,现有安卓+ios版本。

    小龟视频反编译文本教程:

    1.先爆破安卓签名,需要用到MT管理器,百度自行下载

    2.搜索:getcertsign

    3.添加return-void然后保存返回,回到首页进行APK签名,就OK了

    注意:以上步骤小编已经修改好,无需修改,这里只是告诉你们步骤。

    爆破好之后就是修改自己的域名:APK进行解压缩

    1.接下来就是利用010Editor工具修改域名(温馨提示:域名一定要与原来APP的域名畅读一致不然闪退)

    2.安卓端修改/lib/arm64-v8a/linapp.so和/lib/armeabi-v7a/linapp.so这两个文件里面的域名

    域名修改好后,压缩,记得把ZIP后缀改成APK。(苹果同理只是后缀改成IPA)

    苹果修改域名路劲/Runner.app/Frameworks/App.framework/app里面两个域名修改成自己的即可

    关于苹果IPA怎么签名,可以使用爱思助手进行签名,不过有个短板,只能使用7天,过后得重新签名才能使用。(爱思助手不会签名的自行百度)

  • 【亲测】仿XDGAME下载游戏网站源码 可做资讯网站

    【亲测】仿XDGAME下载游戏网站源码 可做资讯网站

    织梦仿XDGAME主题游戏资讯下载游戏网站源码 网站模板整体很简洁。

    发布文章的时候填写下载地址内容页的下载地址就会显示出来,不填不显示。

    后台自定义设置软件评分。默认百分之50。

    关于我们、侵权处理、版权声明等在单页管理里面修改信息就行了,修改完生成一下单页即可。

    【亲测】仿XDGAME下载游戏网站源码 可做资讯网站

  • 码支付源码

    源码已检测 无任何后门 (更多…)

  • 软件下载源码

    我看好多人不会搭建这个系统我现在开发开发者中心

    后面全部免费

    主要功能:

    独立站点独立管理
    支持自己设置域名或后缀
    支持在自己服务器搭建分客户端(完全独立)
    剩下的功能和DD应用原来一样

    更新内容:

    支持更换软件详情页模板
    增加个人中心系统
    增加VIP功能

    (更多…)

  • 居留后台php源码+软件本体iapp源码

    居留后台php源码+软件本体iapp源码

    源码搭建教程

    1.准备一台服务器/主机

    2.域名一条【二级也行】
    3.居留后台源码
    4.下载源码之后,打开压缩包,把居留.zip解压出来,打开居留.zip压缩包,打开config.php文件,修改数据库账号密码,邮箱账号和授权码,支付商户id这些有易支付的可以填进去,没有不填。
    5.修改后,上传到服务器/主机中
    6.新建数据库,填刚才config.php中你填的,一定要一致。
    7.打开com.xzjyht.app.zip文件,类型-全部-iapp
    8.后台管理.zip同第7步哦
    9.改iapp源码中的mian页面的载入事件中的sss wz和储存路径就可以了
  • 搜题神器1.0 免费的搜题软件

    搜题神器1.0主要特色:

    1. 免费搜题!
    2. 1亿+题库!
    3. 题库保持不间断更新ing!
    4. 网盘资源免费搜索下载(电子书、考试资料、高清影视、视频教程等等……)

    搜题方式:

    1. 拍照搜题
    2. 输入题目搜索
    3. 无障碍搜题
    4. 文件为自解压压缩包,解压后得到.apk安装文件。解压密码:52pojie

    搜题神器1.0 免费的搜题软件搜题神器1.0 免费的搜题软件