A. まず、プログラムが起動し、ユーザーが選択するため、以下の内容が表示されます。
1.ログイン
2.登録
3.記事のページに移動します
コメントページを入力します
5.日記ページに移動します
6.コレクション・ページに移動します
アカウントの7.キャンセル
8.プログラム全体を終了します
II。機能を実装する必要があります。
1.登録機能要件:
ファイルに記録する。ユーザ名とパスワードを入力します。
。Bユーザーの要件:あなたは文字や数字、特殊文字が含まれていると、ユーザー名が一意であることを確認することができないだけ含めることができます。
。Cパスワード要件:6〜14文字の長さ。
D。ログは3倍以上に成功して全体のプログラムを終了していません。
機能要件にログインします。
ログイン認証するためのユーザー名とパスワードを入力する。ユーザー。
。Bログインが成功した後、あなたは3--7オプションにのみアクセスすることができ、ログオンまたは失敗したログインしない場合3:00訪れ--7オプションは、ログインするためにジャンプするアクセスを許可していません。(グローバル変数を変更します)
3.記事ページの要件に移動します:
記事ページxxを入力するように求めようこそ。(xxは現在ログインしているユーザー名です)
4.コメントページ要求を入力します。
Welcomeページのxxはコメントを入力するように要求しました。
日記のページを入力する5.要件:
日記ページxxを入力するように求めようこそ。
6.ページのコレクションの要件に移動します:
ようこそページxxは、コレクションを入力するように要求しました。
7.キャンセルアカウントの要件:
全体のプログラムを終了しますが、状態は未登録状態にログインしていない(3〜7のオプションにアクセスするには再度ログインする必要があります)。
8.プログラム全体の要件を終了します。
これは、プロセスの終わりです。
4. 3つのユーザーログインとを達成するために、コードを使用してロックする(行うように勧告を行うために、多くの時間を行うに選出されました)
プロジェクト分析:
最初のプログラムは、ユーザーが選択することは、以下の内容が表示され、起動します:
1.登録
2.ログイン
ユーザがログインを選択し、最初のユーザ名が存在しない存在を決定USERINFO.TXTテーブルに登録することができない場合。
B。登録ユーザー名は、ユーザー名とパスワードに存在しない場合は、ファイルUSERINFO.TXTに書き込まれます
Cと一致している。ユーザーアカウントとパスワードが入力した判断が格納されているときに、ユーザのログインを選択しUSERINFO.TXT
D。同じユーザー名とパスワードのサイクルの終了時に、成功にログオンするユーザーに要求します!
名前がロックされた後、管理者に連絡して!とループを終了E。ユーザー名とパスワードが矛盾している、そして3回だけログオンする機会は、ユーザーが3回要求されます
ロックされている場合は、ユーザー名出力3回、アカウントが再びプログラムを実行している。ログインロックアウトは、ユーザー名を要求し続け、F。、管理者に連絡して!
D。ログは3倍以上に成功して全体のプログラムを終了していません。
機能要件にログインします。
ログイン認証するためのユーザー名とパスワードを入力する。ユーザー。
。Bログインが成功した後、あなたは3--7オプションにのみアクセスすることができ、ログオンまたは失敗したログインしない場合3:00訪れ--7オプションは、ログインするためにジャンプするアクセスを許可していません。(グローバル変数を変更します)
名前、PWD、フラグに= []、[]、[]
DEF FUNC()
:Fなどのオープン( "userinfo.txt.txt"、 "W")と
I用範囲(LEN(名)):
F.書く(名前[I] + ":" + PWD [I] + ":" +フラグに[I] + '\ N-')
LST1 = "" "
1.ログイン
2.登録
8.全体のプログラムを終了します
" " 「
LST2 =」「」
3.記事のページを入力してください
。4.コメントを入力してページ
移動日記のページへ5.
6.ゴーお気に入りページに
アカウントの7.キャンセル
8.全体のプログラムを終了しました
。「」 "
= "" K
フラグ=偽
":Fとして開く(" userinfo.txt.txt)
iについてf.readlinesで():
lenの場合(I)> 0:
A、B、C = i.split( ": ")
name.append(A)
pwd.append(B)
flag.append(c.strip("の\ n "))
1つつ:
一方フラグ:
印刷(LST2)
破る
:他の
プリント(LST1)
(NUM =入力"请输入序号")
であればNUM == "1":
= 3カウント
(名=入力を"请输入账号: ")
、一方、カウント> 0:
もし名で名前:
もしフラグ[name.index(_name)] ==" 1 ":
PWD =入力("请输入密码")
場合PWD == PWD [name.index(_name)]:
印刷("!成功登陆」)
フラッグ=真
のk = 名前
BREAK
:他の
印刷(「間違ったパスワード」)
- = 1 COUNT
:他に
印刷(「ユーザー名は、管理者に連絡してロックされている」)
BREAK
他:
印刷(「ユーザ名が存在しません」)
BREAK
他:
旗を[name.index (_name)] = "0"
印刷は、( "ユーザー名は、管理者に連絡してロックされている")
:elifのNUMは"2" ==
ながら、1:
名 =入力( "自分のユーザー名を入力してください:")
IF名 .isalnumを( ):
PWD=入力( "あなたのパスワードを入力してください:")
IF 16> LEN(PWD)> 5:
名前IF:ない名前に
name.append(名_)
pwd.append(pwd_)
flag.append( "1")
を印刷(「登録成功」)は、
BREAK
他:
(「既存のユーザー名は、再入力してください」)を印刷
他:
印刷(「長さは6〜14文字の間でなければなりません」)
他:
プリント(「不正なユーザ名」)
elif num == "3" and Flag:
print(f"欢迎{k}进入文章页面")
elif num == "4" and Flag:
print(f"欢迎{k}进入评论页面")
elif num == "5" and Flag:
print(f"欢迎{k}进入日记页面")
elif num == "6" and Flag:
print(f"欢迎{k}进入收藏页面")
elif num=='7'and Flag:
func()
Flag = False
print("注销成功")
elif num == "8":
func()
print("退出成功")
exit()
else:
print("未登陆或字符错误")