مقدمه : هدف این پروژه تهیه کامپوننتی برای افزودن قابلیت چت به یک نرم افزار تحت شبکه ویندوزی می باشد. برای انجام چت در این نرم افزار از Sql Server استفاده میگردد و پیام ها با ارسال و ثبت در این بانک اطلاعاتی منتقل می گردند.این کامپوننت میتواند شامل رابط کاربری گرافیکی نیز باشد که بصورت یک UserControl دریافت می گردد (هزینه مجزا برای این بخش اعلام کنید). این UserControl میتواند شبیه به پنجره نرم افزار واتساپ از دو بخش (مخاطبین) و (پیام ها) تشکیل شود که در بخش مخاطبین لیست افرادی که تا کنون با آنها چت داشته ایم بر اساس جدیدترین چت می آید که در صورتیکه چت هایی نمایش داده نشده بازای هر کدام از این افراد باشد باید با یک عدد تعداد این چت ها روی افراد مشخص شود و با انتخاب هر کدام از این کاربران در سمت مقابل لیست پیام هایی که تا کنون با آن شخص ردوبدل شده است نمایش داده می شود. در صورت ارائه این رابط گرافیکی شباهت نسبی نحوه چینش پیام ها با پیام رسان های عامیانه حفظ میگردد.
عملیات اصلی :
1- ارسال پیام : با انتخاب یک کاربر از لیست کاربرها و ارائه یک متن ساده پیام بر روی بانک اطلاعاتی درج می گردد.
2- دریافت لحظه ای پیام : هنگامی که پیام جدیدی برای کاربر در بانک درج می گردد، کاربر از این پیام آگاه می گردد و متن پیام جدید را می بیند.
3- مشاهده پیام های قبلی :کاربر با انتخاب یکی دیگر از کاربران میتواند تاریخچه چت تبادل شده بین خود و او را مشاهده کند.
پیش بینی توابع و رخدادهای برنامه :
1- تابع ارسال : یک کاربر و یک متن را گرفته ودر بانک اطلاعاتی درج کند.
2- تابع مشاهده پیام ها: تعداد پیام ها (مثلا 50 تا پیام)، شماره رکورد شروع (مثلا از رکورد شماره 101) را از کاربر گرفته و به همین تعداد از پیام های رد و بدل شده بین کاربر و مخاطب را باز میگرداند. این دو فیلد ورودی برای صفحه بندی پیام ها استفاده می گردند . مثلا در این تعریف باید از رکورد 101 تا 150 را برگرداند)
3- رخداد اطلاع از رسیدن یک پیام جدید :هنگامی که پیام جدیدی برای کاربر دربانک اطلاعاتی درج می گردد باید این رخداد اتفاق بیافتد تا کاربر را از دریافت پیام جدید مطلع کند. در این رویداد باید متن پیام جدید و فرستنده و زمان ارسال نیز مشخص باشد.
نکات مهم:
1- نرم افزار بصورت WinForm پیاده سازی میگردد.
2- در این نرم افزار ارسال فایل مدنظر نیست.
3- در صورت امکان استفاده از ایموجی هم پیاده سازی گردد (هیچگونه الزامی به این مساله نیست)
4- سورس کد کامل (بصورت کامنت گذاری شده) تحویل گرفته خواهد شد.
5- شبکه ارتباطی بر بستر وب می باشد بنابراین امکان قطع و وصلی خطوط وجود دارد.
6- در صورت ارائه محصول نهایی بصورت نرم افزار اجرایی، باید کامپوننت استفاده از این نرم افزار درون برنامه اصلی به زبان سی شارپ تحت Net4.7+ ارائه شود.
7- هدف از برونسپاری این بخش از پروژه کاستن زمان تهیه قابلیت های جدید نرم افزار اصلی می باشد.
ساختار جداول و توضیحات :
دو جدول برای این کامپوننت در نظر گرفته شده است که توضیحات برخی فیلدها در زیر ارائه می گردد:
جدول کاربر که توضیحات خاصی ندارد و نام فیلدها مشخص کننده محتوا هستند بصورت زیر است :
CREATE TABLE users (
id INT IDENTITY
,username VARCHAR(20) NOT NULL
,password VARCHAR(50) NULL
,firstname NVARCHAR(50) NULL
,lastname NVARCHAR(50) NULL
)جدول چت در زیر ارائه شده است.
در این جدول فیلد State بصورت Int ارائه شده است که حاوی وضعیت پیام است. این فیلد وضعیت های زیر را دارد :
0 :Unsend, 1: Sent, 2 : Delivered, 3 : Read
همچنین با توجه به اینکه فیلد LastEditTime در این جدول وجود دارد قطعا هنگامی که وضعیت پیام تغییر کند این تایم برابر آخرین تغییر می باشد. به عنوان مثال هنگامی که کاربر پیام را ارسال می کند و سمت مقابل در ساعت 12:28:20 دریافت میکند (بر اساس رخداد ذکر شده در بخش قبلی) آنگاه LastEditTime برابر 12:28:20 می گردد. البته این فیلد حاوی تاریخ/ساعت است و دراین جا که بصورت زمان ارائه شده تنها یک مثال بود.
پیام هایی با وضعیت Sentکه مخاطب آنها کاربر جاری است باید توسط رخداد مربوطه اطلاع رسانی گردند.
CREATE TABLE chat (
Id BIGINT IDENTITY
,CreationTime DATETIME NOT NULL
,LastEditTime DATETIME NOT NULL
,Message NVARCHAR(MAX) NOT NULL
,State INT NOT NULL
,ReceiverUserId BIGINT NOT NULL
,SenderUserId BIGINT NOT NULL
)
این پروژه قبلا در توسط فناوران امید انجام شده است یا قابل انجام است، لطفا جهت تماس با فناوران امید با شماره های پایین صفحه سایت در واتساپ و تلگرام یا ایمیل در تماس باشید، لطفا برای انجام آن تماس نگیرید فقط در واتساپ یا تلگرام یا ایمیل به صورت متنی در ارتباط باشید تا امکان سنجی گردد.