بانك اطلاعاتي موجود در برنامه با استفاده از Sql Server 2005 ايجاد شده است.
– جدا ول بكار رفته در بانك اطلاعاتي:
– جدول TbEbook اين جدول براي ذخيره اطلاعات كتابها ايجاد شده است و داراي هفت فيلد مختلف مي باشد.
– جدول TbUser اين جدول براي ذخيره اطلاعات كاربران ايجاد شده است وداراي پنج فيلد مختلف مي باشد.

فيلدهاي بكار رفته در جدول TbEbook:

– Name: از اين فيلد كه از نوع متن مي باشد براي ذخيره سازي نام كتابها استفاده
مي كنيم

– Pages :اين فيلد نيز از نوع متني با سايز ۴ مي باشد كه تعداد صفحات كتاب مورد نظر را در خود نگهداري مي كند.
– NumClick:اين فيلد از نوع عددي بوده و تعداد دانلود هاي كتابها را نمايش مي دهد
– Describe : اين فيلد از نوع متني بوده و توضيحات مختصري را در مورد كتاب ارائه شده در خود نگه مي دارد.
– Subject:اين فيلد نيز از نوع متني بوده و شامل كلمات كليدي در مورد كتاب مي باشد اين كلمات به تشخيص مدير سيستم در بانك ذخيره مي شود همچنين كاربران نيز

مي توانند اين كار را انجام دهند.
– Writers:اين فيلد از نوع متني بوده ون ام نويسنده كتاب را در خود ذخيره مي كند.
o LocalAdd:اين فيلد از نوع متني بوده و نام فايل را در خود نگهداري ميكند نام فايل منظور نام فيزيكي فايل بر روي هارد مي باشد چون مسير قرار گرفتن فايلها ثابت و در شاخه Book قرار دارند.ما فقط نام كتاب را براي دانلود آن لازم داريم لذا در اين فيلد نام كامل فايل به همراه پسوند آن قرار مي گيرد تا در پروژه با اضافه شدن به آدرس ثابت بتوان به راحتي آن را دانلود نمود.

 

فيلدهاي بكار رفته در جدول TbUser:

o Name: از اين فيلد براي ذخيره كردن نام كاربر استفاده كردن و از نوع متني مي باشد.
o Family: نام خانوادگي كاربر مي باشد.
o Usern: براي ذخيره نام كاربري و از نوع متني مي باشد.

o Passwo : در اين فيلد متني كلمه عبور انتخابي كاربر قرار مي گيرد.
o Email : اين فيلد براي ذخيره آدرس ايميل كاربر استفاده مي شود.

در وب سايت ايجاد شده ۲۱ صفحه وجود دارد تا بتوانند كليه كارهاي لازم را انجام دهند.
o صفحه اصلي:

o اين صفحه با عنوان Default.aspx موجود بوده و شامل لينك به ساير امكانات موجود در وب سايت مي باشد.
o در اين صفحه موارد زير قرار دارند كه هر كدام به صفحه اي ديگر متصل مي شوند.
o عضويت در سايت :اين بخش امكان عضويت كاربران را در سايت مي دهد.با زدن اين لينك شما به صفحه Enter.aspx وارد شده واطلاعات مربوطه را پر مي نماييد.

o ليست كتابها : اين بخش شامل ليست كاملي از كتابهاي موجود در وب سايت مي باشد كه اطلاعات كاملي از كتابها نمايش داده شده و يك لينك دانلود نيز براي دانلود هر كتاب قرار دارد.با كليك بر روي اين لينك صفحه Books.aspx باز مي شود

o ورود به سايت : در اين بخش اعضا و مدير سايت امكان ورود به سايت را داشته و بسته به اينكه مدير سيستم باشد يا كاربر عادي سايت اطلاعات متفاوتي نمايش داده مي شود.صفحه اي كه با كليك روي اين قسمت ظاهر مي شود صفحه Login.aspx مي باشد

o پنج كتاب برتر : اين بخش شامل پنج كتابي است كه بيشترين دانلود را داشته اند صفحه مربوط به اين بخش نيز Top.aspx مي باشد.
o جستجو : در اين بخش امكان جستجوي كتابها را بر اساس كلمات كليدي كاربر انتخاب كرده ايم صفحه مر بوط به اين بخش با نام Search.aspx ذخيره شده است.

اصلي فقط حالت طراحي را دارند و فقط از تگهاي Html در آنها استفاده شده است.
در اين بخش ما فقط به صفحاتي كه داراي كدهاي Asp.net يا VB.Net مي باشند را توضيح مي دهيم.

صفحه جستجو (Search.aspx):
ابتدا در قسمت بالاي صفحات دو كتابخانه موجود در Vb.net را به صفحه اضافه مي كنيم با اين كار كدنويسي برنامه نيز خلاصه تر مي شود.
Imports System.Data
Imports System.Data.OleDb
Partial Class _Default
Inherits System.Web.UI.Page
سپس موارد مورد نياز براي انجام عمل جستجو را در خصوصيت PageLoad مي نويسيم اين بخش زماني اجرا مي شود كه صفحه در حال لود شدن باشد.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
توضيح متغيرهاي استفاده شده:
ابتدا يك متغيير از نوع oleDbconnection تعريف مي كنيم.اين نوع براي اتصال به بانك استفاده مي شود.
Dim objcn As OleDbConnection

Dim da As OleDbDataAdapter
Dim ds As New DataSet
متغيرهاي اين بخش مورد اول براي گرفتن اطلاعات ورودي كاربر مورد بعد براي قرار دادن نوع ارتباط با بانك و در نهايت متغير بعد براي قرار دادن دستور Sql در آن مورد استفاده قرار مي گيرد.
Dim strgetsearch, strcn, StrSql As String
Dim newFind As DataTable
متغير اول براي قرار دادن تعداد فيلدهاي جدول مي باشد و از متغير بعدي براي حركت بر روي ركوردهاي جدول استفاده ميشود.
Dim getCountrows, Ix As Integer

چهار دستور Response كه در ادامه آمده است براي چاپ عنوان صفحه است كه ابتدا جمله نتايج جستجو را نمايش داده سپس به خط بعد مي رود در خط بعد يك خط با استفاده از تگ <hr> ايجاد كرده و در نهايت براي چاپ بقيه اطلاعات به خط بعدي مي رود.
Response.Write(” <h1>نتايج جستجو</h1>”)
Response.Write(“<br />”)

Response.Write(“<hr style=color: blue; height: 4px; font-size: 100%; width: 681px; />”)
Response.Write(“<br />”)
در اين بخش با استفاده از دستور Request.form اطلاعات ارسالي از سوي كاربر را كه در يك Textbox در قسمت جستجوي صفحه اصلي وجود دارد را دريافت كرده و در يك متغيير ذخيره مي كند.

strgetsearch = Request.Form(“Strsearch”)
در اين بخش ابتدا چك مي شود كه كاربر موردي را براي جستجو وارد كرده است يا خير در صورتي كه اين كار را انجام داده باشد دستورات بعدي براي انجام عمل جستجو انجام مي شود.
If strgetsearch <> “” Then
در اين بخش ما موارد مورد نياز براي ارتباط به بانك را مشخص مي كنيم.نام توليد كننده بانك اطلاعاتي نحوه دسترسي به اطلاعات نام SqlServer كه بر روي سيستم نصب شده است و در نهايت مسير قرار گرفتن بانك اطلاعاتي.

strcn = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=SEPEHR\SQLEXPRESS;Initial File Name=D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\book.mdf”
حال با استفاده از مورد فوق مي توانيم كانكشن را ايجاد نماييم اين كار را با استفاده از عملگر New انجام مي دهيم.
objcn = New OleDbConnection(strcn)

پس از ايجاد كانكشن آن را با استفاده از متد Open باز مي كنيم.
objcn.Open()
براي انجام عمليات جستجو لازم داريم تا به جداول مورد نياز در داخل بانك دسترسي پيدا كنيم.براي اين كار اولا نياز به يك دستور Sql داريم تا شرايط نمايش جدول را در آن مشخص كنيم در دستور زير ما تمام فيلدهاي جدول را لازم داريم براي مواردي كه فيلد Subject حاوي مواردي باشد شبيه به اطلاعاتي كه كاربر وارد كرده براي اين كار از عملگر Like استفاده كرده ايم.
StrSql = “select * from tbebook where subject like ‘%” & strgetsearch & “%'”
حال با استفاده از دستور Sql و شي كه براي كانكشن ايجاد كرديم يك ديتا آداپتر را ايجاد مي كنيم .
da = New OleDbDataAdapter(StrSql, objcn)
ديتا آداپتر ايجاد شده را براي جدول TbEbook اجرا مي كنيم و جدول بدشت آمده را بر اساس دستور Sql فوق داخل يك ديتا ست قرار مي دهيم.
da.Fill(ds, “tbebook”)
براي دسترسي به اطلاعات موجود در ديتا ست احتياج به يك نوع متغير از نوع Datatable داريم كه در زير آن را ايجاد كرده ايم.
newFind = New DataTable
در زير اطلاعات كامل جدول موجود در ديتاست را به جدول فوق انتقال مي دهيم.
newFind = ds.Tables(0)
در اين بخش تعداد سطرهاي جدول را بدست مي آوريم تا در ادامه بررسي كنيم كه اگر مخالف صفر بود يعني موردي پيدا شده و اطلاعات را نمايش دهد اما اگر مساوي صفر بود يعني اطلاعاتي پيدا نشده و پيغام مناسب مبني بر عدم پيدا كردن اطلاعات نمايش داده شود.
getCountrows = newFind.Rows.Count
If getCountrows <> 0 Then
در اين بخش ابتدا با استفاده از تگ <table> اقدام به ايجاد جدولي براي نمايش اطلاعات
مي كنيم.
Response.Write(“<table border=1 style=vertical-align: middle; width: 142px; text-align: center>”)
در قسمت زير اطلاعات بدست آمده از جدول را در ستونهاي ايجاد شده توسط دستور Response قرار مي گيرد نحوه دسترسي به عناصر جدول به اين ترتيب است كه با استفاده از متد Row از متغيير Newfind به سطر مورد نظر مي رويم كه در زير اين كار با استفاده از متغيير Ix حلقه For انجام مي شود.سپس با استفاده از متد Item مربوط به Rows مي توانيم به تك تك فيلدهاي جدول دسترسي پيدا كنيم ترتيب شماره گزاري فيلدها نيز از عدد صفر آغاز مي شود.
For Ix = 0 To getCountrows – 1
Response.Write(“<tr>”)
Response.Write(“<td>”)
براي نمايش نام كتاب
Response.Write(newFind.Rows(Ix).Item(0))
Response.Write(“</td>”)
Response.Write(“<td>”)
براي نمايش تعداد صفحات كتاب
Response.Write(newFind.Rows(Ix).Item(1))
Response.Write(“</td>”)
Response.Write(“<td>”)
براي نمايش تعداد دانلودهاي كتاب
Response.Write(newFind.Rows(Ix).Item(2))
Response.Write(“</td>”)
Response.Write(“<td>”)
براي نمايش توضيحاتي مختصر در مورد كتاب
Response.Write(newFind.Rows(Ix).Item(3))
Response.Write(“</td>”)
Response.Write(“<td>”)

براي نمايش نام نويسنده كتاب
Response.Write(newFind.Rows(Ix).Item(5))
Response.Write(“</td>”)
Response.Write(“<td>”)
براي نمايش لينك دانلود در اين بخش اطلاعات فيلد آخر جدول كه حاوي نام آن بود خوانده شده و به قسمت Href تگ <a> كه براي ايجاد لينك از آن استفاده مي كنيم نسبت داده شده است آدرس سايت هم كه ثابت است در قسمت اول قرار گرفته و بدين ترتيب با كليك كردن كاربر بر روي لينك دانلود به فايل مورد نظر منتقل شده و امكلن دانلود آن را داريم.
Response.Write(“<a href=http:\\localhost\freeebook\book\” & newFind.Rows(Ix).Item(6) & “>دانلود </a>”)
Response.Write(“</td>”)
Next Ix
Response.Write(“</table>”)
Else
اين بخش زماني اجرا مي شود كه اطلاعات مورد نظر در جدول وجود نداشته باشد در اينصورت پيغام زير نمايش داده شده و به كاربر اعلام مي كند.
Response.Write(“كتاب مورد نظر شما مو جود نمي باشد”)
End If
پس از انجام عمليات مربوط به جستجو شي ايجاد شده براي اتصال به بانك را مي بنديم.اين كار با استفاده از متد Open شي Objcn انجام مي شود.
objcn.Close()
Else
اين بخش در صورتي انجام مي شود كه كاربر اطلاعاتي را براي جستجو وارد نرده باشد.
Response.Write(“لطفا يك مورد را براي جستجو وارد نماييد”)
End If
End Sub
End Class

صفحه مربوط به نمايش پنج كتاب برتر (Top.aspx):
اين صفحه بر اساس تعداد دانلودها پنج كتابي را كه بيشترين دانلود را داشته اند را نمايش
مي دهد.براي اين كار نيز ابتدا با استفاده از يك دستور Sql جدول را بر اساس فيلد numClick كه حاوي تعداد دانلودها مي باشد بطور نزولي مرتب كرده و پنج مورد اول را نمايش مي دهيم.
قسمت اول كدها شبيه به مورد قبلي بوده يعني ابتدا كتابخانه هاي مورد نياز را اضافه كرده و كد برنامه را در قسمت لود صفحه وارد كرده ايم.
Imports System.Data
Imports System.Data.OleDb
Partial Class _Default
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim objcn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim strcn, StrSql As String
Dim newFind As DataTable
Dim getCountrows, Ix As Integer
Response.Write(” <h1>نتايج جستجو</h1>”)
Response.Write(“<br />”)
Response.Write(“<hr style=color: blue; height: 4px; font-size: 100%; width: 681px; />”)
Response.Write(“<br />”)
strcn = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=SEPEHR\SQLEXPRESS;Initial File Name=D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\book.mdf”
objcn = New OleDbConnection(strcn)
objcn.Open()
در اين دستور Sql با استفاده از خصوصيت Order By دستورات Sql جدول را بر اساس فيلد NumClick و بصورت Desc يا نزولي مرتب كرده ايم با اين كار كتابي كه بيشترين دانلود را داشته در سطر اول جدول قرار مي گيرد و به همين ترتيب به پايين رفته بطوري كه اخرين فيلد داراي كمترن تعداد انلود مي باشد. ضمن اينكه اگر به جاي استفاده از Desc از Asc استفاده كنيد جدول بصورت صعودي مرتب مي شود.
StrSql = “select * from tbebook order by numClick Desc”
da = New OleDbDataAdapter(StrSql, objcn)
da.Fill(ds, “tbebook”)
newFind = New DataTable
newFind = ds.Tables(0)
getCountrows = newFind.Rows.Count
If getCountrows <> 0 Then
Response.Write(“<table border=1 style=vertical-align: middle; width: 142px; text-align: center>”)
چون مي خواهيم برنامه فقط پنج مورد اول را نمايش دهد با استفاده از يك حلقه for آن را پنج بار تكرار مي كنيم.و فقط پنج مورد اول را نمايش مي دهيم.
For Ix = 0 To 4
Response.Write(“<tr>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(0))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(1))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(2))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(3))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(5))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(“<a href=http:\\localhost\freeebook\book\” & newFind.Rows(Ix).Item(6) & “>دانلود </a>”)
Response.Write(“</td>”)
Next Ix
Response.Write(“</table>”)
Else
Response.Write(“كتاب مورد نظر شما مو جود نمي باشد”)
End If
objcn.Close()
End Sub
End Class
صفحه نمايش كل كتابها (Books.aspx):
اين بخش كه براي نمايش اطلاعات جامعي درباره كتابها استفاده مي شود ليست كاملي از كتابهاي موجود در بانك اطلاعاتي را با امكان دانلود انها به كاربران مي دهد.
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim objcn As OleDbConnection
Dim da As OleDbDataAdapter
Dim ds As New DataSet
Dim strcn, StrSql As String
Dim newFind As DataTable
Dim getCountrows, Ix As Integer
Response.Write(” <h1>ليست كامل كتابهاي مو جود</h1>”)
Response.Write(“<br />”)
Response.Write(“<hr style=color: blue; height: 4px; font-size: 100%; width: 681px; />”)
Response.Write(“<br />”)
strcn = “Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Data Source=SEPEHR\SQLEXPRESS;Initial File Name=D:\Program Files\Microsoft SQL Server\MSSQL.1\MSSQL\Data\book.mdf”
objcn = New OleDbConnection(strcn)
objcn.Open()
چون مي خواهيم تمام موارد را نمايش دهيم دستور Sql را براي تمام فيلدها و بدون شرط
مي نويسيم.
StrSql = “select * from tbebook”
da = New OleDbDataAdapter(StrSql, objcn)
da.Fill(ds, “tbebook”)
newFind = New DataTable
newFind = ds.Tables(0)
getCountrows = newFind.Rows.Count
If getCountrows <> 0 Then
Response.Write(“<table border=1 style=vertical-align: middle; width: 142px; text-align: center>”)
For Ix = 0 To getCountrows – 1
Response.Write(“<tr>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(0))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(1))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(2))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(3))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(newFind.Rows(Ix).Item(5))
Response.Write(“</td>”)
Response.Write(“<td>”)
Response.Write(“<a href=http:\\localhost\freeebook\book\” & newFind.Rows(Ix).Item(6) & “><asp:label id=” & Str(Ix) & ” text=دانلود runat=server onmouseclick=addclick()>دانلود </asp:label> </a>”)
Response.Write(“</td>”)
Next Ix
Response.Write(“</table>”)
Else
Response.Write(“كتاب مورد نظر شما مو جود نمي باشد”)
End If
objcn.Close()

End Sub