小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

實(shí)時(shí)顯示指定教學(xué)區(qū)的課表信息(Java+Oracle)

 昵稱12067353 2013-04-25

首先聲明:為什么搞這樣一個(gè)小玩意都用Java和Oracle,原因只有一個(gè):這些環(huán)境都是現(xiàn)成的,僅此而矣。

前天接到新任務(wù):由 于在計(jì)算機(jī)樓樓下放置了一臺(tái)大屏,要做個(gè)簡(jiǎn)單的網(wǎng)頁(yè)用來(lái)顯示當(dāng)前時(shí)間指定教學(xué)區(qū)的課表信息,就一個(gè)頁(yè)面可以了,原來(lái)通過(guò)瀏覽器打開(kāi)這個(gè)頁(yè)以表格形式顯示當(dāng) 前時(shí)間對(duì)應(yīng)的課表信息,過(guò)了這個(gè)時(shí)間段就自動(dòng)刷新,讀取新的課表。方便師生了解具體上課信息,因?yàn)橛泻枚嗬蠋煂W(xué)生老找不著上課地點(diǎn),或者搞錯(cuò)上課時(shí)間。

轉(zhuǎn) 到技術(shù)方面大概講講:課表數(shù)據(jù)由正方教務(wù)管理系統(tǒng)提供(oracle),通過(guò)視圖把所需要的數(shù)據(jù)抽取出來(lái)導(dǎo)到另外一個(gè)單獨(dú)的表里,主要字段包括:由多組信 息組合成的學(xué)期編號(hào)、教學(xué)區(qū)編號(hào)、星期幾、學(xué)期的周次,課室編號(hào)、課程名稱、任課老師名稱、上課時(shí)間(沒(méi)有具體時(shí)間,以節(jié)數(shù)表示,上午1-4節(jié)課,下午 5-8節(jié)),班級(jí)名稱。

具體數(shù)據(jù)格式:

字段名稱

數(shù)據(jù)樣本

數(shù)據(jù)類型

學(xué)期編號(hào)

(2012-2013-2)-1295076-12059-2

Varchar(30)

教學(xué)區(qū)編號(hào)

純數(shù)字

Varchar(10)

星期幾

純數(shù)字

Varchar(10)

學(xué)期的周次

純數(shù)字

Varchar(10)

課室編號(hào)

5-1-300

信息-301

藝術(shù)樓102

Varchar(20)

課程名稱

信息與檔案管理

Varchar(200)

任課老師名稱

鐘XX

Varchar(30)

上課時(shí)間

1,2

3,4

1,2,3,4

5,6

Varchar(30)

班級(jí)名稱

11酒店管理4

Varchar(30)

頁(yè)面展示格式要求(以計(jì)算機(jī)樓這個(gè)教學(xué)區(qū)為例:樓層號(hào)+順序號(hào)=課室編號(hào),如:301表示三樓01號(hào)課室。注:沒(méi)有一樓,每層04,08室不做課室,所以排除)

 

01

02

03

05

06

07

2樓

《Mysql和PHP開(kāi)發(fā)》

11軟件技術(shù)WEB開(kāi)發(fā)

(3,4節(jié))某老師

……

 

 

 

 

3樓

 

 

 

 

 

 

4樓

 

 

 

……

 

 

5樓

 

 

 

 

 

 

6樓

 

 

……

 

 

 

7樓

 

 

 

 

 

 

 

根據(jù)頁(yè)面要求、數(shù)據(jù)、格式來(lái)分析,用什么方式把要的數(shù)據(jù)取出來(lái),又方便調(diào)用成為首要解決的問(wèn)題。由結(jié)果倒退選擇實(shí)現(xiàn)方式,第一感覺(jué)就想到了以表格的數(shù)據(jù)行及單元格為突破口,這樣有個(gè)好處:方便使用循環(huán)~~因?yàn)檫@些數(shù)據(jù)循環(huán)是少不了的。

一開(kāi)始有幾個(gè)棘手的問(wèn)題要解決:

1、 數(shù)據(jù)篩選:分析實(shí)際數(shù)據(jù)發(fā)現(xiàn)幾個(gè)有規(guī)律的地方,學(xué)期字段同一學(xué)期的數(shù)據(jù)均以(2012-2013-1)這樣開(kāi)頭,兩部分?jǐn)?shù)字為學(xué)年,第三部分是學(xué)期,因此 可以用like ‘(2012-2013-1%’來(lái)篩選學(xué)年數(shù)據(jù)。課室編號(hào)也有個(gè)特點(diǎn),以計(jì)算機(jī)數(shù)為例,就以“信息”開(kāi)頭加樓層編號(hào)和課室序號(hào),因此可以用like ‘信息%’對(duì)教學(xué)區(qū)篩選。學(xué)期周次、星期幾、當(dāng)前時(shí)間對(duì)應(yīng)的課表,這個(gè)還需要進(jìn)一步處理,如何通過(guò)程序根據(jù)當(dāng)前時(shí)間計(jì)算出當(dāng)前周次和星期幾和對(duì)應(yīng)課時(shí)呢? 下文會(huì)詳細(xì)說(shuō)明。

2、數(shù)據(jù)排序:經(jīng)過(guò)分析發(fā)現(xiàn),先對(duì)課室編號(hào)字段排序,再對(duì)上課時(shí)間字段排序。這樣就得出一個(gè)有序數(shù)據(jù)集,方便輸出頁(yè)面時(shí)處理。

3、數(shù)據(jù)輸出:這里處理輸出數(shù)據(jù)時(shí)就要巧妙處理,通過(guò)篩選結(jié)果錄集的循環(huán)再內(nèi)嵌6個(gè)判斷,這6個(gè)判斷分別對(duì)應(yīng)當(dāng)前樓層的的6個(gè)課室,滿足條件就輸出對(duì)應(yīng)課室的課表信息。當(dāng)整個(gè)結(jié)果集循環(huán)完畢就得出一份當(dāng)前時(shí)間段對(duì)應(yīng)的課表信息了。

實(shí)現(xiàn)難點(diǎn)、要點(diǎn):

1、根據(jù)當(dāng)前日期計(jì)算與本學(xué)期對(duì)應(yīng)的周次。首先要定義一個(gè)常量指明本學(xué)期哪天開(kāi)學(xué),以此日期為參照,通過(guò)自定義函數(shù)計(jì)算出當(dāng)前是第幾周(因?yàn)閷W(xué)校的周次跟自然周是不一樣的)。附函數(shù):

public int computeWeek(Date sdate, Date edate) { 

        int wks = 0;  

        Calendar sCalendar = Calendar.getInstance(); 

        sCalendar.setTime(sdate);  

        Calendar eCalendar = Calendar.getInstance(); 

        eCalendar.setTime(edate); 

        while (sCalendar.before(eCalendar)) {  

            if (sCalendar.get(Calendar.YEAR) == eCalendar                    .get(Calendar.YEAR) && sCalendar.get(Calendar.MONTH) == eCalendar.get(Calendar.MONTH) && sCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH) == eCalendar.get(Calendar.DAY_OF_WEEK_IN_MONTH)) { 

                break;  

            } else {  

                sCalendar.add(Calendar.DAY_OF_YEAR, 7); 

                wks += 1; 

            } 

        }  

        return wks+1; //此函數(shù)其實(shí)是計(jì)算兩個(gè)日期之間間隔多少周,因此計(jì)算出來(lái)的周數(shù)還要加1才是當(dāng)前實(shí)際周數(shù)。

    }

2、根據(jù)實(shí)際上課時(shí)間和當(dāng)前時(shí)間,換算對(duì)應(yīng)是第幾節(jié)課。我采用了笨辦法,如果有其他朋友還有好辦法留言交流學(xué)習(xí)呢。

public String currentJC(Calendar cal){//此函數(shù)的參數(shù)是當(dāng)前時(shí)間的Calendar實(shí)例

    Calendar cal2=(Calendar)cal.clone();

    int hour=cal.get(Calendar.HOUR_OF_DAY);

    if(hour<=8 && checkCurrTime(8,45,cal,cal2)){//解釋下其中一個(gè),其它意思相同。當(dāng)前的鐘點(diǎn)數(shù)是否在8點(diǎn)或者8點(diǎn)以前,而且這個(gè)時(shí)間還 要小于8:45分,因?yàn)槌^(guò)這個(gè)夠數(shù)就算是下一節(jié)課了。所以還用到checkCurrTime這個(gè)自定義函數(shù)。

       return "1";

    }else if(hour<=9 && checkCurrTime(9,40,cal,cal2)){

       return "2";

    }else if(hour<=10 && checkCurrTime(10,45,cal,cal2)){

       return "3";

    }else if(hour<=11 && checkCurrTime(11,40,cal,cal2)){

       return "4";

    }else if(hour<=14 && checkCurrTime(14,45,cal,cal2)){

       return "5";

    }else if(hour<=15 && checkCurrTime(15,40,cal,cal2)){

       return "6";

    }else if(hour<=16 && checkCurrTime(16,45,cal,cal2)){

       return "7";

    }else if(hour<=17 && checkCurrTime(17,40,cal,cal2)){

       return "8";

    }else

    return "------";

}

public boolean checkCurrTime(int hour,int min,Calendar cal,Calendar cal2){

    cal2.set(Calendar.HOUR_OF_DAY,hour);

    cal2.set(Calendar.MINUTE,min);

    return cal.getTime().before(cal2.getTime());

}

以上兩個(gè)函數(shù)結(jié)合,就可以計(jì)算并返回當(dāng)前時(shí)間點(diǎn)對(duì)應(yīng)的是第幾節(jié),就可以把這個(gè)參數(shù)填入SQL對(duì)數(shù)據(jù)進(jìn)行過(guò)慮,只取對(duì)應(yīng)的課表。

3、根據(jù)當(dāng)前時(shí)間,計(jì)算并組合對(duì)應(yīng)的學(xué)期編碼前綴。返回結(jié)果:2012-2013-2,意思是2012至2013學(xué)年第2學(xué)期。

public String getXQ(Calendar cal){

    int month=cal.get(Calendar.MONTH)+1;

    if(month>=2 && month<8) return (cal.get(Calendar.YEAR)-1)+"-"+cal.get(Calendar.YEAR)+"-2";

    else return cal.get(Calendar.YEAR)+"-"+(cal.get(Calendar.YEAR)+1)+"-1";

}

以上函數(shù)其實(shí)不算太嚴(yán)謹(jǐn),只是計(jì)算一個(gè)大概,因?yàn)檫@樣已經(jīng)可以滿足我的要求了。

整體效果如圖:

第一個(gè)圖是當(dāng)前時(shí)間沒(méi)有課的情況(圖1)

 

 

 

第二個(gè)圖是有課的情況(圖2)

 

 

困了,洗洗睡吧。如果正好有你也在做這樣的事,歡迎留言交流呢。

 

本文地址:http://www./tech/program/368850.shtml

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多