您的位置:首页 > 其它

在新浪开博客最郁闷的两件事情

2006-12-30 00:46 267 查看
昨天朋友给了我这样一个需求,要我帮她想想办法!我不知道这是否是关于算法,实现了,她说效果就是那样的!也许这个实现并不难,但我还是共享出来,让大家一起讨论一下吧!

问题如下:
现需要从数据库的专家表中抽取若干位专家(每一位专家都有一个行业属性),现在页面上已经有两个选项,一个是行业多选框,可以选择一个或多个行业,另外一个是文本框,填入需要抽取的专家个数。
请根据以上两个条件抽取专家,同时需要达到的要求是:
(1) 随机抽取,即每次抽取的专家不同
(2) 按行业多选框选中的行业,专家数近似平均分布,如选中3个专业,抽取10人,则专家数分布应为4、3、3或者3、4、3或者3、3、4。

我的代码:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">

<title>My JSP 'tanming.jsp' starting page</title>

<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->

</head>

<body>
<table>
<tr>
<td>请选择行业个数:</td>
<td>
<select multiple="multiple" id="select" name="select">
<option value="计算机软件">计算机软件</option>
<option value="计算机硬件">计算机硬件</option>
<option value="互联网/电子商务">互联网/电子商务</option>
<option value="通信/电信运营、增值服务">通信/电信运营、增值服务</option>
<option value="网络游戏">网络游戏</option>
<option value="通信/电信/网络设备">通信/电信/网络设备</option>
<option value="计算机服务(系统、数据服务,维修)">计算机服务(系统、数据服务,维修)</option>
<option value="电子技术/半导体/集成电路">电子技术/半导体/集成电路</option>
</select>
</td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td></td>
<td></td>
</tr>
<tr>
<td>请输入专家个数:</td>
<td><input type="text" id="text"/></td>
</tr>

</table>

<input type="button" value="分布专家" onclick="btnOnClick();"/>
<div id="div1">

</div>
</body>
<script type="text/javascript">

function btnOnClick(){
var inumber = 0;//行业个数
var enumber = 0;//专家个数
var gnumber = 0;//分组个数
var iarray = new Array();//行业数组
var selectobj = document.getElementById("select");
var textobj = document.getElementById("text");
var enumber = textobj.value;
var selectlength = selectobj.length;
for(var i=0;i<selectlength;i++){
if(selectobj[i].selected){
inumber++;
iarray.push(selectobj[i].value);
}
}
if(inumber==0){
alert("请选择行业!");
return;
}
if(enumber==""){
alert("请输入专家个数!");
textobj.focus();
return;
}
var yushu = enumber%inumber;//余数
var chushu = parseInt(enumber/inumber);//除数
gnumber = inumber;
var lastnumber = enumber-(gnumber-1)*chushu;//最后那一组的专家个数
var garray = new Array();//整个专家分布个数的数组
for(var j=0;j<gnumber;j++){
var array = new Array();
for(var k=0;k<inumber;k++){
if(j==k){
array.push(lastnumber+"个"+iarray[k]);
}else{
array.push(chushu+"个"+iarray[k]);
}
}
garray.push(array);
}
var str = "";
var divobj = document.getElementById("div1");
for(var m=0;m<garray.length;m++){
str+="分布方案"+parseInt(m+1)+":";
for(var n=0;n<garray[m].length;n++){
str+=garray[m]
;
str+="、 ";
}
str+="<br><br>";
}
divobj.innerHTML=str;
}
</script>
</html>

感谢您的支持,我会更加努力!本文出自 “零度空間” 博客,请务必保留此出处http://rhyme.blog.51cto.com/328158/77030
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: