# SD課題
###### tags: `SD課題`
:::spoiler cd_out.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 f_inout_id, f_employee_name");
SQL.append(" FROM t_inout, t_employee");
SQL.append(" WHERE t_inout.f_employee_id = t_employee.f_employee_id");
SQL.append(" AND f_inout_out IS NULL");
System.out.println(SQL.toString());
rs = stmt.executeQuery(SQL.toString());
while (rs.next()){
map = new HashMap<String,String>();
map.put("f_inout_id",rs.getString("f_inout_id"));
map.put("f_employee_name",rs.getString("f_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 method="post" action="./servlet/sd_outtime">
<select name="INOUT_ID">
<option disabled selected>選択してください</option>
<% for (int i = 0; i < list.size(); i++) { %>
<option value="<%= list.get(i).get("f_inout_id") %>">
<%= list.get(i).get("f_employee_name") %>
</option>
<% } %>
</select>
<button>送信</button>
</form>
</body>
</html>
```
:::
:::spoiler sd_in.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 * from t_employee");
System.out.println(SQL.toString());
rs = stmt.executeQuery(SQL.toString());
while (rs.next()){
map = new HashMap<String,String>();
map.put("f_employee_id",rs.getString("f_employee_id"));
map.put("f_employee_name",rs.getString("f_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 method="post" action="./servlet/sd_intime">
<select name="EMPLOYEE_ID">
<option disabled selected>選択してください</option>
<% for (int i = 0; i < list.size(); i++) { %>
<option value="<%= list.get(i).get("f_employee_id") %>">
<%= list.get(i).get("f_employee_name") %>
</option>
<% } %>
</select>
<button>送信</button>
</form>
</body>
</html>
```
:::
:::spoiler sd_insert.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>
<form action="./servlet/sd_insert" method="post">
<div
class="
flex
justify-center
items-start
flex-col
gap-4
h-screen
w-full
bg-gray-200
px-80
"
>
<h1>従業員登録</h1>
<div>
<label for="employee_name">従業員氏名</label>
<input
type="text"
id="employee_name"
name="EMPLOYEE_NAME"
placeholder="従業員氏名"
/>
</div>
<div>
<label for="employee_name_sub">従業員氏名(カナ)</label>
<input
type="text"
id="employee_name_sub"
name="EMPLOYEE_NAME_SUB"
placeholder="従業員氏名(カナ)"
/>
</div>
<div>
<label for="birthday_year">生年月日</label>
<input
type="number"
id="birthday_year"
name="BIRTHDAY_YEAR"
placeholder="(年)"
/>
</div>
<div>
<label for="birthday_month">生年月日</label>
<input
type="number"
id="birthday_month"
name="BIRTHDAY_MONTH"
placeholder="(月)"
/>
</div>
<div>
<label for="birthday_day">生年月日</label>
<input
type="number"
id="birthday_day"
name="BIRTHDAY_DAY"
placeholder="(日)"
/>
</div>
<div>
<label for="employee_sex">性別</label>
<select name="SEX" id="employee_sex">
<option value="" disabled>性別を選択してください</option>
<option value="1">男</option>
<option value="2">女</option>
<option value="3">その他</option>
</select>
</div>
<div>
<label for="employee_in_ymd">入社年月日</label>
<input type="date" id="employee_in_ymd" name="EMPLOYEE_IN_YMD" />
</div>
<div>
<label for="phone_number1">電話番号1</label>
<input type="text" id="phone_number1" name="PHONE_1" />
</div>
<div>
<label for="phone_number2">電話番号2</label>
<input type="text" id="phone_number2" name="PHONE_2" />
</div>
<div>
<label for="phone_number3">電話番号3</label>
<input type="text" id="phone_number3" name="PHONE_3" />
</div>
<div>
<label for="zipcode">郵便番号</label>
<input
type="number"
id="zipcode"
name="ZIPCODE"
placeholder="郵便番号"
/>
</div>
<div>
<label for="address">住所</label>
<input type="text" id="address" name="ADDRESS" placeholder="住所" />
</div>
<div>
<label for="employee_type">従業員タイプ</label>
<select name="EMPLOYEE_TYPE" id="employee_type">
<option value="" 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_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_in.jsp"
><button class="bg-blue-400 py-2 px-3">出勤登録</button></a
>
<a href="sd_out.jsp"
><button class="bg-blue-400 py-2 px-3">退勤登録</button></a
>
<a href="sd_insert.html"
><button class="bg-blue-400 py-2 px-3">従業員登録</button></a
>
</div>
</main>
</body>
</html>
```
:::
:::spoiler sd_insert.java
```java=
import java.sql.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
public class sd_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_sex = req.getParameter("SEX");
String employee_in_ymd = req.getParameter("EMPLOYEE_IN_YMD");
String phone_number = req.getParameter("PHONE_1");
String phone_number2 = req.getParameter("PHONE_2");
String phone_number3 = req.getParameter("PHONE_3");
String zipcode = req.getParameter("ZIPCODE");
String address = req.getParameter("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 t_employee where f_phone_number ='");
query.append(phone_number);
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 t_employee");
query.append("(f_employee_name, f_employee_name_sub, f_employee_birthday, f_employee_sex, f_in_ymd, f_phone_number, f_phone_number2, f_phone_number3, f_employee_address, f_employee_zipcode, f_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_sex);
query.append("','");
query.append(employee_in_ymd);
query.append("','");
query.append(phone_number);
query.append("','");
query.append(phone_number2);
query.append("','");
query.append(phone_number3);
query.append("','");
query.append(address);
query.append("','");
query.append(zipcode);
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_intime.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_intime 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 time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String in_time = 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 t_inout");
query.append("(f_employee_id, f_inout_in)");
query.append("values('");
query.append(employee_id);
query.append("','");
query.append(in_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_outtime.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_outtime 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 inout_id = req.getParameter("INOUT_ID");
SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String out_time = 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 t_inout set f_inout_out = '");
query.append(out_time);
query.append("' where f_inout_id = '");
query.append(inout_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);
}
}
}
```
:::