当前位置: 首页 > news >正文

福大软工1816 · 团队现场编程实战(抽奖系统)

Division of Labor:

柯奇豪 : 文本导入、切割文本、数据库处理、活跃度统计
黄毓明 : 切割文本、文本匹配
杨礼亮、丁水源:实现三种不同程度的筛选投票算法
蒋熊、黄志铭:前端界面编写
林翔宇:接口定义、前后端交互

Github: 

Program:(unfinish)

程序运行环境:eclipse+mysql

GUI Interface:

  • 主界面截图,有设置抽奖和查看抽奖结果两个选项

  • 设置抽奖弹窗

  • 抽奖有三个选项:普通抽奖,过滤抽奖和深度抽奖。 下面是深度抽奖的运行结果。

Code:

  • 文本处理(文本导入,文本切割,文本匹配)
public static void setFileContext(String path) throws Exception {
        FileReader fileReader =new FileReader(path);
        @SuppressWarnings("resource")
        BufferedReader bufferedReader =new BufferedReader(fileReader);
        list =new ArrayList<String>();
        String str=null;
        String term="";
        Pattern pattern = Pattern.compile("[0-9]{4}[-][0-9]{1,2}[-][0-9]{1,2}[ ][0-9]{1,2}[:][0-9]{1,2}[:][0-9]{1,2}");
        while((str=bufferedReader.readLine())!=null) {
            if(str.trim().length()>=0) {
                term+=str+" ";
                Matcher matcher = pattern.matcher(str);
                if(!matcher.find()) {
                    list.add(term + "\n");
                    term="";
                }
            }
            for(String item:Inputtext.list.toArray(new String[Inputtext.list.size()])) {
                    Mysql.matchSort(item);
            }
        }
//        System.out.println(list);
   }

  

 
  • 三种不同程度的筛选投票算法
    普通抽奖
private Set<String> namelist=new TreeSet<>();
    private int repeat=1;
    private String list[];
    public void getlist() {}
    public void put_Qname()
    {
        while(repeat!=0)
        {
            repeat--;
             int l=0;
             Iterator<String> iter = namelist.iterator();
             while (iter.hasNext()) {
                 list[l]= iter.next();
                 l++;
                 }
             Random rand = new Random();
             int cur=(int)(Math.random()*500);   
             cur=cur%l;
             String QName=list[cur];
             System.out.print(QName);
             namelist.remove(QName);
        }
    }

  

 

过滤抽奖

public void put_Qname()
    {
        while(repeat!=0)
        {
            repeat--;
             int l=0;
             int f=0;
             Iterator<String> iter = namelist.iterator();
             while (iter.hasNext()) {
                 String s=iter.next();
                 for(int i=0;i<frequent[f];i++) {
                 list[l]= s;
                 l++;
                 }
                 f++;
             }
             Random rand = new Random();
             int cur=(int)(Math.random()*500);  
             cur=cur%l;
             String QName=list[cur];
             System.out.print(QName);
             namelist.remove(QName);
        }
    }

  

 

深度抽奖

public void put_Qname()
    {
        while(repeat!=0)
        {
            repeat--;
             int l=0;
             int f=0;
             Iterator<String> iter = namelist.iterator();
             while (iter.hasNext()) {
                 String s=iter.next();
                 for(int i=0;i<frequent[f];i++) {
                 list[l]= s;
                 l++;
                 }
                 f++;
             }
             Random rand = new Random();
             int cur=(int)(Math.random()*500);  
             cur=cur%l;
             for(int i=0;i<l;i++)
             {
                 if(i==0 && list[i]==list[i+1])
                 {
                     list[i]=list[cur];
                 }
                 else if(list[i]==list[i+1] && list[i]!=list[i-1])
                 {
                     list[i]=list[cur];
                 }
             }
             rand = new Random();
             cur=(int)(Math.random()*500);   
             cur=cur%l;
             String QName=list[cur];
             System.out.print(QName);
             namelist.remove(QName);
        }
    }

  

 

Experiences:

  • 组员1 黄毓明
    困难:
    1.前后端数据交互,如何将前端需要计算的数据送到后端,如何将后端计算好的数据送到前端
    2.一些写代码时的异常情况处理
    解决办法:
    1.前后端数据交互正在学习
    2.异常情况的话主要还是靠平时的积累,还是要多敲代码啊!

  • 组员2 杨礼亮
    困难:
    1.对Java语言不熟,和c语言上的语法虽然相似,但是在一天内写出程序不太现实。
    2不知道怎么从数据库中返回数据到代码,所以一直无法得到能参与抽奖人的名单以及相关出现次数。
    3没有与负责上一层编码的同学对接好,对于队友设计的相关的结构体内部变量不清晰。
    4在讨论中花费了很多时间,一开始对代码无从下手,浪费大量时间
    解决办法:
    1对Java不熟只能上网搜相关的函数使用
    2数据返回目前还没弄好,因为完全不懂怎么调用
    3将得到数据的代码先设成一个函数,先编写抽奖算法

  • 组员3 林翔宇
    困难:
  1. java语言掌握不够,写代码的时候磕磕碰碰
  2. 不知道怎么进行前后端的数据交互
    解决办法:
    现在在继续学习java,了解前后端数据交互
  • 组员4 丁水源
    困难:
    1.java不熟悉,因此遇到了一些语法上的困难。
    2.一开始组长分配给我的任务不熟悉,沟通上出现了一定的偏差。
    3.对项目的框架理解不透彻,发生框架理解上的偏差。
    4.由于是第一次团体的现场编程,可能在全局和局部以及时间等的把握上出现了些许的mistakes。
    解决办法:
    1.通过之前学习的知识,再结合上互联网,以及小伙伴的帮助,还是比较顺利地熟悉了java语言。
    2.通过和组长的多次交流以及和其他组员的交流,比较顺利地明白了自己的任务。
    3.通过互联网以及和组员们交流,能够收获一些对此项目框架的感悟和理解。
    4.吸取这次的教训,希望在接下来的实践里,乃至今后的工作、生活里能够更进一步,减少发生这次的错误,力争避免。加油鸭~~

  • 组员5 柯奇豪
    困难:
    虽然有一个明确的思路,但是没考虑到每个人的个人情况,导致项目后期没办法进展,自己的能力不够
    解决办法:
    本次的作业没能够做好,但是接下来希望在有限的时间里尽可能的去学习,带领团队有所成果

  • 组员6 蒋雄
    困难:
    做前端过程中首先遇到的是页面图片格式不对,叠加图片过程中出现错误,
    解决办法:
    通过查了一些开源代码解决了。后来主要的是前后端交互问题,现在还在学习

  • 组员7 黄志铭
    困难:
    1.用html写网页界面,在写到跳转窗口的时候,由于不太熟悉Notepad,所以耗费比较多的时间找跳转小窗口
    2.最后的前端与后端的交互最终未能实现,没有提前考虑到这个数据处理问题
    3.用Notepad与后端调用存在问题,下次使用得考虑其他编译器,VS之类的。
    解决:
    1.前端与后端的交互看了很多篇博客,现在可以大致理解操作
    2.前端的编译器没有选好,得改用VS或者微信小程序的编译器

Feelings:

 如果能够提前打好基础,比如java以及框架的话,那么这次的实践就不会做得这么狼狈和紧张啦。

Evaluation:

以下部分计入个人得分:

PSP Table:

 

PSP2.1Personal Software Process Stages预估耗时(分钟)实际耗时(分钟)
Planning计划530
· Estimate· 估计这个任务需要多少时间530
Development开发200305
· Analysis· 需求分析 (包括学习新技术)6060
· Design Spec· 生成设计文档00
· Design Review· 设计复审1010
· Coding Standard· 代码规范 (为目前的开发制定合适的规范)00
· Design· 具体设计1015
· Coding· 具体编码120220
· Code Review· 代码复审00
· Test· 测试(自我测试,修改代码,提交修改)00
Reporting报告80135
· Test Repor· 测试报告6090
· Size Measurement· 计算工作量510
· Postmortem & Process Improvement Plan· 事后总结, 并提出过程改进计划1535
 合计305470

 

 

Schedule:

第N周新增代码(行)累计代码(行)本周学习耗时(小时)累计学习耗时(小时)重要成长
15005001515学习VS2017,GitHub使用,复习C++相关知识
2500        10002035阅读《构建之法》,从零开始学Java语言
310002000 15 50 阅读《构建之法》,学习Java,学习墨刀等工具使用 
470027003585复习C++知识,学习STL的使用。
5300300020105学习STL相关知识,以及使用VS,Process On 等工具
60300035140学会如何设计软件的相关细节。
70300030170学会如何写一份完整的“需求分析报告”。
80300020190入门java,学会分析任务
90300015205熟悉了本软件的框架,为接下来的代码做好准备。
1050305012217熟悉了ssm框架、Java语言
11    25033003220熟悉了软件开发过程、java语言

转载于:https://www.cnblogs.com/littlenorthwest/p/9978988.html

相关文章:

  • Servlet重写init(ServletConfig config)还是init()
  • 微信小程序填坑清单
  • 【.NET Core项目实战-统一认证平台】第五章 网关篇-自定义缓存Redis
  • WPF自定义Window窗体样式
  • python编程入门----while与文件用法
  • [洛谷P3950]部落冲突
  • 技术工坊|高TPS和去中心化存储带来的第三代区块链技术革新机遇(深圳)
  • 深入Redis持久化
  • 【模板】最近公共祖先(LCA)
  • 端口的作用
  • Scrum立会报告+燃尽图(十一月二十二日总第三十次):加强回归测试
  • Java开发者福音 阿里巴巴宣布连任Java全球管理组织席位
  • FFmpeg(七)音频的播放
  • AI创业公司“一览群智”完成1.5亿元融资,经纬中国、策源资本投资
  • HTTP API 自动化测试从手工测试到平台的演变
  • [rust! #004] [译] Rust 的内置 Traits, 使用场景, 方式, 和原因
  • 30秒的PHP代码片段(1)数组 - Array
  • CentOS从零开始部署Nodejs项目
  • ComponentOne 2017 V2版本正式发布
  • Docker入门(二) - Dockerfile
  • java架构面试锦集:开源框架+并发+数据结构+大企必备面试题
  • JAVA之继承和多态
  • JDK 6和JDK 7中的substring()方法
  • js ES6 求数组的交集,并集,还有差集
  • JSDuck 与 AngularJS 融合技巧
  • React-生命周期杂记
  • SegmentFault 技术周刊 Vol.27 - Git 学习宝典:程序员走江湖必备
  • Sequelize 中文文档 v4 - Getting started - 入门
  • SpiderData 2019年2月25日 DApp数据排行榜
  • ViewService——一种保证客户端与服务端同步的方法
  • Vultr 教程目录
  • Webpack 4x 之路 ( 四 )
  • 动态魔术使用DBMS_SQL
  • 开源地图数据可视化库——mapnik
  • 排序算法学习笔记
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 我看到的前端
  • 无服务器化是企业 IT 架构的未来吗?
  • AI算硅基生命吗,为什么?
  • Semaphore
  • 我们雇佣了一只大猴子...
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • #pragma multi_compile #pragma shader_feature
  • #QT(一种朴素的计算器实现方法)
  • $(selector).each()和$.each()的区别
  • (6)添加vue-cookie
  • (bean配置类的注解开发)学习Spring的第十三天
  • (C++)八皇后问题
  • (二)windows配置JDK环境
  • (附源码)springboot建达集团公司平台 毕业设计 141538
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (转)大型网站架构演变和知识体系
  • ./configure、make、make install 命令
  • .net on S60 ---- Net60 1.1发布 支持VS2008以及新的特性
  • .NET Project Open Day(2011.11.13)