# 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
アピリッツの説明会