# JV27 課題No.02 ###### tags: `課題` ### 提出日 5月27日(木) ### 課題番号2番 ### データベース名簿追加 > オプション1 > 出席番号(クラス内)の自動発番 > 出席番号は入力しない > 出席番号の末尾+1にする > 注)出席番号は2桁 > 例 05 山田太郎 > オプション2(オプション1に加える) > 学籍番号の自動発番 > 学籍番号は入力しない > 同年度入学生の末尾+1とする > 学籍番号:99999(下4桁が連番、5桁目が入学年下1桁) > 例)2019年入学 > 学籍番号:90001 > 画面に入学年度を追加 ```htmlembedded= <!-- class_insert.html --> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>クラス</h1> <form action="./servlet/class_insert" method="POST"> <div> <input type="radio" name="SELECT" value="2"> <select name="CLASS_NO"> <option value="AT11A192" selected>AT11A192</option> <option value="AT11B203">AT11B203</option> <option value="CG11A172">CG11A172</option> <option value="IT11A172">IT11A172</option> <option value="AT12A165">AT12A165</option> <option value="AT12B165">AT12B165</option> <option value="IH12A101">IH12A101</option> <option value="IW12A185">IW12A185</option> <option value="AT13A223">AT13A223</option> <option value="AP13A223">AP13A223</option> <option value="IH13A223">IH13A223</option> <option value="IW13A187">IW13A187</option> <option value="CD13A166">CD13A166</option> <option value="AP14A226">AP14A226</option> <option value="AT14A226">AT14A226</option> <option value="IH14A223">IH14A223</option> <option value="CT14A187">CT14A187</option> <option value="IW14A187">IW14A187</option> <option value="xx14Axx">xx14Axx</option> </select> <p>出席</p> <input type="text" name="syusseki_no" size="5" value=""> <p>学籍</p> <input type="text" name="gakuseki_no" size="5" value=""> <p>氏名(姓)</p> <input type="text" name="simei_1" size="30" value=""> <p>氏名(名)</p> <input type="text" name="simei_2" size="30" value=""> <p>カナ(姓)</p> <input type="text" name="kana_1" size="30" value=""> <p>カナ(名)</p> <input type="text" name="kana_2" size="30" value=""> <p>生年月日</p> <input type="text" name="umare" size="30" value=""> </div> <input type="submit" value="登録"> <input type="reset" value="入力クリア"> </form> <a href="class_index.html"> <button>戻る</button> </a> </body> </html> ``` ```java= // class_insert.java import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class class_insert extends HttpServlet { public void doPost ( HttpServletRequest req, HttpServletResponse res ) throws ServletException , IOException { final String URL = "jdbc:mysql://localhost/nhs00718db?useUnicode=true&characterEncoding=UTF-8"; final String USER = "kurumi"; final String PASSWORD = "rock3150617"; final String DRIVER = "com.mysql.jdbc.Driver"; Connection con = null; Statement stmt = null; String class_no,gakuseki_no,syusseki_no,simei_1,simei_2,kana_1,kana_2,umare; PrintWriter out; req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); String class_noStr = req.getParameter("CLASS_NO"); String syusseki_noStr = req.getParameter("syusseki_no"); String gakuseki_noStr = req.getParameter("gakuseki_no"); String simei_1Str = req.getParameter("simei_1"); String simei_2Str = req.getParameter("simei_2"); String kana_1Str = req.getParameter("kana_1"); String kana_2Str = req.getParameter("kana_2"); String umareStr = req.getParameter("umare"); try { Class.forName(DRIVER); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); StringBuffer query = new StringBuffer(); query.append("select * from class_table where gakuseki_no='"); query.append(gakuseki_noStr); query.append("'"); ResultSet rs = stmt.executeQuery(query.toString()); StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<head><title>名簿登録</title></head>"); sb.append("<body>"); sb.append("<p>"); sb.append("<<名簿登録>>"); sb.append("</p>"); if(rs.next()){ sb.append("学籍番号"); sb.append(gakuseki_noStr); sb.append("はすでに登録済みです<br>"); out.println(class_noStr); }else{ query = new StringBuffer(); query.append("INSERT INTO class_table"); query.append("(class_no,syusseki_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare)"); query.append("values('"); query.append(class_noStr); query.append("','"); query.append(syusseki_noStr); query.append("','"); query.append(gakuseki_noStr); query.append("','"); query.append(simei_1Str); query.append("','"); query.append(simei_2Str); query.append("','"); query.append(kana_1Str); query.append("','"); query.append(kana_2Str); query.append("','"); query.append(umareStr); query.append("')"); stmt.executeUpdate(query.toString()); sb.append("<h1>"); sb.append("名簿登録完了しました"); sb.append("</h1>"); } sb.append("<a href='/JV27/class_insert.html'>"); sb.append("名簿登録に戻る"); sb.append("</a><br>"); sb.append("<a href='/JV27/class_index.html'>"); sb.append("ホームへ戻る"); sb.append("</a>"); 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); } } } ``` オプション1 htmlは出席番号の入力欄を消すだけでOK ``` java= import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class insert2 extends HttpServlet { public void doPost( HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException{ final String URL = "jdbc:mysql://localhost/nhs00650db?useUnicode=true&characterEncoding=UTF-8"; final String USER = "kawamura"; final String PASSWORD = "0912"; final String DRIVER = "com.mysql.jdbc.Driver"; Connection con = null; Statement stmt = null; String class_no,gakuseki_no,syusseki_no,simei_1,simei_2,kana_1,kana_2,umare; PrintWriter out; req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); String class_noStr = req.getParameter("CLASS_NO"); String syusseki_noStr = req.getParameter("syusseki_no"); String gakuseki_noStr = req.getParameter("gakuseki_no"); String simei_1Str = req.getParameter("simei_1"); String simei_2Str = req.getParameter("simei_2"); String kana_1Str = req.getParameter("kana_1"); String kana_2Str = req.getParameter("kana_2"); String umareStr = req.getParameter("umare"); String max = ""; try { Class.forName(DRIVER); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); StringBuffer query = new StringBuffer(); query.append("select * from class_table where gakuseki_no='"); query.append(gakuseki_noStr); query.append("'"); ResultSet rs = stmt.executeQuery(query.toString()); StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<head><title>名簿登録</title></head>"); sb.append("<body>"); sb.append("<p>"); sb.append("<<名簿登録>>"); sb.append("</p>"); if(rs.next()){ sb.append("学籍番号"); sb.append(gakuseki_noStr); sb.append("はすでに登録済みです<br>"); out.println(class_noStr); }else{ query = new StringBuffer(); query.append("select * from class_table where class_no= '"); query.append(class_noStr); query.append("'"); query.append("order by syusseki_no desc limit 1"); ResultSet rsmax = stmt.executeQuery(query.toString()); if(rsmax.next()){ max = rsmax.getString("syusseki_no"); rsmax.close(); } int maxint = Integer.parseInt(max); maxint = maxint + 1; String maxStr = ""; // 10以下の場合に先頭を0埋めするための処理 if(maxint < 10){ maxStr = String.format("%02d", maxint); } query = new StringBuffer(); query.append("INSERT INTO class_table"); query.append("(class_no,syusseki_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare)"); query.append("values('"); query.append(class_noStr); query.append("','"); query.append(maxStr); query.append("','"); query.append(gakuseki_noStr); query.append("','"); query.append(simei_1Str); query.append("','"); query.append(simei_2Str); query.append("','"); query.append(kana_1Str); query.append("','"); query.append(kana_2Str); query.append("','"); query.append(umareStr); query.append("')"); stmt.executeUpdate(query.toString()); sb.append("<h1>"); sb.append("名簿登録完了しました"); sb.append("</h1>"); } sb.append("<a href='/JV27/class_insert2.html'>"); sb.append("名簿登録に戻る"); sb.append("</a><br>"); sb.append("<a href='/JV27/class_index.html'>"); sb.append("ホームへ戻る"); sb.append("</a>"); 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); } } } ``` ```htmlembedded= <!-- option2 --> <!-- class_insert.html --> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> </head> <body> <h1>クラス</h1> <form action="./servlet/class_insert" method="POST"> <div> <select name="CLASS_NO"> <option value="AT11A192" selected>AT11A192</option> <option value="AT11B203">AT11B203</option> <option value="CG11A172">CG11A172</option> <option value="IT11A172">IT11A172</option> <option value="AT12A165">AT12A165</option> <option value="AT12B165">AT12B165</option> <option value="IH12A101">IH12A101</option> <option value="IW12A185">IW12A185</option> <option value="AT13A223">AT13A223</option> <option value="AP13A223">AP13A223</option> <option value="IH13A223">IH13A223</option> <option value="IW13A187">IW13A187</option> <option value="CD13A166">CD13A166</option> <option value="AP14A226">AP14A226</option> <option value="AT14A226">AT14A226</option> <option value="IH14A223">IH14A223</option> <option value="CT14A187">CT14A187</option> <option value="IW14A187">IW14A187</option> <option value="xx14Axx">xx14Axx</option> </select> <p>入学年度</p> <input type="text" name="nyuugakunendo_no" size="30" value=""> <p>氏名(姓)</p> <input type="text" name="simei_1" size="30" value=""> <p>氏名(名)</p> <input type="text" name="simei_2" size="30" value=""> <p>カナ(姓)</p> <input type="text" name="kana_1" size="30" value=""> <p>カナ(名)</p> <input type="text" name="kana_2" size="30" value=""> <p>生年月日</p> <input type="text" name="umare" size="30" value=""> </div> <input type="submit" value="登録"> <input type="reset" value="入力クリア"> </form> <a href="class_index.html"> <button>戻る</button> </a> </body> </html> ``` ```java= // option2 import java.sql.*; import java.io.*; import javax.servlet.*; import javax.servlet.http.*; public class class_insert extends HttpServlet { public void doPost ( HttpServletRequest req, HttpServletResponse res ) throws ServletException , IOException { final String URL = "jdbc:mysql://localhost/nhs00157db?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; String class_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare; PrintWriter out; req.setCharacterEncoding("UTF-8"); res.setContentType("text/html;charset=UTF-8"); out = res.getWriter(); String class_noStr = req.getParameter("CLASS_NO"); String nyuugakunendo_noStr = req.getParameter("nyuugakunendo_no"); String simei_1Str = req.getParameter("simei_1"); String simei_2Str = req.getParameter("simei_2"); String kana_1Str = req.getParameter("kana_1"); String kana_2Str = req.getParameter("kana_2"); String umareStr = req.getParameter("umare"); String max = ""; String maxStr = ""; String max_gakusekinoStr = ""; int max_gakusekinoInt; int new_max_gakusekinoInt; String new_max_gakusekinoStr; char lastChar = nyuugakunendo_noStr.charAt(nyuugakunendo_noStr.length() - 1); try { Class.forName(DRIVER); con = DriverManager.getConnection(URL,USER,PASSWORD); stmt = con.createStatement(); StringBuffer query = new StringBuffer(); query.append("select gakuseki_no from class_table where gakuseki_no like '"); query.append(lastChar); query.append("____' order by gakuseki_no desc limit 1"); ResultSet rs = stmt.executeQuery(query.toString()); while (rs.next()) { max_gakusekinoStr = rs.getString("gakuseki_no"); } max_gakusekinoInt = Integer.parseInt(max_gakusekinoStr); new_max_gakusekinoInt = max_gakusekinoInt + 1; new_max_gakusekinoStr = String.valueOf(new_max_gakusekinoInt); StringBuffer sb = new StringBuffer(); sb.append("<html>"); sb.append("<head>"); sb.append("<title>名簿登録</title>"); sb.append("</head>"); sb.append("<body>"); sb.append("<div>"); sb.append("<div>名簿登録</div>"); query = new StringBuffer(); query.append("select * from class_table where class_no = '"); query.append(class_noStr); query.append("'"); query.append("order by syusseki_no desc limit 1"); ResultSet rsmax = stmt.executeQuery(query.toString()); if(rsmax.next()){ max = rsmax.getString("syusseki_no"); rsmax.close(); } int maxint = Integer.parseInt(max); maxint = maxint + 1; System.out.print(maxint); // 10以下の場合に先頭を0埋めするための処理 if(maxint < 10){ maxStr = String.format("%02d", maxint); } else { maxStr = String.valueOf(maxint); } query = new StringBuffer(); query.append("INSERT INTO class_table"); query.append("(class_no,syusseki_no,gakuseki_no,simei_1,simei_2,kana_1,kana_2,umare)"); query.append("values('"); query.append(class_noStr); query.append("','"); query.append(maxStr); query.append("','"); query.append(new_max_gakusekinoStr); query.append("','"); query.append(simei_1Str); query.append("','"); query.append(simei_2Str); query.append("','"); query.append(kana_1Str); query.append("','"); query.append(kana_2Str); query.append("','"); query.append(umareStr); query.append("')"); stmt.executeUpdate(query.toString()); sb.append("<h1 class='text-center'>名簿登録完了</h1>"); sb.append("<hr/>"); sb.append("<div>"); sb.append("<div>"); sb.append("<a href='/JV27/class_insert.html'><button>登録に戻る</button></a>"); sb.append("<a href='/JV27/class_index.html'><button>ホームに戻る</button></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); } } } ``` <span style="color: #ff3333">aaa</span> <span style="text-decoration: underline">aaa</span> ## 雑談 (0→やまぴ 1→みや 2→やすい 3→りょうくん) 2.おはよう 1.OP1ってこれ50音とかかんがえなくていい? 3. 50音とは? 3. 名前の並び順ってこと? 3. オプションは、新しく追加する人を学籍番号を+1して追加すればいいだけのはず 日本語順みたいなやつ 学籍番号プラスいち? そうそう 今日くそ見にくい 出席じゃないの? 出席やったわ すまん ピンクピンクはやばい おけい 安井君紫やし まじでひどいわ てか、暇やな OP2やってる? やってない 今日は疲れた おれやりますわ あざす String max これ、tryの外で宣言してるのなんで? > 学籍番号:99999(下4桁が連番、5桁目が入学年下1桁) これの意味わからん 一番最初の数字が入学年度 今年なら2021年やから1になる その後の4桁がその年の入学者の通し番号になる 宮 10001 河村 10002 安井 10003みたいに これ被った場合のやつもかかないといけない? 被ることはないんじゃね? 入学年度の学籍番号の下4桁の数字に+1するわけやから 入っとる学籍番号の中で、最も大きい数字をとってくれば それこそorder byとかで学籍番号でソートすれば 19999の人がいたら? > 同年度入学生の末尾+1とする これどこで判別するの?でーたべーすはいってたっけ?クラス記号か、めんど > オプション2(オプション1に加える) > 学籍番号の自動発番 > 学籍番号は入力しない > 同年度入学生の末尾+1とする > 学籍番号:99999(下4桁が連番、5桁目が入学年下1桁) > 例)2019年入学 > 学籍番号:90001 > 画面に入学年度を追加 - 入学年度から学籍番号一桁目を抽出 - =(クラス記号から学年を抽出) - nyuugakunendo_noから一桁目取る - select gakuseki_no from class_table where gakuseki_no like 'nyuugakunendo_no____' order by gakuseki_no desc limit 1 - gakuseki_no++ - year = 入力された入学年度の一番最後の数字 - と学籍番号の1番最初の数字が一緒のやつをさがして - その一番新しい数字に+1すればいいんじゃない? ```=java public class LastCharString { public static void main(String[] args) { String exampleString = "This is a String"; char lastChar = exampleString.charAt(exampleString.length() - 1); System.out.println("Last char: " + lastChar); } } ``` year = 2016(要するに6) select gakuseki_no from class_table where 学籍番号の一番最初数字 = year order by gakuseki_no desc limit 1 <span style="font-size: 100px"> やすいくんなにやってるの? </span> 文字でかw アピリッツの説明会