抽奖系统MySQL_抽奖系统(记一次未完成的教训)

本文介绍了一个抽奖系统开发的过程,包括文本处理、筛选算法和GUI界面设计。团队成员分别负责文本导入、数据库处理、算法实现、前端界面和接口设计。遇到的挑战涉及前后端交互、数据返回、语言熟练度等问题,各成员提出了相应的解决策略。
摘要由CSDN通过智能技术生成

一、组员职责分工

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

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

feb6db772c85569153a6e1fcd8a7e360.png

三、程序运行截图

程序运行环境:eclipse+mysql

四、GUI界面

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

e1bf6b9809fcc928a8db8e9bc337c926.png

设置抽奖弹窗

ed82f3f9475a0f166ab46a7c8727f38b.png

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

c1ce66d2131e9ce40192818a431d9016.png

五、基础功能实现

文本处理(文本导入,文本切割,文本匹配)

public static void setFileContext(String path) throws Exception {

FileReader fileReader =new FileReader(path);

@SuppressWarnings("resource")

BufferedReader bufferedReader =new BufferedReader(fileReader);

list =new ArrayList();

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 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 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 iter = namelist.iterator();

while (iter.hasNext()) {

String s=iter.next();

for(int i=0;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 iter = namelist.iterator();

while (iter.hasNext()) {

String s=iter.next();

for(int i=0;i

list[l]= s;

l++;

}

f++;

}

Random rand = new Random();

int cur=(int)(Math.random()*500);

cur=cur%l;

for(int i=0;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表格

PSPPersonal Software Process Stages预估耗时(分钟)实际耗时(分钟)

Planning

计划

10

15

· Estimate

· 估计这个任务需要多少时间

10

5

Development

开发

120

140

· Analysis

· 需求分析 (包括学习新技术)

30

30

· Design Spec

· 生成设计文档

0

0

· Design Review

· 设计复审

10

10

· Coding Standard

· 代码规范 (为目前的开发制定合适的规范)

0

0

· Design

· 具体设计

10

10

· Coding

· 具体编码

60

100

· Code Review

· 代码复审

0

0

· Test

· 测试(自我测试,修改代码,提交修改)

0

0

Reporting

报告

30

40

· Test Repor

· 测试报告

20

20

· Size Measurement

· 计算工作量

10

10

· Postmortem & Process Improvement Plan

· 事后总结, 并提出过程改进计划

10

10

合计

320

390

学习进度表

第N周新增代码(行)累计代码(行)本周学习耗时(小时)累计学习耗时(小时)重要成长

11

100+

1450+

21

45

网页端页面设计

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值