2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

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)簡介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)測試11</b></p><p>  6.1開發(fā)與測試環(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)查得知,他們以前對信息管理的主要方式是基于文本、表格等紙介

9、質(zhì)的手工處理,對于圖書借閱情況(如借書天數(shù)、超過限定借書時(shí)間的天數(shù))的統(tǒng)計(jì)和核實(shí)等往往采用對借書卡的人工檢查進(jìn)行,對借閱者的借閱權(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ò)后不易更改。圖書館采取手工方式對圖書借閱情況進(jìn)行人工管理,由于信息比較多,圖書借閱信息的管理工作混亂而又復(fù)雜;一般借閱情況是記錄在借書證上,圖書的數(shù)目和內(nèi)容記錄在文件中,圖書館的工作人員和管理員也只是當(dāng)時(shí)對它比較清楚,時(shí)間一長,如再要進(jìn)行查詢,就得在眾多的資料中翻閱、查找了,造成查詢費(fèi)時(shí)、費(fèi)力。如要對很長時(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)簡介</p><p>  SQL Server 2000數(shù)據(jù)庫是微軟公司精心打造的企業(yè)級數(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 的功能,通過此框架可使用簡化 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)對圖書館信息的管理。主要功能為管理有關(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ù)庫”對話框中輸入數(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í)別是否是本校在職教師或在冊學(xué)生的用戶身份,并確保其登錄的合法性。</p><p>  ( 2 )查詢功能查詢功能是重要設(shè)計(jì)環(huán)節(jié)。鑒于用戶某一時(shí)段對自己借閱歷史記錄查詢的需要,以及考慮便于日后系統(tǒng)管理員統(tǒng)計(jì)分析,要

22、求系統(tǒng)用戶界面設(shè)計(jì)既簡單又</p><p>  明確,數(shù)據(jù)庫查詢設(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ū)表是針對系統(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>  由于注冊用戶的基本信息來自系統(tǒng),即注冊用戶必定是人大正式在冊的教師和學(xué)生,因此,借閱歷史記錄查詢系統(tǒng)的user數(shù)據(jù)表使用了U系統(tǒng)中的用戶基本信息。用戶使用該系統(tǒng)時(shí)只要輸入賬號(hào)即可登錄,完成身份識(shí)別

27、認(rèn)證。這樣,既避免了認(rèn)證功能的重復(fù)開發(fā),又減少了讀者對多賬號(hào)的記憶。</p><p>  ( 2 )查詢功能實(shí)現(xiàn)</p><p><b>  ①查詢界面</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ù)的日益增長,將會(huì)啟用分表存儲(chǔ)。</p>&l

29、t;p>  ( 3)查詢結(jié)果輸出實(shí)現(xiàn)</p><p>  對于每一條查詢結(jié)果,系統(tǒng)提供了三種方式充分滿足讀者對借閱歷史查詢的不同需求。讀者可以通過應(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> ?。?)為數(shù)據(jù)庫BookManage和本系統(tǒng)之間建立一個(gè)數(shù)據(jù)連接。</p><p>  1)在服務(wù)器資源管理器中右擊“數(shù)據(jù)連接”節(jié)點(diǎn)(VS 2008中操作)。在彈出的快捷菜單中執(zhí)行“添加連

31、接”命令,打開Data Link Properties對話框。切換到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,然后單擊測試按鈕。如果測試成功,單擊“確定”按鈕

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對象,代碼如下:&

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ù)庫連接對象</p><p>  { string sql = "select * from " + table + "";

39、//查詢sql語句</p><p><b>  try</b></p><p>  {SqlDataAdapter adapter = new SqlDataAdapter(sql, con);//創(chuàng)建適配器對象</p><p>  DataSet ds = new DataSet();//創(chuàng)建數(shù)據(jù)集對象</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ù)庫連接對象</p><p>  { SqlDataAdapter adapter = new SqlDataA

42、dapter(sql,con);//創(chuàng)建適配器對象</p><p>  DataSet ds = new DataSet();//創(chuàng)建數(shù)據(jù)集對象</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對象</p><p>  con.Open();//打開連接</p><p>  SqlDataReader reader = comm.ExecuteReader();//創(chuàng)建DataReader對象</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對象</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語言的使用,此處由于代碼篇幅較長,此處不再說明,祥見附錄。</p><p><b>  6系統(tǒng)測試</b></p><p>

53、;  6.1開發(fā)與測試環(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í)移植,并對相應(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>  在登錄對話框中輸入用戶姓名和密碼,單擊“確認(rèn)”按鈕,就會(huì)對用戶身份進(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í),對圖書類別組合框中的項(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ì)上對我們的指導(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>  { //檢測該窗口是否處

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(); //登錄窗體以模式對話框的方式的打開</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等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論