📋 الزامات سیستم مدیریت تور

مستند کامل نیازمندی‌های نرم‌افزار مدیریت مسافر، تور و خرید

۸۰ مورد الزام

📌 فهرست بخش‌ها

🏠

بخش Home

1 در قسمت بالای صفحه باید منو وجود داشته باشد و منو باید شامل گزینه‌های About Me و Exit باشد.
2 زمانی که روی About Me کلیک شد، یک صفحه (پنجره popup) روی صفحه اصلی باز شود که در آن نام، نام خانوادگی و نام دوره وجود داشته باشد. (صفحه Home نباید بسته شود.)
3 زمانی که روی Exit کلیک شد، برنامه از کاربر بپرسد: «آیا می‌خواهید برنامه بسته شود؟» در صورت کلیک روی Yes، برنامه به صورت کامل بسته شود.
4 صفحه Home باید شامل چهار دکمه Passenger، Tour، Buy و Close باشد.
5 دکمه Close باید دقیقاً عملکردی مشابه دکمه Exit در منو داشته باشد (مورد ۳).
6 زمانی که روی هر کدام از دکمه‌های Passenger، Tour یا Buy کلیک شد، صفحه Home به طور کامل بسته شده و صفحه مربوط به آن دکمه باز شود.
🧳

بخش Passenger

7 صفحه Passenger باید شامل سه تب Add، Edit & Delete و Show باشد.

🟢 تب Add Passenger

8 در تب Add باید فیلدهای زیر وجود داشته باشد (موارد ۹ تا ۲۴).
9 Entry کد ملی:
  • نباید شامل حروف باشد.
  • نباید خالی باشد.
  • نباید حاوی فاصله (Space) باشد.
  • باید دقیقاً ۱۰ رقم باشد.
  • نباید این کد ملی از قبل در دیتابیس موجود باشد.
10 Entry شماره پاسپورت:
  • نباید خالی باشد.
  • نباید حاوی فاصله باشد.
  • حتماً باید با یک حرف انگلیسی بزرگ (A–Z) شروع شود.
  • طول کل شماره پاسپورت باید ۹ کاراکتر باشد.
11 Entry نام:
  • نباید خالی باشد.
  • نباید فقط حاوی فاصله باشد.
  • نباید شامل عدد باشد.
  • نباید طول آن کمتر از ۲ کاراکتر باشد.
12 Entry نام خانوادگی:
  • نباید خالی باشد.
  • نباید فقط حاوی فاصله باشد.
  • نباید شامل عدد باشد.
  • نباید طول آن کمتر از ۴ کاراکتر باشد.
13 Radio Button جنسیت: باید یکی از سه گزینه حتماً انتخاب شود و نباید خالی بماند.
14 Entry نام پدر:
  • نباید خالی باشد.
  • نباید فقط حاوی فاصله باشد.
  • نباید شامل عدد باشد.
  • نباید طول آن کمتر از ۲ کاراکتر باشد.
  • نباید نام پدر با نام خود فرد یکسان باشد.
15 Entry سال تولد:
  • نباید خالی باشد.
  • نباید حاوی فاصله باشد.
  • نباید حاوی حروف باشد.
  • نباید از سال جاری (۲۰۲۶ / ۱۴۰۵) بزرگ‌تر باشد.
  • نباید کمتر از ۱۰۰ سال قبل از سال جاری باشد (حداقل ۱۹۲۶ / ۱۳۰۵).
16 Entry سن: باید غیرفعال (Disabled) باشد و کاربر نتواند آن را تغییر دهد. سن باید به صورت خودکار بر اساس سال تولد محاسبه شده و در این فیلد قرار بگیرد.
17 Entry شماره موبایل:
  • نباید خالی باشد.
  • نباید حاوی فاصله باشد.
  • نباید حاوی حروف باشد.
  • باید دقیقاً ۱۱ رقم باشد.
  • باید با ۰۹ شروع شود.
  • نباید از قبل در دیتابیس موجود باشد.
18 Entry ایمیل:
  • نباید خالی باشد.
  • نباید حاوی فاصله باشد.
  • باید دقیقاً یک کاراکتر @ داشته باشد.
  • باید حداقل یک کاراکتر . داشته باشد.
  • نباید از قبل در دیتابیس موجود باشد.
19 Combo Box کشور: باید شامل گزینه‌های زیر باشد: ایران، آمریکا، آلمان، ترکیه، اسپانیا.
20 Combo Box استان: باید بر اساس کشور انتخاب‌شده فیلتر شود:
  • ایران: تهران، اصفهان، فارس، خراسان رضوی، آذربایجان شرقی
  • آمریکا: کالیفرنیا، تگزاس، فلوریدا، نیویورک، ایلینوی
  • آلمان: بایرن، برلین، هامبورگ، هسن، زاکسن
  • ترکیه: استانبول، آنکارا، ازمیر، آنتالیا، بورسا
  • اسپانیا: مادرید، بارسلونا، والنسیا، سویا، مالاگا
21 در ابتدا هر دو Combo Box باید خالی باشند. اگر کشور انتخاب شد فقط استان‌های مرتبط نمایش داده شود. اگر استانی انتخاب شد کشور مرتبط به صورت خودکار در Combo Box کشور قرار بگیرد. کاربر باید هر دو مورد را انتخاب کند.
22 Entry آدرس: نباید خالی باشد و نباید فقط حاوی فاصله باشد.
23 Check Box ویژگی‌ها: کاربر می‌تواند هیچ‌کدام را انتخاب نکند، اما اجازه ندارد بیشتر از ۳ مورد را همزمان انتخاب کند.
24 Check Box نیازهای خاص: کاربر می‌تواند هیچ‌کدام را انتخاب نکند و هیچ محدودیتی برای تعداد موارد انتخاب‌شده وجود ندارد.
25 Button ذخیره (Save): زمانی که روی دکمه Save کلیک شد، اگر هر کدام از فیلدها خطا داشتند باید پیام خطای مرتبط نمایش داده شود؛ در غیر این صورت اطلاعات در دیتابیس ذخیره شود، پیام «با موفقیت ذخیره شد» نمایش داده شود و تمام فیلدها پاک شده و کرسر به اولین فیلد منتقل شود.
⚠️ حتی اگر بیش از یک فیلد خطا داشت، در لحظه باید تنها یک پیام خطا نمایش داده شود و چند پنجره خطا همزمان نمایش داده نشوند.
26 Button پاک‌کردن (Clear): ابتدا از کاربر بپرسد «مطمئن هستید که می‌خواهید اطلاعات را پاک کنید؟» در صورت کلیک روی Yes، تمام اطلاعات پاک شده و کرسر به اولین فیلد منتقل شود.
27 Button برگشت (Back): صفحه جاری بسته شود و صفحه قبلی باز شود.

🟡 تب Edit & Delete Passenger

28 باید چهار Radio Button وجود داشته باشد که هر کدام یک Entry مرتبط (کد ملی، شماره پاسپورت، شماره موبایل، ایمیل) داشته باشند. تمام Entry ها در ابتدا غیرفعال باشند. با انتخاب هر Radio Button فقط Entry مرتبط با آن فعال شود.
⚠️ اگر یک Radio Button انتخاب شده باشد و داخل Entry آن مقداری نوشته شده باشد و سپس Radio Button دیگری انتخاب شود، Entry قبلی باید محتوایش پاک شده و غیرفعال شود و Entry جدید فعال شود.
29 تمام اعتبارسنجی‌های مربوط به هر فیلد باید انجام شود (موارد ۹، ۱۰، ۱۷، ۱۸).
30 Button جستجو (Search): در صورت وجود خطا در اعتبارسنجی یا عدم وجود داده در دیتابیس، پیام مرتبط نمایش داده شود. در غیر این صورت تمام اطلاعات آن شخص از دیتابیس خوانده شده و در فیلدهای مرتبط پر شود.
31 پس از موفقیت‌آمیز بودن جستجو، دکمه‌های Edit و Delete فعال شوند.
32 Button Edit: زمانی که روی Edit کلیک شد، دکمه Delete غیرفعال شود، دکمه Save فعال شود و تمام فیلدها (به جز Radio Button های مربوط به سرچ) فعال شوند.
33 کاربر می‌تواند هر کدام از فیلدها را تغییر دهد. پس از کلیک روی Save اگر خطایی وجود داشت پیام مرتبط نمایش داده شود و در غیر این صورت اطلاعات اصلاح‌شده در دیتابیس ذخیره شود (اعتبارسنجی‌های موارد ۹ تا ۲۵).
34 Button Delete: ابتدا بپرسد «آیا مطمئن هستید که می‌خواهید اطلاعات حذف شود؟» در صورت کلیک روی Yes، تمام اطلاعات آن شخص از دیتابیس حذف شود.
35 Button Back: دقیقاً عملکردی مشابه مورد ۲۷ داشته باشد.

🔵 تب Show Passenger

36 باید Entry های کد ملی، شماره پاسپورت، شماره موبایل، ایمیل، نام و نام خانوادگی وجود داشته باشد. کاربر می‌تواند همزمان یک یا چند Entry را پر کند و نتایج به صورت Live در TreeView نمایش داده شوند. TreeView باید دارای اسکرول افقی و عمودی برای نمایش تمام داده‌ها باشد.
37 Button Back: دقیقاً عملکردی مشابه مورد ۲۷ داشته باشد.
🗺️

بخش Tour

38 صفحه Tour باید شامل سه تب Add، Edit & Delete و Show باشد.

🟢 تب Add Tour

39 Entry شماره تور (Tour ID): باید غیرفعال باشد و به صورت خودکار با هر اجرا تولید و پر شود.
40 Entry عنوان: نباید خالی باشد و نباید فقط حاوی فاصله باشد.
41 Combo Box مبدأ: باید موارد به صورت «کشور، استان» نمایش داده شوند (مثال: Iran, Tehran). تمام موارد باید از کشورها و استان‌های گفته‌شده در موارد ۱۹ و ۲۰ باشند.
42 Combo Box مقصد: مشابه مبدأ، با این تفاوت که موردی که به عنوان مبدأ انتخاب شده است نباید در گزینه‌های مقصد نمایش داده شود.
43 Entry مدت زمان (روز):
  • نباید خالی باشد.
  • نباید حاوی فاصله باشد.
  • نباید حاوی حروف باشد.
  • نباید عدد وارد‌شده کمتر از ۱ یا بیشتر از ۹۰ باشد.
44 Entry قیمت:
  • نباید خالی باشد.
  • نباید حاوی فاصله باشد.
  • نباید حاوی حروف باشد.
  • نباید کمتر از ۵,۰۰۰,۰۰۰ تومان باشد.
45 Spin Box ظرفیت (جمعیت): باید به صورت ۵ واحدی افزایش یابد. حداکثر ظرفیت تور نباید از ۲۰۰ نفر تجاوز کند.
46 Spin Box حداقل تعداد: به صورت ۱ واحدی افزایش یابد و نباید بزرگ‌تر یا مساوی ظرفیت کل تور باشد.
47 Button ذخیره (Save): در صورت خطا پیام مرتبط نمایش داده شود؛ در غیر این صورت اطلاعات ذخیره شده، پیام موفقیت نمایش داده شود، فیلدها پاک شده و کرسر به اولین فیلد منتقل شود.
⚠️ حتی اگر بیش از یک فیلد خطا داشت، در لحظه باید تنها یک پیام خطا نمایش داده شود.
48 Button Clear: ابتدا از کاربر بپرسد «مطمئن هستید؟» در صورت Yes، تمام اطلاعات پاک شده و کرسر به اولین فیلد منتقل شود.
49 Button Back: صفحه جاری بسته شود و صفحه قبلی باز شود.

🟡 تب Edit & Delete Tour

50 جستجو فقط بر اساس ID تور انجام می‌شود.
51 اگر فیلد ID خالی بود یا داده در دیتابیس وجود نداشت، پیام مرتبط نمایش داده شود.
52 اگر اطلاعات وجود داشت، تمام فیلدها بر اساس محتوای دیتا پر شوند. تمام فیلدها به جز ID تور قابلیت ویرایش داشته باشند. دکمه‌های Edit و Delete فعال شوند.
53 Button Edit: دکمه Delete غیرفعال شود و دکمه Save فعال شود.
54 برای تمام فیلدها اعتبارسنجی‌های لازم انجام شود. در صورت خطا پیام مرتبط نمایش داده شود؛ در غیر این صورت تغییرات در دیتابیس ذخیره شود.
55 Button Delete: ابتدا تأییدیه بپرسد و در صورت Yes اطلاعات از دیتابیس حذف شود.
56 Button Back: دقیقاً مشابه مورد ۴۹.

🔵 تب Show Tour

57 باید Entry های ID تور، عنوان، قیمت، مدت زمان و Combo Box های مبدأ و مقصد وجود داشته باشند. کاربر می‌تواند همزمان یک یا چند فیلد را پر کند و نتایج به صورت Live در TreeView نمایش داده شوند. TreeView باید دارای اسکرول افقی و عمودی باشد.
58 Button Back: دقیقاً مشابه مورد ۴۹.
💳

بخش Buy

🟢 تب Add Buy

59 باید چهار Radio Button وجود داشته باشد که هر کدام یک Entry مرتبط (کد ملی، شماره پاسپورت، شماره موبایل، ایمیل) داشته باشند. تمام Entry ها در ابتدا غیرفعال باشند. با انتخاب هر Radio Button فقط Entry مرتبط فعال شود.
⚠️ اگر یک Radio Button انتخاب شده باشد و داخل Entry آن مقداری باشد و سپس Radio Button دیگری انتخاب شود، Entry قبلی باید پاک شده و غیرفعال شود و Entry جدید فعال شود.
60 تمام اعتبارسنجی‌های مربوط به هر فیلد باید انجام شود (موارد ۹، ۱۰، ۱۷، ۱۸).
61 Button نمایش مسافر: در صورت خطا در اعتبارسنجی یا عدم وجود داده در دیتابیس، پیام مرتبط نمایش داده شود. در غیر این صورت فقط فیلدهای نام و نام خانوادگی از دیتابیس خوانده شده و پر شوند.
62 جستجوی تور فقط بر اساس ID تور انجام می‌شود.
63 Button نمایش تور: اگر فیلد خالی بود یا در دیتابیس وجود نداشت پیام مرتبط نمایش داده شود. در غیر این صورت بقیه فیلدهای مرتبط با اطلاعات تور پر شوند.
64 Spin Box تعداد: بازه ۱ تا ۶ نفر. مقدار پیش‌فرض روی ۱ نفر باشد.
65 Entry قیمت نهایی: باید غیرفعال باشد. بعد از نمایش اطلاعات تور چون تعداد مسافر ۱ است، قیمت نهایی با قیمت تور برابر است. با تغییر تعداد، قیمت نهایی به صورت خودکار (قیمت × تعداد) به‌روز شود.
66 Entry پرداخت‌شده:
  • نباید خالی باشد.
  • نباید حاوی حروف باشد.
  • نباید حاوی فاصله باشد.
  • باید یک عدد مثبت باشد.
  • نباید از قیمت نهایی بزرگ‌تر باشد.
  • نباید کمتر از یک‌چهارم قیمت نهایی باشد.
67 Entry مبلغ مانده: غیرفعال باشد و به صورت خودکار نتیجه (قیمت نهایی − پرداخت‌شده) را نمایش دهد.
68 Button Save: در صورت خطا پیام مرتبط نمایش داده شود؛ در غیر این صورت اطلاعات ذخیره شده، پیام موفقیت نمایش داده شود، فیلدها پاک شده و کرسر به اولین فیلد منتقل شود.
⚠️ حتی اگر بیش از یک فیلد خطا داشت، در لحظه باید تنها یک پیام خطا نمایش داده شود.
69 Button Clear: تأییدیه بگیرد و در صورت Yes تمام فیلدها پاک شده و کرسر به اولین فیلد برود.
70 Button Back: صفحه جاری بسته شود و صفحه قبلی باز شود.

🟡 تب Edit & Delete Buy

71 باید چهار Radio Button وجود داشته باشد که هر کدام یک Entry (کد ملی، شماره پاسپورت، شماره موبایل، ایمیل) داشته باشند. در ابتدا همه غیرفعال باشند. با انتخاب هر Radio Button فقط Entry مرتبط فعال شود.
72 باید پنج Radio Button وجود داشته باشد که هر کدام یک Entry (کد ملی، شماره پاسپورت، شماره موبایل، ایمیل، ID تور) داشته باشند. در ابتدا همه غیرفعال باشند. با انتخاب هر Radio Button فقط Entry مرتبط فعال شود. با تغییر Radio Button، Entry قبلی پاک و غیرفعال شود.
73 Button Search: در صورت خطا یا عدم وجود داده، پیام مرتبط نمایش داده شود. در غیر این صورت تمام اطلاعات از دیتابیس خوانده شده و فیلدها پر شوند و دکمه‌های Edit و Delete فعال شوند.
74 Button Edit: دکمه Delete غیرفعال شود و دکمه Save فعال شود.
75 برای تمام فیلدها اعتبارسنجی انجام شود. در صورت خطا پیام مرتبط نمایش داده شود؛ در غیر این صورت تغییرات در دیتابیس ذخیره شود.
76 Button Delete: تأییدیه بگیرد و در صورت Yes تمام اطلاعات از دیتابیس حذف شود.
77 Button Back: دقیقاً مشابه مورد ۴۹.

🔵 تب Show Buy

78 باید Entry های کد ملی، شماره پاسپورت، شماره موبایل، ایمیل، نام، نام خانوادگی، ID تور و مبلغ مانده وجود داشته باشند. کاربر می‌تواند همزمان یک یا چند فیلد را پر کند و نتایج به صورت Live در TreeView نمایش داده شوند. TreeView باید دارای اسکرول افقی و عمودی باشد.
79 Button Back: دقیقاً مشابه مورد ۲۷.
📂

نکات کلی

80 برنامه باید حاوی یک دیتابیس با سه جدول Passenger، Tour و Buy باشد.