مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

مدرسه زبان برنامه‌نویسی PYTHON

وبلاگی جهت معرفی - آموزش و تحلیل زبان برنامه نویسی ‍پایتون

۱ مطلب با کلمه‌ی کلیدی «مونگودیبی» ثبت شده است

    برنامه ذخیره اطلاعات دانش آموزان با استفاده از MongoDB در پایتون    

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

from pymongo import MongoClient
from pymongo.errors import ConnectionFailure, DuplicateKeyError
import re

class StudentDatabase:
    def init(self, db_name='school_db', collection_name='students'):
        """
        Initialize the MongoDB connection and student collection
        """
        try:
            # اتصال به MongoDB (به صورت پیش‌فرض به localhost متصل می‌شود)
            self.client = MongoClient('mongodb://localhost:27017/')
            
            # تست اتصال
            self.client.admin.command('ping')
            print("اتصال به MongoDB با موفقیت برقرار شد.")
            
            self.db = self.client[db_name]
            self.collection = self.db[collection_name]
            
            # ایجاد ایندکس برای کد ملی به عنوان کلید یکتا
            self.collection.create_index("national_id", unique=True)
            
        except ConnectionFailure:
            print("خطا در اتصال به MongoDB. لطفا مطمئن شوید سرور MongoDB در حال اجراست.")
            raise

    def validate_email(self, email):
        """
        اعتبارسنجی فرمت ایمیل
        """
        pattern = r'^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$'
        return re.match(pattern, email) is not None

    def validate_phone(self, phone):
        """
        اعتبارسنجی شماره تلفن (فرمت بین‌المللی یا ایرانی)
        """
        pattern = r'^(\+98|0)?9\d{9}$'
        return re.match(pattern, phone) is not None

    def validate_national_id(self, national_id):
        """
        اعتبارسنجی کد ملی ایران (10 رقمی)
        """
        if not national_id.isdigit() or len(national_id) != 10:
            return False
        
        # الگوریتم بررسی کد ملی
        check = int(national_id[9])
        s = sum(int(national_id[i]) * (10 - i) for i in range(9)) % 11
        return (s < 2 and check == s) or (s >= 2 and check + s == 11)

    def add_student(self, first_name, last_name, email, phone, national_id):
        """
        افزودن دانش آموز جدید به پایگاه داده
        """
        # اعتبارسنجی ورودی‌ها
        if not all([first_name, last_name, email, phone, national_id]):
            print("خطا: تمام فیلدها باید پر شوند.")
            return False

        if not self.validate_email(email):
            print("خطا: فرمت ایمیل نامعتبر است.")
            return False

        if not self.validate_phone(phone):
            print("خطا: فرمت شماره تلفن نامعتبر است.")
            return False

        if not self.validate_national_id(national_id):
            print("خطا: کد ملی نامعتبر است.")
            return False

        # ایجاد سند دانش آموز
        student = {
            "first_name": first_name,
            "last_name": last_name,
            "email": email,
            "phone": phone,
            "national_id": national_id
        }

        try:
            # درج سند در مجموعه
            result = self.collection.insert_one(student)
            print(f"دانش آموز با موفقیت اضافه شد. شناسه: {result.inserted_id}")
            return True
        except DuplicateKeyError:
            print("خطا: دانش آموزی با این کد ملی از قبل وجود دارد.")
            return False
        except Exception as e:
            print(f"خطا در افزودن دانش آموز: {e}")
            return False

    def close_connection(self):
        """
        بستن اتصال به MongoDB
        """
        self.client.close()
        print("اتصال به MongoDB بسته شد.")


def get_student_info():
    """
    دریافت اطلاعات دانش آموز از کاربر
    """
    print("\nلطفا اطلاعات دانش آموز را وارد کنید:")
    first_name = input("نام: ").strip()
    last_name = input("نام خانوادگی: ").strip()
    email = input("ایمیل: ").strip()
    phone = input("شماره تلفن (مثال: 09123456789): ").strip()
    national_id = input("کد ملی (10 رقمی): ").strip()
    
    return first_name, last_name, email, phone, national_id


def main():
    # ایجاد نمونه از کلاس پایگاه داده
    try:
        db = StudentDatabase()
    except ConnectionFailure:
        return

while True:
        print("\nمنوی اصلی:")
        print("1. افزودن دانش آموز جدید")
        print("2. خروج")
        
        choice = input("لطفا گزینه مورد نظر را انتخاب کنید: ").strip()
        
        if choice == '1':
            # دریافت اطلاعات دانش آموز
            student_data = get_student_info()
            
            # افزودن دانش آموز به پایگاه داده
            db.add_student(*student_data)
        
        elif choice == '2':
            # خروج از برنامه
            db.close_connection()
            print("برنامه خاتمه یافت.")
            break
        
        else:
            print("گزینه نامعتبر. لطفا عدد 1 یا 2 را وارد کنید.")


if name == "__main__":
    main()

 

مونگو دیبی - رادیو صدای ققنوس

🔴🔴 راهنمای استفاده از برنامه:

1. مطمئن شوید MongoDB روی سیستم شما نصب و اجرا شده است (به صورت پیش‌فرض روی پورت 27017).

2. کتابخانه‌های مورد نیاز را نصب کنید:
   
   pip install pymongo
   `

3. برنامه را اجرا کنید و منوی اصلی نمایش داده می‌شود.

4. برای افزودن دانش آموز جدید، گزینه 1 را انتخاب کنید و اطلاعات خواسته شده را وارد نمایید.

5. برنامه به طور خودکار اعتبارسنجی‌های زیر را انجام می‌دهد:
   - تمام فیلدها باید پر شوند
   - فرمت ایمیل باید معتبر باشد
   - شماره تلفن باید معتبر باشد (فرمت ایرانی)
   - کد ملی باید 10 رقمی و معتبر باشد

6. اطلاعات با موفقیت در MongoDB ذخیره می‌شوند.

🔵🔵 ساختار پایگاه داده:
🔵 نام پایگاه داده: `school_db`
🔵 نام مجموعه: `students`
🔵 فیلدها: `first_name`, `last_name`, `email`, `phone`, `national_id`
🔵 کد ملی (`national_id`) به عنوان کلید یکتا در نظر گرفته شده است.

۰ نظر موافقین ۰ مخالفین ۰ ۱۵ فروردين ۰۴ ، ۱۷:۴۱
سعید دامغانیان