

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 一 課題名稱</b></p><p><b> 圖書館管理系統(tǒng)</b></p><p> 二 設(shè)計目的和要求、任務(wù) </p><p> 通過本次課程設(shè)計,加深對數(shù)據(jù)庫原理以及相關(guān)程序設(shè)計語言的理解和應(yīng)用水平。通過設(shè)計實際的數(shù)據(jù)庫系統(tǒng)應(yīng)用課題,進(jìn)一步熟悉數(shù)據(jù)庫管理系統(tǒng)的操作技術(shù),提高動手能
2、力,提高分析問題和解決問題的能力。</p><p><b> 三 需求分析</b></p><p> ①、能夠存儲一定圖書信息,并方便有效的進(jìn)行相應(yīng)的書籍?dāng)?shù)據(jù)操作和管理,這主要包括:</p><p> 1) 圖書信息的錄入、刪除及修改。</p><p> 2) 圖書信息的多關(guān)鍵字檢索查詢。</p>
3、<p> 3) 圖書的出借、返還及超期罰款或丟失賠償。</p><p> ?、?、能夠?qū)ψx者、管理員、采購員進(jìn)行相應(yīng)的信息存儲與管理,這其中包括:</p><p> 1) 讀者信息的登記、刪除及修改。</p><p> 2) 管理員信息的增加、刪除及修改。</p><p> 3) 采購員信息的增加、刪除及修改。<
4、/p><p> 4) 讀者資料的統(tǒng)計與查詢。</p><p> ?、?、能夠提供一定的安全機(jī)制,提供數(shù)據(jù)信息授權(quán)訪問,防止隨意刪改、查詢。</p><p> ④、對于借閱即將到期的讀者能夠及時通過郵箱發(fā)送提示信息;對于拖欠罰款的讀者給予鎖定并通過郵箱提醒;對于長久不還書提及拖欠罰款進(jìn)行聯(lián)系。</p><p> ?、?、對查詢、統(tǒng)計的結(jié)果能夠列表
5、顯示。</p><p><b> 四 總體功能設(shè)計</b></p><p> 此圖書館系統(tǒng)登錄用戶分為三類采購員,管理員,讀者用戶</p><p><b> ?、俨少弳T用戶功能:</b></p><p><b> ?、诠芾韱T用戶功能:</b></p><
6、p><b> ?、圩x者用戶功能:</b></p><p><b> ?、芟到y(tǒng)總體功能:</b></p><p><b> 五 數(shù)據(jù)庫設(shè)計</b></p><p> ?、鸥鶕?jù)要實現(xiàn)的功能設(shè)計,可能建立它們之間的關(guān)系,進(jìn)而實現(xiàn)邏輯結(jié)構(gòu)功能。</p><p> 圖書管理信息
7、系統(tǒng)可以劃分的實體有:圖書實體、讀者實體、管理員實體,采購者實體,借閱實體,圖書類型實體 E-R 圖如下:</p><p> ⑵根據(jù)E-R得到關(guān)系模式,根據(jù)實際情況,出版社跟圖書類型一般都固定的,單獨作為一個實體,用出版社號,跟圖書類型號跟圖書聯(lián)系起來;</p><p> 管理員:管理員號,管理員姓名,管理員密碼,管理員電話</p><p> 采購員:采購者號
8、,采購者姓名,采購者密碼,采購者電話</p><p> 讀者:讀者姓名,讀者密碼,讀者聯(lián)系方式,讀者借閱數(shù)量,讀者狀態(tài)</p><p> 圖書:圖書號,圖書名,圖書狀態(tài),作者名,出版社號,圖書類型號,價格</p><p> 出版社:出版社號,出版社名稱</p><p> 圖書類型:圖書類型號,圖書類型名稱</p><
9、;p> 借閱:讀者號,圖書號,借閱日期,還書日期,罰款</p><p> ?、歉鲗嶓w表格的數(shù)字字典</p><p><b> 管理員表Admin</b></p><p><b> 采購員表</b></p><p> 讀者表reader:</p><p><
10、b> 圖書表book</b></p><p> 圖書類別表 booktype</p><p> 出版社表publish</p><p> 借閱表 borrow</p><p> ?。?)創(chuàng)建各個表sql語句</p><p><b> ?、賏dmin表</b></p&
11、gt;<p> CREATE TABLE [dbo].[admin](</p><p> [aid] [numeric](18, 0) NOT NULL,</p><p> [aname] [nvarchar](50) NOT NULL,</p><p> [apwd] [nvarchar](50) NOT NULL,</p>&
12、lt;p> [atel] [numeric](11, 0) NOT NULL,</p><p> CONSTRAINT [PK_admin] PRIMARY KEY CLUSTERED </p><p><b> (</b></p><p><b> [aid] ASC</b></p><
13、p> )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]</p><p> ) ON [PRIMARY]</p><p><b> ?、赽uyer表
14、</b></p><p> CREATE TABLE [dbo].[buyer](</p><p> [buyerid] [numeric](18, 0) NOT NULL,</p><p> [buyername] [nvarchar](50) NOT NULL,</p><p> [buyerpwd] [nvarcha
15、r](50) NOT NULL,</p><p> [buyertel] [numeric](18, 0) NOT NULL,</p><p> CONSTRAINT [PK_buyer] PRIMARY KEY CLUSTERED </p><p><b> (</b></p><p> [buyerid] A
16、SC</p><p> )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]</p><p> ) ON [PRIMARY]</p><p>
17、<b> ③reader表</b></p><p> CREATE TABLE [dbo].[reader](</p><p> [rid] [numeric](18, 0) NOT NULL,</p><p> [rname] [nvarchar](50) NOT NULL,</p><p> [rpwd]
18、[nvarchar](50) NOT NULL,</p><p> [re_mail] [nvarchar](50) NOT NULL,</p><p> [rnum] [smallint] NOT NULL,</p><p> [rstate] [smallint] NOT NULL,</p><p> CONSTRAINT [PK
19、_reader] PRIMARY KEY CLUSTERED </p><p><b> (</b></p><p><b> [rid] ASC</b></p><p> )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY =
20、 OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]</p><p> ) ON [PRIMARY]</p><p><b> ?、躡ook表</b></p><p> CREATE TABLE [dbo].[book](</p><p>
21、 [bid] [numeric](18, 0) NOT NULL,</p><p> [bname] [nvarchar](100) NOT NULL,</p><p> [bstate] [nvarchar](10) NOT NULL,</p><p> [bauthor] [nvarchar](50) NOT NULL,</p><p
22、> [bpublishid] [numeric](18, 0) NOT NULL,</p><p> [btypeid] [nchar](10) NOT NULL,</p><p> [bprice] [nvarchar](100) NOT NULL,</p><p> CONSTRAINT [PK_book] PRIMARY KEY CLUSTERE
23、D </p><p><b> (</b></p><p><b> [bid] ASC</b></p><p> )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
24、ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]</p><p> ) ON [PRIMARY]</p><p> ?、?booktype表</p><p> CREATE TABLE [dbo].[booktype](</p><p> [btypeid] [nchar](10) NOT NULL,</p
25、><p> [typename] [nvarchar](50) NOT NULL,</p><p> CONSTRAINT [PK_booktype] PRIMARY KEY CLUSTERED </p><p><b> (</b></p><p> [btypeid] ASC</p><p&g
26、t; )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]</p><p> ) ON [PRIMARY]</p><p> ⑥ publish表</p>
27、;<p> CREATE TABLE [dbo].[publish](</p><p> [bpublishid] [numeric](18, 0) NOT NULL,</p><p> [publishname] [nvarchar](50) NOT NULL,</p><p> CONSTRAINT [PK_publish] PRIMARY
28、 KEY CLUSTERED </p><p><b> (</b></p><p> [bpublishid] ASC</p><p> )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON,
29、 ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]</p><p> ) ON [PRIMARY]</p><p><b> ?、遙orrow表</b></p><p> CREATE TABLE [dbo].[borrow](</p><p> [rid] [numeric](18, 0)
30、 NOT NULL,</p><p> [bid] [numeric](18, 0) NOT NULL,</p><p> [start_date] [date] NOT NULL,</p><p> [end_date] [date] NOT NULL,</p><p> [payment] [nvarchar](100) NULL
31、,</p><p> PRIMARY KEY CLUSTERED </p><p><b> (</b></p><p> [rid] ASC,</p><p><b> [bid] ASC</b></p><p> )WITH (PAD_INDEX = OFF,
32、 STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]</p><p> ) ON [PRIMARY]</p><p><b> ?。?)創(chuàng)建表關(guān)系</b></p><p>
33、;<b> 六 應(yīng)用程序設(shè)計</b></p><p> ?、艑τ诓煌挠脩舻卿浵到y(tǒng)所看到的頁面不同,擁有的權(quán)限不相同,正如上面功能圖所示:對于讀者而言主要有檢索圖書,借閱圖書,歸還圖書,違章繳費得功能;對于管理員是系統(tǒng)中權(quán)限最高的用戶,如對用戶的增加,刪改,編輯,對讀者違章繳費的進(jìn)行收取費用;在設(shè)計次系統(tǒng)中,管理員將增刪圖書的功能下架給采購員,采購員分擔(dān)管理員一下事物。</p>
34、<p> ?、普缜懊嫠f,系統(tǒng)分成不同的用戶,設(shè)計出3個表,在實際操作中發(fā)現(xiàn)其實用戶在一張表里面更容易設(shè)計,增加一個用戶類型屬性就可以。但這是后話,所以在設(shè)計系統(tǒng)的時候代碼冗余較多,為了實現(xiàn)不同的用戶不同的功能,每類用戶對應(yīng)不同的頁面,以此達(dá)到控制權(quán)限。</p><p> ?、怯捎谙到y(tǒng)并完成定時的功能,所以在判斷讀者未及時歸還書籍,將用戶鎖定,以及所欠的費用,通過觸發(fā)借書事件之前,調(diào)用成員函數(shù)來判
35、斷。</p><p><b> 七 調(diào)試運行情況</b></p><p> ?。?)登錄:對各種用戶出現(xiàn)不同的菜單項</p><p><b> ①管理員登錄</b></p><p><b> ?、诓少弳T登錄</b></p><p><b>
36、 ?、圩x者登錄</b></p><p> protected void sure_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> string yzm = this.yzm.Text.ToString().Trim();//首先進(jìn)行驗證碼判斷</
37、p><p> if (yzm.ToUpper() != Session["CheckCode"].ToString().Trim())</p><p><b> {</b></p><p> Page.ClientScript.RegisterStartupScript(Page.GetType(), DateTime.N
38、ow.Ticks.ToString(), "<Script Language='Javascript'>alert('系統(tǒng)提示:\\r\\n\\r\\n'+'驗證碼錯誤!');</Script>");</p><p> this.yzm.Text = "";</p><p>&
39、lt;b> }</b></p><p> else//驗證碼正確之后進(jìn)行用戶名跟密碼判斷</p><p><b> {</b></p><p> SqlConnection con = sqlcon.getConnection();</p><p> con.Open();</p>
40、<p> if (type.SelectedValue == "1")//對讀者進(jìn)行驗證</p><p><b> {</b></p><p> string s = "select * from reader where rid='"+userid.Text.ToString()+"
41、9; and rpwd='"+userpwd.Text.ToString()+"'";//傳值實現(xiàn)sql語句</p><p> DataTable dt = new DataTable();</p><p> SqlDataAdapter sda = new SqlDataAdapter();</p><p> s
42、da.SelectCommand = new SqlCommand(s, con);</p><p> sda.Fill(dt);</p><p> sda.Dispose();</p><p> con.Dispose();</p><p> con.Close();</p><p> if (dt.Row
43、s.Count> 0)//存在讀者</p><p><b> {</b></p><p> Session["id"] = dt.Rows[0][0].ToString();//保留讀者信息</p><p> Session["type"] = "left3.html";/
44、/菜單為讀者菜單</p><p> Response.Redirect("main.aspx");//跳到主頁面</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
45、;<p> Response.Write("<Script type='text/javascript'>alert('系統(tǒng)提示:'用戶名或密碼錯誤!')</Script>");</p><p> userid.Text = "";</p><p> userpwd.
46、Text = "";</p><p> this.yzm.Text = "";</p><p><b> }</b></p><p> dt.Dispose();</p><p><b> }</b></p><p> els
47、e if (type.SelectedValue == "2")//對管理員進(jìn)行驗證</p><p><b> {</b></p><p> string s = "select * from admin where aid='" + userid.Text.ToString() + "' and
48、apwd='" + userpwd.Text.ToString() + "'";//傳值實現(xiàn)sql語句</p><p> DataTable dt = new DataTable();</p><p> SqlDataAdapter sda = new SqlDataAdapter();</p><p> sda.
49、SelectCommand = new SqlCommand(s, con);</p><p> sda.Fill(dt);</p><p> sda.Dispose();</p><p> con.Dispose();</p><p> con.Close();</p><p> if (dt.Rows.C
50、ount > 0)//存在管理員</p><p><b> {</b></p><p> Session["id"] = dt.Rows[0][0].ToString();//保留管理員信息</p><p> Session["type"] = "left.html";//
51、菜單為管理員菜單</p><p> Response.Redirect("main.aspx");//跳到主頁面</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p>
52、;<p> Response.Write("<Script type='text/javascript'>alert('系統(tǒng)提示:'用戶名或密碼錯誤!')</Script>");</p><p> userid.Text = "";</p><p> userpwd.
53、Text = "";</p><p> this.yzm.Text = "";</p><p><b> }</b></p><p><b> }</b></p><p> else if (type.SelectedValue == "3&
54、quot;)//對采購者進(jìn)行驗證</p><p><b> {</b></p><p> string s = "select * from buyer where buyerid='" + userid.Text.ToString() + "' and buyerpwd='" + userpwd.T
55、ext.ToString() + "'";//傳值實現(xiàn)sql語句</p><p> DataTable dt = new DataTable();</p><p> SqlDataAdapter sda = new SqlDataAdapter();</p><p> sda.SelectCommand = new SqlComma
56、nd(s, con);</p><p> sda.Fill(dt);</p><p> sda.Dispose();</p><p> con.Dispose();</p><p> con.Close();</p><p> if (dt.Rows.Count > 0)//存在采購者</p>
57、;<p><b> {</b></p><p> Session["id"] = dt.Rows[0][0].ToString();//保留采購者信息</p><p> Session["type"] = "left2.html";//菜單為采購者菜單</p><p&g
58、t; Response.Redirect("main.aspx");//跳到主頁面</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Response.Writ
59、e("<Script type='text/javascript'>alert('系統(tǒng)提示:'用戶名或密碼錯誤!')</Script>");</p><p> userid.Text = "";</p><p> userpwd.Text = "";</p&
60、gt;<p> this.yzm.Text = "";</p><p><b> }</b></p><p><b> }</b></p><p> con.Close();</p><p> con.Dispose();</p><p
61、><b> }</b></p><p><b> }</b></p><p><b> ⑵讀者</b></p><p> protected void name()</p><p><b> {</b></p><p&g
62、t; string table = "";</p><p> string id = "";//獲取當(dāng)前用戶類型</p><p> if (Session["type"].ToString() == "left.html")</p><p><b> {</b&g
63、t;</p><p> table = "admin";</p><p> id = "aid";</p><p><b> }</b></p><p> else if (Session["type"].ToString() == "left
64、2.html")</p><p><b> {</b></p><p> table = "buyer";</p><p> id = "buyerid";</p><p><b> }</b></p><p> e
65、lse if (Session["type"].ToString() == "left3.html")</p><p><b> {</b></p><p> table = "reader";</p><p> id = "rid";</p>
66、<p><b> }</b></p><p> SqlConnection con = sqlcon.getConnection();</p><p> con.Open();</p><p> SqlDataAdapter sda = new SqlDataAdapter();</p><p> s
67、da.SelectCommand = new SqlCommand("select * from " + table + " where " + id + "=" + Session["id"].ToString() + " ", con);//從讀者表中讀取信息</p><p> DataTable dt =
68、 new DataTable();//一次顯示信息</p><p> sda.Fill(dt);</p><p> TxtRid.Text = dt.Rows[0][0].ToString();</p><p> TxtRname.Text = dt.Rows[0][1].ToString();</p><p> TxtRpwd.Te
69、xt = dt.Rows[0][2].ToString();</p><p> TxtRe_mail.Text = dt.Rows[0][3].ToString();</p><p> sda.Dispose();</p><p> con.Close();</p><p> con.Dispose();</p><
70、;p><b> }</b></p><p> protected void sure_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> if (TxtRpwd.Text.ToString() == dt.Rows[0][2].ToStr
71、ing())//至此之前,頁面加載的時候,先讀取用戶信息,保留在表里面,之后判段原先密碼是否正確</p><p><b> {</b></p><p> string table = "";//獲取用戶類別</p><p> //string name = "";</p><p&
72、gt; string pwd = "";</p><p> string id = "";</p><p> if (Session["type"].ToString() == "left.html")</p><p><b> {</b></p>
73、;<p> table = "admin";</p><p> // name = "aname";</p><p> id = "aid";</p><p> pwd = "apwd";</p><p><b> }</b
74、></p><p> else if (Session["type"].ToString() == "left2.html")</p><p><b> {</b></p><p> table = "buyer";</p><p> // nam
75、e = "buyername";</p><p> id = "buyerid";</p><p> pwd = "buyerpwd";</p><p><b> }</b></p><p> else if (Session["type&qu
76、ot;].ToString() == "left3.html")</p><p><b> {</b></p><p> table = "reader";</p><p> //name = "rname";</p><p> id = "r
77、id";</p><p> pwd = "rpwd";</p><p><b> }</b></p><p> string s = "update " + table + " set " + pwd + "='" + TxtRe_mail.
78、Text.ToString() + "' where " + id + "='" + dt.Rows[0][0].ToString()+"'";//更用戶密碼</p><p> SqlConnection con=sqlcon.getConnection();</p><p> con.Open();&
79、lt;/p><p> SqlCommand cmd = new SqlCommand(s, con);</p><p> if (cmd.ExecuteNonQuery() > 0)</p><p><b> {</b></p><p> Response.Write("<script type
80、='text/javascript'>alert('修改成功!')</script>");</p><p><b> }</b></p><p> TxtRpwd.Text = "";</p><p> TxtRe_mail.Text = "&quo
81、t;;</p><p> TextBox1.Text = "";</p><p> con.Close();</p><p> con.Dispose();</p><p><b> }</b></p><p><b> else</b><
82、/p><p><b> {</b></p><p> TxtRpwd.Text = "";</p><p> TxtRe_mail.Text = "";</p><p> TextBox1.Text = "";</p><p> R
83、esponse.Write("<script type='text/javascript'>alert('原密碼不正確!')</script>");</p><p><b> }</b></p><p><b> }</b></p><p>
84、 private void showbook()//按條件檢索圖書</p><p><b> {</b></p><p> SqlConnection con = sqlcon.getConnection();</p><p> con.Open();</p><p> string s = "sele
85、ct * from bookview where [" + select.SelectedValue + "]='" + simple.Text.ToString() + "'";//在數(shù)據(jù)庫建立試圖將book表,booktype表,publish表 聯(lián)系起來,則查出來如圖所示效果</p><p> SqlDataAdapter sda = ne
86、w SqlDataAdapter();</p><p> sda.SelectCommand = new SqlCommand(s, con);</p><p> sda.Fill(dt);//將查詢結(jié)果存儲到table里面</p><p> if (dt.Rows.Count > 0)//存在圖書</p><p><b&g
87、t; {</b></p><p> GridView1.DataSource = dt;//綁定顯示</p><p> GridView1.DataBind();</p><p><b> }</b></p><p><b> else</b></p><p
88、><b> {</b></p><p> Response.Write("<script type='text/javascript'>alert('無圖書記錄!')</script>");</p><p><b> }</b></p><
89、p> con.Close();</p><p> con.Dispose();</p><p><b> }</b></p><p> 多字段檢索(條件不一定要全部輸入)</p><p> private string judge()//對字段判斷,返回執(zhí)行條件</p><p>&
90、lt;b> {</b></p><p> string s="";</p><p> if (txtid.Text.Trim() != "")</p><p><b> {</b></p><p> s =" bid = '"
91、+txtid.Text.Trim()+"'";</p><p><b> }</b></p><p> if (txtname.Text.Trim() != "")</p><p><b> {</b></p><p> if (s.Trim(
92、) == "")</p><p><b> {</b></p><p> s += "bname ='" + txtname.Text.Trim() + "'";</p><p><b> }</b></p><p>
93、<b> else</b></p><p><b> {</b></p><p> s += " and bname ='" + txtname.Text.Trim() + "'";</p><p><b> }</b></p>
94、;<p><b> }</b></p><p> if (txtauthor.Text.Trim() != "")</p><p><b> {</b></p><p> if (s.Trim() == "")</p><p><b
95、> {</b></p><p> s += " bauthor='" + txtauthor.Text.Trim() + "'";</p><p><b> }</b></p><p><b> else</b></p><
96、;p><b> {</b></p><p> s += " and bauthor='" + txtauthor.Text.Trim() + "'";</p><p><b> }</b></p><p><b> }</b><
97、;/p><p> if (txtpublish.Text.Trim() != "")</p><p><b> {</b></p><p> if (s.Trim()=="")</p><p><b> {</b></p><p>
98、 s += " publishname='" + txtpublish.Text.Trim() + "'";</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></
99、p><p> s += " and publishname='" + txtpublish.Text.Trim() + "'";</p><p><b> }</b></p><p><b> }</b></p><p> if (txtt
100、ype.Text.Trim() != "")</p><p><b> {</b></p><p> if (s.Trim() == "")</p><p><b> {</b></p><p> s += " typename='&
101、quot; + txttype.Text.Trim() + "'";</p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> s += " and t
102、ypename='" + txttype.Text.Trim() + "'";</p><p><b> }</b></p><p><b> }</b></p><p><b> return s;</b></p><p>
103、<b> }</b></p><p> 通過此函數(shù)來返回sql語句的執(zhí)行條件</p><p> private void showbook()</p><p><b> {</b></p><p> SqlConnection con = sqlcon.getConnection();&l
104、t;/p><p> con.Open();</p><p> string s = judge();//獲取條件</p><p> if (s.Trim() == "")</p><p><b> {</b></p><p> Response.Write("&
105、lt;script type='text/javascript'>alert('請輸入檢索')</script>");</p><p><b> return;</b></p><p><b> }</b></p><p> s = "select
106、 * from bookview where " + s;//執(zhí)行sql,獲取符合條件的圖書</p><p> SqlDataAdapter sda = new SqlDataAdapter();</p><p> sda.SelectCommand = new SqlCommand(s, con);</p><p> sda.Fill(dt);&l
107、t;/p><p> if (dt.Rows.Count <=0)</p><p><b> {</b></p><p> Response.Write("<script type='text/javascript'>alert('無圖書記錄')</script>"
108、;);</p><p><b> return;</b></p><p><b> }</b></p><p> GridView1.DataSource = dt;//存在圖書,綁定顯示</p><p> GridView1.DataBind();</p><p>
109、 con.Close();</p><p> con.Dispose();</p><p><b> }</b></p><p><b> 圖書借閱:</b></p><p> 讀者借閱圖書,首先要判斷用戶是否有欠費的圖書,若有將讀者狀態(tài)鎖定;若無則可借書。</p><
110、p> public static void borrow(string id, string id2)//借閱自動添加借書日期以及還書日期</p><p><b> {</b></p><p> DateTime t = DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")); //當(dāng)日為
111、借閱時間</p><p> DateTime t2 = DateTime.Parse(DateTime.Parse(DateTime.Now.ToString("yyyy-MM-dd")).AddMonths(1).ToShortDateString());//歸還日期為借閱日期加一個月</p><p> string s = "insert into b
112、orrow values('" + id + "','" + id2 + "','" + t + "','" + t2 + "','0')";//增加借閱記錄</p><p> SqlConnection con = sqlcon.getCon
113、nection();</p><p> con.Open();</p><p> SqlCommand cmd = new SqlCommand(s, con);</p><p> cmd.ExecuteNonQuery();</p><p> cmd.Dispose();</p><p> s = &quo
114、t;update reader set rnum=rnum+1 where rid='"+id+"'";</p><p> cmd = new SqlCommand(s, con);</p><p> cmd.ExecuteNonQuery();</p><p> cmd.Dispose();</p>
115、<p> con.Close();</p><p><b> }</b></p><p> public static void fi(string id)//超出還書日期,欠費</p><p><b> {</b></p><p> SqlConnection con = s
116、qlcon.getConnection();</p><p> con.Open();</p><p> string s = "select bid,end_date from borrowbook where rid='" + id + "'";</p><p> SqlDataAdapter sda
117、 = new SqlDataAdapter();</p><p> sda.SelectCommand = new SqlCommand(s, con);</p><p> DataTable dt = new DataTable();</p><p> sda.Fill(dt);</p><p> sda.Dispose();<
118、;/p><p> if (dt.Rows.Count == 0)</p><p><b> {</b></p><p><b> return;</b></p><p><b> }</b></p><p> for (int i = 0; i &
119、lt; dt.Rows.Count; i++)</p><p><b> {</b></p><p> DateTime t = DateTime.Parse(dt.Rows[i][1].ToString());</p><p> if (t<DateTime.Now)//還書日期小于當(dāng)前日期</p><p>
120、;<b> {</b></p><p> TimeSpan m =DateTime.Parse( DateTime.Now.ToString("yyyy-MM-dd")) - t;//每超過一天,欠費就自動增加一元</p><p> string x = "update borrowbook set payment='&qu
121、ot;+m.Days.ToString()+"' where rid ='" + id + "' and bid='" + dt.Rows[i][0].ToString() + "'";//更新費用到borrow表</p><p> SqlCommand cmd = new SqlCommand(x, con);
122、</p><p> cmd.ExecuteNonQuery();</p><p> cmd.Dispose();</p><p> x = "update borrowbook set rstate=1 where rid ='" + id + "' and bid='" + dt.Rows[i]
123、[0].ToString() + "'";//鎖定讀者</p><p> cmd = new SqlCommand(x, con);</p><p> cmd.ExecuteNonQuery();</p><p> cmd.Dispose();</p><p> cmd.Dispose();</p&g
124、t;<p><b> }</b></p><p><b> }</b></p><p><b> }</b></p><p> public static bool state(string id)//判斷讀者狀態(tài)</p><p><b> {
125、</b></p><p> string s = "select rstate from reader where rid='" + id + "'";</p><p> SqlConnection con = sqlcon.getConnection();</p><p> con.Open
126、();</p><p> SqlCommand cmd = new SqlCommand(s,con);</p><p> //SqlDataReader ds = cmd.ExecuteReader();</p><p> int i = int.Parse(cmd.ExecuteScalar().ToString().Trim());//讀取讀者狀態(tài)<
127、;/p><p> cmd.Dispose();</p><p> con.Dispose();</p><p> if (i == 0)</p><p><b> {</b></p><p> return true;//未鎖定</p><p><b>
128、}</b></p><p><b> else</b></p><p><b> {</b></p><p> return false;//鎖定</p><p><b> }</b></p><p><b> }<
129、/b></p><p> protected void GridView1_RowUpdating(object sender, GridViewUpdateEventArgs e)</p><p><b> {//點擊借閱按鈕</b></p><p> int j = e.RowIndex;</p><p>
130、; string id = GridView1.Rows[j].Cells[0].Text.ToString();</p><p> string state = GridView1.Rows[j].Cells[2].Text.ToString();</p><p> if (state == "未借")</p><p><b>
131、 {</b></p><p> bo.fi(Session["id"].ToString());//先判斷讀者是否欠費,鎖定</p><p> if (bo.state(Session["id"].ToString()))//若讀者未鎖定</p><p><b> {</b></
132、p><p> bo.borrow(Session["id"].ToString(), id);//增加借閱記錄</p><p> borrowsuccess(id);</p><p><b> }</b></p><p><b> else</b></p>&l
133、t;p><b> {</b></p><p> Response.Write("<script type='text/javascript'>window.alert('您已經(jīng)欠費,被鎖定!')</script>");</p><p><b> }</b>&l
134、t;/p><p><b> }</b></p><p><b> else</b></p><p><b> {</b></p><p> Response.Write("<script type='text/javascript'>w
135、indow.alert('圖書已被借!')</script>");</p><p><b> }</b></p><p><b> }</b></p><p> 先讀取用戶的借閱情況,代碼與上面類似;</p><p> protected void Gr
136、idView1_RowUpdating(object sender, GridViewUpdateEventArgs e)</p><p><b> {//續(xù)借功能</b></p><p> int i = e.RowIndex;</p><p> string id = GridView1.Rows[i].Cells[0].Text.T
137、oString();//圖書號</p><p> DateTime end_date =DateTime.Parse(DateTime.Parse(DateTime.Parse(GridView1.Rows[i].Cells[3].Text.ToString()).ToString("yyyy-MM-dd")).AddMonths(1).ToShortDateString());//還書日期
138、增加一個月</p><p> string s = "update returnbook set end_date='"+end_date+"' where bid='"+id+"'";</p><p> SqlConnection con = sqlcon.getConnection();&l
139、t;/p><p> con.Open();</p><p> SqlCommand cmd = new SqlCommand(s, con);</p><p> if (cmd.ExecuteNonQuery() > 0)</p><p><b> {</b></p><p> Res
140、ponse.Write("<script type='text/javascript'>alert('續(xù)借成功!')</script>");</p><p><b> biand();</b></p><p><b> }</b></p><p&g
141、t; con.Close();</p><p> con.Dispose();</p><p><b> }</b></p><p> 頁面加載調(diào)用bo類的fi(string id)函數(shù),并更新欠費(沒過一天欠費自動加1元)</p><p> protected void Page_Load(object se
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)據(jù)庫課程設(shè)計---圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計(圖書館管理系統(tǒng))
- 數(shù)據(jù)庫課程設(shè)計-圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 圖書館管理系統(tǒng)數(shù)據(jù)庫課程設(shè)計
- 數(shù)據(jù)庫課程設(shè)計報告---圖書館管理系統(tǒng)數(shù)據(jù)庫
- 數(shù)據(jù)庫課程設(shè)計報告——圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告---圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告——圖書館管理系統(tǒng)
- java數(shù)據(jù)庫課程設(shè)計 圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告--圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計--圖書館管理系統(tǒng) (2)
- 數(shù)據(jù)庫原理課程設(shè)計--圖書館管理系統(tǒng)
- java數(shù)據(jù)庫課程設(shè)計---圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計-高校圖書館管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計報告--圖書館圖書管理系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計-圖書館借閱系統(tǒng)
- 數(shù)據(jù)庫課程設(shè)計---圖書館圖書借閱管理信息系統(tǒng)數(shù)據(jù)庫設(shè)計
- 圖書館系統(tǒng)數(shù)據(jù)庫設(shè)計課程設(shè)計報告
評論
0/150
提交評論