学校は今、電子出席システムを実装する必要があります。クラスがすでにビッグデータアプリケーション開発言語Pythonを学習していることを考慮して、いくつかの学生出席機能を実装できるようにします。先生とのコミュニケーションの結果、次のことを学びました。(1)現在、システムはシニアによって実装されています。残りの機能を完了するだけで済みます。完了する必要のある機能は、#todoの形式でマークされます。リストこの場所の機能は次の形式です。
(2)学生情報はstu_infos.csvファイルに保存されます。最初の行は列名の行で、後続の各行は学生ID、名前、パスワードなどの学生の情報です。コンテンツの形式は次のとおりです。
(3)出席記録は最終的にattendance.csvファイルに保存されます。最初の行は列名の行であり、後続の各行は、学生ID、名前、時間、出席ステータスなど、学生の出席情報を表します(のみ出席、遅刻、休暇と欠席の4つの状態)。コンテンツの形式は次のとおりです。
(4)最初に学生情報をstudent_infosリストにロードする必要があります。student_infoの各要素は辞書です。辞書のキーはそれぞれの列名であり、値は各行の内容です。Student_infosは次のように構成されています。サンプルデータ一覧は以下のとおりです。
(5)出席システムの教師側には、メインフレームワークを実現するためのエントリプログラムファイルとして使用されるmain.pyファイルの合計2つのPythonファイルがあります。メインプロセスは、データのロード、ログインです。出席データを追加します。stu_attendance.pyファイルは、データの読み込み、ログイン、その他の機能を定義します。
回答の要件:(1)stu_info.csvファイルの最後に独自の情報を追加し、パスワードを自由に記述します。名前と学生IDは自分である必要があります(2)2つのPythonファイルのtodoコメントを確認します。適切なコードを追加し、最後に追加したコードを提供します。(3)プログラム機能をテストし、プログラム操作のスクリーンショットを提供します。ログイン確認を行う場合は、学生IDを使用してログイン確認を行い、ログインに3回失敗した場合と、ログイン成功後に出席データが正常に追加された場合の2つのブランチをテストする必要があります。
追加機能
クエリ関数を追加し、学生の名前を入力して出席データ情報を取得します
インポートモジュール
import csv import time student_infos = []
データのダウンロード
def load_stu_info(): "" " 学生情報を 読み込むstu_infos.csvファイルからデータを読み込む :return:no " "" with open(r "stu_infos.csv"、encoding = 'utf-8-sig')as file: f_csv = csv.reader(file) header = next(f_csv) for row in f_csv: student_info = {} for index in range(3): student_info [header [index]] = row [index] student_infos.append(student_info)
ログインする
def login(): "" " ユーザーは学生IDとパスワードを使用してログインします。 ユーザーは最大3回ログインできます。ログインが3回連続して失敗した場合(ユーザー名またはパスワードが正しくない場合)、ログインパスワードとユーザーが正しい限り成功します :return:成功したログインTrueと学生IDを返し、3回のログイン失敗はFalseとNoneを返します "" " retry_time = 0 、retry_time <3:user_no = input( 'ログインを入力してくださいアカウント番号: ') password = input('パスワードを入力してください: ') for i in student_infos: if i [' no '] == user_no and i [' password '] == password: return True、user_no print('ユーザー名またはパスワードが間違っています!!!再入力してください。 ') retry_time + = 1 else: falseを返す、なし
出席記録の作成
def add(user_no): for x in student_infos: if user_no == x ['no']: name = x ['name'] break times = time.strftime( "%Y-%m-%d%H:% M:%S "、time.localtime()) choices = ['Attendance'、 'Late'、 ' Ask for Leave'、 'Absent from work'] a = int(input(" \ t学生の出席:1-出席\ t2 -Late \ t3-休暇を要求\ t4-仕事を休む: ")) if a == 1: data = choices [0] elif a == 2: data = choices [1] elif a == 3: data = choices [2] else: data = choices [3] with open(r "attendance.csv"、 'a +'、newline = ''、encoding = 'utf-8')as f: wf = csv.writer( f) wf。writerow([user_no、name、times、data])#データの行を書き込む print( "{} Classmate {}データが正常に書き込まれました!操作時間は{}"。format(name、data、times))
出席記録を照会する
def select(): student = [] with open(r "attendance.csv"、encoding = 'utf-8-sig')as file: f_csv = csv.reader(file) header = next(f_csv) for row in f_csv : students = {} for index in range(4): students [header [index]] = row [index] student.append(students) name = input( "検索する必要のある名前を入力してください:") print( " 学生の 場合の学番号\ t \ t名前\ t \ t操作時間\ t \出席ステータス "):if a ['name'] == name: print(a ['no'] + '\ t' + a [ 'name'] + '\ t' + a ['time'] + '\ t \ t' + a ['state']) else: print( "そのような人はいない!!!") break
main関数は提供しません。必要に応じて自分で作成できます。必要に応じて、個人的にメッセージを送信するか、ここからデータセットとソースコードをダウンロードできます。!!
クリックしてダウンロード!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
ランニング効果を見てください!
テキストごとに1つの単語
創造的なアイデアは、人生の微妙な好みから生まれます。傲慢になったり、衝動的になったりしないでください。それが王様です。
追記
最近、多くの友人がプライベートメッセージを通じてPythonの学習問題について相談しました。コミュニケーションを促進するには、青をクリックしてディスカッションに参加し、自分でリソースベースに回答してください