تارا فایل

شبکه دوستی




شبکه ی دوستی

استاد راهنما :

دی

فهرست

عنوان صفحه

مقدمه 4

توضیحات کلی برنامه 4

پایگاه داده های برنامه 5

نکات لازم التوضیح 13

مقدمه

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

توصحیات کلی برنامه
در سایت دوست یابی ، کاربران با استفاده از یک ID Number که به صورت خود کار به کاربران جدید اختصاص داده می شود و یک کلمه رمز ، وارد امکانات سایت می شود.
اطلاعاتی که به صورت اجباری هر کاربر برای عضو شدن باید وارد کند عبارتند از کلمه رمز ، نام ، نام خانوادگی ، تاریخ تولد ، صندو ق پستی اینترنتی ، وضعیت تاهل و جنسیت .
هر کاربر پس از ورود، در صفحه شخصی خود (Profile) ، دوستان قطع ارتباط شده در خواست هایش از دیگران (برای دوستی) ، در خواست های دیگران ، نظرات دیگران درباره خودش ، گروه هایی که در آن عضو است ، تعداد پیام های جدید باز نشده ، دوستان (با نشانه ی OnLine بودن یا نبودن) ، تمام اطلاعات و خصوصیات خود و Link هایی برای صندوق پستی شخصی در سایت ، جستجوی افراد ، دفتر یادداشت عمومی و ویرایش خصوصیات خود را مشاهده می کند. از میان این امکانات ، نظرات دیگران ، گروه ها ، دوستان ، خصوصیات و دفتر یادداشت عمومی در صفحات دیگر کاربران درباره آنها مشاهده می شود.
در صفحه گروه ها نام تمام گروه ها به همراه تعداد اعضای آنها ، مدیر گروه و موضوع آنها و لینک هایی برای ورود به صفحه آنها دیده می شود . در صفحه هر گروه Link های اعضا و موضوعات مورد بحث قرار گرفته وجود دارد که با کلیک بر موضوعات ، پیام های فرستاده شده مشاهده می شود. در یک گروه می توان برای تمام اعضا پیام فرستاد .
در صفحه ی جستجوی افراد با وارد کردن خصوصیات می توانیم افرادی را برای درخواست دوستی یا فرستادن پیام (مثلا اعلام یک کنسرت برای علاقمندان به موسیقی) پیدا کنیم .
کاربران می توانند مشخص کنند در صورت دریافت پیام و غیره با E-Mail مطلع شوند .

پایگاه داده های برنامه
ID و PassWord در جدولی به نام Member و اطلاعات نام ، نام خانوادگی ، کلمه رمز ، جنسیت ، وضعیت تاهل ، تاریخ تولد و صندوق پستی اینترنتی در جدول Personal Information قرار دارند.

تمام در خواست های دوستی میان کاربران تا وقتی که از طرف کاربر دوم مورد موافقت قرار نگرفته اند در جدول Request ذخیره می شوند در این جدول، ID کاربر اول ( در خواست کننده ) در فیلد Mem ID 1 و ID کاربر دوم )در خواست شونده( در Mem ID 2 قرار می گیرند. پس از موافقت کاربر دوم ، این ID ها به جدول Friends منتقل می شوند. در جدول Friends علاوه بر این دو فیلد ، دو فیلد منطقی به نام های Separated و Hidden قرار دارد اگر Separated را برابر یک قرار دهیم یعنی این ارتباط به وسیله یکی از دو کاربر قطع شده است. از این پس هر یک از این کاربران می توانند کاربر دیگر را به جای لیست دوستان در صفحه دوستان قطع ارتباط شده خود مشاهده کنند. فیلد Hidden ، پنهان بودن دوستی را مشخص می کند. هیچ کاربری نمی تواند از دوستان پنهان کاربران دیگر باخبر شود.

در هر دو جدول Request وfriends ، برای جلوگیری از اشتباه ، فیلدهای Mem ID 1 و Mem ID 2 که خود یک کلید خارجی از جدول Member هستند به صورت مشترک یک کلید ترکیبی را تشکیل می دهند، زیرا هیچگاه نباید یکی دوستی دوبار ثبت شود.
نظراتی که کاربران درباره یک دیگر ثبت کرده اند در جدول Opinion قرار می گیرند. در این جدول ، ID کاربر نظر دهنده ، ID کاربر مورد نظر و متن نظرات قرار می گیرند.

گام نخست برای تشکیل یک گروه (برای بحث در موضوعات خاص) ، ورود اطلاعات اولیه آن در جدول Group است. در این جدول ، ID مدیر گروه ، نام گروه و یک ID که به صورت خودکار به گروه اختصاص می یابد قرار می گیرند.

اگر مدیر گروه بخواهد برای گروه خود توضیحات را نیز وارد کند، توضیحات وارد شده به صورت متن در جدول Gro Description در فیلد Content نوشته می شود و در مقابل آن ID گروه از جدول Group قرار می گیرد.

ID کاربران برای عضو شدن در گروه ها (پس از موافقت مدیر گروه) در جدول Member-Group و در مقابلش ID گروه مورد نظر قرار داده می شود.
در این جدول ، فیلد های Gro ID و Mem ID که خود کلید خارجی از جدول دیگری هستند به طور مشترک یک کلید ترکیبی را تشکیل می دهند تا یک عضویت در گروه ، دوبار ثبت نشود.

هرگاه یک عضو قصد ارسال پیام برای عضو یا اعضایی را داشته باشد این Message در فیلد Content در جدول Message نوشته می شود و یک ID برای Message در جدول Message به طور خودکار اختصاص داده می شود و ID فرستنده در فیلد Sender نوشته می شود فیلد منطقی Private مشخص می کند که این Message باید در صندوق پستی شخصی گیرنده (در صفحات وب) قرار گیرد یا در دفتر یاداشت عمومی او .

ID گیرنده پیام در جدول Member-Message در مقابل ID پیام قرار می گیرد . فیلد منطقی Opened در این جدول مشخص می کند که آیا گیرنده ، پیام را باز کرده است یا خیر . در صفحات برنامه اگر کاربر پیام باز نشده ای داشته باشد به او هشدار "یک پیغام جدید" داده می شود و فرستنده نیز از باز شدن یا نشدن پیام خود توسط گیرنده مطلع است.

برای ذخیره ID Number و کلمه رمز مدیر سایت ، جدولی به نام Admin ایجاد شده که فقط یک رکورد در آن قرار می دهیم زیرا این سایت فقط یک مدیر دارد . ID مدیر به صورت اجباری عدد صفر است.

ارتباط جدول Member با جداول Request ، Opinion ، Personal Information ،Friends ،Member-Group و Member-Message به گونه ای است که اگر آن عضو عضویت خود در سایت را لغو کرد یا به هر دلیلی توسط مدیر سایت از جمع کاربران در جدول Member حذف شداطلاعاتش از تمام جداول ذکر شده حذف می شود. همین مکانیزم در ارتباط جدول Group با جداول Member-Group و Gro Description ، و ارتباط جدول Message و Member-Message وجود دارد.
اما ارتباطات مستقیم جدول Member با جداول Message و Group اینگونه نیست چون اگر اطلاعات و پیام های زیادی برای یک گروه ثبت شده باشد ، با از بین رفتن مدیر آن نباید آن گروه و به تبع اطلاعات وابسته از بین بروند. و نیز پیام ها و اطلاعات فرستاده شده برای افراد نباید با از بین رفتن فرستنده ، پاک شوند.
کاربران سایت می توانند به دلخواه خود اطلاعاتی را در زمینه های: آهنگ های مورد علاقه (Favorite Songs) ، همسر ایده آل (Favorite Cansort) ، کتاب های مورد علاقه Favorite Books)) ، فیلم های مورد علاقه (Favorite films) ، بازی های مورد علاقه (Favorite Games) توانایی ها (Abilities) ، تحصیلات (Education) ، ورزش ها (Sports) شغل (Job) و صفحه (Web Page) Web برای مشاهده دیگران به صورت متن در سایت وارد کنند. این اطلاعات در جداولی به همین نام ها ذخیره می شوند و در فیلد مقابل آنها ID کاربر مذکور قرار می گیرد.

در برنامه ، کاربران می توانند بیش از یک شغل و Web page برای خود وارد کنند. در این مورد برای جلوگیری از اشتباه کاربر (دوبار وارد کردن یک شغل) و در نتیجه افزونگی داده ، فیلدهای Mem ID و Content یک کلید ترکیبی را تشکیل می دهند.
همانند اطلاعات توانایی ها ، علاقمندی ها و غیره کاربران می تواند خصوصیات ظاهری خود را وارد کنند اما با این تفاوت که خصوصیات ظاهری ، متنی نیستند و کاربران باید خصوصیات ظاهری خود را از میان خصوصیات از پیش در نظر گرفته شده در Combo Box انتخاب کنند . در جداول Eyes color (رنگ چشم) Hair Color (رنگ مو) ، Skin Color (رنگ پوست) ، Hair Style (نوع مو) ، Style (تیپ) ، Height (قد) و Weight (وزن) ، اطلاعات تعیین شده به صورت کدهای عددی (1 … تعداد موارد تعیین شده) نوشته می شوند و در مقابل آنها ID کاربر قرار می گیرد.

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

نکات لازم التوضیح
به رغم اینکه اطلاعات نام ، نام خانوادگی ، کلمه رمز ، جنسیت ، وضعیت تاهل ، تاریخ تولد و صندوق پستی اینترنتی اجباری هستند اما به علت کمک به سرعت اجرای برنامه در دو جدول قرار داده شده اند. زیرا در صفحه Login فقط به جدول حاوی ID و PassWord نیاز داریم و لزومی برای بارگذاری جدول حاوی نام و غیره وجود ندارد .
کارآیی بسیار خوب جدول Member-Message در مواقعی است که کسی بخواهد یک پیام (مثلاً تبریک عید) را برای تعداد زیادی از کاربران ارسال کند. در این حالت ، پیام یک بار در جدول Message ذخیره شده و ID آن در مقابل ID گیرندگان در جدول Member- Message قرار می گیرد.

Assigner.jsp (که خروجی HTML ندارد) در صورت اشتباه بودن ID و PassWord درخواستی به Loging.jsp میفرستد همراه با یک پارامتر با مقدار true :
<jsp:forward page="Login.jsp">
<jsp:param name="submitted" value="true"/>
</jsp:forward>
و Login.jsp در صورت دریافت این پارامتر و مقدار true پیغام "Wrong …" را نمایش میدهد یعنی در اولین اجرای صفحه ، نمایش داده نمی شود :
<c:if test="${param.submitted}">Wrong ID or PassWord</c:if>

IDهر کاربر پس از ورود در یک آبجکت از کلاس Control.java ذخیره میشود .

متدی که در کلاس Register.java برای ثبت اطلاعات کاربر جدید به کار میرود یک Boolean برمیگرداند(برای کنترل SQLException). صفحه ی Welcome.jsp در صورت بروز Exception (مقدار False توسط متد مذکور) پیغام خاصی را نمایش میدهد .

صفحات شخصی همه ی کاربران (خودمان و دیگران) توسط Profile.jsp تولید میشوند اما موارد قابل مشاهده در صفحه ی خودمان و دیگران با هم تفاوت دارند و این کار به وسیله ی پارامتر owner مشخص میشود :
<jsp:forward page="Profile.jsp">
<jsp:param name="owner" value="1"/>
</jsp:forward>
Profile.jsp یک پارامتر دیگر به نام id نیز دارد که مشخص میکند اطلاعات کدام عضو باید نمایش داده شود . برای رفتن از صفخه ی عضوی به صفحه ی دوستش عنصر مورد نظر را از آرایه id[] (ID های دوستانش) از آبجکت ساخته شده از کلاس Profile.java به عنوان پارامتر صفحه ی Profile.jsp به آن پاس میکنیم(از خود صفخه Profile.jsp):
<%int ids[]=profile.getFriends;
String name[]=profile.getName();%>

<%for(int c=0; … … {%>
<a href="Profile.jsp?id=<%ids[c]%>&owner=0">
<%name[c]%>
</a>
<%
if(request.getParameter("owner").equalsIgnoreCase("0"))
profile.setId(Integer.parseInt(request.getParameter("id"))); else{profile.setId(control.getId());}
%>
در چند صفحه(مانند ورود اطلاعات ، ویرایش اطلاعات و جستجو) ورودی های یکسانی وجود دارد که این ورودی ها یک بار در PersonalInformation.jsp ، Appearance.jsp و Other.jsp نوشته شده و در صفحاتی مانند SearchMembers.jsp و Register.jsp الحاق شده اند :
<jsp:include page"PersonalInformation.jsp"/>

برای یافتن اعضا ، کلاس Members.java اطلاعات یافته ها را به صورت یک آبجکت از کلاس Infomember.java بسته بندی میکند و آبجکت ها را در یک ArrayList ذخیره میکند و به صفحه ی FoundMembers.jsp تحویل میدهد. صفحه ی FoundMembers.jsp نیز آبجکت ها را از ArrayList بازیابی کرده ونمایش میدهد :
<%
List list = members.foundMember();
Iterator listIterator = list.iterator();
Infomember info;
while (listIterator.hasNext()){
info = (Infomember) listIterator.next();
%>
<%=infoMember.getFirstName()%><%=infoMember.getLastName()%></br>
<%}%>

4


تعداد صفحات : 15 | فرمت فایل : Word

بلافاصله بعد از پرداخت لینک دانلود فعال می شود