版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目錄</b></p><p><b> 1引言1</b></p><p> 1.1圖書管理系統(tǒng)1</p><p> 1.2數(shù)據(jù)庫應(yīng)用系統(tǒng)簡(jiǎn)介1</p><p> 1.3Visual Studio 2008 開發(fā)平臺(tái)2</p><p&g
2、t;<b> 2總體設(shè)計(jì)2</b></p><p><b> 3數(shù)據(jù)庫設(shè)計(jì)3</b></p><p> 3.1E-R模型設(shè)計(jì)3</p><p> 3.1.1 實(shí)體列表3</p><p> 3.1.2系統(tǒng)的E-R模型3</p><p> 3.2數(shù)據(jù)庫設(shè)計(jì)
3、3</p><p> 3.2.1創(chuàng)建數(shù)據(jù)庫3</p><p> 3.2.2創(chuàng)建數(shù)據(jù)表4</p><p> 3.3 數(shù)據(jù)庫中表的關(guān)系4</p><p><b> 4讀者借閱統(tǒng)計(jì)5</b></p><p><b> 4.1總體結(jié)構(gòu)5</b></p>
4、<p> 4.2數(shù)據(jù)表建模設(shè)計(jì)6</p><p> 4.3系統(tǒng)功能實(shí)現(xiàn)7</p><p> 5通用類的生成與數(shù)據(jù)庫連接8</p><p> 5.1 連接數(shù)據(jù)庫8</p><p> 5.2 操作數(shù)據(jù)庫中的數(shù)據(jù)8</p><p> 5.3 用戶登錄代碼、圖書查詢代碼等的實(shí)現(xiàn)11<
5、/p><p><b> 6系統(tǒng)測(cè)試11</b></p><p> 6.1開發(fā)與測(cè)試環(huán)境11</p><p> 6.2程序調(diào)試情況11</p><p> 6.3 功能顯示11</p><p> 6.3.1 主窗口11</p><p> 6.3.2 圖書查詢功
6、能12</p><p> 6.3.3 圖書編目功能13</p><p> 6.3.4 圖書借閱功能13</p><p> 6.3.5 讀者借閱統(tǒng)計(jì)14</p><p> 7問題分析與解決方法14</p><p><b> 8總結(jié)15</b></p><p&
7、gt;<b> 9參考文獻(xiàn)15</b></p><p><b> 10源代碼15</b></p><p><b> 1引言</b></p><p><b> 1.1圖書管理系統(tǒng)</b></p><p> 當(dāng)今時(shí)代是飛速發(fā)展的信息時(shí)代。在各行各
8、業(yè)中離不開信息處理,這正是計(jì)算機(jī)被廣泛應(yīng)用于信息管理系統(tǒng)的環(huán)境。計(jì)算機(jī)的最大好處在于利用它能夠進(jìn)行信息管理。使用計(jì)算機(jī)進(jìn)行信息控制,不僅提高了工作效率,而且大大的提高了其安全性。</p><p> 圖書館作為一種信息資源的集散地,圖書和用戶借閱資料繁多,包含很多的信息數(shù)據(jù)的管理,現(xiàn)今,有很多的圖書館都是初步開始使用,甚至尚未使用計(jì)算機(jī)進(jìn)行信息管理。根據(jù)調(diào)查得知,他們以前對(duì)信息管理的主要方式是基于文本、表格等紙介
9、質(zhì)的手工處理,對(duì)于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對(duì)借書卡的人工檢查進(jìn)行,對(duì)借閱者的借閱權(quán)限、以及借閱天數(shù)等用人工計(jì)算、手抄進(jìn)行。數(shù)據(jù)信息處理工作量大,容易出錯(cuò);由于數(shù)據(jù)繁多,容易丟失,且不易查找??偟膩碚f,缺乏系統(tǒng),規(guī)范的信息管理手段。盡管有的圖書館有計(jì)算機(jī),但是尚未用于信息管理,沒有發(fā)揮它的效力,資源閑置比較突出,這就是管理信息系統(tǒng)的開發(fā)的基本環(huán)境。</p><p>
10、 數(shù)據(jù)處理手工操作,工作量大,出錯(cuò)率高,出錯(cuò)后不易更改。圖書館采取手工方式對(duì)圖書借閱情況進(jìn)行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時(shí)對(duì)它比較清楚,時(shí)間一長(zhǎng),如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費(fèi)時(shí)、費(fèi)力。如要對(duì)很長(zhǎng)時(shí)間以前的圖書進(jìn)行更改就更加困難了。</p><p> 基于這此
11、問題,我認(rèn)為有必要建立一個(gè)圖書管理系統(tǒng),使圖書管理工作規(guī)范化,系統(tǒng)化,程序化,避免圖書管理的隨意性,提高信息處理的速度和準(zhǔn)確性,能夠及時(shí)、準(zhǔn)確、有效的查詢和修改圖書情況。</p><p> 1.2數(shù)據(jù)庫應(yīng)用系統(tǒng)簡(jiǎn)介</p><p> SQL Server 2000數(shù)據(jù)庫是微軟公司精心打造的企業(yè)級(jí)數(shù)據(jù)庫平臺(tái)產(chǎn)品,該產(chǎn)品不僅包含了豐富的企業(yè)及數(shù)據(jù)管理功能,還集成了商業(yè)智能等特性。數(shù)據(jù)庫由D
12、BMS(數(shù)據(jù)庫管理系統(tǒng))處理,DBMS則由開發(fā)人員和用戶通過應(yīng)用程序直接或間接地使用。它主要包括四個(gè)要素:用戶數(shù)據(jù)、元數(shù)據(jù)、索引和應(yīng)用元數(shù)據(jù)。</p><p> 1.3Visual Studio 2008 開發(fā)平臺(tái)</p><p> Visual Studio 是一套完整的開發(fā)工具集,用于生成 ASP.NET Web 應(yīng)用程序、XML Web Services、桌面應(yīng)用程序和移動(dòng)應(yīng)用程
13、序。Visual Basic、Visual C++、Visual C# 和 Visual J# 全都使用相同的集成開發(fā)環(huán)境 (IDE),利用此 IDE 可以共享工具且有助于創(chuàng)建混合語言解決方案。另外,這些語言利用了 .NET Framework 的功能,通過此框架可使用簡(jiǎn)化 ASP Web 應(yīng)用程序和 XML Web Services 開發(fā)的關(guān)鍵技術(shù)。</p><p><b> 2總體設(shè)計(jì)</b
14、></p><p> 本系統(tǒng)利用Visual Studio 2008處理數(shù)據(jù)庫的功能,實(shí)現(xiàn)對(duì)圖書館信息的管理。主要功能為管理有關(guān)用戶、管理員、書籍和借閱的信息等。</p><p> 本系統(tǒng)的結(jié)構(gòu)分為用戶信息管理模塊、書籍信息管理模塊、借閱信息管理模塊、管理者管理信息模塊和查詢處理模塊、統(tǒng)計(jì)信息模塊。</p><p> 圖書館管理系統(tǒng)框架圖如圖2.1所示&
15、lt;/p><p> 圖2.1 圖書館管理系統(tǒng)框架圖</p><p><b> 3數(shù)據(jù)庫設(shè)計(jì)</b></p><p> 3.1E-R模型設(shè)計(jì)</p><p> 3.1.1 實(shí)體列表</p><p><b> 表3-1</b></p><p>
16、3.1.2系統(tǒng)的E-R模型</p><p> 該圖書管理系統(tǒng)的E-R模型,如圖2.2所示</p><p> 圖3.1 系統(tǒng)的E-R模型</p><p><b> 3.2數(shù)據(jù)庫設(shè)計(jì)</b></p><p> 3.2.1創(chuàng)建數(shù)據(jù)庫</p><p> (1)在服務(wù)器資源管理器中的任一節(jié)點(diǎn)右擊。
17、</p><p> (2)執(zhí)行快捷菜單中的“新建數(shù)據(jù)庫”命令,并在打開的“創(chuàng)建數(shù)據(jù)庫”對(duì)話框中輸入數(shù)據(jù)庫名BookManage,其他可采用默認(rèn)值。</p><p> (3)單擊“確定”按鈕,則新建的數(shù)據(jù)庫就會(huì)出現(xiàn)在服務(wù)器上。</p><p> 3.2.2創(chuàng)建數(shù)據(jù)表</p><p> 創(chuàng)建數(shù)據(jù)庫后,為BookManage數(shù)據(jù)庫添加數(shù)據(jù)表
18、,步驟如下。</p><p> (1)在服務(wù)器資源管理器中右擊數(shù)據(jù)庫BookManage下的“表”文件夾在彈出的快捷菜單中執(zhí)行“新建表”命令。</p><p> (2)添加表的字段和其他詳細(xì)資料。各表數(shù)據(jù)結(jié)構(gòu)如下表所示。</p><p> 表3-2用戶信息(userinfo)</p><p> 表3-3圖書信息(bookinfo)&l
19、t;/p><p> 表3-4借閱信息(issueinfo)</p><p> 3.3 數(shù)據(jù)庫中表的關(guān)系</p><p> 在數(shù)據(jù)庫中新建BookManage數(shù)據(jù)庫的數(shù)據(jù)庫關(guān)系圖如圖2.4所示</p><p> 圖 2.4 數(shù)據(jù)庫關(guān)系圖</p><p><b> 4讀者借閱統(tǒng)計(jì)</b><
20、/p><p><b> 4.1總體結(jié)構(gòu)</b></p><p> 讀者借閱統(tǒng)計(jì)功能設(shè)計(jì)時(shí),既要考慮用戶與自動(dòng)化集成管理系統(tǒng)使用身份的一致性,又要考慮滿足讀者的查詢需求,同時(shí)也要為日后系統(tǒng)功能拓展和數(shù)據(jù)的再利用留下可擴(kuò)展接口。系統(tǒng)總體上應(yīng)具有認(rèn)證、查詢和結(jié)果輸出三項(xiàng)功能,其實(shí)現(xiàn)流程如圖4.1所示</p><p><b> 圖4.1&l
21、t;/b></p><p><b> ( 1 )認(rèn)證功能</b></p><p> 認(rèn)證功能是用戶使用系統(tǒng)的登錄環(huán)節(jié),旨在識(shí)別是否是本校在職教師或在冊(cè)學(xué)生的用戶身份,并確保其登錄的合法性。</p><p> ( 2 )查詢功能查詢功能是重要設(shè)計(jì)環(huán)節(jié)。鑒于用戶某一時(shí)段對(duì)自己借閱歷史記錄查詢的需要,以及考慮便于日后系統(tǒng)管理員統(tǒng)計(jì)分析,要
22、求系統(tǒng)用戶界面設(shè)計(jì)既簡(jiǎn)單又</p><p> 明確,數(shù)據(jù)庫查詢?cè)O(shè)置既合理又快捷。</p><p> ( 3 )結(jié)果輸出功能</p><p> 系統(tǒng)將提供當(dāng)前瀏覽和打印輸出兩種最常用的結(jié)果輸出方式,要求考慮查詢結(jié)果與書目檢索功能的掛接問題。</p><p> 4.2數(shù)據(jù)表建模設(shè)計(jì)</p><p> 系統(tǒng)功能將由
23、數(shù)據(jù)表建模實(shí)現(xiàn),主要體現(xiàn)在認(rèn)證和數(shù)據(jù)查詢兩個(gè)模塊中,并分別由user數(shù)據(jù)表和book數(shù)據(jù)表來實(shí)現(xiàn)。考慮未來數(shù)據(jù)擴(kuò)展的可能性,在數(shù)據(jù)表建模設(shè)計(jì)中,引入了分表存儲(chǔ)、調(diào)度查詢等優(yōu)化存儲(chǔ)策略,解決了大數(shù)據(jù)量存儲(chǔ)及高效檢索等問題。數(shù)據(jù)流程如圖4.2所示</p><p><b> 圖4.2</b></p><p> ( 1) user數(shù)據(jù)表</p><p&
24、gt; 根據(jù)功能要求, user數(shù)據(jù)表主要用于用戶身份認(rèn)證,以此來保證使用該系統(tǒng)用戶的合法性和其借閱歷史記錄的私密性。</p><p> ( 2) book數(shù)據(jù)表</p><p> 用于保存和更新讀者借閱書目信息、讀者身份信息和關(guān)聯(lián)關(guān)系的物理表。</p><p><b> ( 3)存儲(chǔ)分區(qū)表</b></p><p&g
25、t; 存儲(chǔ)分區(qū)表是針對(duì)系統(tǒng)數(shù)據(jù)的不斷積累,建立的一種有助于查詢效率優(yōu)化的存儲(chǔ)策略,由一組book表實(shí)現(xiàn),如book子表1、book子表2、book子表3等,即所有導(dǎo)入的讀者借閱歷史記錄,根據(jù)一定的規(guī)則分別存儲(chǔ)到一組同構(gòu)的物理表中。存儲(chǔ)分區(qū)表主要用于建立到book子表名的索引,包括存儲(chǔ)分區(qū)碼和子表名兩個(gè)字段。所有的查詢都需要首先查詢存儲(chǔ)分區(qū)配置表,查詢調(diào)度流程如圖4.3所示</p><p><b>
26、圖4.3</b></p><p><b> 4.3系統(tǒng)功能實(shí)現(xiàn)</b></p><p> ( 1 )認(rèn)證功能實(shí)現(xiàn)</p><p> 由于注冊(cè)用戶的基本信息來自系統(tǒng),即注冊(cè)用戶必定是人大正式在冊(cè)的教師和學(xué)生,因此,借閱歷史記錄查詢系統(tǒng)的user數(shù)據(jù)表使用了U系統(tǒng)中的用戶基本信息。用戶使用該系統(tǒng)時(shí)只要輸入賬號(hào)即可登錄,完成身份識(shí)別
27、認(rèn)證。這樣,既避免了認(rèn)證功能的重復(fù)開發(fā),又減少了讀者對(duì)多賬號(hào)的記憶。</p><p> ( 2 )查詢功能實(shí)現(xiàn)</p><p><b> ?、俨樵兘缑?lt;/b></p><p> 系統(tǒng)在提供用戶登錄認(rèn)證界面的同時(shí),設(shè)計(jì)了某一日期或某一時(shí)段瀏覽兩種選擇查詢方式,即讀者在進(jìn)行身份登錄的同時(shí)要設(shè)定查詢借閱歷史的范圍。查詢范圍以時(shí)間為界定。</
28、p><p><b> ②數(shù)據(jù)庫查詢處理</b></p><p> 借閱歷史查詢系統(tǒng)使用PHP語言讀取后臺(tái)</p><p> 數(shù)據(jù)庫中的數(shù)據(jù),選擇出屬于該用戶的借閱數(shù)據(jù)進(jìn)行處理。由于目前數(shù)據(jù)庫中數(shù)據(jù)量比較小,因此在系統(tǒng)實(shí)現(xiàn)中,僅建立了一個(gè)借閱歷史數(shù)據(jù)的物理存儲(chǔ)子表book,但隨著系統(tǒng)數(shù)據(jù)的日益增長(zhǎng),將會(huì)啟用分表存儲(chǔ)。</p>&l
29、t;p> ( 3)查詢結(jié)果輸出實(shí)現(xiàn)</p><p> 對(duì)于每一條查詢結(jié)果,系統(tǒng)提供了三種方式充分滿足讀者對(duì)借閱歷史查詢的不同需求。讀者可以通過應(yīng)用程序即時(shí)查看,也可以導(dǎo)出成為Excel文件形式保存到本地硬盤。</p><p> 5通用類的生成與數(shù)據(jù)庫連接</p><p> 本系統(tǒng)的主要操作都需要與數(shù)據(jù)庫發(fā)生交互,為了提高代碼的重用性和規(guī)范性,把與數(shù)據(jù)庫
30、交互的功能單獨(dú)放在一個(gè)類中,在該類中實(shí)現(xiàn)數(shù)據(jù)庫的增加、刪除、修改、查詢等通用功能。</p><p><b> 5.1 連接數(shù)據(jù)庫</b></p><p> (1)為數(shù)據(jù)庫BookManage和本系統(tǒng)之間建立一個(gè)數(shù)據(jù)連接。</p><p> 1)在服務(wù)器資源管理器中右擊“數(shù)據(jù)連接”節(jié)點(diǎn)(VS 2008中操作)。在彈出的快捷菜單中執(zhí)行“添加連
31、接”命令,打開Data Link Properties對(duì)話框。切換到Provider選項(xiàng)卡,選中列表框中的Microsoft OLE DB Provider for SQL Server項(xiàng)。單擊“下一步”切換到Connection選項(xiàng)卡。</p><p> 2)在其中的第一個(gè)下拉列表框中選擇數(shù)據(jù)庫所在服務(wù)器名稱。輸入登錄服務(wù)器信息后選擇數(shù)據(jù)庫BookManage,然后單擊測(cè)試按鈕。如果測(cè)試成功,單擊“確定”按鈕
32、。</p><p> (2)定義數(shù)據(jù)庫連接字符串,代碼如下:</p><p> Private static string ConnectString = "Data Source= (local)\\sqlexpress;DataBase=BookManage.mdf";</p><p> (2)創(chuàng)建Connection對(duì)象,代碼如下:&
33、lt;/p><p> SqlConnection con = new SqlConnection(ConnectString);</p><p> (3)打開連接,代碼如下:</p><p> con.Open();</p><p> (4)關(guān)閉連接,代碼如下:</p><p> con.Close();<
34、/p><p> 5.2 操作數(shù)據(jù)庫中的數(shù)據(jù)</p><p> using System;</p><p> using System.Collections.Generic;</p><p> using System.Linq;</p><p> using System.Text;</p>&l
35、t;p> using System.Data;</p><p> using System.Data.SqlClient;</p><p> namespace BookManage</p><p> { class DataAccess</p><p> { private static string Connect
36、String = @"Data Source =A20\SQLEXPRESS;AttachDbFilename=F:\BookManage\data\BookManage.mdf;Integrated Security=False";//數(shù)據(jù)庫連接字符串</p><p> /// <summary></p><p> /// 根據(jù)表名獲取數(shù)據(jù)集的表<
37、;/p><p> /// </summary></p><p> /// <param name="table"></param></p><p> /// <returns></returns></p><p> public static DataTabl
38、e GetDataSetByTableName(string table)</p><p> {using (SqlConnection con = new SqlConnection(ConnectString))//創(chuàng)建數(shù)據(jù)庫連接對(duì)象</p><p> { string sql = "select * from " + table + "";
39、//查詢sql語句</p><p><b> try</b></p><p> {SqlDataAdapter adapter = new SqlDataAdapter(sql, con);//創(chuàng)建適配器對(duì)象</p><p> DataSet ds = new DataSet();//創(chuàng)建數(shù)據(jù)集對(duì)象</p><p>
40、; adapter.Fill(ds, "table");//填充數(shù)據(jù)集</p><p> return ds.Tables[0];//返回?cái)?shù)據(jù)表 }</p><p> catch (SqlException ex)</p><p> { throw new Exception(ex.Message); ;}}}</p>
41、<p> public static DataSet GetDataSetBySql(string sql)</p><p> { using (SqlConnection con = new SqlConnection(ConnectString))//創(chuàng)建數(shù)據(jù)庫連接對(duì)象</p><p> { SqlDataAdapter adapter = new SqlDataA
42、dapter(sql,con);//創(chuàng)建適配器對(duì)象</p><p> DataSet ds = new DataSet();//創(chuàng)建數(shù)據(jù)集對(duì)象</p><p><b> try</b></p><p> { adapter.Fill(ds);//填充數(shù)據(jù)集</p><p> return ds;//返回?cái)?shù)據(jù)集 }
43、</p><p> catch (SqlException ex)</p><p> {throw new Exception(ex.Message)} }</p><p> public static SqlDataReader GetDataReaderByID(int id)</p><p> {using (SqlConnec
44、tion con = new SqlConnection(ConnectString))</p><p> {string sql = "select * from bookinfo where bookid=" + id;//sql語句</p><p><b> try</b></p><p> {SqlComman
45、d comm = new SqlCommand(sql, con);//創(chuàng)建Command對(duì)象</p><p> con.Open();//打開連接</p><p> SqlDataReader reader = comm.ExecuteReader();//創(chuàng)建DataReader對(duì)象</p><p> reader.Read();//讀取數(shù)據(jù)</p&
46、gt;<p> return reader;//返回DataReader}</p><p> catch (SqlException ex)</p><p> {throw new Exception(ex.Message);</p><p><b> }}</b></p><p> public
47、 static bool UpdateDataTable(string sql)</p><p> {using (SqlConnection con = new SqlConnection(ConnectString))</p><p> { try</p><p> {con.Open();//打開連接</p><p
48、> SqlCommand comm = new SqlCommand(sql, con);//創(chuàng)建Command對(duì)象</p><p> if (comm.ExecuteNonQuery() > 0) //執(zhí)行更新</p><p> {return true;}</p><p><b> else</b></p>
49、<p> {return false;}}</p><p> catch (SqlException ex)</p><p> {throw new Exception(ex.Message);}}}</p><p> public static void UpdateDataSet(DataSet ds,string sql)</p>
50、;<p> { using (SqlConnection con = new SqlConnection(ConnectString))</p><p><b> {try</b></p><p> { SqlDataAdapter adapter = new SqlDataAdapter(sql, con);//創(chuàng)建適配器</p>
51、<p> SqlCommandBuilder builder = new SqlCommandBuilder(adapter);//根據(jù)適配器自動(dòng)生成表單</p><p> adapter.Update(ds, "table");//更新數(shù)據(jù)庫}</p><p> catch (SqlException ex)</p><p>
52、 { throw new Exception(ex.Message);}}}}}</p><p> 5.3 用戶登錄代碼、圖書查詢代碼等的實(shí)現(xiàn)</p><p> 以上代碼的實(shí)現(xiàn)都是C#語言和Sql語言的使用,此處由于代碼篇幅較長(zhǎng),此處不再說明,祥見附錄。</p><p><b> 6系統(tǒng)測(cè)試</b></p><p>
53、; 6.1開發(fā)與測(cè)試環(huán)境 </p><p> 本系統(tǒng)使用C#3.0語言進(jìn)行開發(fā)。需要Microsoft .NET Framework的支持。適用內(nèi)存不低于256M配備有Windows2000,Windows2003,WindowsXP系統(tǒng)的計(jì)算機(jī)。</p><p> 6.2程序調(diào)試情況 </p><p> 在數(shù)據(jù)連接時(shí)一定要注意窗體和相應(yīng)顯示控件的綁定關(guān)系。
54、在把系統(tǒng)從一臺(tái)計(jì)算機(jī)移植到另一臺(tái)計(jì)算機(jī)時(shí)一定要把數(shù)據(jù)文件BookManage.mdf和BookManage_log.LDF同時(shí)移植,并對(duì)相應(yīng)的提供服務(wù)的SQL Server服務(wù)器進(jìn)行相應(yīng)的修改,否則數(shù)據(jù)正確連接并顯示。</p><p><b> 6.3 功能顯示</b></p><p><b> 6.3.1 主窗口</b></p>
55、<p> 運(yùn)行程序后首先顯示主窗體,如圖6.1所示</p><p> 單擊“登錄”按鈕,就會(huì)彈出登錄窗體,管理用戶具有系統(tǒng)提供的所有權(quán)限,普通用戶可以查詢圖書、借閱圖書。</p><p><b> 圖 6.1 主窗口</b></p><p> 在登錄對(duì)話框中輸入用戶姓名和密碼,單擊“確認(rèn)”按鈕,就會(huì)對(duì)用戶身份進(jìn)行認(rèn)證,如果
56、認(rèn)證通過,那么就會(huì)彈出如圖6.2所示的圖書館管理系統(tǒng)的界面:</p><p> 管理員和普通用戶進(jìn)入此窗體后,系統(tǒng)所提供的操作權(quán)限是不同的</p><p> 6.3.2 圖書查詢功能</p><p> 圖書查詢可以實(shí)現(xiàn)組合查詢,將查詢結(jié)果顯示在DataGridView控件中。</p><p> 窗體載入時(shí),對(duì)圖書類別組合框中的項(xiàng)進(jìn)行了
57、初始化,通過查詢語句“select distinct BookType from bookinfo”,調(diào)用DataAccess類中的GetDataSetBySql方法獲取數(shù)據(jù)庫Bookinfo表中的圖書類別,使用distinct關(guān)鍵字去掉重復(fù)項(xiàng)。</p><p> 使用查詢功能示例如圖6.2所示</p><p><b> 圖6.2 圖書查詢</b></p&g
58、t;<p> 6.3.3 圖書編目功能</p><p> 管理員登錄系統(tǒng)后,可以為數(shù)據(jù)庫添加新的圖書信息。如圖6.3所示</p><p><b> 圖6.3 圖書編目</b></p><p> 6.3.4 圖書借閱功能</p><p> 用戶登錄系統(tǒng)后,可以借閱不同的書籍,通過選擇組合框中的書名,
59、該書的圖書訪問代碼和作者將顯示在文本框中。如圖6.5所示</p><p><b> 圖6.5</b></p><p> 6.3.5 讀者借閱統(tǒng)計(jì)</p><p> 圖書更新分為兩種,第一種通過更改DataGridView控件中的數(shù)據(jù)直接更改,第二種可以通過修改各字段值進(jìn)行更改。單擊“保存修改”按鈕,將DataGridView控件中修改的數(shù)
60、據(jù)保存到數(shù)據(jù)庫中。如圖6.4所示</p><p><b> 圖6.5 </b></p><p> 7問題分析與解決方法</p><p> (1)string conString = "provider=sqloledb.1;data source=.;initial catalo
61、g=capucivar;user id=sa;pwd=";//連接數(shù)據(jù)庫的字符串</p><p> (2)private static string ConnectString = </p><p> "server=(local)\\sqlexpress;database=Book_Data;user=sa;pwd=1234";//數(shù)據(jù)庫連接字
62、符串</p><p> (3)Private static string ConnectString = "Data Source= (local)\\sqlexpress;DataBase=BookManage.mdf";</p><p><b> 8總結(jié)</b></p><p> 通過近兩周的課程設(shè)計(jì),我有了很多的
63、收獲,首先這次課程設(shè)計(jì)使用到了很多的C#和SQL編程語言,由于之前學(xué)的不好,在程序的代碼實(shí)現(xiàn)中遇到了很多的問題,使得設(shè)計(jì)的中期階段顯得很困難,但是經(jīng)過組員們的共同努力均被一一解決;其次是作為學(xué)習(xí)軟件專業(yè)的我們,要有良好的學(xué)習(xí)心態(tài)和嚴(yán)謹(jǐn)?shù)膽B(tài)度,因?yàn)榫幊踢@一塊真的很不容易,一不小心就會(huì)出錯(cuò),而且很是乏味;最后,我還是很順利的完成了這次課程設(shè)計(jì),在這里我要特別感謝張老師在此次課程設(shè)計(jì)上對(duì)我們的指導(dǎo)。</p><p>&
64、lt;b> 9參考文獻(xiàn)</b></p><p> 1 劉麗霞 等編著,零基礎(chǔ)學(xué) C#3.0. 北京:機(jī)械工業(yè)出版社,2009.3</p><p> 2 劉輝 等編著,零基礎(chǔ)學(xué) SQL Server 2000. 北京:機(jī)械工業(yè)出版社,2008.1</p><p><b> 10源代碼</b></p><
65、;p><b> 附錄A </b></p><p> using System;</p><p> using System.Collections.Generic;</p><p> using System.ComponentModel;</p><p> using System.Data;</
66、p><p> using System.Drawing;</p><p> using System.Linq;</p><p> using System.Text;</p><p> using System.Windows.Forms;</p><p> namespace BookManage</p
67、><p> { public partial class FrmMain : Form</p><p> { public static DialogResult result;</p><p> public FrmMain()</p><p> { InitializeComponent();} </
68、p><p> //查詢子窗體是否存在</p><p> public bool checkchildfrm(string childfrmname)</p><p> { foreach (Form childFrm in this.MdiChildren)</p><p> { if (childFrm.Name == childf
69、rmname)</p><p> { if(childFrm.WindowState ==FormWindowState.Minimized)</p><p> childFrm.WindowState = FormWindowState.Normal;</p><p> childFrm.Activate();</p><p>
70、return true; } }</p><p> return false;}</p><p> //用戶登錄菜單的事件處理</p><p> private void 用戶登錄ToolStripMenuItem_Click(object sender, EventArgs e)</p><p> { //檢測(cè)該窗口是否處
71、于打開狀態(tài)</p><p> if (this.checkchildfrm("frmLogin") == true)</p><p> return; //窗口已經(jīng)打開,返回</p><p> frmLogin user = new frmLogin();//實(shí)例化登錄窗體</p><p> user.Sho
72、wDialog(); //登錄窗體以模式對(duì)話框的方式的打開</p><p> //判斷是否登錄成功,登錄成功則啟用相應(yīng)的菜單和按鈕</p><p> if (result == DialogResult.OK)</p><p> { this.tsbtnAddBook.Enabled = true;</p><p> this.m
73、nuUpdateBook.Enabled = true;</p><p> this.mnuAddBook.Enabled = true;</p><p><b> }</b></p><p><b> }</b></p><p> //登錄按鈕事件處理</p><p&g
74、t; private void tsbtnLogin_Click(object sender, EventArgs e)</p><p> { if (this.checkchildfrm("frmLogin") == true)</p><p><b> return;</b></p><p> frmLogin
75、 user = new frmLogin();</p><p> user.ShowDialog();</p><p> if (result == DialogResult.OK)</p><p> { this.tsbtnAddBook.Enabled = true;</p><p> this.mnuUpdateBook.E
76、nabled = true;</p><p> this.mnuAddBook.Enabled = true;</p><p><b> }</b></p><p><b> }</b></p><p> //圖書查詢按鈕Click事件處理</p><p> pri
77、vate void tsbtnSearch_Click(object sender, EventArgs e)</p><p> { if (this.checkchildfrm("frmSearchBook") == true)</p><p><b> return;</b></p><p> frmSearch
78、Book book = new frmSearchBook();</p><p> book.MdiParent = this; //設(shè)置為當(dāng)前窗體的子窗體</p><p> book.Show();}</p><p> //圖書檢索菜單Click事件處理</p><p> private void 圖書檢索ToolStripMen
79、uItem_Click(object sender, EventArgs e)</p><p> { if (this.checkchildfrm("frmSearchBook") == true)</p><p><b> return;</b></p><p> frmSearchBook book = new
80、 frmSearchBook();</p><p> book.MdiParent = this;</p><p> book.Show();} </p><p> //圖書入庫菜單Click事件處理</p><p> private void 圖書入庫ToolStripMenuItem1_Click(object sen
81、der, EventArgs e)</p><p> { if (this.checkchildfrm("frmAddBook") == true)</p><p><b> return;</b></p><p> frmAddBook objbook = new frmAddBook();</p>
82、<p> objbook.MdiParent= this;</p><p> objbook.Show();</p><p><b> } </b></p><p> //圖書入庫按鈕Click事件處理</p><p> private void tsbtnAddBook_Click(o
83、bject sender, EventArgs e)</p><p> { if (this.checkchildfrm("frmUpdateBook") == true)</p><p><b> return;</b></p><p> frmUpdateBook objbook = new frmUpdat
84、eBook();</p><p> objbook.MdiParent = this;</p><p> objbook.Show();</p><p><b> }</b></p><p> //圖書更新菜單Click事件處理</p><p> private void 圖書修改Too
85、lStripMenuItem_Click(object sender, EventArgs e)</p><p> { if (this.checkchildfrm("frmUpdateBook") == true)</p><p><b> return;</b></p><p> frmUpdateBook ob
86、jbook = new frmUpdateBook();</p><p> objbook.MdiParent= this;</p><p> objbook.Show();</p><p><b> }</b></p><p> //圖書借閱按鈕事件處理</p><p> privat
87、e void tsbtnIssue_Click(object sender, EventArgs e)</p><p> { if (this.checkchildfrm("frmIssueBook") == true)</p><p><b> return;</b></p><p> frmIssueBook
88、issuebook = new frmIssueBook();</p><p> issuebook.MdiParent= this;</p><p> issuebook.Show();</p><p><b> }</b></p><p> private void tsbtnExit_Click(objec
89、t sender, EventArgs e)</p><p> { Application.Exit();</p><p><b> }</b></p><p> private void 退出ToolStripMenuItem1_Click(object sender, EventArgs e)</p><p>
90、; { Application.Exit();</p><p><b> }</b></p><p> private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)</p><p> { Application.Exit();</p><
91、p><b> }</b></p><p> //窗體載入時(shí)事件處理</p><p> private void FrmMain_Load(object sender, EventArgs e)</p><p> { this.tsbtnAddBook.Enabled = false;</p><p&
92、gt; this.mnuAddBook.Enabled = false;</p><p> this.mnuUpdateBook.Enabled = false;}}}</p><p><b> 附錄B</b></p><p> using System;</p><p> using System.Colle
93、ctions.Generic;</p><p> using System.ComponentModel;</p><p> using System.Data;</p><p> using System.Drawing;</p><p> using System.Linq;</p><p> using
94、 System.Text;</p><p> using System.Windows.Forms;</p><p> namespace BookManage</p><p> { public partial class frmSearchBook : Form</p><p> { public frmSea
95、rchBook()</p><p> { InitializeComponent();</p><p><b> }</b></p><p> private void btnSerch_Click(object sender, EventArgs e)</p><p> { strin
96、g cbo1 = this.cboOR.Text;</p><p> string cbo2 = this.cboAnd.Text;</p><p> string booktype = cboType.Text;</p><p> string bookname = this.txtName.Text;</p><p> strin
97、g bookcontent = this.txtContent.Text;</p><p><b> //定義sql語句</b></p><p> string sql = "select * from bookInfo where BookType='" + booktype + "' " + cbo1 +
98、 " BookName like '%" + bookname + "%' " + cbo2 + " BookContent like '%" + bookcontent + "%'";</p><p> //調(diào)用DataAccess.GetDataSetBySql方法</p><
99、p> DataSet Myds = DataAccess.GetDataSetBySql(sql);</p><p> DataTable table = Myds.Tables[0];</p><p><b> //指定數(shù)據(jù)源</b></p><p> this.dgvSearchBook.DataSource = table;
100、</p><p><b> }</b></p><p> private void frmSearchBook_Load(object sender, EventArgs e)</p><p> { //圖書類別組合框初始化</p><p> DataSet Myds = DataAccess.GetD
101、ataSetBySql("select distinct BookType from bookInfo");</p><p> DataTable table = Myds.Tables[0];</p><p> for (int i = 0; i < table.Rows.Count; i++)</p><p> { th
102、is.cboType.Items.Add(table.Rows[i][0].ToString().Trim());</p><p><b> }</b></p><p> cboType.SelectedIndex = 0;</p><p> this.cboOR.SelectedIndex = 0;</p><p&g
103、t; this.cboAnd.SelectedIndex = 0;</p><p><b> }</b></p><p> private void btnClose_Click(object sender, EventArgs e)</p><p> { this.Close(); }}}</p><p>
104、;<b> 附錄C </b></p><p> using System;</p><p> using System.Collections.Generic;</p><p> using System.ComponentModel;</p><p> using System.Data;</p>
105、<p> using System.Drawing;</p><p> using System.Linq;</p><p> using System.Text;</p><p> using System.Windows.Forms;</p><p> using System.Data.SqlClient;<
106、;/p><p> namespace BookManage</p><p> { public partial class frmUpdateBook : Form</p><p> { DataSet ds = new DataSet();</p><p> public frmUpdateBook()</p&
107、gt;<p> { InitializeComponent();</p><p><b> }</b></p><p> private void frmUpdateBook_Load(object sender, EventArgs e)</p><p> { string sql = &quo
108、t;select * from bookinfo";</p><p> ds = DataAccess.GetDataSetBySql(sql);</p><p> this.dgvBookInfo.DataSource=ds.Tables[0];</p><p> this.txtbID.Enabled = false;</p>&l
109、t;p><b> }</b></p><p> private void txtbPic_TextChanged(object sender, EventArgs e)</p><p> { }</p><p> private void btnUpdate_Click(object sender, EventArg
110、s e)</p><p> { string booktype = this.txtbType.Text.ToString();</p><p> string bookname = this.txtbName.Text.ToString();</p><p> string bookauthor = this.txtAuthor.Text.ToStrin
111、g();</p><p> Double bookprice = Convert.ToDouble(this.txtbPrice.Text);</p><p> string bookpic = this.txtbPic.Text.ToString();</p><p> string bookcontent = this.txtbContent.Text.T
112、oString();</p><p> int bookissue = Convert.ToInt32(this.txtIssueID.Text);</p><p> string sql = string.Format("update bookInfo set BookType='{0}',BookName='{1}',BookAuthor=
113、'{2}',BookPrice={3},BookPic='{4}',BookContent='{5}',BookIssue={6} where BookID={7}", booktype, bookname, bookauthor, bookprice, bookpic, bookcontent, bookissue,Convert.ToInt32(this.txtbID.Tex
114、t));</p><p> if (DataAccess.UpdateDataTable(sql))</p><p> { MessageBox.Show("更新成功", "提示", MessageBoxButtons.OK);</p><p><b> }</b></p><
115、p><b> else</b></p><p> { MessageBox.Show("更新失敗", "提示", MessageBoxButtons.OK);</p><p><b> }</b></p><p><b> }</b></p
116、><p> private void btnSave_Click(object sender, EventArgs e)</p><p> { string sql = "select * from BookInfo";</p><p> DialogResult result = MessageBox.Show("確實(shí)要將修改保
117、存到數(shù)據(jù)庫嗎?", "操作提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question);</p><p> if (result == DialogResult.OK)</p><p> { DataAccess.UpdateDataSet(ds, sql);</p><p>
118、; MessageBox.Show("保存成功");</p><p><b> }</b></p><p> this.dgvBookInfo.DataSource = DataAccess.GetDataSetBySql(sql).Tables[0];</p><p><b> }</b>&l
119、t;/p><p> private void dgvBookInfo_CellClick(object sender, DataGridViewCellEventArgs e)</p><p> { //獲得當(dāng)前鼠標(biāo)單擊時(shí)的行索引號(hào)</p><p> int index = this.dgvBookInfo.CurrentCell.RowIndex;</
120、p><p> //通過索引號(hào)獲得值并賦予相應(yīng)的文本框顯示</p><p> this.txtbID.Text = this.dgvBookInfo.Rows[index].Cells[0].Value.ToString().Trim();</p><p> this.txtbType.Text = this.dgvBookInfo.Rows[index].Cell
121、s[1].Value.ToString().Trim();</p><p> this.txtbName.Text = this.dgvBookInfo.Rows[index].Cells[2].Value.ToString().Trim();</p><p> this.txtAuthor.Text = this.dgvBookInfo.Rows[index].Cells[3].Va
122、lue.ToString().Trim();</p><p> this.txtbPrice.Text = this.dgvBookInfo.Rows[index].Cells[4].Value.ToString().Trim();</p><p> this.txtbPic.Text = this.dgvBookInfo.Rows[index].Cells[5].Value.ToSt
123、ring().Trim();</p><p> this.txtbContent.Text = this.dgvBookInfo.Rows[index].Cells[6].Value.ToString();</p><p> this.txtIssueID.Text = this.dgvBookInfo.Rows[index].Cells[7].Value.ToString();<
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- c#課程設(shè)計(jì)圖書館信息管理系統(tǒng)
- 圖書館信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- java課程設(shè)計(jì)---圖書館信息管理系統(tǒng)
- 圖書館信息管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- 圖書館管理信息------系統(tǒng)課程設(shè)計(jì)
- 數(shù)據(jù)結(jié)構(gòu)課程設(shè)計(jì)圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)
- 圖書館管理信息系統(tǒng)課程設(shè)計(jì)
- 管理信息系統(tǒng)課程設(shè)計(jì)(圖書館)
- 課程設(shè)計(jì)--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)
- c語言圖書館管理系統(tǒng)課程設(shè)計(jì)---高校圖書館管理系統(tǒng)
- 圖書館管理信息系統(tǒng)課程設(shè)計(jì)
- 圖書館管理信息系統(tǒng)課程設(shè)計(jì)
- 《管理信息系統(tǒng)》課程設(shè)計(jì)--圖書館管理系統(tǒng)
- c語言課程設(shè)計(jì)圖書信息管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)報(bào)告
- jsp課程設(shè)計(jì)《圖書館管理系統(tǒng)》
- sqlserver課程設(shè)計(jì)——圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設(shè)計(jì)報(bào)告
評(píng)論
0/150
提交評(píng)論