質問編集履歴
1
ー
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,130 +1,4 @@
|
|
1
|
-
c#の穴埋め問題です。
|
2
|
-
問題が
|
3
|
-
【以下のようにログイン可能なユーザーとパスワードを管理する「パスワードファイル(passwd.txt)」を準備した.このファイルのデータは,1 ⾏毎に,「ユーザー識別子(ID)」と「パスワード(PW)」を「:(コロン)」で繋いで「ID:PW」の形式でデータが並んでいる.このパスワードファイルを読み込んで,ID と PW でログイン可能かどうかを調べるプログラムを作成し,以下のような実⾏結果を得た.】
|
4
|
-
です。
|
5
1
|
|
6
|
-
|
2
|
+
ーーーーーーーーーーーーーーーーーー)ーー)ねね)ね))ーーーーーーーーーーーーーー
|
7
3
|
|
8
|
-
【メインメソッドのコード】
|
9
|
-
|
10
|
-
using OOP_Rep12; // ← 自分のプロジェクト名(namespace 名)
|
11
|
-
|
12
|
-
|
13
|
-
// PassWordManagement クラスのインスタンス化
|
14
|
-
|
15
|
-
// パスワードファイルの読み込みに成功したら,
|
16
|
-
|
17
|
-
// 繰り返し文で3~5回程度ログインのテストを行う.
|
18
|
-
|
19
|
-
// ※ ログインテストは, 成功と失敗を適当に混ぜる.(キーボード入力)
|
20
|
-
|
21
|
-
|
22
|
-
Console.WriteLine("\nパスワードファイルを読み込みます.");
|
23
|
-
|
24
|
-
// パスワードファイル(passwd.txt)の場所は, 自分で使いやすい場所を定める.
|
25
|
-
|
26
|
-
if ( ) // ファイル名を指定して LoadPWL() を呼ぶ.
|
27
|
-
|
28
|
-
|
4
|
+
!
|
29
|
-
|
30
|
-
// 繰り返し文を利用してログインテストを3~5回行う.
|
31
|
-
}
|
32
|
-
|
33
|
-
|
34
|
-
【PassWordクラスのコード】
|
35
|
-
|
36
|
-
namespace OOP_Rep12
|
37
|
-
{
|
38
|
-
internal class PassWord
|
39
|
-
|
40
|
-
// ID と PW の組み合わせを管理するクラス
|
41
|
-
{
|
42
|
-
|
43
|
-
// ID を自動実装プロパティで準備
|
44
|
-
// PW を自動実装プロパティで準備
|
45
|
-
|
46
|
-
// コンストラクタ
|
47
|
-
public PassWord(string? id, string? pw)
|
48
|
-
{
|
49
|
-
|
50
|
-
}
|
51
|
-
|
52
|
-
// ID と PW の確認
|
53
|
-
public bool MatchIDPW(string? id, string? pw)
|
54
|
-
{
|
55
|
-
|
56
|
-
// 与えられた id と pw が正しい組み合わせの場合は true を返し, それ以外は false を返す.
|
57
|
-
if( )
|
58
|
-
{
|
59
|
-
|
60
|
-
}
|
61
|
-
else
|
62
|
-
{
|
63
|
-
}
|
64
|
-
}
|
65
|
-
}
|
66
|
-
|
67
|
-
}
|
68
|
-
|
69
|
-
|
70
|
-
【PassWordManagementクラスのコード】
|
71
|
-
|
72
|
-
namespace OOP_Rep12
|
73
|
-
{
|
74
|
-
internal class PassWordManagement
|
75
|
-
|
76
|
-
// PassWord クラスの List を管理するクラス
|
77
|
-
{
|
78
|
-
|
79
|
-
// PassWord クラスの List<T> をインスタンス化
|
80
|
-
// filename で指定されたファイルから ID と PW の情報を読み込む
|
81
|
-
public bool LoadPWL(string filename)
|
82
|
-
{
|
83
|
-
|
84
|
-
// try {} catch() {} でエラー対策を施す
|
85
|
-
try
|
86
|
-
{
|
87
|
-
|
88
|
-
// パスワードファイルを開いて ID と PW の組を読み込む.
|
89
|
-
|
90
|
-
// ※ パスワードファイルのパスやファイル名は filename で指定する.
|
91
|
-
|
92
|
-
// ※ ID と PW は「ID:PW」の形式で1行に記載されている.
|
93
|
-
|
94
|
-
// ※ ID と PW を分割して PassWord クラスのインスタンスを生成し, List に追加
|
95
|
-
|
96
|
-
// ※ ↑文字列の分割(Split())の使いかを自分で調べる
|
97
|
-
}
|
98
|
-
catch(Exception e)
|
99
|
-
{
|
100
|
-
|
101
|
-
// ファイルオープンに失敗した場合の処理
|
102
|
-
}
|
103
|
-
}
|
104
|
-
public bool CheckLogin()
|
105
|
-
{
|
106
|
-
|
107
|
-
// id をキーボード入力
|
108
|
-
Console.Write("id ? > ");
|
109
|
-
string? id = Console.ReadLine();
|
110
|
-
|
111
|
-
// pw をキーボード入力
|
112
|
-
Console.Write("pw ? > ");
|
113
|
-
string? pw = Console.ReadLine();
|
114
|
-
// 入力された id と pw でログイン可能か調べる
|
115
|
-
bool ok_flag = false;
|
116
|
-
foreach(PassWord idpw in pwl)
|
117
|
-
{
|
118
|
-
if (idpw.MatchIDPW(id, pw))
|
119
|
-
{
|
120
|
-
ok_flag = true;
|
121
|
-
break;
|
122
|
-
}
|
123
|
-
}
|
124
|
-
return ok_flag;
|
125
|
-
}
|
126
|
-
}
|
127
|
-
}
|
128
|
-
|
129
|
-
|
130
|
-
実行結果とパスワードファイル(passwd.txt)は写真の通りになっています。![イメージ説明](https://ddjkaamml8q8x.cloudfront.net/questions/2022-07-01/a83d89c5-e5f0-4db4-a61e-74385ef14d84.png)
|