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

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

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

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

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

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

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

پاسخ‌ها 22

یک برنامه کامل برای مدیر با امکان حذف و ویرایش کارمندان
import os
import dill
import sys
admin_login_info={"admin":"12345"}
if os.path.exists("Employees_Info.pkl"):
    with open("Employees_info.pkl","rb") as f:
        Employees_list=dill.load(f)
else:
    Employees_list=[]
class Employees:
    def __init__(self,username,password):
        self.__username=username
        self.__password=password
    @property
    def username(self):
        return self.__username
    @username.setter
    def username(self,newusername):
        self.__username=newusername
    @property
    def password(self):
        return self.__password
    @password.setter
    def password(self,newpass):
        self.__password=newpass
    def __str__(self):
        return f"{self.__username}_{self.__password}"
print("wellcome")
while 1:
    username=input("Plz enter admin username:\n")
    password=input("Plz enter admin password\n")
    if username in admin_login_info and admin_login_info[username]==password:
        print("login succesful")
        while 1:
            print("--------------")
            user_choice=input("1.create a new employee\n2.edit a employee\n\
3.delete a employee\n4.enter 4 to save and end\n--------------\n")
            if user_choice=="1":
                while 1:
                    print("enter 0 to go back")
                    Ename=input("plz enter employee username:\n")
                    if Ename=="0":break
                    Epass=input("plz enter employee password:\n")
                    if Ename=="0":break
                    emp=Employees(Ename,Epass)
                    Employees_list.append(emp)
                    print("created")
            elif user_choice=="2":
                if not Employees_list:print("there is no user,plz create user first")
                else:
                    for i,item in enumerate(Employees_list,start=1):
                        print(i,".",item)
                    try:
                        choice=int(input("choose wich employee you want to edit\
(enter 0 to go back):\n"))
                        if choice==0:continue
                        elif choice<1 or choice>len(Employees_list):
                            print("plz enter a valid choice")
                        else:
                            choice=Employees_list[choice-1]
                            Ename=input("plz enter new username to change:\n")
                            Epass=input("plz enter new password to change:\n")
                            choice.username=Ename
                            choice.password=Epass
                            print("changed")
                    except:print("enter a valid choice")
            elif user_choice=="3":
                if not Employees_list:print("there is no user,plz create user first")
                else:
                    for i,item in enumerate(Employees_list,start=1):
                        print(i,".",item)
                    try:
                        choice=int(input("choose wich employee you want to edit:\n"))
                        if choice<1 or choice>len(Employees_list):
                            print("plz enter a valid choice")
                        else:
                            Employees_list.pop(choice-1)
                            print("deleted")
                    except:print("enter a valid choice")
            elif user_choice=="4":
                with open("Employees_Info.pkl","wb") as f:
                    dill.dump(Employees_list,f)
                print("ended and saved")
                sys.exit()
            else:
                print("enter a valid choice")
    else:
        print("username or password is wrong")
یک برنامه ساده برای کارمندان
import os
import dill
import datetime
print("wellcome")
if os.path.exists("Employees_Info.pkl"):
    with open("Employees_Info.pkl", "rb") as f:
        E_INFO=dill.load(f)
    while True:
        e_username=input("plz enter username(enter 0 to end):\n")
        if e_username=="0":break
        e_password=input("plz enter password(enter 0 to end):\n")
        if e_password=="0":break
        for item in E_INFO:
            if f"{e_username}_{e_password}"==str(item):
                print("login succesfull")
                joindate = str(datetime.datetime.now())
                print(f"you joined in:{joindate}")
                with open("Employees_joindate", "a") as f:
                    f.write(f"{e_username} joined in:{joindate}\n")
                print("program end")
                break
        else:#حلقه ی فور الس
            print("user name or paswword is wrong")
else:
    print("admin doesnt created the file")

import datetime

def save_employee_data(username, password):
    with open("employees.txt", "a") as file:
        file.write(f"{username},{password}\n")

def save_attendance(username):
    with open("attendance.txt", "a") as file:
        now = datetime.datetime.now()
        file.write(f"{username} - {now.strftime('%Y-%m-%d %H:%M:%S')}\n")

def admin_login():
    username = input("نام کاربری: ")
    password = input("رمز عبور: ")
    if username == "admin" and password == "12345":
        return True
    else:
        print("نام کاربری یا رمز عبور نادرست است.")
        return False

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

def employee_login():
    username = input("نام کاربری: ")
    password = input("رمز عبور: ")
    
    with open("employees.txt", "r") as file:
        employees = file.readlines()
    
    for employee in employees:
        emp_username, emp_password = employee.strip().split(",")
        if emp_username == username and emp_password == password:
            save_attendance(username)
            print("حضور شما ثبت شد.")
            return
    print("نام کاربری یا رمز عبور نادرست است.")

def main():
    while True:
        choice = input("آیا مدیر هستید؟ (y/n): ")
        if choice.lower() == 'y':
            if admin_login():
                while True:
                    add_employee()
                    cont = input("آیا می‌خواهید کارمند دیگری اضافه کنید؟ (y/n): ")
                    if cont.lower() != 'y':
                        break
        else:
            employee_login()
        
        cont = input("آیا می‌خواهید دوباره وارد شوید؟ (y/n): ")
        if cont.lower() != 'y':
            break

if __name__ == "__main__":
    main()
import datetime
f=open('my file.txt','a+')
f.seek(0)
d=open('dattim.txt','a')
class Huzur_giyab:
    def __init__(self,nam,password):
        self.nam=nam
        self.password=password
class Admin(Huzur_giyab):
    def __init__(self,nam='admin',password='12345'):
        if nam=='admin' and password=='12345':
         print ('khosh amadid rais')
         i=input('baraye sabte karmande jadid [1] baraye khruj[2] ra bezanid')
         if i=='1':
            n=input('name karman ra vared konid: ')
            p=input('password karmand ra vared konid:')
            f.write(f'{n},{p}\n')
            f.flush()
         if i=='2':
            print( 'kharej shodid')
class Karmand(Huzur_giyab):
    def __init__(self, nam, password):
       super().__init__(nam, password)
       f.seek(0)
       peydashod=False
       for s in f :
        try:
         nz,pz=s.strip().split(',')
         if self.nam ==nz and self.password ==pz :
            peydashod=True
            break
        except ValueError:
            continue

       if peydashod:
        print('khosh amadid')

        t=datetime.datetime.now().strftime('%Y-%m-%d%H:%M:%S')
        d.write(f'{self.nam},{t}\n')
        d.flush()
        print ('huzure shoma sabt shod ')
       else:
            print( ' nam ya ramz eshtebah')
        
i=input('nam:')
a=input('password:')
if i=='admin' and a=='12345':
    Admin() 
else:
    Karmand(i,a)
f.close()
d.close()
import pickle
import time
import os

def remove_duplicate_employees(employees):
    unique = []          
    usernames = set()    
    for e in employees:  
        if e.username not in usernames:  
            unique.append(e)            
            usernames.add(e.username)   
    return unique  

date_and_time = time.ctime(time.time()).strip()
Time = (date_and_time.split(' '))[3]

class Employee:
    def __init__(self, username, password):
        self.username = username
        self.password = password

    def Print(self):
        return f'Username : {self.username} | Password : {self.password}'

    def login(self):
        print(f'{(self.username).upper()} your login has been registered')

while True:
    choose = input("Are you admin, employee, or quit? (a/e/q) : ").strip().lower()

    if choose == 'a':

        class Employee:
            def __init__(self, username, password):
             self.username = username
             self.password = password

            def Print(self):
                return f'Username : {self.username} | Password : {self.password}'

            def login(self):
                print(f'{(self.username).upper()} your login has been registered',f'Time : {Time}')

        print('------Program for admin------')

        employees = []
        try:
            f = open('employees.pkl', 'rb') 
            employees = pickle.load(f)

        except (EOFError , FileNotFoundError):
            print('File empty or not found. Creating new list.')

        # ورود ادمین
        u_admin = input('Admin username : ').strip()
        p_admin = input('Admin password : ').strip()

        if u_admin == 'admin' and p_admin == '12345':
            print('-----Welcome admin-----')

            print('--List of employees--')
            for i, employee in enumerate(employees, start=1):
                print(f'{i}. {employee.Print()}')

            while True:
                u = input('Username (enter 0 for exit) : ').strip()
                if u == '0':
                    print('Exit.')
                    break
                p = input('Password : ').strip()
                employees.append(Employee(u, p))
                print('✔️ New employee added.')

                employees = remove_duplicate_employees(employees)

                f = open('employees.pkl', 'wb') 
                pickle.dump(employees, f)

        else:
                print('❌ The admin username or password was entered incorrectly.')

    elif choose == 'e':

        print('------Program for entering employees------')

        employees = []

        if os.path.exists('employees.pkl'):
            with open('employees.pkl', 'rb') as f:
                employees = pickle.load(f)
        else:
            print('File empty or not found. Creating new list.')

        u = input('Username : ')
        p = input('Password : ')

        i = 0
        while i < len(employees):
            employee_found = False  # برای تشخیص پیدا شدن کارمند
            for employee in employees:
                if u == employee.username and p == employee.password:
                    employee.login()
                    with open('Time.txt','a') as f:
                        f.write(f'\n{(employee.username).upper()} logged in , time : {Time}') 

                    employee_found = True
                    break  
                else:
                    i += 1
            if not employee_found:
                print('There is no employee with this username and password.')
            break
        break  # بعد از اجرای ورود کارمند، خارج می‌شویم

    elif choose == 'q':
        print('Exiting program. Goodbye!')
        break

    else:
        print('Invalid choice. Please enter "a" for admin, "e" for employee, or "q" to quit.')
import os
from datetime import datetime

EMPLOYEE_FILE = "employees.txt"
ATTENDANCE_FILE = "attendance.txt"

def admin_login():
    username = input("نام کاربری مدیر: ")
    password = input("رمز عبور مدیر: ")

    return username == "admin" and password == "12345"

def add_employee():
    username = input("نام کاربری کارمند: ")
    password = input("رمز عبور کارمند: ")

    with open(EMPLOYEE_FILE, "a", encoding="utf-8") as file:
        file.write(username + "|" + password + "\n")

    print("کارمند با موفقیت اضافه شد.")

def employee_login():
    username = input("نام کاربری: ")
    password = input("رمز عبور: ")

    if not os.path.exists(EMPLOYEE_FILE):
        return False

    with open(EMPLOYEE_FILE, "r", encoding="utf-8") as file:
        for line in file:
            data = line.strip().split("|")

            if len(data) == 2 and data[0] == username and data[1] == password:
                return True

    return False

def register_attendance(username):
    now = datetime.now()
    date_time = now.strftime("%Y-%m-%d %H:%M:%S")

    with open(ATTENDANCE_FILE, "a", encoding="utf-8") as file:
        file.write(username + "|" + date_time + "\n")

    print("حضور شما با موفقیت ثبت شد.")
    print(date_time)

while True:
    print("1. ورود مدیر")
    print("2. ورود کارمند")
    print("3. خروج")

    choice = input("انتخاب: ")

    if choice == "1":
        if admin_login():
            while True:
                print("1. افزودن کارمند")
                print("2. خروج")

                admin_choice = input("انتخاب: ")

                if admin_choice == "1":
                    add_employee()
                elif admin_choice == "2":
                    break
        else:
            print("نام کاربری یا رمز عبور اشتباه است.")

    elif choice == "2":
        username = input("نام کاربری: ")
        password = input("رمز عبور: ")

        if employee_login():
            register_attendance(username)
        else:
            print("نام کاربری یا رمز عبور اشتباه است.")

    elif choice == "3":
        break
import pickle
import time

class Member:
    def __init__(self, username, password):
        self.username = username
        self.password = password
    
    def attendance_registration(self):
        f = open('attendances.txt', 'a')
        f.write(self.username + '  >>>  ' + str(time.ctime()) + '\n')
        f.close()
        print('It is saved!')

    def change_password(self):
        while 1:
            password = input('Your old password (Enter 0 to cancel): ')
            if password == '0':
                break
            elif password == self.password:
                new_password = input('New password: ')
                self.password = new_password
                f = open('members.pkl', 'wb')
                f.write(pickle.dumps(members_list))
                f.close()
                print('Password changed!')
                break
            else:
                print('Your password is wrong!')

class Admin(Member):
    def __init__(self, username, password):
        super().__init__(username, password)

def login():
    while 1:
        username = input('Username: ')
        if username == 'exit': exit()
        password = input('Password: ')
        for w in members_list:
            if w.username == username:
                if w.password == password:
                    return w
                else:
                    print('Your password is wrong!')
                    break
            elif members_list.index(w) == len(members_list) - 1:
                print('Your username is not in members list!')
                break

def add_member():
    username = input('Select username: ')
    for w in members_list:
        if w.username == username:
            print(f'This username is in members list!\nhis password is: {w.password}')
            break
        elif members_list.index(w) == len(members_list) - 1:
            password = input('Select password: ')
            new_member = Member(username, password)
            members_list.append(new_member)
            f = open('members.pkl', 'wb')
            f.write(pickle.dumps(members_list))
            f.close()
            break

def show_attendance():
    f = open('attendances.txt', 'r')
    print(f.read())
    f.close()

#runing code:
try:
    f = open('members.pkl', 'rb')
    members_list = pickle.loads(f.read())
    f.close()
except:
    members_list = [Admin('admin', '12345')]

    f = open('members.pkl', 'wb')
    f.write(pickle.dumps(members_list))
    f.close()
    members_list = pickle.loads(f.read())

while 1:
    log = login()
    if log.username == 'admin':
        while 1:
            react = input('Choose: 1.Add, 2.Show, 3.Change password, other.Exit: ')
            if react == '1':
                add_member()
            elif react == '2':
                show_attendance()
            elif react == '3':
                log.change_password()
            else:
                print('Exit...')
                break
    
    else:
        while 1:
            react = input('Choose: 1.Attendance registration, 2.Change password, other.Exit: ')
            if react == '1':
                log.attendance_registration()
            elif react == '2':
                log.change_password()
            else:
                print('Exit...')
                break
import datetime

while 1:

    user = input ('username(q for quit) = ')
    if user=="q":
        break
    password = input ("password = ")

    if user == "admin" and password == "12345" :
        newuser = input ("enter newusername: ")
        newpass = input ("enter newpassword: ")
        newworker = newuser + newpass
        f = open ("workers.txt" , "a")
        f.write(f'{newworker} \n')



    f = open ('workers.txt' , 'r')
    b = f.read()
    if user+password in b:
        timestamp = datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
        print("Login successfully")
        f = open ("workers login" , "a")
        f.write(f"{user} login in {timestamp}\n")
from datetime import datetime
class Enter:
    def __init__(self, mgname, mgpass):
        self.mgname = mgname
        self.mgpass = mgpass

        if mgname == "admin" and mgpass == "12345":
            print("welcome admin")
            self.manager = Manager()
            Enter.shared_manager = self.manager

        elif Enter.shared_manager and mgname in Enter.shared_manager.users:
            if mgpass == Enter.shared_manager.users[mgname]:
                print("welcome emp")
                self.employee = Employee(mgname)
            else:
                print("wrong password")
        else:
            print("user not found")

class Manager:
    def __init__(self):
        self.users = {}

    def add_user(self, username, userpass):
        self.users[username] = userpass
        with open(
            r"C:\Users\ASUS\OneDrive\Desktop\users.txt", "a", encoding="utf-8"
        ) as f:
            f.write(f"{username} was added with {userpass}\n")

    def show_list(self):
        for un, pw in self.users.items():
            print(f"user {un} with {pw} ")

class Employee:
    def __init__(self, username):
        print(f"hi {username}")
        self.username = username
        self.emp = {}

    def persent(self):
        now = datetime.now()
        self.emp[self.username] = now
        with open(
            r"C:\Users\ASUS\OneDrive\Desktop\present.txt", "a", encoding="utf-8"
        ) as f:
            formatted_time = now.strftime("%Y-%m-%d %H:%M:%S")
            f.write(f"{self.username} was present at {formatted_time}\n")

    def show_present(self):
        for name, time in self.emp.items():
            formatted_time = time.strftime("%Y-%m-%d %H:%M:%S")
            print(f"{name} was present at {formatted_time}")
import json
from datetime import datetime

users_file = 'users.json'
attendance_file = 'attendance.json'

def admin_login(username, password):
    return username == 'admin' and password == '12345'

def add_employee(username, password):
    with open(users_file, 'a') as f:
        json.dump({username: password}, f)

def employee_login(username, password):
    with open(users_file) as f:
        users = json.load(f)
    return users.get(username) == password

def record_attendance(username):
    with open(attendance_file, 'a') as f:
        timestamp = datetime.now().isoformat()
        json.dump({username: timestamp}, f)

# Example usage
if admin_login('admin', '12345'):
    add_employee('employee1', 'pass1')

if employee_login('employee1', 'pass1'):
    record_attendance('employee1')
پاسخ هوش مصنوعی Ai Python
:این سوال درون دو فایل نوشته شده فایل اول
(بخش اول سوال)

import pickle
from datetime import datetime
class Karmand:
    def __init__(self, username, password):
        self.username = username
        self.password = password

    def print (self):
        print (self.username, self.password)

def print_books ():
    for karmand in (karmands):
        print (end=" ")
        karmand.print()

username_manager= "admin"
password_manager = "12345"
karmands = []
while 1:
    x = input("1.Enter")
    if x == "1" :
        user_name = input("username: ")
        pass_word = input("password: ")
        if user_name == username_manager and pass_word == password_manager :
            print("ok")
            while 1:
                i = input("1.Registration")
                if i == "1" :
                    username = input ("employee_name: ") 
                    password = input("employee_password: ")
                    karmand = Karmand(username, password)
                    karmands.append(karmand)
                else:
                    b = pickle.dumps(karmands)
                    f = open('karmandan.txt', 'ab')
                    f.write(b)
                    f.close()
                    break
    else:
        break

        فایل دوم:   

import pickle
from datetime import datetime

class Karmand:
    def __init__(self, username, password):
        self.username = username
        self.password = password

    def print (self):
        print (self.username, self.password)

    def __eq__(self, username):
        return self.username == username

    def tabe (self):
        self.list = []
        self.jadid = self.username, self.password
        self.list.append(self.jadid)
        print (self.jadid)

def print_books ():
    for karmand in (karmands):
        print (end=" ")
        karmand.print()

def print_books1 ():
    for karmand in karmands:
        print (end=" ")
        karmand.tabe()

f = open('karmandan.txt', 'rb')
b = f.read()
karmands = pickle.loads(b)
print_books ()
name_karmand = input("username: ")
password_karmand = input("password: ")
z = Karmand(name_karmand, password_karmand )

for karmand in (karmands):
    if karmand == z:
        print("valid")
        now = datetime.now()
        time_today = now.strftime("%Y-%m-%d %H:%M:%S")
        f = open ('attendance_time.txt' , 'a')
        f.write(f'{name_karmand}  : ')
        f = open ('attendance_time.txt' , 'a')
        f.write(time_today)
        f = open ('attendance_time.txt', 'a')
        f.write("\n")
        f = open ('attendance_time.txt' , 'r')
        print(f.read())
        f.close()
    else:
        break   

ارسال جواب

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

×
بستن