質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

1733閲覧

より完璧にプログラムを完成したいので厳しめでご指導の方を宜しくお願いします。前半

ook

総合スコア12

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2016/03/18 12:58

import java.util.Scanner;
import java.sql.*;

//メニュー
public class DB2 {
public static void main(String[] args) {
Scanner stdIn=new Scanner(System.in);
System.out.println("メニュー");
System.out.println("1:新規登録");
System.out.println("2:個別検索");
System.out.println("3:一覧表示");
System.out.println("4:終了");
try{ //半角数字以外で入力された時の対処
System.out.print("メニューをお選びください:");
int x=stdIn.nextInt();
switch(x){
case 1:
torokuC.toroku(); //新規登録へ
break;
case 2:
kobetuC.kobetu(); //個別表示へ
break;
case 3:
listC.list(); //一覧表示へ
break;
case 4:
endC.end(); //終了へ
break;
default:
System.out.println("入力内容が間違っています。");
System.out.println();
main(null);
}
}catch(Exception e){
System.out.println("入力内容が間違っています。");
System.out.println();
main(null);
}
}
}

//新規登録
class torokuC{
public static void toroku(){
Scanner stdIn=new Scanner(System.in);
stdIn.useDelimiter("\r\n"); //Scannerで読み込む時、区切りを"空白"から"改行"へ変更
gcheckC gc=new gcheckC();
ycheckC yc=new ycheckC();
//登録内容入力
System.out.println();
System.out.println("新規登録する内容を入力してください。");
System.out.print("学番:");
gc.ga=stdIn.next();
System.out.print("氏名:");
String na=stdIn.next();
System.out.print("生年月日(YYYYMMDD):");
yc.ymd=stdIn.next();
//登録内容の確認
System.out.println();
System.out.println("登録内容の確認");
System.out.println("学番:"+gc.ga);
System.out.println("氏名:"+na);
yc.yscheck(); //生年月日の確認表示
while(true){
System.out.print("登録内容に間違いはないですか(1:はい 2:いいえ):");
int mt=stdIn.nextInt();
switch(mt){
case 1:
//学番エラーチェック
try{
gc.gacheck(); //学番チェッククラスへ
if(gc.h==1){
throw new Exception(); //エラーへ
}
gc.gscheck(); //学番チェッククラスへ
if(gc.h==1){
throw new Exception(); //エラーへ
}
gc.gycheck(); //学番チェッククラスへ
if(gc.h==1){
throw new Exception(); //エラーへ
}
}catch(Exception e){
System.out.print("入力しなおしますか(1:はい 2:いいえ):");
int n=stdIn.nextInt();
switch(n){
case 1:
toroku(); //新規登録へ
break;
case 2:
DB2.main(null); //メニューへ
System.out.println();
break;
}
}
//生年月日エラーチェック
if(yc.a==1){
System.out.println("生年月日が正しく入力されていません。");
System.out.print("入力しなおしますか(1:はい 2:いいえ):");
int n=stdIn.nextInt();
switch(n){
case 1:
toroku(); //新規登録へ
break;
case 2:
DB2.main(null); //メニューへ
System.out.println();
break;
}
}
yc.yacheck();
yc.ymcheck(); //生年月日チェッククラスへ
if(yc.h==1){
System.out.print("入力しなおしますか(1:はい 2:いいえ):");
int n=stdIn.nextInt();
switch(n){
case 1:
toroku(); //新規登録へ
break;
case 2:
DB2.main(null); //メニューへ
System.out.println();
break;
}
}
int yyy=Integer.parseInt(yc.ymd);
//↓mysql登録文
Connection con=null;
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/javadb","workusr","workpass"); //ログイン
Statement stm=con.createStatement();
String sql="insert into gakusei values('"+gc.g+"','"+na+"','"+yyy+"')"; //SQL文 (登録
int result=stm.executeUpdate(sql);
}catch(Exception e){
}finally{
if(con!=null){
try{
con.close();
}catch(SQLException e){
System.out.println("MySQLのクローズに失敗しました。");
}
}
}
//↑
if(gc.h<1){
System.out.println("登録しました。");
}
System.out.println();
System.out.print("お選びください(1:メニュー 2:終了):");
int e=stdIn.nextInt();
System.out.println();
switch(e){
case 1:
DB2.main(null);
break;
case 2:
endC.end();
break;
}
break;
case 2:
toroku();
System.out.println();
break;
default:
System.out.println("入力が間違っています。");
System.out.println();
continue;
}
break;
}
}
}

//個別表示
class kobetuC{
public static void kobetu(){
Scanner stdIn=new Scanner(System.in);
stdIn.useDelimiter("\r\n");
gcheckC gc=new gcheckC();
ks b=new ks();
System.out.println();
System.out.println("検索する学生番号を入力してください。");
System.out.print("学番:");
gc.ga=stdIn.next();
gc.gacheck();
gc.gscheck();
gc.gncheck();
Connection con=null;
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/javadb","workusr","workpass"); //ログイン
Statement stm = con.createStatement();
String sql = "select * from gakusei where gakuban='"+gc.g+"'";
ResultSet rs = stm.executeQuery(sql);
while(rs.next()){
b.gakuban = rs.getInt("gakuban");
b.name = rs.getString("name");
b.birthday = rs.getString("birthday");
System.out.println("検索結果 -> " + b.gakuban + ":" + b.name + ":" +b.birthday);
System.out.println();
System.out.print("お選びください(1:更新 2:削除3:メニュー4:終了):");
int w=stdIn.nextInt();
System.out.println();
switch(w){
case 1:
b.kousin();
break;
case 2:
b.sakuzyo();
break;
case 3:
DB2.main(null);
break;
case 4:
endC.end();
break;
}
}
}catch(Exception e){
System.out.println("入力内容に間違いがあります。");
System.out.print("入力しなおしますか(1:はい 2:いいえ):");
int n=stdIn.nextInt();
switch(n){
case 1:
kobetuC.kobetu();
break;
case 2:
DB2.main(null);
break;
}
}
}
}

//一覧表示
class listC{
public static void list(){
System.out.println();
Scanner stdIn=new Scanner(System.in);
Connection con=null;
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/javadb","workusr","workpass");
Statement stm=con.createStatement();
String sql="select * from gakusei";
ResultSet rs=stm.executeQuery(sql);
while(rs.next()){
int gakusei =rs.getInt("gakuban");
String name =rs.getString("name");
String birthday =rs.getString("birthday");
System.out.println("学番:"+gakusei+"\t 名前:"+name+"\t 生年月日:"+birthday);
}
}catch(Exception e){
}finally{
if(con!=null){
try{
con.close();
}catch(SQLException e){
System.out.print("MYSQLのクローズに失敗しマスター");
}
}
}
//削除
while(true){
System.out.print("データを削除しますか(はい:1 いいえ:2):");
int hoh=stdIn.nextInt();
if(hoh==1){
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/javadb","workusr","workpass");
Statement stm=con.createStatement();
String sql="delete from gakusei";
int num = stm.executeUpdate(sql);
System.out.println("データを削除しました。");
}catch(Exception e){
}
}else if(hoh==2){
System.out.println();
DB2.main(null);
break;
}else{
System.out.println("入力が間違っています。");
System.out.println();
}
}
}
}

//終了
class endC{
public static void end(){
System.out.println("終了しました。");
}
}

//学番チェック
class gcheckC{
Scanner stdIn=new Scanner(System.in);
int g;
int h=0;
String ga;
void gacheck(){ //学番英数字チェック
try{
g=Integer.parseInt(ga);
}catch(Exception e){
System.out.println("英数字で入力してください。");
h=1;
}
}
void gscheck(){ //学番の桁チェック
char[] gs=ga.toCharArray();
if(5!=gs.length){
System.out.println("学番が5桁ではありません。");
h=1;
}
}
void gycheck(){ //学番既存チェック
Connection con=null;
try{
con=DriverManager.getConnection("jdbc:mysql://localhost:3306/javadb","workusr","workpass"); //ログイン
Statement stm=con.createStatement();
String sql="select * from gakusei where gakuban='"+g+"'"; //ffSQL文
ResultSet rsa=stm.executeQuery(sql);
while(rsa.next()){
int gakub=rsa.getInt("gakuban");
if(g==gakub){
System.out.println("その学番は既に存在します。");
h=1;
}
}
}catch(Exception e){

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

lib

2016/03/18 13:07 編集

うーんその前に指摘したい人が逃げ出しちゃう気がするので、パスワードなどのセキュリティ情報は外したうえで、経緯とポイントと確認したい内容、あと環境情報の補足に絞っていただけますか?回答つかない可能性があります。
lib

2016/03/18 13:06

もうひとつ 学校の課題か!?これは。
nob777

2016/03/18 13:43

質問の主旨を追記願います。
heignamerican

2016/03/18 14:09

(仮にまっとうな指摘が入ったとして) 前半後半どちらでやるつもりだったのでしょうか? 情報処理技術を学ぶ上では、一元管理というのはとても重要な概念です。 議論も前半戦後半戦に分けますかね?
guest

回答2

0

import java.sql.*;

package を * で指定しないほうがよいです。
eclipse や netbeans などを使えば、プログラム中で参照しているものだけを過不足なく個別指定するようにできます。

より完璧にしたいなら、次のことも必要と思います。

  • junit などを利用して、テストコードを書く。
    そして、そのテストを実行したときのカバレーッジが、それなりのカバー率を達成すること。
  • javadoc コメントを書いて、それなりの API ドキュメントが生成されるようにする。

github だと、テストコードの実行、カバレッジのレポート生成ができたりします。
java ではなく ruby ですが、自作の例が以下にあります。
https://github.com/katoy/ruby-tic-tac-toe
README.md の先頭部にあるボタンのクリックで テストコードの結果やカバレッジをみることができるようになってます。

それなりの行数のコードになる場合は、teratail に markdonw でコードを貼り付けないで、github などにコードを置くほうがよいと思います。

投稿2016/03/18 15:36

katoy

総合スコア22324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

まずはコーディング規約に基づいて、広く読んでもらえるコードにしましょう
ドキュメントとしては既にメンテナンスされていませんが、元々Javaはコーディング規約を言語仕様として持つ言語です。

参考=>GoogleのJavaコーディング規約

投稿2016/04/04 06:07

MasafumiOkamoto

総合スコア254

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問