抽奖系统(记一次未完成的教训)
一、组员职责分工
柯奇豪 : 文本导入、切割文本、数据库处理、活跃度统计
黄毓明 : 切割文本、文本匹配
杨礼亮、丁水源:实现三种不同程度的筛选投票算法
蒋熊、黄志铭:前端界面编写
林翔宇:接口定义、前后端交互
二、github 的提交日志截图(鼓励小粒度提交)
三、程序运行截图
程序运行环境:eclipse+mysql
四、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 + "\n");term="";}}for(String item:Inputtext.list.toArray(new String[Inputtext.list.size()])) {Mysql.matchSort(item);}}
// System.out.println(list);}
- 文本处理并沟通数据库(文本切割,文本匹配)
public static Connection getCon() throws ClassNotFoundException, SQLException {Class.forName(driver);Connection con = DriverManager.getConnection(url,user,password);return con; }public static void matchSort(String str) throws SQLException, ClassNotFoundException { Connection con = getCon();if(!con.isClosed())System.out.println("Succeeded connecting to the Database!");Statement statement = con.createStatement();String insert_SQL = "insert into user(qq, name) values(?, ?)";String insert_contentSQL = "insert into postcomment(postTime,postContent,userId) values(?, ?, ?)";//插PreparedStatement stmt_user = con.prepareStatement(insert_SQL); //会抛出异常PreparedStatement stmt_comment = con.prepareStatement(insert_contentSQL); //会抛出异常String rName = "(?:\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2} )(.{0,16})(?:\\(|<)";String rQNum = "[\\(|<](.{1,30})[\\)|>]";String rTime = "\\d{4}-\\d{2}-\\d{2} \\d{2}:\\d{2}:\\d{2}";String rTopic = "(?:\\)|>)(.*)";try {Pattern pattern1 = Pattern.compile(rName);Pattern pattern2 = Pattern.compile(rQNum);Pattern pattern3 = Pattern.compile(rTime);Pattern pattern4 = Pattern.compile(rTopic);Matcher matcher1 = pattern1.matcher(str);Matcher matcher2 = pattern2.matcher(str);Matcher matcher3 = pattern3.matcher(str);Matcher matcher4 = pattern4.matcher(str);matcher1.find();matcher2.find();matcher3.find();matcher4.find();String name = matcher1.group(1);String num = matcher2.group(1);String time = matcher3.group();String content = matcher4.group(1);stmt_user.setString(1, name);stmt_user.setString(2, num);stmt_comment.setString(1,time);stmt_comment.setString(2,content);stmt_comment.setString(3,num);stmt_user.setString(1, name);stmt_user.setString(2, num);stmt_comment.setString(1,time);stmt_comment.setString(2,content);stmt_comment.setString(3,num);}catch(Exception e){}con.close();}
- 三种不同程度的筛选投票算法
普通抽奖
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 林翔宇
困难:
- java语言掌握不够,写代码的时候磕磕碰碰
- 不知道怎么进行前后端的数据交互
解决办法:
现在在继续学习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或者微信小程序的编译器
七、马后炮
如果一开始尽快确定大致分工,不纠结于细节问题,那么应该会做比现在好一些吧。
八、评估每位组员的贡献比例
以下部分计入个人得分:
附:PSP表格
PSP | Personal Software Process Stages | 预估耗时(分钟) | 实际耗时(分钟) |
---|---|---|---|
Planning | 计划 | ||
· Estimate | · 估计这个任务需要多少时间 | 10 | 10 |
Development | 开发 | ||
· Analysis | · 需求分析 (包括学习新技术) | 30 | 40 |
· Design Spec | · 生成设计文档 | 0 | 0 |
· Design Review | · 设计复审 | 10 | 20 |
· Coding Standard | · 代码规范 (为目前的开发制定合适的规范) | 0 | 0 |
· Design | · 具体设计 | 20 | 30 |
· Coding | · 具体编码 | 120 | 250 |
· Code Review | · 代码复审 | 20 | 20 |
· Test | · 测试(自我测试,修改代码,提交修改) | 20 | 20 |
Reporting | 报告 | ||
· Test Repor | · 测试报告 | 60 | 80 |
· Size Measurement | · 计算工作量 | 10 | 10 |
· Postmortem & Process Improvement Plan | · 事后总结, 并提出过程改进计划 | 10 | 40 |
合计 | 310 | 520 |
学习进度表
第N周 | 新增代码(行) | 累计代码(行) | 本周学习耗时(小时) | 累计学习耗时(小时) | 重要成长 |
---|---|---|---|---|---|
11 | N | N | 80 | 革命还未成功,同志还需努力,之前学习的一点知识已经不够用了 |
转载于:https://www.cnblogs.com/S031602219/p/9979998.html
抽奖系统(记一次未完成的教训)相关推荐
- java 抽奖_简单实现java抽奖系统
导读热词 本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public cla ...
- mysql怎么设计抽奖表_Access设计抽奖系统
一.系统组成及原理 抽奖系统主要由来宾登记.奖票管理.幸运抽奖.获奖查询四个基本模块构成,登记模块登记参加抽奖人员,奖票管理模块初始化参加抽奖人员名单,抽奖模块实现抽奖功能,获奖查询模块查询获奖结果. ...
- 抽奖功能java开发_基于Java实现抽奖系统
摘要:这篇Java开发技术栏目下的"基于Java实现抽奖系统",介绍的技术点是"抽奖系统.Java.抽奖.基于.系统.实现",希望对大家开发技术学习和问题解决有 ...
- java幸运抽奖系统_java实现幸运抽奖系统
本文实例为大家分享了java实现抽奖系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; public class luckyDraw { public sta ...
- Java抽号系统_简单实现java抽奖系统
简单实现java抽奖系统 发布于 2020-3-11| 复制链接 摘记: 本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下用户信息类 ```java /* * 用户信息类 * 1. ...
- Java 抽奖系统扩展
Java 抽奖系统 /** 测试类*/ public class CJTest {public static void main(String[] args) {CJStart cjStart = n ...
- java进行抽奖_简单实现java抽奖系统
本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...
- 幸运抽奖java_java实现幸运抽奖系统
本文实例为大家分享了java实现抽奖系统的具体代码,供大家参考,具体内容如下 import java.util.Scanner; public class luckyDraw { public sta ...
- java抽奖_简单实现java抽奖系统
本文为大家分享了java抽奖系统的具体代码,供大家参考,具体内容如下 用户信息类 /* * 用户信息类 * 1.账号 * 2.密码 * 3.卡号 * 4.是否登录 */ public class Us ...
最新文章
- excel单元格加引号及逗号,转换为sql需要的样式
- IDC:2017年,40%的CIO将失去在企业中的领导地位
- vsftp421问题
- 一款能拖拉的winform树形控件
- ARM 嵌入式入门经验
- tomcat android https,tomcat 配置 https, android端 访问
- Java多线程:Semaphore
- Spring Boot 管理 MVC
- 昨日购买了华为U8800+。晒联通2.2版系统与官方2.3版系统的评测跑分。
- day1 java基础回顾-	文件路径
- 正确模仿别人的php项目,一个模仿oso的php论坛程序(之一)第1/2页
- SAI绘制滑雪者教程
- chromecast投屏_利用谷歌Chromecast,3个简单的步骤教你将手机投屏到电视上
- 使用LODOP设计打印模板
- Ubuntu-安装汉语拼音输入法
- python更改文件名
- 公链洗牌进行时 |链捕手
- 高考数学试题不等关系与不等式|附习题
- 图片搜索 拍立淘 按图搜索以图搜索 图搜商品 同款搜索商品
- PS2019计算机丢失,小编教您ps2019中如何调出历史记录
热门文章
- 好看的滤镜怎么调?来看看今日的分享
- 代理记账公司的业务有哪些方面?
- 什么是kafka、kafka的应用场景、Kafka基本知识
- 指数基金(三):指数基金估值指标
- 童装行业调研报告 - 市场现状分析与发展前景预测
- Attempt to set a non-property-list object
- 六级备考21天|CET-6|写作技巧2|13:00~14:40
- 1005. 存款收益 (Standard IO)
- c语言中的sched头文件,使用sched库完成周期定时任务
- 磁盘/SD/U盘恢复软件推荐:得力数据恢复软件