次のようにユーザー入力/ログインがあります:
login:- write('username: '), read(User), nl, write('password: '), read(Pass).
ユーザー名とパスワードを含むデータベースがあります。コードに示すように、検索述語を使用してすべての行をリストとして取得します。
find(R):-findall(Row, rs('SELECT name FROM patient where name=\'James\'', Row), R).
?- find(R).
R = [row('James'), row('James'), row('James'), row('James')].
read() からのユーザー入力を使用して、そのユーザーがデータベースにいるかどうかを確認する方法はありますか?
member(User, R)を試してみましたが、うまくいきません。
プロローグは、この種のもの(ログイン/登録)に最適な言語ではないことを知っています。私がこれを行っている理由は、swi-prolog でヘルスケア エキスパート システムに取り組んでおり、患者のログインと登録が必要だからです。
これができる理由はありますか?私はプロローグが初めてなので、多くのばかげたことに行き詰まっています。
ありがとう!
............. @gusbroあなたが私に言ったように、私はmember(row(User)で試しました:
check:-findall(Row, rs('SELECT name FROM patient where name=\'James\'', Row), R),
read(User), member(row(User), R);
write('wrong username!').
しかし、私が何を書いても常に同じになります:
?- check.
|: Bla.
true ;
wrong username!
true.
?- check.
|: James.
true ;
wrong username!
true.