برنامه ذخیره اطلاعات دانش آموزان با استفاده از 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`) به عنوان کلید یکتا در نظر گرفته شده است.