我是机械系的学生,老师出课题想让我们用在线网站控制移动机器人~~~如果分到底层我还能如期完工~~~但是老师分课题时不考虑学生实际情况 给予课题为 基于网络控制的移动机器人的用户管理模块~~~各位高手不要吓到~~~~在和老师沟通后,实际内容比较单一~~但对机械系的学生来说实在太难了~~~没学过数据结构和java啊~~~! 具体内容如下:首先用户登陆网站 登陆后(下面的内容是我负责的)用户点击"申请操作",如果这时没有人在队列里,则该用户直接进入操作,并记时5分钟,时间结束或用户自动结束操作后自动退出队列.如果有人正在操作,则排在队伍最后,(据学过一点数据结构的人说这是先进先出的单链表),等待操作,后面的用户依次按申请顺序排队.如果有管理员可以对队列做操作顺序的调整!
我理解后认为这个东西是不是UC的语聊大厅的"抢麦"和"放麦"时排队的东西,老师也要求希望队列能显示在页面上,虽然说只要实现基本功能就行,但是仍然很难,还让我们用jsp来做~~~不知各位是不是常用UC,能不能了解我想要的东西.我把UC的图存在网上让各位高手查询 地址如下 用的我的msn空间
http://storage.msn.com/x1pgPj1u42AbK3W5bB7fmPrOD6Y21y3pTWj9UdAPQ-Kg0_O6Py3IUDy7YfL8nTHLO8bS849-qfMPNqU2noPIIt8Hi8slxm2Cp5oj-a8lPwGaYQunS0g2Gz04veJF6sqlDBOBFOjFaM_u6XACc02tZStJw
把"抢麦"改成"申请操作",旁边有个"结束操作",我这样想的对不对啊? 我曾经想过用SQL2000的数据库来排列顺序,但是实际上好象没有用处.也不能显示.后来在天极网上把2005-2000的java贴都看了,找到以下东东
编写一个JAVA的队列类 队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为“先进先出”(LIFO)的存储结构。数据元素只能从队尾进入,从队首取出。在队列中,数据元素可以任意增减,但数据元素的次序不会改变。每当有数据元素从队列中被取出,后面的数据元素依次向前移动一位。所以,任何时候从队列中读到的都是队首的数据。
根据这些特点,对队列定义了以下六种操作:
enq(x) 向队列插入一个值为x的元素;
deq() 从队列删除一个元素;
front() 从队列中读一个元素,但队列保持不变;
empty() 判断队列是否为空,空则返回真;
clear() 清空队列;
search(x) 查找距队首最近的元素的位置,若不存在,返回-1。 Vector类是JAVA中专门负责处理对象元素有序存储和任意增删的类,因此,用Vector
可以快速实现JAVA的队列类。
public class Queue extends java
public synchronized void enq(Object x) {
super.addElement(x);
}
public synchronized Object deq() {
/* 队列若为空,引发EmptyQueueException异常 */
if( this.empty() )
throw new EmptyQueueException();
Object x = super.elementAt(0);
super.removeElementAt(0);
return x;
}
public synchronized Object front() {
if( this.empty() )
throw new EmptyQueueException();
return super.elementAt(0);
}
public boolean empty() {
return super.isEmpty();
}
public synchronized void clear() {
super.removeAllElements();
}
public int search(Object x) {
return super.indexOf(x);
}
} public class EmptyQueueException extends java
}
以上程序在JDK1.1.5下编译通过 这个是找到另一个JAVA实现队列类
/**
* Created by IntelliJ IDEA.
* 用Vector实现队列的数据结构 ,扩展自VECTOR
* Date: 2005-1-13
* Time: 15:34:45
* To change this template use File | Settings | File Templates.
*/
public class Queue extends java.util.Vector {
public Queue() {
super();
}
/**
* 插入一个元素到队列末尾
* @param x
*/
public synchronized void enq(Object x) {
super.addElement(x);
}
/**
* 删除队列中一个元素,如果队列为空,则引发EmptyQueueException异常
* @return
*/
public synchronized Object deq() {
if (this.empty())
throw new EmptyQueueException();
Object x = super.elementAt(0);
super.removeElementAt(0);
return x;
}
/**
* 从队列中读取一个元素,队列保持不变
* @return
*/
public synchronized Object front() {
if (this.empty())
throw new EmptyQueueException();
return super.elementAt(0);
}
/**
* 判断队列是否为空,为空返回真,否则返回假
* @return
*/
public boolean empty() {
return super.isEmpty();
}
/**
* 清空队列
*/
public synchronized void clear() {
super.removeAllElements();
}
/**
* 查找距队首最近的元素的位置,若不存在,返回-1
* @param x
* @return
*/
public int search(Object x) {
return super.indexOf(x);
}
}-------------------------
/**
* Created by IntelliJ IDEA.
* Date: 2005-1-13
* Time: 15:35:42
* To change this template use File | Settings | File Templates.
*/
public class EmptyQueueException extends java.lang.RuntimeException {
public EmptyQueueException() {
super();
}
}这些东西是不是有用~~~,如果用的话应该怎么用,如果不用它要用什么,怎么编 ,希望各位高手可以贴源码(知道各位都是高人不会被难住)如果有注释也可以让我学习学习.
由于本人确实门外汉只有想法没有实际能力.望各位高手解燃眉之急,除积分赠送(我就100分这么多,各位高手见谅),如要报酬rmb,mop hp,可以加我QQ 18313838 或发信至[email protected] 小弟必涌泉相报~~~
我理解后认为这个东西是不是UC的语聊大厅的"抢麦"和"放麦"时排队的东西,老师也要求希望队列能显示在页面上,虽然说只要实现基本功能就行,但是仍然很难,还让我们用jsp来做~~~不知各位是不是常用UC,能不能了解我想要的东西.我把UC的图存在网上让各位高手查询 地址如下 用的我的msn空间
http://storage.msn.com/x1pgPj1u42AbK3W5bB7fmPrOD6Y21y3pTWj9UdAPQ-Kg0_O6Py3IUDy7YfL8nTHLO8bS849-qfMPNqU2noPIIt8Hi8slxm2Cp5oj-a8lPwGaYQunS0g2Gz04veJF6sqlDBOBFOjFaM_u6XACc02tZStJw
把"抢麦"改成"申请操作",旁边有个"结束操作",我这样想的对不对啊? 我曾经想过用SQL2000的数据库来排列顺序,但是实际上好象没有用处.也不能显示.后来在天极网上把2005-2000的java贴都看了,找到以下东东
编写一个JAVA的队列类 队列是设计程序中常用的一种数据结构。它类似日常生活中的排队现象,采用一种被称为“先进先出”(LIFO)的存储结构。数据元素只能从队尾进入,从队首取出。在队列中,数据元素可以任意增减,但数据元素的次序不会改变。每当有数据元素从队列中被取出,后面的数据元素依次向前移动一位。所以,任何时候从队列中读到的都是队首的数据。
根据这些特点,对队列定义了以下六种操作:
enq(x) 向队列插入一个值为x的元素;
deq() 从队列删除一个元素;
front() 从队列中读一个元素,但队列保持不变;
empty() 判断队列是否为空,空则返回真;
clear() 清空队列;
search(x) 查找距队首最近的元素的位置,若不存在,返回-1。 Vector类是JAVA中专门负责处理对象元素有序存储和任意增删的类,因此,用Vector
可以快速实现JAVA的队列类。
public class Queue extends java
public synchronized void enq(Object x) {
super.addElement(x);
}
public synchronized Object deq() {
/* 队列若为空,引发EmptyQueueException异常 */
if( this.empty() )
throw new EmptyQueueException();
Object x = super.elementAt(0);
super.removeElementAt(0);
return x;
}
public synchronized Object front() {
if( this.empty() )
throw new EmptyQueueException();
return super.elementAt(0);
}
public boolean empty() {
return super.isEmpty();
}
public synchronized void clear() {
super.removeAllElements();
}
public int search(Object x) {
return super.indexOf(x);
}
} public class EmptyQueueException extends java
}
以上程序在JDK1.1.5下编译通过 这个是找到另一个JAVA实现队列类
/**
* Created by IntelliJ IDEA.
* 用Vector实现队列的数据结构 ,扩展自VECTOR
* Date: 2005-1-13
* Time: 15:34:45
* To change this template use File | Settings | File Templates.
*/
public class Queue extends java.util.Vector {
public Queue() {
super();
}
/**
* 插入一个元素到队列末尾
* @param x
*/
public synchronized void enq(Object x) {
super.addElement(x);
}
/**
* 删除队列中一个元素,如果队列为空,则引发EmptyQueueException异常
* @return
*/
public synchronized Object deq() {
if (this.empty())
throw new EmptyQueueException();
Object x = super.elementAt(0);
super.removeElementAt(0);
return x;
}
/**
* 从队列中读取一个元素,队列保持不变
* @return
*/
public synchronized Object front() {
if (this.empty())
throw new EmptyQueueException();
return super.elementAt(0);
}
/**
* 判断队列是否为空,为空返回真,否则返回假
* @return
*/
public boolean empty() {
return super.isEmpty();
}
/**
* 清空队列
*/
public synchronized void clear() {
super.removeAllElements();
}
/**
* 查找距队首最近的元素的位置,若不存在,返回-1
* @param x
* @return
*/
public int search(Object x) {
return super.indexOf(x);
}
}-------------------------
/**
* Created by IntelliJ IDEA.
* Date: 2005-1-13
* Time: 15:35:42
* To change this template use File | Settings | File Templates.
*/
public class EmptyQueueException extends java.lang.RuntimeException {
public EmptyQueueException() {
super();
}
}这些东西是不是有用~~~,如果用的话应该怎么用,如果不用它要用什么,怎么编 ,希望各位高手可以贴源码(知道各位都是高人不会被难住)如果有注释也可以让我学习学习.
由于本人确实门外汉只有想法没有实际能力.望各位高手解燃眉之急,除积分赠送(我就100分这么多,各位高手见谅),如要报酬rmb,mop hp,可以加我QQ 18313838 或发信至[email protected] 小弟必涌泉相报~~~
请问"提交到一个Servlet,在ServletContext中"这个怎么实现~~~意思是不是提取申请的用户的用户名?
还有就是jsp的计时器怎么做,没有现成的好象~~~线城什么意思
最后一个问题是如何让这个队列显示在网页上~~~~这个我是死也不明白了~~~
希望高手踊跃解答~~~凑够100分我就结帐了~~~~我守信誉的~~~~~不过现在给的解决方案给我这个门外汉来说,不解燃眉之急啊~~~~谢谢~~~~~
import javax.servlet.*;
每当用户登录的时候,先生成用户对象userObj,
UserInfo userObj = new UserInfo();
userObj.id= ....
userObj.pwd = ...
....
然后从application取得存储队列的ArrayList
HashMap applyqueue = (HashMap)application.getAttribute("applyqueue");
然后把userObj 放入application的末尾
applyqueue.add(userObj.id,userObj);
显示队列就是在页面上按顺序显示applyqueue 的内容
在userObj写一个监控的方法,监控是否超过5分钟,如果超过5分钟,就从application中取出HashMap ,删除此userObj的信息,并刷新页面
定时器的用法:
import java.util.*;
class MyTimerTask extends TimerTask {
public void run() {
//从application中取出HashMap,删除此userObj的信息,并刷新页面 }
}
class TTest {
public static void main(String args[]) {
MyTimerTask myTask = new MyTimerTask();
Timer myTimer = new Timer();
myTimer.schedule(myTask, 300000);//300秒后会执行myTask
try {
Thread.sleep(5000);
} catch (InterruptedException exc) {} myTimer.cancel();
}
}