اذهب إلى المحتوى

السؤال

نشر

السلام عليكم 

ده كود بلغه بايثون لحفظ بيانات المستخدمين 

from sys import exit
from time import sleep

class User:

    def __init__(self , first_name , last_name , email , password , status="inactive"):
        self.first_name = first_name
        self.last_name = last_name
        self.email = email
        self.password = password
        self.status = status

    def dasipy(self):
        print(f"Frist name: {self.first_name}")    
        print(f"Last name: {self.last_name}")    
        print(f"Email: {self.email}")    
        print(f"Password: {self.password}")    
        print(f"Status: {self.status}\n")
        print("_" * 20)    

    

def username():

    first_name = input("First_name: ")
    last_name = input("last_name: ")
    email = input("Email: ")
    password = input("password: ")
    return User(first_name , last_name , email , password)



user = []
while True:
    
    print("Welcome to user managment\n")
    print("Choose an action\n")
    print("1. Add new user")
    print("2. Display all users")
    print("3.Exit\n")
    
    
    choose = input("Enter you choice: ")

    if choose == '1':
        user.append(username())
        print("User abbed successfully!\n")
        sleep(2)

    if choose == '2':

        if user:

            for i in user:
                i.dasipy()  
            sleep(2)
        else:
            print("Not Found User!")
            sleep(2)

    elif choose == '3':
        print("Exiting...")
        exit(0)

    else:
        print("No choose 1 or 2 or 3!")      

عاوز افهم هو ليه البيانات مش بتحفظ في المتغير user يعني لو اقفلت البرنامج وشغلتو تاني وبختار رقم 2 عشان يعرض البيانات الاكانت مخزنه فا اليانات مش موجود ليه؟

وازي البيانات اتخزينت اصل في المتغير ده user

Recommended Posts

  • 0
نشر

السبب الأساسي أن البيانات لا يتم حفظها في المتغير user بعد إغلاق البرنامج:

أن المتغيرات في البرامج (مثل المتغير user في هذه الحالة) يتم تخزينها في الذاكرة المؤقتة (RAM) أثناء تشغيل البرنامج. بمجرد إيقاف البرنامج، يتم تحرير الذاكرة المؤقتة وبالتالي تفقد جميع البيانات التي كانت موجودة في المتغيرات. عندما تقوم بإعادة تشغيل البرنامج، يبدأ من الصفر ويعود المتغير user فارغًا.

اذا كنت تريد حفظ بيانات ال user فيمكنك استخدام ملف لحفظ البيانات مثل ال json او csv.

او يمكنك استخاد قواعد البيانات.
و اضف الى الكود عملية استرجاع البيانات. واليك مثال عن طريق ال json:
 

import json
from sys import exit
from time import sleep

class User:
    def __init__(self, first_name, last_name, email, password, status="inactive"):
        self.first_name = first_name
        self.last_name = last_name
        self.email = email
        self.password = password
        self.status = status

    def display(self):
        print(f"First name: {self.first_name}")    
        print(f"Last name: {self.last_name}")    
        print(f"Email: {self.email}")    
        print(f"Password: {self.password}")    
        print(f"Status: {self.status}\n")
        print("_" * 20)    

    def to_dict(self):
        return {
            "first_name": self.first_name,
            "last_name": self.last_name,
            "email": self.email,
            "password": self.password,
            "status": self.status
        }

    @classmethod
    def from_dict(cls, data):
        return cls(data["first_name"], data["last_name"], data["email"], data["password"], data["status"])

def username():
    first_name = input("First_name: ")
    last_name = input("last_name: ")
    email = input("Email: ")
    password = input("password: ")
    return User(first_name, last_name, email, password)

def save_users(users):
    with open('users.json', 'w') as file:
        json_data = [user.to_dict() for user in users]
        json.dump(json_data, file)

def load_users():
    try:
        with open('users.json', 'r') as file:
            json_data = json.load(file)
            return [User.from_dict(user_data) for user_data in json_data]
    except FileNotFoundError:
        return []

users = load_users()

while True:
    print("Welcome to user management\n")
    print("Choose an action\n")
    print("1. Add new user")
    print("2. Display all users")
    print("3. Exit\n")

    choice = input("Enter your choice: ")

    if choice == '1':
        new_user = username()
        users.append(new_user)
        save_users(users)
        print("User added successfully!\n")
        sleep(2)

    elif choice == '2':
        if users:
            for user in users:
                user.display()
            sleep(2)
        else:
            print("No users found!")
            sleep(2)

    elif choice == '3':
        print("Exiting...")
        exit(0)

    else:
        print("Invalid choice! Please choose 1, 2, or 3.")

و لاحظ فى الكود:
 

@classmethod تستخدم لتعريف "طريقة" (method) تابعة للفئة (class method).

و على عكس الدوال العادية (التي تستخدم self للوصول إلى خصائص الكائن)،

الدالة التي توصف بـ @classmethod تأخذ دائمًا المعامل الأول كـ cls، والذي يمثل الفئة نفسها (class) وليس الكائن.

  • 0
نشر

وعليكم السلام ورحمة الله وبركاته.

عند تشغيل البرنامج فإن المتغيرات والبيانات التى يتم حفظها بداخل تلك المتغيرات يقوم البرنامج بحفظها في الذاكرة المؤقته في الجهاز لديك وبمجرد إغلاق البرنامج يتم مسح كافة تلك البيانات من الذاكرة المؤقته . حيث لم يتم تصميم البرامج لحفظ البيانات بتلك الطريقة .

ولذلك لحفظ البيانات لديك ينبغى إستخدام قواعد البيانات لحفظها أو يمكنك حفظها في ملف لديك على الجهاز إن كان الأمر بسيط كما لديك هنا حيث يمكنك إستخدام ملف وليدعى مثلا users.txt وبداخله تقوم بحفظ البيانات . حيث حينما تريد حفظ البيانات تقوم بفتح الملف من خلال الدالة open وتقوم بالكتابة على الملف بإستخدام الدالة write هكذا مثلا :

from sys import exit
from time import sleep
import os

class User:

    def __init__(self, first_name, last_name, email, password, status="inactive"):
        self.first_name = first_name
        self.last_name = last_name
        self.email = email
        self.password = password
        self.status = status

    def display(self):
        print(f"First name: {self.first_name}")    
        print(f"Last name: {self.last_name}")    
        print(f"Email: {self.email}")    
        print(f"Password: {self.password}")    
        print(f"Status: {self.status}\n")
        print("_" * 20)    

    def to_string(self):
        return f"{self.first_name},{self.last_name},{self.email},{self.password},{self.status}\n"

def load_users(filename):
    users = []
    if os.path.exists(filename):
        with open(filename, 'r') as file:
            lines = file.readlines()
            for line in lines:
                if line.strip():
                    first_name, last_name, email, password, status = line.strip().split(',')
                    users.append(User(first_name, last_name, email, password, status))
    return users

def save_users(users, filename):
    with open(filename, 'w') as file:
        for user in users:
            file.write(user.to_string())

def create_user():
    first_name = input("First name: ")
    last_name = input("Last name: ")
    email = input("Email: ")
    password = input("Password: ")
    return User(first_name, last_name, email, password)

filename = 'users.txt'
users = load_users(filename)

while True:
    print("Welcome to user management\n")
    print("Choose an action\n")
    print("1. Add new user")
    print("2. Display all users")
    print("3. Exit\n")

    choice = input("Enter your choice: ")

    if choice == '1':
        users.append(create_user())
        save_users(users, filename)
        print("User added successfully!\n")
        sleep(2)

    elif choice == '2':
        if users:
            for user in users:
                user.display()  
            sleep(2)
        else:
            print("No users found!")
            sleep(2)

    elif choice == '3':
        print("Exiting...")
        exit(0)

    else:
        print("Invalid choice! Please select 1, 2, or 3.")

حيث قمنا بحفظ البيانات في ملف يدعى users.txt ونقوم بقراءة تلك البيانات منه إذا أردنا ذلك . وبهذا حتى لو تم إغلاق البرنامج فستجد أن الملف users.txt يحتوى على البيانات ولهذا لن يتم فقد البيانات.

  • 0
نشر

تمام جدا جدا 

اوالا شكرااا جدا جداا لحضرتك وعلي المعلومات القيمه ده والله

بس مش ده متغير من نوع List ومن العروف ان ال List نوع من انوع هياكل البيانات وي هياكل البيانات ده عبار عن طريقه لحفظ البيانات صح كده والا انا فعم غلط 

وبعدين انا بعمل List عادي بحفظ فيه البيانات زي الكود ده كده

name = ['ali','ahmed','abdullh']

هو مش انا كده خزنت البيانات ده في المتغير الاسم name واقدر استخدمهم في اي وقت سواي اقفلت البرنامج او الا ؟

والا اي انا فهم كده صح والا اي 

 

  • 0
نشر
بتاريخ 4 دقائق مضت قال Ail Ahmed:

تمام جدا جدا 

اوالا شكرااا جدا جداا لحضرتك وعلي المعلومات القيمه ده والله

بس مش ده متغير من نوع List ومن العروف ان ال List نوع من انوع هياكل البيانات وي هياكل البيانات ده عبار عن طريقه لحفظ البيانات صح كده والا انا فعم غلط 

وبعدين انا بعمل List عادي بحفظ فيه البيانات زي الكود ده كده

name = ['ali','ahmed','abdullh']
 

هو مش انا كده خزنت البيانات ده في المتغير الاسم name واقدر استخدمهم في اي وقت سواي اقفلت البرنامج او الا ؟

والا اي انا فهم كده صح والا اي 

 

كما وضحنا لك فإن أى متغير أو بيانات يتم حفظها في البرنامج نفسه سواء متغير أو شئ فإنه يتم حفظها في الذاكرة المؤقته (RAM) وليس على القرص الصلب (Hard Disk) لديك على الجهاز ولهذا بمجرد إغلاق الحاسوب أو حتى إغلاق البرنامج يتم حذف البيانات من الذاكرة المؤقته وبالتالى فقدان أى بيانات كانت بداخل تلك المتغيرات . وكما أخبرتك لم تصمم البرامج لحفظ المتغيرات على الحاسوب .

حيث بمجرد تشغيل البرنامج وإنشاء متغير تقوم اللغة التى تم كتابة الكود بها ومثلا هنا بايثون بحفظ مكان في الذاكرة المؤقته و تعين هذا المتغير بقيمة فارغة حتى تقوم بحفظ البيانات فيه فتقوم بحفظ البيانات في المكان الخاص بهذا المتغير في الذاكرة المؤقته . وحين يتم إغلاق البرنامج تقوم اللغة بالتخلى عن تلك الأماكن في الذاكرة المؤقته ويتم حذف تلك البيانات .

ولهذا فلحفظ البيانات يجب إستخدام قواعد البيانات أو ملفات لحفظها مثل ملفات JSON أو CSV أو حتى TEXT . ولكن لا يتم الإعتماد على المتغيرات فلن يتم حفظ البيانات بها وبمجرد إغلاق البرنامج أو إغلاق الحاسوب سيتم فقدها نهائيا.

  • 0
نشر
بتاريخ 2 دقائق مضت قال محمد عاطف17:

كما وضحنا لك فإن أى متغير أو بيانات يتم حفظها في البرنامج نفسه سواء متغير أو شئ فإنه يتم حفظها في الذاكرة المؤقته (RAM) وليس على القرص الصلب (Hard Disk) لديك على الجهاز ولهذا بمجرد إغلاق الحاسوب أو حتى إغلاق البرنامج يتم حذف البيانات من الذاكرة المؤقته وبالتالى فقدان أى بيانات كانت بداخل تلك المتغيرات . وكما أخبرتك لم تصمم البرامج لحفظ المتغيرات على الحاسوب .

حيث بمجرد تشغيل البرنامج وإنشاء متغير تقوم اللغة التى تم كتابة الكود بها ومثلا هنا بايثون بحفظ مكان في الذاكرة المؤقته و تعين هذا المتغير بقيمة فارغة حتى تقوم بحفظ البيانات فيه فتقوم بحفظ البيانات في المكان الخاص بهذا المتغير في الذاكرة المؤقته . وحين يتم إغلاق البرنامج تقوم اللغة بالتخلى عن تلك الأماكن في الذاكرة المؤقته ويتم حذف تلك البيانات .

ولهذا فلحفظ البيانات يجب إستخدام قواعد البيانات أو ملفات لحفظها مثل ملفات JSON أو CSV أو حتى TEXT . ولكن لا يتم الإعتماد على المتغيرات فلن يتم حفظ البيانات بها وبمجرد إغلاق البرنامج أو إغلاق الحاسوب سيتم فقدها نهائيا.

تمام , جدا 

الف شكرااا لحضرتك جداا

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...