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


    一、组员职责分工

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

    二、github 的提交日志截图(鼓励小粒度提交)

    三、程序运行截图

    程序运行环境:eclipse+mysql
    (没有能够及时的完成,因此没办法给出具体的运行结果,sorry)

    四、GUI界面

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

    • 设置抽奖弹窗

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

    五、基础功能实现

    • 文本处理(文本导入,文本切割,文本匹配)
    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 + "
    ");
            			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);
    		}
    	}
    

    六、遇到的困难及解决方法

    • 组员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或者微信小程序的编译器

    七、马后炮

    如果一开始尽快确定大致分工,不纠结于细节问题,那么应该会做比现在好一些吧。

    八、评估每位组员的贡献比例

    组员 贡献比例
    杨礼亮 14%
    丁水源 14%
    蒋熊 12.5%
    黄志铭 12.5%
    林翔宇 13%
    柯奇豪 18%
    黄毓明 16%

    附:PSP表格

    PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)
    Planning 计划 5 5
    · Estimate · 估计这个任务需要多少时间 5 5
    Development 开发 180 265
    · Analysis · 需求分析 (包括学习新技术) 40 60
    · Design Spec · 生成设计文档 0 0
    · Design Review · 设计复审 10 10
    · Coding Standard · 代码规范 (为目前的开发制定合适的规范) 0 0
    · Design · 具体设计 10 15
    · Coding · 具体编码 120 180
    · Code Review · 代码复审 0 0
    · Test · 测试(自我测试,修改代码,提交修改) 0 0
    Reporting 报告 80 100
    · Test Repor · 测试报告 60 60
    · Size Measurement · 计算工作量 5 5
    · Postmortem & Process Improvement Plan · 事后总结, 并提出过程改进计划 15 35
    |       | 	合计  |285 |370
    

    学习进度表

    第N周 新增代码(行) 累计代码(行) 本周学习耗时(小时) 累计学习耗时(小时) 重要成长
    11 N N 8 81 开始编程,进一步学习Java
  • 相关阅读:
    react篇章-React State(状态)
    react篇章-React 组件-复合组件
    react篇章-React 组件-向组件传递参数
    react篇章-React 组件-ES6 class 来定义一个组件
    React篇章-React 组件
    复习常用算法_冒泡算法
    项目管理小结(如何做好一个百万级项目甚至千万级别的项目)
    AOP切点切面内容
    Spring 框架
    Spring MVC 框架
  • 原文地址:https://www.cnblogs.com/Stella12/p/9978707.html
Copyright © 2020-2023  润新知