以前的!
成都創(chuàng)新互聯(lián)主營鎮(zhèn)坪網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,app軟件開發(fā),鎮(zhèn)坪h5成都小程序開發(fā)搭建,鎮(zhèn)坪網(wǎng)站營銷推廣歡迎鎮(zhèn)坪等地區(qū)企業(yè)咨詢
====代碼====
package com;
import java.awt.BorderLayout;
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JTextField;
/**
* 網(wǎng)球賽
* @author Cris
* @ClassName: Match
* @Version
* @ModifiedBy
* @Copyright @ 2010 HL Technology Inc.
* @date 2011-5-24 上午11:29:39
* @description
*/
public class Match implements ActionListener{
private JFrame f;
private JTextField tf;
private JPanel container;
private JList myList ;
private JLabel message;
private JButton b;
/**
* @author Cris
* @title: main
* @date 2011-5-23 上午11:07:27
* @param args void
*/
public static void main(String[] args) {
Match t = new Match();
t.go();
}
public void go(){
f = new JFrame("比賽");
f.setLocation(100, 200);
f.setSize(600,500);
container = new JPanel(new BorderLayout());
f.setContentPane(container);
JPanel title = new JPanel(new FlowLayout());
tf = new JTextField(10);
title.add(tf);
b = new JButton("確定");
b.addActionListener(this);
title.add(b);
message = new JLabel();
title.add(message);
container.add(title,BorderLayout.NORTH);
myList = new JList();
container.add(myList,BorderLayout.CENTER);
f.setVisible(true);
}
/**
* 顯示比賽結(jié)果
* @author Cris
* @title: show
* @date 2011-5-24 上午11:31:05
* @param n void
*/
private void show(int n){
Cris c = new Cris(n);
ListListString[] result = c.getResult();
String[] str = new String[result.size()];
for (int i = 0; i result.size(); i++) {
StringBuilder sb = new StringBuilder();
sb.append("第").append(i+1).append("天: ");
ListString[] matchList = result.get(i);
for(String[] match : matchList){
sb.append("[").append(match[0]).append("-").append(match[1]).append("] ");
}
str[i] = sb.toString();
}
myList.setListData(str);
message.setText("");
f.setVisible(true);
}
/**
* 清空數(shù)據(jù)
* @author Cris
* @title: clear
* @date 2011-5-24 上午11:30:36 void
*/
private void clear(){
String[] str = {""};
myList.setListData(str);
message.setText("");
}
public void actionPerformed(ActionEvent e) {
clear();
String s = tf.getText();
if (s == null || "".equals(s = s.trim()) ) {
message.setText("請輸入一個偶數(shù)");
}
try {
int n = Integer.parseInt(s);
if (n = 0 || n % 2 != 0) {
message.setText("請輸入一個偶數(shù)");
}else{
show(n);
}
} catch (Exception ex) {
message.setText("請輸入一個偶數(shù)");
}
f.setVisible(true);
}
}
第二個類:
package com;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Random;
public class Cris {
/**選手?jǐn)?shù)量*/
private int n ;
/**各個運動員還沒進行的比賽 key:球員名稱,value:需進行的比賽集合*/
private MapString, ListString[] playerMacth ;
/**球員人名*/
private String[] players ;
/**最終每天的比賽分布集合*/
private ListListString[] result;
/**所有可選的比賽*/
private ListListString[] allMatchData[];
/**每天的比賽*/
ListString[] dayMatch ;
/**一個隨機對象*/
private Random r;
/**當(dāng)前運算到的天數(shù)*/
private int nowDay;
public Cris(int n){
this.n = n;
playerMacth = new HashMapString, ListString[]()
result = new ArrayListListString[]();
allMatchData = new LinkedList[n-1];
r = new Random();
init();
go();
}
/**
* 初始化球員
* @author Cris
* @title: init
* @date 2011-5-23 下午04:22:32 void
*/
private void init(){
//定義球員人名,以數(shù)字代表,從1開始
players = new String[n];
for (int i = 0; i players.length; i++) {
//定義球員的名字
players[i] = String.valueOf(i+1);
//存放每個球員要進行的比賽的集合
ListString[] matchList = new LinkedListString[]();
//球員賽事集合
playerMacth.put(players[i], matchList);
//球員集合,不變
// playerListConst.add(players[i]);
}
//定義每個人的比賽
for (int i = 0; i players.length -1; i++) {
for (int j = i+1; j players.length ; j++) {
String[] match = {players[i],players[j]};//定義一個比賽
//把此賽事添加到相應(yīng)球員需比賽集合中
playerMacth.get(players[i]).add(match);
playerMacth.get(players[j]).add(match);
}
}
}
/**
* 隨機獲得一個當(dāng)前天數(shù)可進行的比賽組合,并把此比賽組合從總集合中移除
* 如果當(dāng)前天數(shù)無比賽,則先獲得比賽,再隨機
* @author Cris
* @title: getNowDayMatch
* @date 2011-5-24 上午09:48:23
* @return ListString[]
*/
private ListString[] getNowDayMatch(){
if (allMatchData[nowDay] == null) {
setAllMatchNowDay();
}
if (! allMatchData[nowDay].isEmpty()) {
int index = r.nextInt(allMatchData[nowDay].size());
ListString[] list = allMatchData[nowDay].get(index);
allMatchData[nowDay].remove(index);
return list;
}else {
return null;
}
}
/**
* 取消前一天的比賽
* @author Cris
* @title: cancelYesterday
* @date 2011-5-24 上午09:56:12 void
*/
private void cancelYesterday(){
//清空當(dāng)前天數(shù)的可選比賽組合
allMatchData[nowDay] = null ;
//時間恢復(fù)到前一天
nowDay--;
//獲得前一天的比賽
ListString[] matchList = result.get(nowDay);
//取消前一天的比賽
result.remove(nowDay);
//恢復(fù)每個運動員未進行的比賽
for(String[] match : matchList){
playerMacth.get(match[0]).add(match);
playerMacth.get(match[1]).add(match);
}
}
public void go(){
//循環(huán)比賽天數(shù)
for ( nowDay = 0; nowDay n -1; ) {
//1.隨機一個比賽
ListString[] matchList = getNowDayMatch();
//無比賽組合 ,返回上一天 取消上一天的比賽,時間回退到前一天,跳過此次循環(huán)
if (matchList == null) {
cancelYesterday();
continue;
}
//3遍歷比賽 去除運動員 去除運動員的未進行比賽
for(String[] match : matchList){
playerMacth.get(match[0]).remove(match);
playerMacth.get(match[1]).remove(match);
}
result.add(matchList);
nowDay++;
}
}
/**
* 從1號隊員開始,獲得當(dāng)前天數(shù)所有可組合的賽事
* @author Cris
* @title: setAllMatchNowDay
* @date 2011-5-24 上午09:42:51 void
*/
private void setAllMatchNowDay(){
allMatchData[nowDay] = new LinkedListListString[]();
int n = 1;//1號運動員
//此運動員未進行的比賽
ListString[] matchList = playerMacth.get(String.valueOf(n));
for(String[] match : matchList){
ListString[] selectedList = new ArrayListString[]();
selectedList.add(match);
doDetAllMatchNowDay(n+1, selectedList);
}
}
/**
* 今天比賽的所有組合
* @author Cris
* @title: doDetAllMatchNowDay
* @date 2011-5-24 上午09:46:05
* @param playerNum
* @param selectedList void
*/
private void doDetAllMatchNowDay(int playerNum,ListString[] selectedList){
//運動員名稱
String player = String.valueOf(playerNum);
boolean flag = true;
//判斷此運動員是不是已被選過
for(String[] match : selectedList){
if (match[0].equals(player) || match[1].equals(player)) {
flag = false;
break;
}
}
//已被選過
if ( flag == false) {
//最后一個人員
if (playerNum == n) {
allMatchData[nowDay].add(selectedList);
}else{
doDetAllMatchNowDay(playerNum+1, selectedList);
}
return;
}
//此運動員未進行的比賽
ListString[] matchList = playerMacth.get(player);
//此運動員可選擇的比賽
ListString[] canDoList = new ArrayListString[]();
for(String[] match : matchList){
flag = true;
for(String[] selected : selectedList){
if(match[0].equals(player)){
if(match[1].equals(selected[0])){
flag = false;
}else if(match[1].equals(selected[1])){
flag = false;
}
}else{
if(match[0].equals(selected[0])){
flag = false;
}else if(match[0].equals(selected[1])){
flag = false;
}
}
}
if (flag) {
canDoList.add(match);
}
}
//遍歷此運動員可選擇的比賽
for(String[] match : canDoList){
ListString[] newList = copyArrayList(selectedList);
//記錄當(dāng)前比賽
newList.add(match);
//最后一個人員
if (playerNum == n) {
allMatchData[nowDay].add(newList);
}else{
doDetAllMatchNowDay(playerNum+1, newList);
}
}
}
/**
* 復(fù)制集合
* @author Cris
* @title: copyArrayList
* @date 2011-5-24 上午09:24:44
* @param list
* @return ListString[]
*/
private ListString[] copyArrayList(ListString[] list){
ListString[] newList = new ArrayListString[]();
for(String[] s : list){
newList.add(s);
}
return newList;
}
public ListListString[] getResult() {
return result;
}
}
用數(shù)據(jù)庫吧
首先,保存事件的表蔽巖mem
create table mem(
mid varchar(10) not null prmary key,
mdate date not null,
mem varchar(255),
userid varchar(20) not null
)
-- 如果是簡單的單用戶的話可以不要這個。
-- 然后用戶登錄的時候你就可以使用select mem from mem where userid='當(dāng)前用戶' and m_date='今天的日期'就可以盯并鎮(zhèn)查詢出這個用戶添加的凱粗日程提醒了。
圖形界面的java開發(fā)工具 JDK Borland 的JBuilder JBuilder,JDeveloper,VisualAge for Java jcreater. 常見的十五種Java開發(fā)工具的特點 1、JDK (Java Development Kit)Java開發(fā)工具集 從初學(xué)者角度來看,采用JDK開發(fā)Java程序能夠很快理解程序中各部分代碼之間的關(guān)系, 有利于理解Java面向?qū)ο蟮脑O(shè)計思想。JDK的另一個顯著特點是隨著Java (J2EE、J2SE 以及J2ME)版本的升級而升級。但它的缺點也是非常明顯的就是從事大規(guī)模企業(yè)級Java 應(yīng)用開發(fā)非常困難,不能進行復(fù)雜的Java軟件開發(fā),也不利于團體協(xié)同開發(fā)。 2、Java Workshop 3、NetBeans 與Sun Java Studio 5 NetBeans是開放源碼的Java集成開發(fā)環(huán)境(IDE),適用于各種客戶機和Web應(yīng)用。 Sun Java Studio是Sun公司最新發(fā)布的商用全功能Java IDE,支持Solaris、Linux和Win dows平臺,適于創(chuàng)建和部告灶署2層Java Web應(yīng)用和n層J2EE應(yīng)用的企業(yè)開發(fā)人員使用。 NetBeans是業(yè)界第一款支持創(chuàng)新型Java開發(fā)的開放源碼IDE。開發(fā)人員可以利用業(yè)界 強大的開發(fā)工具來構(gòu)建桌面、Web或移動應(yīng)用。同時,通過NetBeans和開放的API的模塊 化結(jié)構(gòu),第三方能夠非常輕松地擴展或集成NetBeans平臺。 NetBeans3.5.1主要針對一般Java軟件的開發(fā)者,而Java One Studio5則主要針對企 業(yè)做網(wǎng)絡(luò)服務(wù)等應(yīng)用的開發(fā)者。Sun不久還將推出Project Rave,其目標(biāo)是幫助企業(yè)的開 發(fā)者進行軟件開發(fā)。NetBeans 3.5.1版本與其他開發(fā)工具相比,最大區(qū)別在于不僅能夠喚空 開發(fā)各種臺式機上的應(yīng)用,而且可以用來開發(fā)網(wǎng)絡(luò)服務(wù)方面的應(yīng)用,可以開發(fā)基于J2ME 的移動設(shè)備上的應(yīng)用等。在NetBeans 3.5.1基礎(chǔ)上,Sun開發(fā)出了Java One Studio5,為用戶提供了一個更加先進的企業(yè)編程環(huán)境。在新的Java One Studio5里有一個應(yīng)用框架,開發(fā)者可以利用這些模塊快速開發(fā)自己在網(wǎng)絡(luò)服務(wù)方面 的各種應(yīng)用程序。 4、Borland 的JBuilder Jbuilder進入了Java集成開發(fā)環(huán)境的王國,它滿足很多方面的應(yīng)用,尤其是對于服 務(wù)器方以及EJB開發(fā)者們來說。下面簡單介紹一下Jbuilder的特點: 1)Jbuilder支持最新的Java技術(shù),包括Applets、JSP/Servlets、JavaBean以及EJB (Enterprise JavaBeans)的應(yīng)用。 2)用戶可以自動地生成基于后端數(shù)據(jù)庫表的EJB Java類,Jbuilder同時還簡化了EJ B的自動部署功能.此外它還支持CORBA,相應(yīng)的向?qū)С绦蛴兄谟脩羧娴毓芾鞩DL(分布 應(yīng)用程序所必需的接口定義語言Interface Definition Language)和控制遠(yuǎn)程對象。 3)Jbuilder支持各種應(yīng)用服務(wù)器。Jbuilder與Inprise Application Server緊密集 成,同時支持WebLogic Server,支持EJB 1.1和EJB 2.0,可以快速開發(fā)J2EE的電子商務(wù) 應(yīng)用。 4)Jbuilder能用Servlet和JSP開發(fā)和調(diào)試動態(tài)Web 應(yīng)用。 5)利用Jbuilder可創(chuàng)建(沒有專有代碼和標(biāo)記)純Java2應(yīng)用。由于Jbuilder是用純J ava語言編寫的,其代碼不含任何專屬代碼和標(biāo)記,它支持最新的Java標(biāo)準(zhǔn)。 6)Jbuilder擁有專業(yè)化的圖形調(diào)試介面,支持遠(yuǎn)程調(diào)試和多線程調(diào)試,調(diào)試器支持 各種JDK版本,包括J2ME/J2SE/J2EE。 JBuilder環(huán)境開發(fā)程序方便,它是純襪鏈扮的Java 開發(fā)環(huán)境,適合企業(yè)的J2EE開發(fā);缺點 是往往一開始人們難于把握整個程序各部分之間的關(guān)系,對機器的硬件要求較高,比較 吃內(nèi)存,這時運行速度顯得較慢。 5、Oracle 的JDeveloper Oracle9i JDeveloper(定為9.0版,最新為10g)為構(gòu)建具有J2EE功能,XML和Web services的復(fù)雜的,多層的Java應(yīng)
給你一個思路咯,,如果用在提示用在jsp頁面的推薦你用js來實現(xiàn),當(dāng)頁面加載的時候就執(zhí)行一個判斷,判斷需要提醒是時間是不是今天,如果汪陸燃是今天就讓執(zhí)行提醒的js代碼進入執(zhí)行狀態(tài)困虛 即:window.setTimeout(fun,s) 方法,s (等待悉孝時間) 的值需要計算的,假如是10分鐘后執(zhí)行 那們s的值就是 10*1000 以此類推, 如果提醒的時間不是今天那 setTimeout 這個方法就不要執(zhí)行 這樣說部知道你能理解不?