حالت آفلاین — محتوا از حافظهٔ کش نمایش داده می‌شود

سیستم حضور غیاب کارمندان

تمرین آسان 4594 visibility link download flag trending_up پربازدید

مواردی که موردنیاز است:

مدیر سیستم باید بتواند پس از وارد کردن نام کاربری admin و پسورد 12345، وارد شود و کارمند جدید اضافه کند و برای هر کارمند نام کاربری و رمزعبور تعریف کند. برنامه باید این اطلاعات را درون یک فایل به اسم دلخواه ذخیره کند.

کارمندان هم باید بتوانند با وارد کردن نام کاربری و رمز خود، وارد شوند و حضور خود را ثبت کنند. زمان دقیقی که کارمندان حضور خود را ثبت کرده اند باید در فایلی ذخیره شود.

این تمرین یه پروژه ست! یعنی پتانسیل اینو داره که خیلی بیشتر روش کار بشه بنابراین ایده اصلی رو از اینجا بردار و خودت بیشتر روش کار کن تا به یه تمرین بزرگتر تبدیل یشه
👨‍💻 2 ساعت قبل کاربر ناشناس این تمرین رو مشاهده کرد

reply 21

visibility
import datetime

# تابع برای ذخیره اطلاعات کارمندان در فایل
def save_employee_data(user_data):
    with open('employees.txt', 'a') as file:
        for username, password in user_data.items():
            file.write(f"{username},{password}\n")

# تابع برای ثبت حضور کارمند
def record_attendance(username):
    with open('attendance.txt', 'a') as file:
        timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        file.write(f"{username} - {timestamp}\n")

# تابع برای ورود مدیر
def admin_login():
    username = input("نام کاربری: ")
    password = input("رمز عبور: ")
    return username == "admin" and password == "12345"

# تابع برای افزودن کارمند جدید
def add_employee(user_data):
    username = input("نام کاربری کارمند جدید: ")
    password = input("رمز عبور کارمند جدید: ")
    user_data[username] = password
    save_employee_data(user_data)
    print("کارمند جدید با موفقیت اضافه شد.")

# تابع برای ورود کارمند
def employee_login(user_data):
    username = input("نام کاربری: ")
    password = input("رمز عبور: ")
    if username in user_data and user_data[username] == password:
        print("ورود با موفقیت انجام شد.")
        record_attendance(username)
        print("حضور شما ثبت شد.")
    else:
        print("نام کاربری یا رمز عبور نادرست است.")

# تابع اصلی
def main():
    user_data = {}
    
    # بارگذاری اطلاعات کارمندان از فایل
    try:
        with open('employees.txt', 'r') as file:
            for line in file:
                username, password = line.strip().split(',')
                user_data[username] = password
    except FileNotFoundError:
        print("فایل کارمندان پیدا نشد. یک کارمند جدید اضافه کنید.")

    # ورود مدیر یا کارمند
    while True:
        role = input("آیا شما مدیر (m) هستید یا کارمند (e)؟ (خروج (q) برای پایان): ").lower()
        
        if role == 'm':
            if admin_login():
                while True:
                    add_employee(user_data)
                    continue_adding = input("آیا کارمند دیگری اضافه کنید؟ (بله: y / خیر: n): ").lower()
                    if continue_adding != 'y':
                        break
            else:
                print("نام کاربری یا رمز عبور مدیر نادرست است.")
        
        elif role == 'e':
            employee_login(user_data)
        
        elif role == 'q':
            print("خروج از برنامه.")
            break
        
        else:
            print("ورودی نامعتبر است. لطفاً دوباره تلاش کنید.")

# اجرای برنامه
if __name__ == "__main__":
    main()
import tkinter as tk
from tkinter import messagebox
import os
import datetime

employee_file = "employees.txt"
attendance_file = "attendance.txt"

if not os.path.exists(employee_file):
    open(employee_file, "w").close()
if not os.path.exists(attendance_file):
    open(attendance_file, "w").close()

def save_to_file(file_name, data):
    with open(file_name, "a") as file:
        file.write(data + "\n")

def admin_login():
    def login():
        username = username_entry.get()
        password = password_entry.get()
        if username == "admin" and password == "12345":
            messagebox.showinfo("ورود موفق", "مدیر گرامی، خوش آمدید!")
            admin_window()
            login_window.destroy()
        else:
            messagebox.showerror("خطا", "نام کاربری یا رمز عبور اشتباه است.")

    login_window = tk.Toplevel(root)
    login_window.title("ورود مدیر")
    tk.Label(login_window, text="نام کاربری مدیر:").pack(pady=5)
    username_entry = tk.Entry(login_window)
    username_entry.pack(pady=5)
    tk.Label(login_window, text="رمز عبور مدیر:").pack(pady=5)
    password_entry = tk.Entry(login_window, show="*")
    password_entry.pack(pady=5)
    tk.Button(login_window, text="ورود", command=login).pack(pady=10)

def admin_window():
    def add_employee():
        username = username_entry.get()
        password = password_entry.get()
        if username and password:
            save_to_file(employee_file, f"{username},{password}")
            messagebox.showinfo("موفق", "کارمند با موفقیت اضافه شد!")
            add_employee_window.destroy()
        else:
            messagebox.showerror("خطا", "تمام فیلدها را پر کنید.")

    def open_add_employee_window():
        global add_employee_window
        add_employee_window = tk.Toplevel(root)
        add_employee_window.title("افزودن کارمند جدید")
        tk.Label(add_employee_window, text="نام کاربری کارمند:").pack(pady=5)
        global username_entry
        username_entry = tk.Entry(add_employee_window)
        username_entry.pack(pady=5)
        tk.Label(add_employee_window, text="رمز عبور کارمند:").pack(pady=5)
        global password_entry
        password_entry = tk.Entry(add_employee_window, show="*")
        password_entry.pack(pady=5)
        tk.Button(add_employee_window, text="اضافه کردن", command=add_employee).pack(pady=10)

    admin_panel = tk.Toplevel(root)
    admin_panel.title("پنل مدیر")
    tk.Button(admin_panel, text="افزودن کارمند جدید", command=open_add_employee_window).pack(pady=20)
    tk.Button(admin_panel, text="خروج", command=admin_panel.destroy).pack(pady=20)

def employee_login():
    def login():
        username = username_entry.get()
        password = password_entry.get()
        with open(employee_file, "r") as file:
            for line in file:
                user, passwd = line.strip().split(",")
                if user == username and passwd == password:
                    register_attendance(username)
                    employee_login_window.destroy()
                    return
        messagebox.showerror("خطا", "نام کاربری یا رمز عبور اشتباه است.")

    employee_login_window = tk.Toplevel(root)
    employee_login_window.title("ورود کارمند")
    tk.Label(employee_login_window, text="نام کاربری:").pack(pady=5)
    username_entry = tk.Entry(employee_login_window)
    username_entry.pack(pady=5)
    tk.Label(employee_login_window, text="رمز عبور:").pack(pady=5)
    password_entry = tk.Entry(employee_login_window, show="*")
    password_entry.pack(pady=5)
    tk.Button(employee_login_window, text="ورود", command=login).pack(pady=10)

def register_attendance(employee_name):
    now = datetime.datetime.now()
    timestamp = now.strftime("%Y-%m-%d %H:%M:%S")
    save_to_file(attendance_file, f"{employee_name},{timestamp}")
    messagebox.showinfo("موفق", f"حضور شما در {timestamp} ثبت شد.")

root = tk.Tk()
root.title("سیستم مدیریت کارمندان")

tk.Label(root, text="سیستم مدیریت کارمندان", font=("Arial", 16)).pack(pady=20)
tk.Button(root, text="ورود مدیر", command=admin_login, width=20).pack(pady=10)
tk.Button(root, text="ورود کارمند", command=employee_login, width=20).pack(pady=10)
tk.Button(root, text="خروج", command=root.destroy, width=20).pack(pady=10)

root.mainloop()

import os
from datetime import datetime

user_name = input('Enter username: ')
pass_word = input('Enter password: ')

if user_name == 'admin' and pass_word == '12345':
    print("\n✅ Welcome Admin!")
    print("1. Add new employee")
    print("2. View attendance list")
    print("3. Remove employee")
    choice = input("Enter your choice (1, 2 or 3): ")

    emp_file = 'employees.txt'
    att_file = 'attendance.txt'

    if choice == '1':
        new_user_name = input("Enter employee's username: ")
        new_pass_word = input("Enter employee's password: ")

        with open(emp_file, 'a') as file:
            file.write(f"{new_user_name},{new_pass_word}\n")

        print(f"✅ Employee '{new_user_name}' added successfully.")

    elif choice == '2':
        print("\n

import customtkinter as ctk
from tkinter import messagebox

app = ctk.CTk()
app.geometry("500x550")
app.title("TechLand program")
app.resizable(False, False)

id_entry = ctk.CTkEntry(app, placeholder_text="ID")
id_entry.pack(padx=15, pady=5)

password_entry = ctk.CTkEntry(app, placeholder_text="password")
password_entry.pack(padx=15)
password_entry.focus()


def search_user(username):
    try:
        with open("Names.txt", "r", encoding="utf-8") as f:
            for line in f:
                if line.strip() == username:
                    return True
    except:
        return False
    return False


def search_pass(password):
    try:
        with open("Pass.txt", "r", encoding="utf-8") as f:
            for line in f:
                if line.strip() == password:
                    return True
    except:
        return False
    return False


def dopass():
    get_id = id_entry.get()
    get_pass = password_entry.get()

    # حالت مدیر
    if get_id == "admin" and get_pass == "123456":

        ent1 = ctk.CTkEntry(app, placeholder_text="name")
        ent2 = ctk.CTkEntry(app, placeholder_text="pass")
        ent1.pack(pady=5)
        ent2.pack(pady=5)

        def addpn():
            en1 = ent1.get()
            en2 = ent2.get()

            with open("Names.txt", "a", encoding="utf-8") as f1:
                f1.write(en1 + "\n")

            with open("Pass.txt", "a", encoding="utf-8") as f2:
                f2.write(en2 + "\n")

            messagebox.showinfo("OK", "User Saved!")

        bt = ctk.CTkButton(app, text="Add", command=addpn)
        bt.pack(pady=5)

    # حالت ورود کاربر
    elif search_user(get_id) and search_pass(get_pass):

        def Hazer():
            with open("Enter.txt", "w") as f:
                f.write(f"{get_id} entered")

        def Khoroj():
            with open("Out.txt", "w") as f:
                f.write(f"{get_id} outed")

        bt1 = ctk.CTkButton(app, text="enter", command=Hazer)
        bt1.pack(pady=5)
        bt2 = ctk.CTkButton(app, text="out", command=Khoroj)
        bt2.pack(pady=5)

    else:
        messagebox.showwarning("خطا", "رمز یا نام کاربری اشتباه است")


but = ctk.CTkButton(app, text="Check Password", command=dopass)
but.pack(pady=5)

app.mainloop()

from datetime import datetime
import os

employee_file = 'employee.txt'
attendance_file = 'attendance.txt'

# ساخت فایل‌ها در صورت نبودن
if not os.path.exists(employee_file):
    open(employee_file, 'w').close()

if not os.path.exists(attendance_file):
    open(attendance_file, 'w').close()

print('Welcome!')
username = input('Enter username: ')
password = input('Enter password: ')

if username == 'admin' and password == '12345':
    print("\n Welcome Admin!")
    print("1. Add new employee")
    print("2. View attendance list")
    print("3. Remove employee")
    choice = input("Enter your choice (1, 2 or 3): ")

    if choice == '1':
        new_user_name = input("Enter employee's username: ")
        new_pass_word = input("Enter employee's password: ")

        with open(employee_file, 'a') as f:
            f.write(f"{new_user_name},{new_pass_word}\n")

        print(f" Employee '{new_user_name}' added successfully.")

    elif choice == '2':
        with open(attendance_file, 'r') as f:
            data = f.read()

        if data.strip() == "":
            print("No attendance records found.")
        else:
            print("\n--- Attendance List ---")
            print(data)

    elif choice == '3':
        remove_name = input("Enter employee username to remove: ")

        with open(employee_file, 'r') as f:
            employees = f.readlines()

        found = False
        with open(employee_file, 'w') as f:
            for emp in employees:
                emp_username, emp_password = emp.strip().split(',')
                if emp_username != remove_name:
                    f.write(emp)
                else:
                    found = True

        if found:
            print(" Employee removed successfully.")
        else:
            print(" Employee not found.")

    else:
        print(" Invalid choice.")

else:
    found = False
    with open(employee_file, 'r') as f:
        employees = f.readlines()

    for emp in employees:
        emp_username, emp_password = emp.strip().split(',')
        if username == emp_username and password == emp_password:
            found = True
            now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")

            with open(attendance_file, 'a') as f:
                f.write(f"{username} - {now}\n")

            print(f" Attendance recorded at {now}")
            break

    if not found:
        print(" Invalid username or password.")

import os
from datetime import datetime
import pickle
fail_karmandan='nam karmandan.pcl'
fail_huzur='huzur.pkl'
if not os.path.exists(fail_karmandan):
    with open(fail_karmandan,'wb') as f:
        pickle.dump({},f)

if not os.path.exists(fail_huzur):
    with open(fail_huzur,'wb') as f:
        pickle.dump({},f)

class Modir:
    def __init__(self,nam,pasword):
     self.nam=nam
     self.pasword=pasword

    def afzudane_karmand(self,nam_karmand,pasword_karmand):
        with open(fail_karmandan,'rb')as f:
            karmandan=pickle.load(f)
            if nam_karmand in karmandan:
                print('gablan sabt shode')
            else:
                karmandan[nam_karmand]=pasword_karmand
                with open(fail_karmandan,'wb')as f:
                    pickle.dump(karmandan,f)
                    print(f'karbar{nam_karmand}be anjam resid.')
class Karmand:
    def __init__(self,nam_karbari) :
        self.nam_karbari=nam_karbari          
    def sabte_huzur(self):
        with open(fail_huzur,'rb')as f:
            huzur=pickle.load(f)
            zamane_huzur=datetime.now().strftime('%Y-%m-%d%h:%M:%S')
            if self.nam_karbari not in huzur:
                huzur[self.nam_karbari]=[]
                huzur[self.nam_karbari].append(zamane_huzur)
                with open(fail_huzur,'wb') as f:
                    pickle.dump(huzur,f)
                    print(f'huzure shoma dar tarikhe {zamane_huzur} sabt shod.') 
def vurud():
    nam_karbari=input('name karbari ra vared konid:')
    ramze_ubur=input('ramze ubur ra vared konid:')
    if nam_karbari=='admin'and ramze_ubur=='12345':
        return Modir(nam_karbari,ramze_ubur)
    else:
        with open( fail_karmandan,'rb') as f:
            karmandan=pickle.load(f)
            if nam_karbari in  karmandan and  karmandan[nam_karbari]==ramze_ubur:
                return Karmand(nam_karbari)
            else:
                print('name karbari ya ramze ubur eshtebah ast.')
                return None
def meno():
    karbar=vurud()
    if isinstance(karbar,Modir):
        print('khos amadid modir!')
        while 1:
            print('1.ezafe kardane karmand')
            print('2.khuruj')
            gozine=input('entekhab konid:')
            if gozine=='1':
                name_karmand=input('name karbari karmand:')
                karmand_pasword=input('pasworde karmand:')
                karbar.afzudane_karmand(name_karmand,karmand_pasword)
            elif isinstance(karbar,Karmand):
                print(f'khosh amadid {karbar.nam_karbari}!')
                karbar.sabte_huzur()
            elif gozine=='2':
                break
            else:
                print('entekhab na motabar ast')
if __name__=='__main__':
 meno()
def manager():
    username=input('enter username:')
    password=input('enter password:')
    if  username=='admin' and password=='1234':
        print('wellcome!')
    else:
        print('invalid data!')
class Employees:
    def __init__(self,user="",password=""):
      self.user= user
      self.password=password
    def add_employees(self):
       username=input('username:') 
       password=input('pasword:')
       f=open("employees.txt",'a')
       f.write(f'{username},{password}\n')
       f.close()
    def login(self):
        import datetime
        login_username=input('username:') 
        login_password=input('pasword:')
        found=False
        f=open('employees.txt','r')  
        try:     
            for line in f:
                stored_username, stored_password = line.strip().split(',')            
                if login_username == stored_username and login_password == stored_password:
                    found=True
                    break                
            if found:
                print('successfully login!')
                t=datetime.datetime.now()
                nf=open(str(datetime.date.today())+'.txt','a')
                nf.write(f'{login_username}-{t}\n')
                print(f'your login recorded on date{datetime.datetime.today()},at{t}!')
            else:
                print('try again - username or password is wrong!')
        except FileNotFoundError:
            print("No employees found. Please add an employee first.")             
a=manager()
e=Employees()
while True:
    n=input("1.add employee 2.login 3.exit\n")
    if n=="1":
        e.add_employees()
    elif n=='2':
        e.login()
    elif n=='3':
        print('goodbye!')
        break
    else:
        print('invalid choice!')
import pickle
import datetime import datetime 
def admin_fun():  
    admin_username = "admin"  
    admin_password = "12345"  

    # Admin login  
    username = input("Enter admin username: ")  
    password = input("Enter admin password: ")  

    if username == admin_username and password == admin_password:  
        print("Access granted. You can add employees.")  
    else:  
        print("Access denied.")  
        return None  

    # Initialize an empty dictionary to store employee data  
    employee_data = {}  
    
    # Loop to collect usernames and passwords  
    while True:  
        username = input("Enter a new username for employee (or type 'exit' to finish): ")  
        if username.lower() == 'exit':  
            break  
        password = input(f'Enter a password for username {username}: ')   
        employee_data[username] = password   

    # Serialize the dictionary using pickle  
    b_employee_data = pickle.dumps(employee_data)  
    
    database = "employee_data.pkl"  
    
    # Write the serialized dictionary to a file  
    with open(database, "wb") as file:   
        file.write(b_employee_data)  
    
    print("Employee data saved successfully.")  
    return database  

def employee_fun(database):  
    # Read the serialized dictionary from the file  
    try:  
        with open(database, "rb") as file:  
            b_employee_data = file.read()  
            employee_data = pickle.loads(b_employee_data)  # Deserialize the data  
    except FileNotFoundError:  
        print("No employee data found, please contact the admin.")  
        return  

    # Input for username and password  
    username = input("Enter your username: ")  
    password = input("Enter your password: ")  

    # Check if the username exists in the dictionary  
    if username in employee_data:  
        # Compare the given password with the stored password  
        if employee_data[username] == password:  
            print("Login successful.")  
            # Record attendance with timestamp  
            attendance_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')  
            with open("attendance_log.txt", "a") as log_file:  
                log_file.write(f"{username} logged in at {attendance_time}\n")  
            print("Attendance recorded.")  
        else:  
            print("Incorrect password.")  
    else:  
        print("Username not found.")
import datetime

def save_data(filename, data):
    with open(filename, 'a') as file:
        file.write(data + '\n')

def login(username, password, file):
    with open(file, 'r') as f:
        for line in f:
            user, pwd = line.strip().split(',')
            if user == username and pwd == password:
                return True
    return False

def admin():
    if input("Enter admin username: ") == "admin" and input("Enter admin password: ") == "12345":
        while input("Add employee? (y/n): ") == "y":
            save_data("employees.txt", input("Enter employee username: ") + "," + input("Enter employee password: "))
        return True
    return False

def record_attendance(username):
    save_data("attendance.txt", f"{username} logged in at {datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')}")
    print("Attendance recorded.")

def main():
    if admin():
        while True:
            username = input("Enter username: ")
            password = input("Enter password: ")
            if login(username, password, "employees.txt"):
                record_attendance(username)
            else:
                print("Invalid credentials.")

if __name__ == "__main__":
    main()
from prettytable import PrettyTable 
import colorama
import datetime
from colorama import Fore, Back
colorama.init(autoreset=True)
import getpass
def admin_file():
    date = date = datetime.datetime.now()
    table = PrettyTable()
    table.field_names=['Username', 'Password', date]
    
    options = ''
    while True:
        print (Fore.WHITE+Back.BLUE+'1.Add User\n2.Del user\n3.Show users\n4.Loggin User')
        options = input (Fore.WHITE+Back.BLUE+'Select Number Options: ')
        
        if options == '1':
            use_admin = input (Fore.WHITE+Back.BLUE+'Plase Entr user Admin: ')
            password = getpass.getpass(Fore.WHITE+Back.BLUE+'Enter Password admin:')
            if use_admin == 'admin' and password == '1234':
                print (Fore.WHITE+Back.BLUE+'Logined...')
                print (Fore.WHITE+Back.BLUE+150*'=')
                any_user = int(input('enter many user:? '))
                while any_user > 0 :
                    any_user -= 1
                    in_user = input('Enter new user: ')
                    in_pass = input('Enter Password: ')
                    table.add_row([in_user, in_pass, date])
                    print (table)
                    pass
                    
                add_user = table.get_string()
                txt = '\n{:*^80}'.format('Admin--Panel')
                with open('amdin.txt', 'w') as file:
                    file.write(txt)
                    
                    file.write(add_user)
                    print ('Regastered New Use')
                    print (table)
         #Delete User in File txt#           
#--------#-----------------------------------------------------------------------------
        elif options == '2':
            use_admin = input(Fore.WHITE + Back.BLUE + 'Plase Entr user Admin: ')
            password = getpass.getpass(Fore.WHITE + Back.BLUE + 'Enter Password admin:')
            if use_admin == 'admin' and password == '1234':
                del_user = input(Fore.WHITE + Back.BLUE + 'Plase Entr user Name:')
                del_us = input(f'Are sure Delete User {del_user} Y or N ?').lower()
                if del_us == 'y' or del_us == 'yes':
                    data_field = []
                    for row in table._rows:
                        if row[0] != del_user:
                            data_field.append(row)
                    table.clear_rows()
                    for row in data_field:
                        table.add_row(row)
                    with open('admin.txt', 'w') as file:
                        file.write(str(table))
                    print('OK.')
            else:
                print('Wrong password! Try Again!')
                        
        elif options == '3':
                print(table)

        #  #loggin user name in admin txt#               
    #     # #---------------------------------------------------------------             
        elif options == '4':
            use_admin = input(Fore.WHITE + Back.BLUE + 'Plase Entr user Admin: ')
            password = getpass.getpass(Fore.WHITE + Back.BLUE + 'Enter Password admin:')
            if use_admin == 'admin' and password == '1234':
                user_loggin = input('Enter Username : ' )
                pass_user  = input('Entr password : ')
                with open ('admin.txt', 'r') as file:
                    lines = file.readlines()
                    user_dict = {}
                    for line in lines:
                        if '|' and not line.startswith('+'):
                            parts = line.split('|')
                            
                            if len(parts) >= 3:
                                username = parts[1].strip()
                                password = parts[2].strip()
                                user_dict[username] = password
                                if user_loggin in user_dict and user_dict[user_loggin] == pass_user:
                                    print() 
                                    print(Fore.GREEN + 'Loggined..')
                                    print()
                                else:
                                    print(Fore.RED + 'Login failed.')
        
admin_file()
<< صفحه قبل 1 2 3 صفحه بعد >>

ارسال جواب

جوابت را با Markdown بنویس و ثبت کن

×
بستن