2012年3月19日 星期一

JSF:HW1(改)

加入了月曆和資料庫了功能,這得感謝叮噹王的貢獻,新增的部分是由JSP語言寫的~~

patient.jsp:


<f:view>
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
            <title>行事曆</title>
        </head>
        <body>
            <table border="1" align="center" width="927" height="326">
                <h:outputText value="#{calender.datetable}" escape="false"/>
            </table>
        </body>
    </html>
</f:view>


-----------------------------------------------------------------------------------------------------------

Calender.java:


import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;

import java.sql.*;
import java.util.List;


/**
 *
 * @author wanglin
 */
public class Calender {

    String dayNames[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
    String Period[] = {"morning", "afternoon", "night"};
    String dateday[] = new String[8];
    String date[] = new String[8];
    private Connection conn = null;
    private String  datetable;
    public String getDatetable() throws SQLException, ClassNotFoundException {
        int year;
        int month;
        int day;
        int WEEK;
        int i = 0;

        String strdate;

        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://IP位置";
        String user = "root";
        String password = "密碼";
        try {
            Class.forName(driver);
            Connection conn =
                    DriverManager.getConnection(url, user, password);

            if (conn != null && !conn.isClosed()) {
                System.out.println("資料庫連線測試成功!");
                //conn.close();
            }

            Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

            ResultSet rs = stmt.executeQuery("SELECT num,id,doctor,rdate,time,time FROM date order by rdate ,time");
            datetable = "";
            for (i = 0; i < 4; i++) {
                datetable = datetable + "<tr>";
                if (i == 0) {
                    datetable = datetable + "<td height=\"40\" width=\"91\" align=\"center\"><font size=\"4\" color=\"#0000FF\" face=\"標楷體\">診別/日期</font></td>";
                }
                if (i == 1) {
                    datetable = datetable + "<td height=\"95\" align=\"center\" width=\"91\"><font size=\"4\" color=\"#0000FF\" face=\"標楷體\">上午診<br>(09:00-12:00)</font></td>";
                }
                if (i == 2) {
                    datetable = datetable + "<td height=\"95\" align=\"center\" width=\"91\"><font size=\"4\" color=\"#0000FF\" face=\"標楷體\">下午診<br>(14:00-17:00)</font></td>";
                }
                if (i == 3) {
                    datetable = datetable + "<td height=\"95\" align=\"center\" width=\"91\"><font size=\"4\" color=\"#0000FF\" face=\"標楷體\">夜 診<br>(18:00-21:00)</font></td>";
                }
                for (int j = 0; j < 8; j++) {
                    if (i == 0) {
                        Date date = new Date();//取時間

                        Calendar calendar = new GregorianCalendar();
                        calendar.setTime(date);
                        calendar.add(calendar.DATE, j);//把日期往後增加一天.整數往後推,負數往前移動
                        date = calendar.getTime(); //這個時間就是日期往後推一天的結果      
                        year = calendar.get(calendar.YEAR);
                        month = calendar.get(calendar.MONTH) + 1;
                        day = calendar.get(calendar.DATE);
                        WEEK = calendar.get(Calendar.DAY_OF_WEEK) - 1;
                        /// String formatStr = "%03d";

                        dateday[j] = String.format("%04d", year) + "-" + String.format("%02d", month) + "-" + String.format("%02d", day);
                     
                        datetable = datetable + "<td height=\"40\" width=\"97\" align=\"center\">" + dayNames[WEEK] + "<BR>" + month + "/" + day + "</td>";
                     
                    } else {
                        datetable = datetable + "<td height=\"40\" width=\"97\" align=\"center\">&nbsp;";

                        rs.beforeFirst();
                        while (rs.next()) {

                            strdate = rs.getString(4);

                            if (strdate.equals(dateday[j]) && rs.getString(5).equals(Period[i - 1])) {
                                //out.print(rs.getString(1) + "\n");// 可用欄位索引值(1,2,3,...)撈取資料,
                                datetable = datetable + "<a href=\"../faces/doctordate.jsp?num=" + rs.getString(1) + "&id=" + rs.getString(2) + "\">";
                                datetable = datetable + rs.getString(3);
                                datetable = datetable + "</a><br></br>";
                            }
                        }
                        datetable = datetable + "</td>";
                    }
                }

                datetable = datetable + "</tr>";
            }
            this.datetable = datetable;

        } catch (SQLException e) {
            e.printStackTrace();
        }

        return datetable;
    }


    public Calender() {
    }
}


-----------------------------------------------------------------------------------------------------------

doctordate.jsp:


        <title>線上掛號系統</title>
    <body bgcolor="#FFFFFF">
    <center>
        <p>&nbsp;</p>
        <table width="450" border="0" height="48">
            <tbody><tr align="center">
                    <td background="./三軍總醫院線上掛號系統_files/BG-21.gif"><b>
                            <font color="#FFFFFF" size="4">請確認您的掛號內容</font></b></td>
                </tr>
            </tbody></table>

        <table width="600" border="0" height="200" bgcolor="#21447A">
            <tbody><tr valign="CENTER">
                    <td><b><font face="標楷體" color="#FFFFFF" size="4">
                            <%
                                String id = request.getParameter("id");
                                String driver = "com.mysql.jdbc.Driver";
                                String url = "jdbc:mysql://IP位置";
                                String user = "root";
                                String password = "密碼";
                                String dayNames[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
                                String Period[] = {"morning", "afternoon", "night"};
                                String time = "";
                                String dateday = "";
                                String num = request.getParameter("num");
                                String timePeriod = "";
                                int check=0;
                                try {
                                    Class.forName(driver);
                                    Connection conn =
                                            DriverManager.getConnection(url,
                                            user, password);

                                    if (conn != null && !conn.isClosed()) {
                                        System.out.println("資料庫連線測試成功!");
                                     
                                        //conn.close();
                                    }


                                    Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

                                    ResultSet rs = stmt.executeQuery("SELECT  * FROM date,department  where department.doctor=date.doctor  and date.num=" + num);
                                    rs.beforeFirst();
                                    while (rs.next()) {
                                        if (rs.getString(5).equals(Period[0])) {
                                            time = "上午診(09:00-12:00)門診";
                                            timePeriod = Period[0];
                                        }
                                        if (rs.getString(5).equals(Period[1])) {
                                            time = "下午診(14:00-17:00)門診";
                                            timePeriod = Period[1];
                                        }
                                        if (rs.getString(5).equals(Period[2])) {
                                            time = "夜 診(18:00-21:00)門診";
                                            timePeriod = Period[2];
                                        }
                                        out.print("看診科別: " + rs.getString(9) + "<br>");
                                        out.print("看診醫師:" + rs.getString(3) + "<br>");

                                        out.print("看診診室: 診室" + rs.getString(9) + "<br>");
                                        out.print("看診時段: " + time + "<br>");

                                        dateday = rs.getString(4);
                                        out.print("看診日期: " + rs.getString(4) + "" + "<br>");
                                        out.print("看診區域: 內湖門診區" + "<br>");

                                    }
                                    Statement stmt1 = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

                                    ResultSet rs1 = stmt1.executeQuery("SELECT  *  ,count(patient.doctor) FROM patient,date,department  where patient.doctor=date.doctor and patient.doctor=department.doctor and  patient.time=date.time and date.num='" + num + "'  group by patient.doctor ,patient.time");
                                    rs1.beforeFirst();

                                    while (rs1.next()) {
                                        if(!rs1.getString(17).isEmpty()){
                                        out.print("預掛序號: " + (rs1.getInt(17) + 1) + "號");
                                        check=1;
                                        }
                                    }
                                    if(check==0)  out.print("預掛序號: 1號");
                                } catch (ClassNotFoundException e) {
                                    System.out.println("找不到驅動程式類別");
                                    e.printStackTrace();
                                } catch (SQLException e) {
                                    e.printStackTrace();
                                }
                            %>



                            <font color="red">(此號為估算,不代表正式掛號可掛到此號)</font><br>

                            </font></b>
                    </td>
                </tr>
            </tbody></table>

        <form name="test" method="post" action="register.jsp?id=<%=id%>&day=<%=dateday%>">
            <table width="450" border="0">
                <tbody><tr><td colspan="2">
                            <font size="3" face="標楷體" color="#663333"><b>請輸入您的:</b></font>
                        </td></tr>
                    <tr>
                        <td width="330" height="2">
                            <font size="3" face="標楷體" color="#663333"><b>病歷號或身分證字號預約</b></font>
                        </td>

                        <td width="370" height="2">

                            <input type="text" name="num" maxlength="10" size="12" value="">
                            <input type="submit" name="Submit" value="送出">
                        </td>
                    </tr>

                </tbody></table>



        </form>

        <form name="test1" method="post" action="cancel.jsp?id=<%=id%>&day=<%=dateday%>&time=<%=timePeriod%>">
            <table width="450" border="0">
                <tbody><tr><td colspan="2">
                            <font size="3" face="標楷體" color="#663333"><b>請輸入您的:</b></font>
                        </td></tr>
                    <tr>
                        <td width="330" height="2">
                            <font size="3" face="標楷體" color="#663333"><b>病歷號或身分證字號取消預約</b></font>
                        </td>
                        <td width="370" height="2">

                            <input type="text" name="patient" maxlength="10" size="12" value="">
                            <input type="submit" name="Submit" value="送出">
                        </td>
                    </tr>

                </tbody></table>

        </form>

    </center>
</form>


-----------------------------------------------------------------------------------------------------------

register.jsp:


<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>JSP Page</title>
    </head>
    <body>

        <%
            String id = request.getParameter("id");
            String daydate = request.getParameter("day");
            String num = request.getParameter("num");
            String driver = "com.mysql.jdbc.Driver";
            String url = "jdbc:mysql://IP位置";
            String user = "root";
            String password = "密碼";

            try {
                Class.forName(driver);
                Connection conn =
                        DriverManager.getConnection(url+"?user="+
                        user+"&password="+password+"&useUnicode=true&characterEncoding=utf-8");

                if (conn != null && !conn.isClosed()) {
                    System.out.println("資料庫連線測試成功!");
                    //conn.close();
                }




                String dayNames[] = {"星期日", "星期一", "星期二", "星期三", "星期四", "星期五", "星期六"};
                String Period[] = {"morning", "afternoon", "night"};
                String dateday[] = new String[8];
                int year;
                int month;
                int day;
                int WEEK;

                Statement stmt = conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
                ResultSet rs = stmt.executeQuery("SELECT id,doctor,rdate,time FROM date");
                rs.beforeFirst();
                while (rs.next()) {
                    if (rs.getString(1).equals(id) && rs.getString(3).equals(daydate)) {

                        String upd = "INSERT INTO patient (id,doctor,Patient,rdate,time) VALUES(" + id + ",'" + rs.getString(2) + "','" + num + "','" + daydate + "','" + rs.getString(4) + "')";
                        stmt.executeUpdate(upd);
                        out.print("預約成功");
                         
                        break;


                    }
                }


            } catch (ClassNotFoundException e) {
                System.out.println("找不到驅動程式類別");
                e.printStackTrace();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        %>

    </body>
</html>
-----------------------------------------------------------------------------------------------------------

cancel.jsp:


    <body>
        <%
            String id = request.getParameter("id");
            String day = request.getParameter("day");
            String time = request.getParameter("time");
    String patient = request.getParameter("patient");
         
        %>
       <sql:setDataSource
                driver="com.mysql.jdbc.Driver"
                url="jdbc:mysql://IP位置:3306/ttuweb?user=root&password=密碼&useUnicode=true&characterEncoding=utf8"
            />
            <sql:update var="result"
                sql="Delete From patient where id=? AND Patient=? AND  rdate =? AND time=?" >  
                <div align="center">
                    <sql:param value="<%=id%>" />
                    <sql:param value="<%=patient%>" />
                 
                     <sql:param value="<%=day%>" />
                    <sql:param value="<%=time%>" />

                    <br/>
                    <br/>
                    <br/>
                </div>
            </sql:update>
            <div align="center"> <span class="style1">刪除${result==1?"成功":"失敗"}</span><br>
     
    </body>





沒有留言:

張貼留言