Pythonの学生テーブル

輸入JSON 
輸入GETPASS

デフメニュー():
"" "
主功能界面
:リターン
"""
印刷( "*" * 53)
印刷( '*' + ' '* 51 + '*')
プリント(' *' + '学生マネージャーSystem'.center(51、' ')+ '*')
プリント(' * '+ '1.Logのin'.center(51、' ')+ '*')
プリント(' *' + ' 2.Register'.center(51 ' ')+ '*')
プリント(' *' + '0.Exit' .center(51 ' ')+ '*')
プリント(' *' + '' * 51 + '*')
プリント( "*" * 53)
真中:
オプション=入力( '输入选项:')
オプション== '1'の場合:
ログイン()
のelifオプション== '2':
()レジスタ
ELIFオプションを== '0':
終了()
オプション==のelif「」:
続行
他:
印刷(「入力が間違っているが、再選択してくださいアイテムを!」)

DEFログインを():
「」「
ユーザログイン
:リターン:
」「」
印刷(「*」+「ログインを開始'.center(50' ')+' * ')
F1 =オープン(' ./ rmyfile / system_info.json '' R&LT 'エンコード=' UTF-8「)
RES = f1.read()
f1.close ()
sys_info_list = json.loads(RES)
真中:
t_id =入力( 'IDを入力してください')
:t_pwd = getpass.getpass( 'パスワード')
N-におけるレンジ(LEN(sys_info_list))のために:
sys_info_list [N- IF ] [ 'ID'] == t_idとsys_info_list [N-] [ 'PWD'] == t_pwd:
ユーザ辞書情報を返す##サブメニュー(sys_info_list [N-])
他:
印刷(「該当するユーザーまたはユーザーパスワードが一致しません、再度ログインしてください」)



DEFレジスタ():
「」「
ユーザー登録
:リターン:
」「」
印刷(「*」+「開始register'.center(50、 '')+ '*')
F1 =オープン( './ rmyfile / system_info.json'、 'R&LT'、エンコード= 'UTF-8')
RES = f1.read()
f1.close()
sys_info_list = JSON。負荷(RES)
一方TRUE:
t_id =入力( 'ユーザIDを入力してください')
用のnにおける範囲(LEN(sys_info_list))
:t_id == sys_info_list [N-] [ 'ID'] IF
プリント(「ユーザIDを有します現在')。
BREAK
「==のelif t_idを'
印刷(「ユーザーIDは空にすることはできません。」)
BREAK
他:
BREAK
:INPUT =( 'ユーザー名を入力してください')t_user
ながら、真:
t_pwd = getpass.getpass( 'パスワード:')
t_pwd2 = getpass.getpass( 'パスワードの確認:')
!= t_pwd IF t_pwd2:
印刷( '矛盾パスワード')
他:
BREAK

new_info_dict = {}
new_info_dict [' ID '] = t_id
new_info_dict ['ユーザ'] = T_USER
new_info_dict [' PWD '] = t_pwd
new_info_dict ['学生「] = []
sys_info_list.append(new_info_dict)
sys_info_json = json.dumps(sys_info_list)#は、変換リスト情報形式のJSON完了するために追加
F2 =オープン( './ rmyfile / system_info.json'、 'W'、符号化= 'UTF-8')
f2.write(sys_info_json)
印刷( 'ユーザー:%s'は%t_id + '登録が成功')
f2.close()

印刷( 'オプション:0を返す/ 1を登録していき')
しばらく真:
オプション= INPUT( 'してください入力オプション:' )
オプション== '1 'IF:
レジスタ()
のelifオプション== '0':
MENU()
のelifオプション== '':
続行
:他の
印刷('。')してください再選択、誤って入力


DEFサブメニュー(teacher_dictを:辞書):
"" "
サブファンクション・インターフェース-ユーザーがログイン
:のparam teacher_dict:
リターン:
" ""
印刷( "*" * 53れる)
を印刷( '*' +( 'あなたに購入できる- %S' %teacher_dict [ 'ユーザ'])。センタ( 50、' ')+ '*')
プリント(' *' + '1.Addのstudent'.center(50'「)+ '*')
印刷( '*' + '2.Editのstudent'.center(50' ')+ '*')
プリント(' * '+ '3.Queryのstudent'.center(50'')+ '*')
印刷( '*' + '4.Delete student'.center(50' ')+ '*')
プリント(' * '+ '5.Returnのmenu'.center(50'')+ '*')
印刷( '*' + '0.Exit'.center(50、' ')+ '*')
プリント( "*" * 53)
真中:
オプション=入力('输入选项: ')
オプションの場合==' 1' :
add_student(teacher_dict)
ELIFオプション== '2':
edit_student(teacher_dict)
ELIFオプション== '3':
query_student(teacher_dict)
ELIFオプション== '4':
delete_student(teacher_dict)
のelifオプション== '5':
MENU()
オプションのelif == '0':
終了()
オプションのelif == '':
続行
他:
印刷( '入力が誤っているが、再選択してくださいアイテムを!')

DEFのadd_studentを(teacher_dict:辞書):
印刷( ' * '+'追加student'.center(50 '')+ '*')
F1 =オープン( './ rmyfile / system_info.json'、 'R&LT'、エンコード= 'UTF-8')
RES = F1。読んで()
f1.close()
ここでは、フォーマットPythonのJSON形式にsys_info_list = json.loads(RES)#コンバートテキスト、リスト
stu_name =入力( '生徒の名前を入力します。')
しばらく真:
stu_id =入力( '学生番号を入力してください:')
stu_idのIF '' ==:
続行
(LEN(teacher_dict [ '学生']))のn-でレンジ用:#学生の数は同じであってはなりません
== teacher_dictのstu_id [ '学生が。'] [N-] [ 'stuid']のIF:
印刷( '学生の数が占有され、リセット')は
破る
他:上記のサイクルは休憩を終了した場合、実行されていないこと#注意を他
BREAK

年齢=入力( '入力年齢:')
電話=入力( '電話番号を入力してください')
student_dcit = { 'stuname':stu_name、 'stuid':stu_id、 '年齢':年齢、 '電話':電話}#は、新しい学生の辞書を生成
インデックス情報リスト内t_index = sys_info_list.index(teacher_dict)#教師システム辞書情報
[ '学生' [t_index] sys_info_listを ]。(student_dcit)#を追加し、新たなシステム情報のリストを追加するために学生を
sys_info_json = JSON .dumps(sys_info_list)
F2 =オープン( './ rmyfile / system_info.json'、 'W'、エンコード= 'UTF-8')
f2.write(sys_info_json)
F2。閉じる()を使用して
印刷する( 'が正常に)(%sの学生を追加します。\ n'の%のstu_nameを)
印刷( 'オプション:1/0を返す追加していく'を)
しばらく真:
オプション= INPUT( 'してください入力オプション:')
IFオプション== '1':
add_student(sys_info_list [t_index])
のelifオプション== ' 0 ':
サブメニュー(sys_info_list [t_index])
のelifオプション==' ':
続行
他:
印刷('入力は、再選択してください間違っている\ N-。 ')
DEFのedit_student(teacher_dict:辞書):
印刷(' * '+' 'student'.center編集(50、 '')+' *)
:(')あなたのすべての生徒の情報として、次の印刷'
)[学生']のn-でレンジ(LEN(teacher_dict用'):#印刷するすべての学生
に印刷は( teacher_dict [ '学生。'] [N-])

F1 =オープン(」。/rmyfile/system_info.json」、R ''、エンコード= 'UTF-8')
RES = f1.read()
f1.close()
形式にsys_info_list = json.loads(RES)#コンバートテキストPythonのJSON形式、ここではリスト
インデックスリストでt_index = sys_info_list.index(teacher_dict)#教師辞書情報システム情報
トゥルーながら、 :
入力をedit_id =(「学生のIDを変更する必要があります入力してください:」)#は最初の学籍場合入力しない
マーク= 0を
edit_id ==「が」:
続行
のn-でレンジ用(LEN(teacher_dict [ '学生の])):
IF teacher_dict [ '学生'] [N-] [ 'stuid'] == edit_id:#が一致する学生を検索
): '名前を変更'(=入力をedit_name
'年齢を変更:'(INPUT =をedit_age)
edit_phone =入力( '電話番号を変更します')
teacher_dict [ '学生。'] [N-] [ 'stuname'] = edit_name
teacher_dict [ '学生。'] [N-] [ '年齢'] = edit_age
teacher_dict [ '学生。'] [N-] [ '電話'] = edit_phone
sys_info_list [t_index] [ '学生。'] [N-] = teacher_dict [ '学生' ] [N] .copy()#学生対応する辞書修正
マーク1 =
sys_info_json = json.dumps(sys_info_list)
F2 =オープン( './ rmyfile / system_info.json'、 'W'、エンコーディング=「UTF-8 ')
f2.write(sys_info_json)
f2.close()
印刷(' N- \成功し、学生の情報を修正する')。
BREAK
IFないマーク:
印刷('学生を変更することが存在していません(%sの)\ n「の%の edit_id)。
BREAKの
印刷( 'オプション:1)前の0」に戻す/修正していき
ながら、真:
オプション=入力( 'オプションを入力してください。')
オプションIF ==」1' :
edit_student(sys_info_list [t_index])
のelifオプション== '0':
サブメニュー(sys_info_list [t_index])
のelifオプション== '':
続行
他の:
印刷( '入力が正しくない、再選択してください。')

DEF delete_student(teacher_dict:辞書):
印刷( '*' + 'の削除student'.center(50、' ')+' * ')
を印刷('あなたのすべての学生の情報は次のとおりです。 ')
のn-でレンジ(LEN(teacher_dictのため['学生。 '])):#印刷のすべての学生の
印刷(teacher_dict ['。学生'] [N-])
F1 =オープン(' ./ rmyfile / SYSTEM_INFO。 JSON 'R' 'エンコード =' UTF-8 ')
RES = f1.read()
f1.close()
sys_info_list = json.loads(RES)#コンバートテキストPythonのJSON形式のフォーマットに、ここではリスト
のインデックスリスト内t_index = sys_info_list.index(teacher_dict)#教師辞書情報システム情報
トゥルー中:
INPUTをdel_id =( 「学生証を除去する必要性を入力してください:」)#は、最初に学生証のケースに入らない
マーク= 0
del_id == IF「」:
続行
のn-でレンジ(LEN(teacher_dictのため[「学生」])):
IF teacher_dict [ '学生'] [N ] [ 'stuid'] == del_id:# 一致する学生IDを見つける
。sys_info_list [t_index] [ '学生'] POP(N-)#対応する学生の辞書の削除
sys_info_jsonを= json.dumps( sys_info_list)
F2 =オープン( './ rmyfile / system_info.json'、 'W'、エンコード= 'UTF-8')
F2。書き込み(sys_info_json)
f2.close()
印刷( 'N \首尾)(%sの学生を削除- 。' %のdel_id)
マーク= 1
BREAK
IFないマーク:促す、この学生がなければ#
プリントを( 'ノーID(%s)は、学生\ n'は%のdel_id )
BREAKの
印刷( 'オプション:前の0に1 /リターンを削除していき')
しばらく真:
オプション=入力( 'してください入力オプション:')
オプション== '1' IF:
delete_student(sys_info_list [t_index])は
オプションのelif = = '0':
サブメニュー(sys_info_list [t_index])
のelifオプション== '':
続行
他を:
印刷( '入力は、してください再選択が正しくありません。')


DEF query_student(teacher_dict:辞書):
印刷( '*' + '照会student'.center(51、 '「)+ '*')
印刷( '*' + '' + 51です* '*')
を印刷( '学生name'.centerによって*' + '1.Query(51'である')+' * ')
を印刷(' * '+' 2学生id'.centerの.query(51 'がある')+ '*'によって)
印刷( 'age'.centerによって*' + '3.Query(51'がある')+' *「)
しばらく真:
オプション=入力( 'オプションを入力してください:')
オプション== '1' IF:
query_student_name(teacher_dict)
オプション== '2'のelif:
query_student_id(teacher_dict)は
オプションのelif == '':
続行
他を:
印刷(「間違い、再選択してください「)。

DEF(teacher_dict query_student_name:)辞書を:
印刷( '*' + 'name'.centerによって照会(51、' ')+' * ')
('照会する学生の名前を入力してください:「)QUERY_NAME =入力
COUNT = 0
、N-におけるレンジ(LEN(teacher_dict [ '学生']))のために:
QUERY_NAME IF teacher_dict [ '学生。'] [N-] [ 'stuname']で:
。COUNTは+ = 1枚の
プリント(teacher_dict [ '学生。'] [ N-])
nを\レコードを検索するために、合計で印刷(」%dの- 『%のCOUNT)
印刷(』オプションは: 『)前の0から1 /リターン検索するには
:真しばらく
してください入力オプションオプション=入力(』:「)
オプション== IF '1。 ':
query_student(teacher_dict)
ELIFオプション== '0':
サブメニュー(teacher_dict)
ELIFオプション== '':
続行
他:
印刷('。'してください再選択、誤って入力)


DEF query_student_id( teacher_dict:辞書):
印刷( '*' + 'id'.centerによって照会(51、である' ')+' * ')
('必要性、入力の学生数:「)= QUERY_ID INPUTの
COUNT = 0
のn-inの範囲(LEN(teacher_dict [ '学生'])):
IF QUERY_ID == teacher_dict [」学生'] [N-] [ 'stuid']:
COUNT = 1つの+
印刷(teacher_dict [ '学生'] [N-])
を印刷('合計であなたが見つけるためにレコードの%D \ N-'COUNT%)
印刷( 'オプション:研究へ1/0を返す')
しばらく真
オプション=入力('してください入力オプションを: ')
==オプションIF' 1':
query_student( teacher_dict)
のelifオプション== '0':
サブメニュー(teacher_dict)
他:
印刷( '再選択してください')が誤って入力された

IF __name__ ==' __main__「:
MENUを(

おすすめ

転載: www.cnblogs.com/cheyunhua/p/10930711.html