# SD課題 チームC ###### tags: `SD課題` :::spoiler employee テーブル ```sql= CREATE TABLE `employee` ( `employee_id` int(5) NOT NULL AUTO_INCREMENT, `employee_name` varchar(15) NOT NULL, `employee_name_sub` varchar(30) NOT NULL, `employee_birthday` date NOT NULL, `employee_gender` char(1) NOT NULL, `employee_phone1` char(11) NOT NULL, `employee_phone2` char(11), `employee_phone3` char(11), `employee_address` varchar(100) NOT NULL, `employee_zipcode` char(7) NOT NULL, `employee_type` char(1) NOT NULL, `company_join` date NOT NULL, `company_leaving` date DEFAULt NULL, PRIMARY KEY(`employee_id`) ) DEFAULT CHARSET=utf8; ``` ::: :::spoiler work_shift テーブル ```sql= CREATE TABLE `working_shift` ( `working_shift_id` int(5) NOT NULL AUTO_INCREMENT, `employee_id` int(5) NOT NULL, `working_shift_join` datetime NOT NULL, `working_shift_leaving` datetime, PRIMARY KEY(`working_shift_id`), FOREIGN KEY(`employee_id`) REFERENCES employee (`employee_id`) ) DEFAULT CHARSET=utf8; ``` ::: :::spoiler sd_index.html ```htmlembedded= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet" /> <title>Document</title> </head> <body> <main> <div class="flex justify-center items-center gap-4 h-screen w-full"> <h1>従業員勤怠管理システム</h1> <a href="./sd_shift_join.jsp" ><button class="bg-blue-400 py-2 px-3">出勤登録</button></a > <a href="./sd_shift_leaving.jsp" ><button class="bg-blue-400 py-2 px-3">退勤登録</button></a > <a href="./sd_employee_insert.html" ><button class="bg-blue-400 py-2 px-3">従業員登録</button></a > </div> </main> </body> </html> ``` ::: :::spoiler sd_employee_insert.html ```htmlmixed= <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <link href="https://unpkg.com/tailwindcss@^2/dist/tailwind.min.css" rel="stylesheet" /> <title>Document</title> </head> <body> <main class=" flex justify-center items-center flex-col gap-4 h-screen w-full bg-gray-200 " > <form action="./servlet/sd_employee_insert" method="POST"> <div class="flex justify-center items-start flex-col gap-4"> <h1>従業員登録</h1> <div> <label for="employee_name">従業員氏名</label> <input type="text" id="employee_name" name="EMPLOYEE_NAME" value="" placeholder="従業員氏名" /> </div> <div> <label for="employee_name_sub">従業員氏名(カナ)</label> <input type="text" id="employee_name_sub" name="EMPLOYEE_NAME_SUB" value="" placeholder="従業員氏名(カナ)" /> </div> <div> <label for="birthday_year">生年月日</label> <input type="number" id="birthday_year" name="BIRTHDAY_YEAR" value="" placeholder="(年)" /> </div> <div> <label for="birthday_month">生年月日</label> <input type="number" id="birthday_month" name="BIRTHDAY_MONTH" value="" placeholder="(月)" /> </div> <div> <label for="birthday_day">生年月日</label> <input type="number" id="birthday_day" name="BIRTHDAY_DAY" value="" placeholder="(日)" /> </div> <div> <label for="employee_gender">性別</label> <select name="EMPLOYEE_GENDER" id="employee_gender"> <option disabled>性別を選択してください</option> <option value="1">男</option> <option value="2">女</option> <option value="3">その他</option> </select> </div> <div> <label for="company_join_yaer">入社年月日</label> <input type="number" id="company_join_yaer" name="COMPANY_JOIN_YEAR" value="" placeholder="(年)" /> </div> <div> <label for="company_join_month">入社年月日</label> <input type="number" id="company_join_month" name="COMPANY_JOIN_MONTH" value="" placeholder="(月)" /> </div> <div> <label for="company_join_day">入社年月日</label> <input type="number" id="company_join_day" name="COMPANY_JOIN_DAY" value="" placeholder="(日)" /> </div> <div> <label for="employee_phone1">電話番号1</label> <input type="text" id="employee_phone1" name="EMPLOYEE_PHONE_1" value="" /> </div> <div> <label for="employee_phone2">電話番号2</label> <input type="text" id="employee_phone2" name="EMPLOYEE_PHONE_2" value="" /> </div> <div> <label for="employee_phone3">電話番号3</label> <input type="text" id="employee_phone3" name="EMPLOYEE_PHONE_3" value="" /> </div> <div> <label for="employee_zipcode">郵便番号</label> <input type="number" id="employee_zipcode" name="EMPLOYEE_ZIPCODE" value="" placeholder="郵便番号" /> </div> <div> <label for="employee_address">住所</label> <input type="text" id="employee_address" name="EMPLOYEE_ADDRESS" value="" placeholder="住所" /> </div> <div> <label for="employee_type">従業員タイプ</label> <select name="EMPLOYEE_TYPE" id="employee_type"> <option disabled>従業員タイプを選択してください</option> <option value="1">店長</option> <option value="2">正社員</option> <option value="3">アルバイト</option> </select> </div> <button class="bg-blue-500 text-white py-2 px-5 rounded-full"> 送信 </button> </div> </form> </main> </body> </html> ``` ::: :::spoiler sd_employee_insert.java ```java= import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class sd_employee_insert extends HttpServlet { public void doPost ( HttpServletRequest req, HttpServletResponse res ) throws ServletException , IOException { final String URL = "jdbc:mysql://localhost/sd_kadai?useUnicode=true&characterEncoding=UTF-8"; final String USER = "miyasan"; final String PASSWORD = "0301"; final String DRIVER = "com.mysql.jdbc.Driver"; Connection con = null; Statement stmt = null; PrintWriter out; req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); String employee_name = req.getParameter("EMPLOYEE_NAME"); String employee_name_sub = req.getParameter("EMPLOYEE_NAME_SUB"); String birthday_year = req.getParameter("BIRTHDAY_YEAR"); String birthday_month = req.getParameter("BIRTHDAY_MONTH"); String birthday_day = req.getParameter("BIRTHDAY_DAY"); String employee_gender = req.getParameter("EMPLOYEE_GENDER"); String company_join_year = req.getParameter("COMPANY_JOIN_YEAR"); String company_join_month = req.getParameter("COMPANY_JOIN_MONTH"); String company_join_day = req.getParameter("COMPANY_JOIN_DAY"); String employee_phone1 = req.getParameter("EMPLOYEE_PHONE_1"); String employee_phone2 = req.getParameter("EMPLOYEE_PHONE_2"); String employee_phone3 = req.getParameter("EMPLOYEE_PHONE_3"); String employee_zipcode = req.getParameter("EMPLOYEE_ZIPCODE"); String employee_address = req.getParameter("EMPLOYEE_ADDRESS"); String employee_type = req.getParameter("EMPLOYEE_TYPE"); try { Class.forName(DRIVER); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); StringBuffer query = new StringBuffer(); query.append("select * from employee where employee_phone1 ='"); query.append(employee_phone1); query.append("'"); ResultSet rs = stmt.executeQuery(query.toString()); StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<head>"); sb.append("<title>従業員登録完了</title>"); sb.append("<link href='https://cdn.jsdelivr.net/npm/tailwindcss@2.1/dist/tailwind.min.css' rel='stylesheet' type='text/css' />"); sb.append("<link href='https://cdn.jsdelivr.net/npm/daisyui@0.26.3/dist/full.css' rel='stylesheet' type='text/css' />"); sb.append("</head>"); sb.append("<body>"); sb.append("<div class='h-screen w-full'>"); sb.append("<div class='text-2xl text-center bg-primary py-5 font-bold text-white'>従業員登録</div>"); sb.append("<div class='px-5'>"); if (rs.next()) { sb.append("<div class='text-secondary text-lg text-center py-3 bg-white'>従業員登録失敗</div>"); sb.append("<div class='text-center'>" + employee_name + "はすでに登録済みです</div>"); } else { query = new StringBuffer(); query.append("INSERT INTO employee"); query.append("(employee_name, employee_name_sub, employee_birthday, employee_gender, company_join, "); query.append("employee_phone1, employee_phone2, employee_phone3, employee_zipcode, employee_address,employee_type)"); query.append("values('"); query.append(employee_name); query.append("','"); query.append(employee_name_sub); query.append("','"); query.append(birthday_year + "-" + birthday_month + "-" + birthday_day); query.append("','"); query.append(employee_gender); query.append("','"); query.append(company_join_year + "-" + company_join_month + "-" + company_join_day); query.append("','"); query.append(employee_phone1); query.append("','"); query.append(employee_phone2); query.append("','"); query.append(employee_phone3); query.append("','"); query.append(employee_zipcode); query.append("','"); query.append(employee_address); query.append("','"); query.append(employee_type); query.append("')"); stmt.executeUpdate(query.toString()); sb.append("<div class='text-secondary text-lg text-center py-3 bg-white'>従業員登録完了</div>"); } sb.append("<div class='flex justify-center pt-5'>"); sb.append("<a href='/JV27/sd_insert.html' class='btn btn-link'>登録に戻る</a>"); sb.append("<a href='/JV27/sd_index.html' class='btn btn-link'>ホームに戻る</a>"); sb.append("</div>"); sb.append("</div>"); sb.append("</div>"); sb.append("</body>"); sb.append("</html>"); out.println(sb.toString()); stmt.close(); con.close(); } catch (SQLException ex) { out.println(" ---- SQL Exception ----"); out.println(" ---- Error Message ----"); while (ex != null) { out.println(ex.getMessage()); ex = ex.getNextException(); } } catch (Exception ex) { ex.printStackTrace(out); } } } ``` ::: :::spoiler sd_shift_join.jsp ```htmlmixed= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import = "java.sql.*" %> <%@ page import = "java.util.HashMap" %> <%@ page import = "java.util.ArrayList" %> <% request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); Connection con = null; Statement stmt = null; StringBuffer SQL = null; ResultSet rs = null; String USER = "miyasan"; String PASSWORD = "0301"; String URL = "jdbc:mysql://localhost/sd_kadai"; String DRIVER = "com.mysql.jdbc.Driver"; StringBuffer ERMSG = null; HashMap<String,String> map = null; ArrayList<HashMap> list = null; list = new ArrayList<HashMap>(); try{ Class.forName(DRIVER).newInstance(); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); SQL = new StringBuffer(); SQL.append("SELECT employee_id, employee_name FROM employee"); rs = stmt.executeQuery(SQL.toString()); while (rs.next()){ map = new HashMap<String,String>(); map.put("employee_id",rs.getString("employee_id")); map.put("employee_name",rs.getString("employee_name")); list.add(map); } } catch(ClassNotFoundException e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } catch(SQLException e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } catch(Exception e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } finally{ try{ if(rs != null){ rs.close(); } if(stmt != null){ stmt.close(); } if(con != null){ con.close(); } } catch(SQLException e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>出勤登録</title> </head> <body> <form action="./servlet/sd_shift_join" method="POST"> <select name="EMPLOYEE_ID"> <option selected disabled>選択してください</option> <% for (int i = 0; i < list.size(); i++) { %> <option value="<%= list.get(i).get("employee_id") %>"> <%= list.get(i).get("employee_name") %> </option> <% } %> </select> <button>送信</button> </form> </body> </html> ``` ::: :::spoiler sd_hift_join.java ```java= import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; import java.text.*; public class sd_shift_join extends HttpServlet { public void doPost ( HttpServletRequest req, HttpServletResponse res ) throws ServletException , IOException { final String URL = "jdbc:mysql://localhost/sd_kadai?useUnicode=true&characterEncoding=UTF-8"; final String USER = "miyasan"; final String PASSWORD = "0301"; final String DRIVER = "com.mysql.jdbc.Driver"; Connection con = null; Statement stmt = null; PrintWriter out; req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); StringBuffer query = new StringBuffer(); String employee_id = req.getParameter("EMPLOYEE_ID"); SimpleDateFormat date_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String join_date_time = date_time.format(new Date()); try {; Class.forName(DRIVER); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<head>"); sb.append("<title>出勤登録</title>"); sb.append("<link href='https://cdn.jsdelivr.net/npm/tailwindcss@2.1/dist/tailwind.min.css' rel='stylesheet' type='text/css' />"); sb.append("<link href='https://cdn.jsdelivr.net/npm/daisyui@0.26.3/dist/full.css' rel='stylesheet' type='text/css' />"); sb.append("</head>"); sb.append("<body>"); sb.append("<div class='h-screen w-full'>"); sb.append("<div class='text-2xl text-center bg-primary py-5 font-bold text-white'>出勤登録</div>"); sb.append("<div class='px-5'>"); query = new StringBuffer(); query.append("INSERT INTO working_shift "); query.append("(employee_id, working_shift_join) "); query.append("VALUES('"); query.append(employee_id); query.append("','"); query.append(join_date_time); query.append("')"); stmt.executeUpdate(query.toString()); sb.append("<div class='text-secondary text-lg text-center py-3 bg-white'>出勤登録完了</div>"); sb.append("<div class='flex justify-center pt-5'>"); sb.append("<a href='/JV27/sd_index.html' class='btn btn-link'>ホームに戻る</a>"); sb.append("</div>"); sb.append("</div>"); sb.append("</div>"); sb.append("</body>"); sb.append("</html>"); out.println(sb.toString()); stmt.close(); con.close(); } catch (SQLException ex) { out.println(" ---- SQL Exception ----"); out.println(" ---- Error Message ----"); while (ex != null) { out.println(ex.getMessage()); ex = ex.getNextException(); } } catch (Exception ex) { ex.printStackTrace(out); } } } ``` ::: :::spoiler sd_shift_leaving.jsp ```htmlmixed= <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8" %> <%@ page import = "java.sql.*" %> <%@ page import = "java.util.HashMap" %> <%@ page import = "java.util.ArrayList" %> <% request.setCharacterEncoding("UTF-8"); response.setCharacterEncoding("UTF-8"); Connection con = null; Statement stmt = null; StringBuffer SQL = null; ResultSet rs = null; String USER = "miyasan"; String PASSWORD = "0301"; String URL = "jdbc:mysql://localhost/sd_kadai"; String DRIVER = "com.mysql.jdbc.Driver"; StringBuffer ERMSG = null; HashMap<String,String> map = null; ArrayList<HashMap> list = null; list = new ArrayList<HashMap>(); try{ Class.forName(DRIVER).newInstance(); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); SQL = new StringBuffer(); SQL.append("SELECT working_shift_id, employee_name "); SQL.append("FROM working_shift, employee "); SQL.append("WHERE working_shift.employee_id = employee.employee_id "); SQL.append("AND working_shift_leaving IS NULL "); System.out.println(SQL.toString()); rs = stmt.executeQuery(SQL.toString()); while (rs.next()){ map = new HashMap<String,String>(); map.put("working_shift_id",rs.getString("working_shift_id")); map.put("employee_name",rs.getString("employee_name")); list.add(map); } } catch(ClassNotFoundException e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } catch(SQLException e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } catch(Exception e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } finally{ try{ if(rs != null){ rs.close(); } if(stmt != null){ stmt.close(); } if(con != null){ con.close(); } } catch(SQLException e){ ERMSG = new StringBuffer(); ERMSG.append(e.getMessage()); } } %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>退勤登録</title> </head> <body> <form action="./servlet/sd_shift_leaving" method="POST"> <select name="WORKING_SHIFT_ID"> <option selected disabled>選択してください</option> <% for (int i = 0; i < list.size(); i++) { %> <option value="<%= list.get(i).get("working_shift_id") %>"> <%= list.get(i).get("employee_name") %> </option> <% } %> </select> <button>送信</button> </form> </body> </html> ``` ::: :::spoiler sd_shift_leaving.java ```java= import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; import java.util.Date; import java.text.*; public class sd_shift_leaving extends HttpServlet { public void doPost ( HttpServletRequest req, HttpServletResponse res ) throws ServletException , IOException { final String URL = "jdbc:mysql://localhost/sd_kadai?useUnicode=true&characterEncoding=UTF-8"; final String USER = "miyasan"; final String PASSWORD = "0301"; final String DRIVER = "com.mysql.jdbc.Driver"; Connection con = null; Statement stmt = null; PrintWriter out; req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); StringBuffer query = new StringBuffer(); String working_shift_id = req.getParameter("WORKING_SHIFT_ID"); SimpleDateFormat date_time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String leaving_date_time = date_time.format(new Date()); try {; Class.forName(DRIVER); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<head>"); sb.append("<title>退勤登録</title>"); sb.append("<link href='https://cdn.jsdelivr.net/npm/tailwindcss@2.1/dist/tailwind.min.css' rel='stylesheet' type='text/css' />"); sb.append("<link href='https://cdn.jsdelivr.net/npm/daisyui@0.26.3/dist/full.css' rel='stylesheet' type='text/css' />"); sb.append("</head>"); sb.append("<body>"); sb.append("<div class='h-screen w-full'>"); sb.append("<div class='text-2xl text-center bg-primary py-5 font-bold text-white'>退勤登録</div>"); sb.append("<div class='px-5'>"); query = new StringBuffer(); query.append("UPDATE working_shift SET working_shift_leaving = '"); query.append(leaving_date_time); query.append("' WHERE working_shift_id = '"); query.append(working_shift_id); query.append("'"); stmt.executeUpdate(query.toString()); sb.append("<div class='text-secondary text-lg text-center py-3 bg-white'>退勤登録完了</div>"); sb.append("<div class='flex justify-center pt-5'>"); sb.append("<a href='/JV27/sd_index.html' class='btn btn-link'>ホームに戻る</a>"); sb.append("</div>"); sb.append("</div>"); sb.append("</div>"); sb.append("</body>"); sb.append("</html>"); out.println(sb.toString()); stmt.close(); con.close(); } catch (SQLException ex) { out.println(" ---- SQL Exception ----"); out.println(" ---- Error Message ----"); while (ex != null) { out.println(ex.getMessage()); ex = ex.getNextException(); } } catch (Exception ex) { ex.printStackTrace(out); } } } ``` :::