import datetime
import json
# ユーザーデータの読み込み
def load_users():
try:
with open('users.json', 'r') as f:
return json.load(f)
except FileNotFoundError:
return {}
# ユーザーデータの保存
def save_users(users):
with open('users.json', 'w') as f:
json.dump(users, f)
# ユーザー認証
def authenticate(users):
user_id = input("ユーザーIDを入力してください: ")
password = input("パスワードを入力してください: ")
if user_id in users and users[user_id]['password'] == password:
print(f"ようこそ、{user_id}さん")
return user_id
else:
print("認証に失敗しました。")
return None
# 打刻機能
def punch_clock(users, user_id, punch_type):
now = datetime.datetime.now()
if user_id not in users:
users[user_id] = {'password': '', 'punches': []}
users[user_id]['punches'].append({'type': punch_type, 'time': now.isoformat()})
print(f"{punch_type}打刻: {now}")
save_users(users)
# 勤務時間の表示
def display_times(users, user_id):
if user_id not in users or not users[user_id]['punches']:
print("打刻データがありません。")
return
for punch in users[user_id]['punches']:
print(f"{punch['type']} - {punch['time']}")
# メイン処理
users = load_users()
user_id = authenticate(users)
if user_id:
while True:
print("\n1. 出勤打刻\n2. 退勤打刻\n3. 休憩開始打刻\n4. 休憩終了打刻\n5. 勤務時間表示\n6. 終了")
choice = input("選択肢を入力してください: ")
if choice == '1':
punch_clock(users, user_id, '出勤')
elif choice == '2':
punch_clock(users, user_id, '退勤')
elif choice == '3':
punch_clock(users, user_id, '休憩開始')
elif choice == '4':
punch_clock(users, user_id, '休憩終了')
elif choice == '5':
display_times(users, user_id)
elif choice == '6':
break
else:
print("無効な選択です。")