2020国产成人精品视频,性做久久久久久久久,亚洲国产成人久久综合一区,亚洲影院天堂中文av色

分享

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

 昵稱12067353 2013-04-25

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

前天接到新任務(wù):由 于在計算機(jī)樓樓下放置了一臺大屏,要做個簡單的網(wǎng)頁用來顯示當(dāng)前時間指定教學(xué)區(qū)的課表信息,就一個頁面可以了,原來通過瀏覽器打開這個頁以表格形式顯示當(dāng) 前時間對應(yīng)的課表信息,過了這個時間段就自動刷新,讀取新的課表。方便師生了解具體上課信息,因為有好多老師學(xué)生老找不著上課地點,或者搞錯上課時間。

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

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

字段名稱

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

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

學(xué)期編號

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

Varchar(30)

教學(xué)區(qū)編號

純數(shù)字

Varchar(10)

星期幾

純數(shù)字

Varchar(10)

學(xué)期的周次

純數(shù)字

Varchar(10)

課室編號

5-1-300

信息-301

藝術(shù)樓102

Varchar(20)

課程名稱

信息與檔案管理

Varchar(200)

任課老師名稱

鐘XX

Varchar(30)

上課時間

1,2

3,4

1,2,3,4

5,6

Varchar(30)

班級名稱

11酒店管理4

Varchar(30)

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

 

01

02

03

05

06

07

2樓

《Mysql和PHP開發(fā)》

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

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

……

 

 

 

 

3樓

 

 

 

 

 

 

4樓

 

 

 

……

 

 

5樓

 

 

 

 

 

 

6樓

 

 

……

 

 

 

7樓

 

 

 

 

 

 

 

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

一開始有幾個棘手的問題要解決:

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

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

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

實現(xiàn)難點、要點:

1、根據(jù)當(dāng)前日期計算與本學(xué)期對應(yīng)的周次。首先要定義一個常量指明本學(xué)期哪天開學(xué),以此日期為參照,通過自定義函數(shù)計算出當(dāng)前是第幾周(因為學(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ù)還要加1才是當(dāng)前實際周數(shù)。

    }

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

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

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

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

    if(hour<=8 && checkCurrTime(8,45,cal,cal2)){//解釋下其中一個,其它意思相同。當(dāng)前的鐘點數(shù)是否在8點或者8點以前,而且這個時間還 要小于8:45分,因為超過這個夠數(shù)就算是下一節(jié)課了。所以還用到checkCurrTime這個自定義函數(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());

}

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

3、根據(jù)當(dāng)前時間,計算并組合對應(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ù)其實不算太嚴(yán)謹(jǐn),只是計算一個大概,因為這樣已經(jīng)可以滿足我的要求了。

整體效果如圖:

第一個圖是當(dāng)前時間沒有課的情況(圖1)

 

 

 

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

 

 

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

 

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

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多