AJAX初尝试——ACM/ICPC类比赛气球管理系统
很早之前做过一个,白板没界面,20秒暴力刷新,数据库每个team一个n列的对应n个题目的标记项,只能对单个比赛暴力把全部user_id导入单独的气球表(也就是cid=1000用这个表的话,cid1001就不能用)。
后台效率且不说了,对单个比赛而言,最不舒服的就是页面浏览到某个位置,标记某个team气球已发,为了把数据存入数据库,页面刷新,直接回到顶端去了。诸如此类很多不舒服的地方。
今年省赛说什么也不能用PC^2了,没有专门的裁判团队,一个人管PC^2要累死去。用起OJ,气球系统也要勉强上台面吧。。
————————————
重新把气球表做成了:[编号] | [用户ID] | [比赛ID] | [气球标记](用int的二进制位)
系统后台增加Private比赛的时候,Private参赛者权限信息(有用户ID对应比赛ID)同时导入气球表。
·1· 开始还纠结当修改Private权限时候气球表要怎么对应增删条目,一层for循环+NOT EXISTS (SELECT xxx)似不够高效。后来发现还是自己的sql太小白了,INSERT+SELECT是可以从一个表批量导入另一个表的。相对而言DELETE就简单许多了。保留了[气球标记]不为0的信息,以免Private权限再次修改又把这个ID重新加进来发多气球。
早前做的气球系统是用原OJ的Rank修改的,这次细看了一下Rank代码和数据库的关系,重写了一遍出题信息的读取,气球榜做成了静态的,不按Rank排序,这样也许方便工作人员看气球和队伍的对应关系吧,跳来跳去的发气球应该不太舒服。
写AJAX用的GET方式,后台简单判断了一下气球管理员的SESSION,修改气球标记或返回错误信息。datatype用的json,毕竟这个用着好舒服,json_encode一下就echo,直接拿来做关联数组。
·2·更新气球榜的时候遇到了纠结。之前预想AJAX局部更新很爽,真正写起代码的时候才发觉其实后台还是要查询完整出题信息的,要和前端交互,就又要把完整信息发给前端,前端和表格每个<td>判断变化,还是直接修改,好像复杂度差不多哎。。不过最大的问题是,一开始是用和后台差不多的代码生成了table,然后对每个<tr>直接暴力jquery().html("xxx"),然后修改气球标记的click事件就 失!效!了!这么奇葩的事情,用 on(click, function(){...都不行。纠结一下午,最后想难道真的是这样能破坏页面吗。就把代码改成了一个一个去更新<td>,最后竟然好了。
当然也添加了待发气球的数量提醒。
说到这个数量题型,打算做成随窗口移动,这样随时能看到,然后根据情况来看是否新增加一个待发气球,就自动把窗口移过去吧。省赛12号就开始了,这两天还得把代码打印的方案搞出来,气球这个用起来感觉还不错,先放一放。

AJAX初尝试——ACM/ICPC类比赛气球管理系统的更多相关文章
- HDU 5876 Sparse Graph 【补图最短路 BFS】(2016 ACM/ICPC Asia Regional Dalian Online)
Sparse Graph Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Others)To ...
- R语言爬虫初尝试-基于RVEST包学习
注意:这文章是2月份写的,拉勾网早改版了,代码已经失效了,大家意思意思就好,主要看代码的使用方法吧.. 最近一直在用且有维护的另一个爬虫是KINDLE 特价书爬虫,blog地址见此: http://w ...
- 2014嘉杰信息杯ACM/ICPC湖南程序设计邀请赛暨第六届湘潭市程序设计竞赛
比赛链接: http://202.197.224.59/OnlineJudge2/index.php/Contest/problems/contest_id/36 题目来源: 2014嘉杰信息杯ACM ...
- ACM ICPC 2015 Moscow Subregional Russia, Moscow, Dolgoprudny, October, 18, 2015 G. Garden Gathering
Problem G. Garden Gathering Input file: standard input Output file: standard output Time limit: 3 se ...
- 【转】lonekight@xmu·ACM/ICPC 回忆录
转自:http://hi.baidu.com/ordeder/item/2a342a7fe7cb9e336dc37c89 2009年09月06日 星期日 21:55 初识ACM最早听说ACM/ICPC ...
- 【转】ACM/ICPC生涯总结暨退役宣言—alpc55
转自:http://hi.baidu.com/accplaystation/item/ca4c2ec565fa0b7fced4f811 ACM/ICPC生涯总结暨退役宣言—alpc55 前言 早就该写 ...
- hduoj 4712 Hamming Distance 2013 ACM/ICPC Asia Regional Online —— Warmup
http://acm.hdu.edu.cn/showproblem.php?pid=4712 Hamming Distance Time Limit: 6000/3000 MS (Java/Other ...
- 2016 ACM/ICPC Asia Regional Dalian Online 1006 /HDU 5873
Football Games Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)To ...
- Java in ACM/ICPC
目录 Java在ACM/ICPC中的特点 在ACM/ICPC中使用Java需要注意的问题 Java与高精度计算 1.Java在ACM/ICPC中的特点 Java的语法和C++几乎相同 Java在执行计 ...
随机推荐
- WPF 自定义属性
做了一个自定义控件和一个自定义Grid,里面的元素可以随着绑定属性变化: 效果图(一定滑块): 关键代码: 1.自定义属性代码: public class MyGrid : Grid { public ...
- Mybatis like模糊查询的写法
转自:http://blog.51cto.com/lavasoft/1386870 Mybatis like查询官方文档没有明确的例子可循,网上搜索了很多,都不正确. Mybatis 3.2.6经过尝 ...
- 突破MSDE 的2GB数据限制
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSSQLServer\MSSQLServer\ ...
- random内置模块
import random random.random() #生成0-1的随机浮点数 random.randint(1, 10) #生成1-10的整数 random.randrange(1,10) # ...
- windows phone, 应用最大内存
windows phone应用最大内存为150M,当app运行时所占内存超过150M时app会自动退出(VS debug时不容易捕捉到这个内存超出异常). [注]可通过配置增大最大内存
- Object-c中的单例
#import <UIKit/UIKit.h> @interface UniAudioPlayer:NSObject{ } +(UniAudioPlayer*) getInstance; ...
- 设计模式学习笔记(1)Iterator
Iterator 模式 public interface Iterator { public boolean hasNext(); public Object next(); } public int ...
- 将JDBC的resultSet映射到JavaBaen
// 执行赋值后SQL, rs=pstm.executeQuery(); //判断是否有返回结果,有下一行rs.next()方法为true ...
- C++的空指针、野指针和指针赋值NULL.md
1.空指针和野指针 http://blog.csdn.net/fu_zk/article/details/21030607 空指针常量 一个表示0值的整数常量,叫做空指针常量.例如:0.0L.1-1( ...
- oracle与DB2
1.体系结构,DB2的实例和数据库分开的做法,我个人还是比较喜欢的,因为实例可以创建多个,数据库的恢复直接恢复到实例下就可以了,相对ORACLE简单多了. 2.管理工具,DB2的管理工具做得太简陋了, ...