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

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

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

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

Q&A

解決済

3回答

26142閲覧

会員情報システム(Java)での作り方

091415

総合スコア10

Java

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

0グッド

1クリップ

投稿2016/08/19 02:12

編集2016/08/19 05:03

javaで会員情報システムのようなものを作りたいです。
下記の実行結果(コマンドプロンプトで実行)になるような、登録プログラムを作成したいのですが、作成方法が分かりませんので、教えて頂けると助かります。宜しくお願いします。

※回答の際は、コンパイルして確認したいと思っておりますので、お手数ですがプログラムを全て記述して頂けると非常に助かります。

ちなみにプログラムの具体的な内容ですが、
「キーボードからメニュー番号1を選択しEnter ⇒ 名前を入力しEnter ⇒ 生年月日を入力しEnter ⇒ 電話番号を入力しEnter ⇒ システム内に保存され、今まで入力した内容と会員番号(自動採番)が付加された状態の一覧が表示される」プログラムです。
途中まで作成したのプログラムをのせます。

◆メニュー番号を選択してください。
1.登録 2.照会 3.検索 4.削除 5.保存 6.読込 8.HELP 9.終了
選択メニュー番号>1
■名前を入力してください。
○○○○
■生年月日を入力してください。
2012/12/30
■電話番号を入力してください。
090○○○○○○○○
会員情報を表示します
<1人目>
[会員番号]JAVA0001
[名前]○○○○
[生年月日]2012/12/30
[電話番号]090000000

###前提・実現したいこと
登録の1を選択したら、名前・生年月日・電話番号を入力するところまではできたのですが、そこからそれらの情報を登録する方法がわかりません。
TreeMapなどを使ってみたいのですが、調べてもなかなかうまくいきませんでした。
###発生している問題・エラーメッセージ

エラーメッセージ

###該当のソースコード

//package Member; //import java.util.SortedMap; //import java.util.TreeMap; import java.io.*; public class MemberSystem { private BufferedReader br; //private SortedMap<String,MemberSystem> mbrList = new TreeMap<String,MemberSystem>(); //mbrList.get(TreeMap); public MemberSystem() { br = new BufferedReader(new InputStreamReader(System.in)); } public static void main(String[] args) { MemberSystem ms; ms = new MemberSystem(); String str = ""; boolean end = false; while (!end) { System.out.println("◆メニュー番号を選択してください"); System.out.println("1:登録 2:照会 3:検索 4:削除 5:保存 6:読込 8:HELP 9:終了"); str = ms.sentaku(); int n = Integer.parseInt(str);; switch (n) { case 1: System.out.println("会員情報を登録します。"); ms.show(); System.out.println("会員登録が完了しました。"); break; case 2: System.out.println("会員情報を照会します"); System.out.println("表示する会員のIDを入力してください。指定なしで全件表示。例)DGS0001>"); break; case 3: System.out.println("会員情報を検索します。"); System.out.println("表示する会員の名前を入力してください。指定なしで全件表示。例)佐藤花子>"); break; case 4: System.out.println("会員情報を削除します。"); System.out.println("削除する会員のIDを入力してください。例)DGS0001>"); break; case 5: break; case 6: System.out.println("会員管理システムの使い方を表示します。"); break; case 8: break; case 9: System.out.println("####会員管理システムを終了します。お疲れ様でした。####"); end = true; break; default: System.out.println("1~9の範囲でもう一度番号入力をして下さい。"); break; } } } public void show(){ System.out.println("◆名前を入力して下さい 例)佐藤花子"); String name = sentaku(); System.out.println("◆生年月日を入力して下さい 例)19960130"); String birth = sentaku(); System.out.println("◆電話番号を入力して下さい 例)0363925367"); String tel = sentaku(); } public String sentaku(){ String str = ""; try{ str = br.readLine(); } catch(IOException e){ System.out.println("入力が正しくありません。"); } return str; } }

###試したこと
課題に対してアプローチしたことを記載してください
Mapなども使おうと思っているのですが、全く分からないので教えていただけると助かります。

###補足情報(言語/FW/ツール等のバージョンなど)
java

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

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

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

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

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

moonphase

2016/08/19 03:39

コードはインデント付きにして```で囲って貰えますか?
moonphase

2016/08/19 03:51

シングルクォート(''')ではなく、バッククォート(```)です。
091415

2016/08/19 04:00

ありがとうございます。 訂正しました。
ozwk

2016/08/19 04:15

登録だけでいいんですよね?
091415

2016/08/19 04:25

できれば1~6まで教えていただきたいです。
guest

回答3

0

ベストアンサー

・面倒なので例外等は適当
・mapを利用
・動けばいいんじゃないの精神で実装。保守性も何も考えてない。

Java

1import java.io.BufferedReader; 2import java.io.BufferedWriter; 3import java.io.File; 4import java.io.FileNotFoundException; 5import java.io.FileReader; 6import java.io.FileWriter; 7import java.io.IOException; 8import java.io.InputStreamReader; 9import java.io.PrintWriter; 10import java.util.HashMap; 11import java.util.Map; 12 13class MemberSystem { 14 15 Map<String, Member> memberMap; 16 private static long id = 0; 17 18 public MemberSystem() { 19 memberMap = new HashMap<String, Member>(); 20 } 21 22 public static void main(String[] args) { 23 MemberSystem ms = new MemberSystem(); 24 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 25 26 String str = ""; 27 boolean end = false; 28 try { 29 while (!end) { 30 System.out.println("◆メニュー番号を選択してください"); 31 System.out.println("1:登録 2:照会 3:検索 4:削除 5:保存 6:読込 8:HELP 9:終了"); 32 str = br.readLine(); 33 int n = Integer.parseInt(str); 34 System.out.println("メニュー番号> " + n); 35 switch (n) { 36 case 1: 37 System.out.println("会員情報を登録します。"); 38 ms.entry(br); 39 System.out.println("会員登録が完了しました。"); 40 break; 41 case 2: 42 System.out.println("会員情報を照会します"); 43 ms.inquiry(br); 44 break; 45 case 3: 46 System.out.println("会員情報を検索します。"); 47 ms.search(br); 48 break; 49 case 4: 50 System.out.println("会員情報を削除します。"); 51 ms.delete(br); 52 break; 53 case 5: 54 ms.save(); 55 break; 56 case 6: 57 ms.read(); 58 break; 59 case 8: 60 System.out.println("会員管理システムの使い方を表示します。"); 61 break; 62 case 9: 63 System.out.println("####会員管理システムを終了します。お疲れ様でした。####"); 64 end = true; 65 break; 66 default: 67 System.out.println("1~9の範囲でもう一度番号入力をして下さい。"); 68 break; 69 } 70 } 71 } catch (IOException e) { 72 System.out.println(e); 73 } 74 } 75 76 /** 77 * 登録 78 * @param br 79 * @throws IOException 80 */ 81 void entry(BufferedReader br) throws IOException { 82 Member member = new Member(); 83 System.out.println("■名前を入力して下さい 例)佐藤花子"); 84 member.setName(br.readLine()); 85 86 System.out.println("■生年月日を入力して下さい 例)19960130"); 87 member.setBirth(br.readLine()); 88 89 System.out.println("■電話番号を入力して下さい 例)0363925367"); 90 member.setTel(br.readLine()); 91 92 String entryId = String.format("JAVA%04d", ++id); 93 memberMap.put(entryId, member); 94 allShow(); 95 } 96 97 /** 98 * 削除 99 * @param br 100 * @throws IOException 101 */ 102 void delete(BufferedReader br) throws IOException { 103 System.out.println("削除する会員のIDを入力してください。例)DGS0001>"); 104 while (true) { 105 String targetId = br.readLine(); 106 if (targetId.isEmpty()) { 107 System.out.println("削除する会員のIDを入力してください。例)DGS0001>"); 108 continue; 109 } 110 if (!memberMap.containsKey(targetId)) { 111 System.out.println(targetId + "は存在しないIDです。"); 112 break; 113 } 114 for (String key : memberMap.keySet()) { 115 if (key.equals(targetId)) { 116 memberMap.remove(key); 117 System.out.println(key + "を削除しました。"); 118 break; 119 } 120 } 121 break; 122 } 123 } 124 125 /** 126 * 照会 127 * @param br 128 * @throws IOException 129 */ 130 void inquiry(BufferedReader br) throws IOException { 131 System.out.println("表示する会員のIDを入力してください。指定なしで全件表示。例)DGS0001>"); 132 String input = br.readLine(); 133 if (input.isEmpty()) { 134 // 入力なしの場合は全件表示 135 allShow(); 136 } else { 137 Member member = memberMap.get(input); 138 if (member == null) { 139 System.out.println(input + "は存在しないIDです"); 140 } else { 141 System.out.println("[会員番号]" + input); 142 System.out.println("[名前]" + member.getName()); 143 System.out.println("[背年月日]" + " : " + member.getBirth()); 144 System.out.println("[電話番号]" + " : " + member.getTel()); 145 System.out.println(); 146 } 147 } 148 149 } 150 151 /** 152 * 検索 153 * @param br 154 * @throws IOException 155 */ 156 void search(BufferedReader br) throws IOException { 157 System.out.println("表示する会員の名前を入力してください。指定なしで全件表示。例)佐藤花子>"); 158 String input = br.readLine(); 159 if (input.isEmpty()) { 160 // 入力なしの場合は全件表示 161 allShow(); 162 } else { 163 for (Map.Entry<String, Member> e : memberMap.entrySet()) { 164 if (e.getValue().getName().equals(input)) { 165 System.out.println("[会員番号]" + e.getKey()); 166 System.out.println("[名前]" + e.getValue().getName()); 167 System.out.println("[背年月日]" + " : " + e.getValue().getBirth()); 168 System.out.println("[電話番号]" + " : " + e.getValue().getTel()); 169 System.out.println(); 170 } 171 } 172 } 173 } 174 175 /** 176 * すべてのデータ取得 177 * @param br 178 * @throws IOException 179 */ 180 void allShow() { 181 for (Map.Entry<String, Member> e : memberMap.entrySet()) { 182 System.out.println("[会員番号]" + e.getKey()); 183 System.out.println("[名前]" + " : " + e.getValue().getName()); 184 System.out.println("[背年月日]" + " : " + e.getValue().getBirth()); 185 System.out.println("[電話番号]" + " : " + e.getValue().getTel()); 186 System.out.println(); 187 } 188 } 189 190 /** 191 * 保存 192 */ 193 void save() { 194 try { 195 File file = new File(new File(".").getAbsoluteFile().getParent() + "\\save.txt"); 196 file.createNewFile(); 197 PrintWriter pw = new PrintWriter(new BufferedWriter(new FileWriter(file))); 198 199 for (Map.Entry<String, Member> e : memberMap.entrySet()) { 200 pw.print(e.getKey() + ","); 201 pw.print(e.getValue().getName() + ","); 202 pw.print(e.getValue().getBirth() + ","); 203 pw.println(e.getValue().getTel()); 204 } 205 206 pw.close(); 207 208 System.out.println("保存が完了しました。"); 209 210 } catch (IOException ex) { 211 // 例外時処理 212 ex.printStackTrace(); 213 } 214 } 215 216 /** 217 * 読込 218 */ 219 void read() { 220 try { 221 File file = new File(new File(".").getAbsoluteFile().getParent() + "\\save.txt"); 222 223 if (file.exists()) { 224 if (file.isFile() && file.canRead()) { 225 BufferedReader br = new BufferedReader(new FileReader(file)); 226 227 String str; 228 memberMap.clear(); 229 while ((str = br.readLine()) != null) { 230 String[] arr = str.split(","); 231 Member member = new Member(); 232 member.setName(arr[1]); 233 member.setBirth(arr[2]); 234 member.setTel(arr[3]); 235 memberMap.put(arr[0], member); 236 } 237 238 br.close(); 239 240 System.out.println("読込が完了しました。"); 241 } else { 242 System.out.println("ファイルが読み込めません"); 243 } 244 } else { 245 System.out.println("ファイルがありません"); 246 } 247 248 } catch (FileNotFoundException e) { 249 System.out.println(e); 250 } catch (IOException e) { 251 System.out.println(e); 252 } 253 } 254} 255 256class Member { 257 private String name; //名前 258 private String birth; //誕生日 259 private String tel; //電話番号 260 261 public String getName() { 262 return name; 263 } 264 public void setName(String name) { 265 this.name = name; 266 } 267 public String getBirth() { 268 return birth; 269 } 270 public void setBirth(String birth) { 271 this.birth = birth; 272 } 273 public String getTel() { 274 return tel; 275 } 276 public void setTel(String tel) { 277 this.tel = tel; 278 } 279}

投稿2016/08/19 05:58

kentei_syunrai

総合スコア946

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

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

091415

2016/08/20 00:33

返信遅れて申し訳ございません。 ご回答ありがとうございます。 自分でもMapについての勉強が足りないと思っていたので、ぜひ参考にさせていただきます。 Mapを使って理解しながら作り直してみます!
guest

0

動けばいいレベルで作ってるので、細かい部分は質問者様で修正してください。
プログラムの説明は特にしません。不明点はGoogle先生に聞いてください。

Java

1//package Member; 2import java.util.SortedMap; 3import java.util.TreeMap; 4import java.util.Map; 5import java.io.*; 6 7class MemberSystem implements Serializable 8{ 9 private static final long serialVersionUID = 1L; 10 11 private static SortedMap<String,MemberSystem> mbrList = new TreeMap<String,MemberSystem>(); 12 13 static final String MEMBER_FORMAT = "JAVA%04d"; 14 static final String MEMBER_FILE = "member.dat"; 15 16 private String no; 17 private String name; 18 private String birth; 19 private String tel; 20 21 public MemberSystem() { 22 } 23 24 public static void main(String[] args) 25 { 26 BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 27 28 String str = ""; 29 boolean end = false; 30 try { 31 while (!end) { 32 System.out.println("◆メニュー番号を選択してください"); 33 System.out.println("1:登録 2:照会 3:検索 4:削除 5:保存 6:読込 8:HELP 9:終了"); 34 str = br.readLine(); 35 int n = Integer.parseInt(str); 36 System.out.println("メニュー番号>"); 37 switch (n) { 38 case 1: 39 System.out.println("会員情報を登録します。"); 40 add_member(br); 41 break; 42 case 2: 43 System.out.println("会員情報を照会します"); 44 query_member(br); 45 break; 46 case 3: 47 System.out.println("会員情報を検索します。"); 48 search_member(br); 49 break; 50 case 4: 51 System.out.println("会員情報を削除します。"); 52 del_member(br); 53 break; 54 case 5: 55 System.out.println("会員情報を保存します。"); 56 save_member(); 57 break; 58 case 6: 59 System.out.println("会員情報を読み込みます。"); 60 load_member(); 61 break; 62 case 8: 63 System.out.println("会員管理システムの使い方を表示します。"); 64 break; 65 case 9: 66 System.out.println("####会員管理システムを終了します。お疲れ様でした。####"); 67 end = true; 68 break; 69 default: 70 System.out.println("1~9の範囲でもう一度番号入力をして下さい。"); 71 break; 72 } 73 } 74 } 75 catch (IOException e) { 76 e.printStackTrace(); 77 } 78 catch (Exception e) { 79 e.printStackTrace(); 80 } 81 } 82 83 static void add_member(BufferedReader br) throws IOException { 84 try { 85 System.out.println("■名前を入力して下さい 例)佐藤花子"); 86 String name = br.readLine(); 87 88 System.out.println("■生年月日を入力して下さい 例)19960130"); 89 String birth = br.readLine(); 90 91 System.out.println("■電話番号を入力して下さい 例)0363925367"); 92 String tel = br.readLine(); 93 94 MemberSystem mbr = new MemberSystem(); 95 mbr.no = String.format(MEMBER_FORMAT, mbrList.values().size() + 1); 96 mbr.name = name; 97 mbr.birth = birth; 98 mbr.tel = tel; 99 100 mbrList.put(mbr.no, mbr); 101 System.out.println("会員登録が完了しました。"); 102 } 103 catch (IOException e) { 104 throw e; 105 } 106 } 107 108 static void del_member(BufferedReader br) throws IOException { 109 try { 110 System.out.println("削除する会員のIDを入力してください。例)DGS0001>"); 111 String no = br.readLine(); 112 MemberSystem mbr = mbrList.remove(no); 113 if (null == mbr) { 114 System.out.println("指定した会員IDは見つかりません。"); 115 } 116 else { 117 System.out.println("削除しました。"); 118 } 119 } 120 catch (IOException e) { 121 throw e; 122 } 123 } 124 125 static void query_member(BufferedReader br) throws IOException { 126 try { 127 System.out.println("表示する会員のIDを入力してください。指定なしで全件表示。例)DGS0001>"); 128 String no = br.readLine(); 129 MemberSystem mbr = mbrList.get(no); 130 if (null == mbr) { 131 System.out.println("指定した会員IDは見つかりません。"); 132 } 133 else { 134 System.out.println("会員番号: " + mbr.no); 135 System.out.println("氏名 : " + mbr.name); 136 System.out.println("生年月日: " + mbr.birth); 137 System.out.println("電話番号: " + mbr.tel); 138 } 139 } 140 catch (IOException e) { 141 throw e; 142 } 143 } 144 145 static void search_member(BufferedReader br) throws IOException { 146 try { 147 System.out.println("表示する会員の名前を入力してください。指定なしで全件表示。例)佐藤花子>"); 148 String key = br.readLine(); 149 150 if (key.length() == 0) { 151 for (Map.Entry<String,MemberSystem> entry : mbrList.entrySet()) { 152 show(entry.getValue()); 153 } 154 } 155 else { 156 for (Map.Entry<String,MemberSystem> entry : mbrList.entrySet()) { 157 if (key.equals(entry.getValue().name)) { 158 show(entry.getValue()); 159 } 160 } 161 } 162 } 163 catch (IOException e) { 164 throw e; 165 } 166 } 167 168 static void show(MemberSystem mbr) { 169 System.out.println("会員番号: " + mbr.no); 170 System.out.println("氏名 : " + mbr.name); 171 System.out.println("生年月日: " + mbr.birth); 172 System.out.println("電話番号: " + mbr.tel); 173 System.out.println("----"); 174 } 175 176 static void save_member() throws IOException { 177 try { 178 ObjectOutput out=new ObjectOutputStream(new FileOutputStream(MEMBER_FILE)); 179 out.writeObject(mbrList); 180 out.flush(); 181 out.close(); 182 System.out.println("会員情報を保存しました。"); 183 } 184 catch (IOException e) { 185 throw e; 186 } 187 } 188 189 static void load_member() throws IOException, Exception { 190 try { 191 ObjectInputStream in=new ObjectInputStream(new FileInputStream(MEMBER_FILE)); 192 mbrList = (TreeMap<String,MemberSystem>) in.readObject(); 193 in.close(); 194 System.out.println("会員情報を読み込みました。"); 195 } 196 catch (IOException e) { 197 throw e; 198 } 199 catch (Exception e) { 200 throw e; 201 } 202 } 203}

投稿2016/08/19 05:33

編集2016/08/19 05:36
moonphase

総合スコア6621

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

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

091415

2016/08/20 00:24

返信遅くなりすみません。 丁寧にご回答頂きありがとうございます。 まだまだ理解の足りない部分があるので、moonphaseさんのコードを参考にもう一度自分で作り直してみたいと思います!
guest

0

http://www.lancers.jp/
こちらのサイトだとより確実に回答が得られるかと思います。

投稿2016/08/19 04:42

yuba

総合スコア5568

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

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

091415

2016/08/19 05:05

ランサーズって質問サイトみたいな使い方もできるんですか??
退会済みユーザー

退会済みユーザー

2016/08/20 00:55

※回答の際は、コンパイルして確認したいと思っておりますので、お手数ですがプログラムを全て記述して頂けると非常に助かります。 コンパイルして使えるレベルものをくださいっていってるから そこでしょ
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.51%

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

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

質問する

関連した質問