版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領
文檔簡介
1、<p> 基于C/S客戶端程序設計課程設計(論文)</p><p> 題目: 圖書館管理系統(tǒng) </p><p> 院(系): 軟件學院 </p><p> 專業(yè)班級: 計算機信息管理111班 </p><p> 學 號:
2、 </p><p> 學生姓名: </p><p> 指導教師: </p><p> 教師職稱: </p><p> 起止時間: 2013.06.17至2013.06.30 </p><p> 程
3、序設計專題(報告)任務及評語</p><p> 院(系):軟件學院 教研室:軟件教研窒</p><p><b> 目 錄</b></p><p> 第1章 程序設計目的與要求1</p><p> 1.1 程序設計目的1</p&
4、gt;<p> 1.2 程序設計的實驗環(huán)境1</p><p> 1.3 程序設計的預備知識1</p><p> 1.4 程序設計要求1</p><p> 第2章 程序設計內(nèi)容2</p><p> 2.1程序設計題目2</p><p> 2.2程序整體設計說明2</p>
5、<p> 2.3程序部分源代碼及注釋16</p><p> 第3章 程序設計總結22</p><p><b> 參考文獻23</b></p><p><b> 程序設計目的與要求</b></p><p> 1.1 程序設計目的</p><p>
6、《基于C/S客戶端程序設計》是計算機專業(yè)的必修專業(yè)基礎課程,其實踐性、應用性很強。實踐教學環(huán)節(jié)是必不可少的一個重要環(huán)節(jié)。本課程的程序設計專題實際是軟件技術專業(yè)學生學習完《基于C/S客戶端程序設計》課程后,進行的一次全面的綜合訓練,C#程序設計的設計目的是加深對理論教學內(nèi)容的理解和掌握,使學生較系統(tǒng)地掌握程序設計及其在網(wǎng)絡開發(fā)中的廣泛應用,基本方法及技巧,為學生綜合運用所學知識,利用軟件工程為基礎進行軟件開發(fā)、并在實踐應用方面打下一定基礎
7、。</p><p> 1.2 程序設計的實驗環(huán)境</p><p> 硬件要求能運行Windows xp操作系統(tǒng)的微機系統(tǒng)。C#程序設計語言及相應的集成開發(fā)環(huán)境visual studio.net2003。</p><p> 1.3 程序設計的預備知識</p><p> 熟悉c#語言及visual studio.net集成開發(fā)環(huán)境。<
8、;/p><p> 1.4 程序設計要求</p><p> 按程序設計指導書提供的課題,要求學生在自行完成各個操作環(huán)節(jié),并能實現(xiàn)且達到舉一反三的目的,完成一個項目解決一類問題。要求學生能夠全面、深入理解和熟練掌握所學內(nèi)容,并能夠用其分析、設計和解答類似問題;對此能夠較好地理解和掌握,能夠進行簡單分析和判斷;能編寫出具有良好風格的程序;掌握c#.net2003的基本技能和面向?qū)ο蟮母拍詈头椒ǎ?/p>
9、了解windows編程。同時培養(yǎng)學生進行分析問題、解決問題的能力;培養(yǎng)學生進行設計分析、設計方法、設計操作與測試、設計過程的觀察、理解和歸納能力的提高。</p><p><b> 程序設計內(nèi)容</b></p><p><b> 2.1程序設計題目</b></p><p><b> 圖書管理系統(tǒng)</b&
10、gt;</p><p> 隨著信息時代以及計算機科技產(chǎn)業(yè)的飛速發(fā)展,生活水平和教學管理軟硬件要求變得越來越高,特別是計算機網(wǎng)絡技術以及數(shù)據(jù)庫技術的發(fā)展使人們工作生活方式發(fā)生了巨大的改變。舊的管理方法越來越不適應現(xiàn)在社會的發(fā)展需要,為了體現(xiàn)現(xiàn)代化氣息,提高工作效率,我們需要一系列的輔助軟件。</p><p> 我所設計的圖書館管理系統(tǒng)靈感源自校圖書館館管理系統(tǒng),遼寧工業(yè)大學圖書館管理系統(tǒng)
11、包括了學生進入讀卡識別身份,自主查找所需書籍,借書登記,還書登記,借書限定日期等一些功能,實現(xiàn)了圖書館管理的系統(tǒng)化、自動化,功能很強大、設計很復雜,同樣,設計時的步驟、資源、開發(fā)能力等要求都比較高。我根據(jù)這樣的一個,完整,自動化,我設計了一個類似的圖書館管理系統(tǒng)。</p><p> 在各學校的圖書館管理中,要統(tǒng)計閱讀者的個人信息、借還圖書情況、借還時間延誤,會員登記,喜愛讀物,讀物分類等信息,在科技不發(fā)達的以前
12、總是單靠人力來進行登記,這樣既容易出差錯又耗費時間。每到讀者多的時候進行登記,又要對其他還書的人進行登記,讀者查找書籍時還要翻看以前的記錄進行查找,對還書延期的讀者還要進行懲罰措施,以及最后的會員匯總等,這時,由于平時對讀者信息的記錄規(guī)范不統(tǒng)一,導致讀者身份記錄出錯,還書日期記錄出錯等諸多毛病,同時可能也因信息保存不善而造成信息的丟失、被篡改等問題,統(tǒng)計工作變得耗時耗力,在這種狀況下,我們需要一個圖書管理系統(tǒng)來輔助日常的圖書管理問題,并
13、規(guī)范記錄各項信息,由此,我所設計的圖書館管理系統(tǒng)就誕生了。</p><p> 我的圖書館管理系統(tǒng)可以將信息規(guī)范統(tǒng)計在數(shù)據(jù)庫中,通過連接數(shù)據(jù)庫將信息顯示到系統(tǒng)窗體中,并分類,在使用的過程中可以很簡單的在相應類別的信息中找到所尋找的資料,省時、省力。</p><p> 2.2程序整體設計說明</p><p> 2.2.1程序設計內(nèi)容</p><
14、p> 開發(fā)一個信息系統(tǒng)時,首先要對信息系統(tǒng)的需求進行分析,需求分析要做的工作是深入描述軟件的功能和性能,確定軟件設計的限制和軟件同其他系統(tǒng)元素的接口細節(jié),定義軟件的其他有效性需求。</p><p> 獲得當前系統(tǒng)的處理流程,在此首先假設當前系統(tǒng)是手工處理系統(tǒng)。手工處理流程大致是這樣的。讀者將要借的書和借閱證交給工作人員,工作人員將每本書附帶的描述書信息的卡和讀者借閱證一起放在一個小格欄,并在借閱證和每本
15、書上貼的借閱信息。這樣借書過程就完成了。還書時讀者將要還的圖書交給工作人員,工作人員圖書信息找到相應的書卡和借閱證,并填寫相應的還書信息。</p><p> 建立目標系統(tǒng)的邏輯模型。分析目標系統(tǒng)與當前系統(tǒng)邏輯上的差別,明確目標系統(tǒng)到底要“做什么”,從而從當前系統(tǒng)的邏輯模型導出目標系統(tǒng)的邏輯模型。在對上述流程進行分析后,我們對新的圖書處理流程進行整理,圖書館借還書過程 借書過程:讀者從架上選到所需圖書后,將
16、圖書和借書卡交管理人員,管理人員用碼閱讀器將圖書和借書卡上的讀者條碼2碼讀入處理系統(tǒng)。系統(tǒng)根據(jù)讀者條碼從讀者文件和借閱文件中找到相應記錄;根據(jù)圖書上的條碼從圖書文件中找到相應記錄,讀者如果有如下列情況之一將不予辦理借書手續(xù)。</p><p> 1)讀者所借閱圖書已超過該讀者容許的最多借書數(shù)目。</p><p> 2)該讀者記錄中有止借標志。</p><p>
17、3)該讀者還有已超過歸還日期而仍未歸還的圖書。</p><p><b> 4)該圖暫停外借。</b></p><p> 若讀者符合所有借書條件時,予以借出。系統(tǒng)在借閱文件中增加一條記錄,記入讀者碼、圖書條碼、借閱日期等內(nèi)容。</p><p> 歸還圖書過程:還書時讀者只要將書交給管理人員,管理員將書上的圖書條碼讀入系統(tǒng),系統(tǒng)從借閱文件上找
18、到相應記錄,填上還書日期后寫入借閱歷史文件,并從借閱文件上刪去相應記錄,同時系統(tǒng)對借還書日期進行計算并判斷是否超期,若不超期則結束過程,若超期則計算出超期天數(shù)、罰款數(shù)、并打印罰款通知書,記入罰款文件。在讀者記錄上作止借標記。當讀者交來罰款收據(jù)后,系統(tǒng)根據(jù)讀者條碼查罰款文件,將相應記錄寫入罰款歷史文件,并從罰款文件只刪除該記錄,同時去掉讀者文件中的止借標記。</p><p> 我設計的系統(tǒng)是圖書館管理系統(tǒng),圖書館
19、借閱系統(tǒng)的總目標是:在計算機網(wǎng)絡,數(shù)據(jù)庫和先進的開發(fā)平臺上,利用現(xiàn)有的軟件,配置一定的硬件,開發(fā)一個具有開放體系結構的、易擴充的、易維護的、具有良好人機交互界面的圖書借閱系統(tǒng),系統(tǒng)實現(xiàn)后,方便讀者快速的查找,借閱圖書,還可以提前預約圖書。也方便了管理員對圖書的管理。大大提高了圖書館的利用率,降低了在借閱圖書時發(fā)生的錯誤率。</p><p> 圖書館管理系統(tǒng)流程圖如下圖所示,讀者通過登錄模塊驗證,若驗證成功便可以
20、進入系統(tǒng)操作系統(tǒng)內(nèi)部信息:</p><p><b> 圖書管管理功能圖:</b></p><p> 2.2.2程序中所用類說明</p><p> 本系統(tǒng)的主要操作都需要與數(shù)據(jù)庫發(fā)生交互,為了提高代碼的重用性和規(guī)范性,把與數(shù)據(jù)庫交互的功能單獨放在一個類中,在該類中實現(xiàn)數(shù)據(jù)庫的增加、刪除、修改、查詢等通用功能。</p><
21、p> 1)定義數(shù)據(jù)庫連接字符串,代碼如下: </p><p> Private static string ConnectString = "Data Source= (local)\\sqlexpress;DataBase=BookManage.mdf"; </p><p> (2)創(chuàng)建Connection對象,代碼如下: SqlConnection co
22、n = new SqlConnection(ConnectString); </p><p> (3)打開連接,代碼如下: con.Open(); </p><p> (4)關閉連接,代碼如下: con.Close();</p><p> 操作數(shù)據(jù)庫中的數(shù)據(jù):</p><p> using System; using System.C
23、ollections.Generic; </p><p> using System.Linq; </p><p> using System.Text; </p><p> using System.Data;</p><p> using System.Data.SqlClient; </p><p>
24、namespace BookManage { class DataAccess </p><p> { private static string ConnectString = @"Data Source =A20\SQLEXPRESS;</p><p> AttachDbFilename=F:\BookManage\data\BookManage.mdf;I
25、ntegrated Security=False";//數(shù)據(jù)庫連接字符串 </p><p> /// <summary> </p><p> /// 根據(jù)表名獲取數(shù)據(jù)集的表 </p><p> /// </summary> </p><p> /// &
26、lt;param name="table"></param> </p><p> /// <returns></returns> public static DataTable GetDataSetByTableName(string table) </p><p><b> {<
27、/b></p><p> using (SqlConnection con = new SqlConnection(ConnectString))//創(chuàng)建數(shù)據(jù)庫連接對象 </p><p><b> { </b></p><p> string sql = "select * from " +
28、 table + "";//查詢sql語句 try {SqlDataAdapter adapter = new SqlDataAdapter(sql, con);//創(chuàng)建適配器對象 DataSet ds = new DataSet();//創(chuàng)建數(shù)據(jù)集對象 adapter.Fill(ds, "tab
29、le");//填充數(shù)據(jù)集 return ds.Tables[0];//返回數(shù)據(jù)表</p><p><b> } </b></p><p> catch (SqlException ex) </p><p><b> { </b></p>
30、;<p> throw new Exception(ex.Message);</p><p><b> }}} </b></p><p> public static DataSet GetDataSetBySql(string sql) </p><p><b> {</b><
31、;/p><p> using (SqlConnection con = new SqlConnection(ConnectString))//創(chuàng)建數(shù)據(jù)庫連接對象 </p><p><b> { </b></p><p> SqlDataAdapter adapter = new SqlDataAdapter(sql,co
32、n);//創(chuàng)建適配器對象 </p><p> DataSet ds = new DataSet();//創(chuàng)建數(shù)據(jù)集對象 try { adapter.Fill(ds);//填充數(shù)據(jù)集 </p><p> return ds;//返回數(shù)據(jù)集</p><p> }
33、 </p><p> catch (SqlException ex) </p><p><b> {</b></p><p> throw new Exception(ex.Message)</p><p> } } </p><p&
34、gt; public static SqlDataReader GetDataReaderByID(int id) </p><p><b> {</b></p><p> using (SqlConnection con = new SqlConnection(ConnectString))</p><p> {stri
35、ng sql = "select * from bookinfo where bookid=" + id;//sql語句 try </p><p><b> {</b></p><p> SqlCommand comm = new SqlCommand(sql, con);//創(chuàng)建Comm
36、and對象 con.Open();//打開連接 </p><p> SqlDataReader reader = comm.ExecuteReader();//創(chuàng)建DataReader對象 reader.Read();//讀取數(shù)據(jù) </p><p> return rea
37、der;//返回DataReader} </p><p> catch (SqlException ex) </p><p><b> {</b></p><p> throw new Exception(ex.Message); </p><p><b> }
38、} </b></p><p> public static bool UpdateDataTable(string sql) </p><p><b> {</b></p><p> using (SqlConnection con = new SqlConnection(ConnectString))
39、 { try </p><p><b> {</b></p><p> con.Open();//打開連接 </p><p> SqlCommand comm = new SqlCommand(sql, con);//創(chuàng)建Command對象
40、 if (comm.ExecuteNonQuery() > 0) //執(zhí)行更新 </p><p> {return true;} </p><p> else </p><p><b> {</b></p><p>
41、 return false;</p><p> }} </p><p> catch (SqlException ex) </p><p> {throw new Exception(ex.Message);</p><p> }}} </p><
42、p> public static void UpdateDataSet(DataSet ds,string sql) </p><p><b> {</b></p><p> using (SqlConnection con = new SqlConnection(ConnectString)) {</p>
43、<p> try {</p><p> SqlDataAdapter adapter = new SqlDataAdapter(sql, con);//創(chuàng)建適配器 SqlCommandBuilder builder = new SqlCommandBuilder(adapter);//根據(jù)適配器自動生成表單 </p><p>
44、 adapter.Update(ds, "table");//更新數(shù)據(jù)庫} </p><p> catch (SqlException ex) </p><p><b> {</b></p><p> throw new Exception(ex.Message);</p>
45、<p><b> }}}}}</b></p><p> public:可以由任何代碼訪問。</p><p> private:只能由類中的代碼訪問。</p><p> internal:成員只能由定義它的項目訪問。</p><p> protected:成員可以由類或派生類成員中的代碼訪問。</
46、p><p> 其中internal和protected可以同時使用。</p><p> 字段、方法和屬性都可以用關鍵字static定義,這表明它們是類的靜態(tài)成員,而不是對象實例的成員。</p><p> 字段可以使用關鍵字readonly,表示該字段只能在執(zhí)行構造函數(shù)的時候賦值。</p><p> 靜態(tài)字段、方法、屬性只能通過類名訪問,不
47、能通過對象名訪問</p><p> 在方法定義中可以使用以下關鍵字:</p><p> virtual:該方法可以重寫。</p><p> abstract:該方法必須重寫。</p><p> override:方法重寫了一個基類方法。</p><p> extern:方法定義放在其他地方。</p>
48、;<p><b> 2.2.3程序窗體</b></p><p> 本系統(tǒng)通過C#和SQL Server2000的連接使用主要實現(xiàn)的是對圖書的管理及讀者的管理,包括讀者管理、圖書管理、流通管理等模塊的設置。其中讀者管理又包含讀者類別設置和讀者檔案管理兩個子模塊。兩個子模塊都能實現(xiàn)對系統(tǒng)記錄的增加、刪除和修改等功能。圖書管理包括圖書類別設置、圖書檔案管理兩個子模塊。流通管理包括
49、圖書的征訂、圖書借閱、圖書歸還、逾期清單和圖書歸還等子模塊。每個模塊都能實現(xiàn)增加、刪除和修改的功能。1.界面設計</p><p> 讀者管理模塊設計主要包括讀者類別設置、讀者檔案管理兩個子模塊。</p><p> 讀者類別設置窗體主要實現(xiàn)的功能有首記錄、上一記錄、下一記錄、尾記錄、新增、修改、刪除、提交、取消和退出。當選中任意一條記錄時,窗體下面顯示選中的信息。</p>
50、<p> 添加一個搜索的Button按鈕,在讀者類型的Text控件中輸入任意符合條件的文字,下面則顯示出相應的信息。</p><p> 登陸界面如下圖所示:</p><p> 圖2-2讀者類別設置</p><p><b> 2.代碼設計</b></p><p> 因為讀者的身份不同,所以將讀者的身份分
51、為本科生、教師、研究生和讀者。本系統(tǒng)還可以實現(xiàn)增加、刪除和修改等功能。主要代碼如下:</p><p> Private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)</p><p><b> {</b></p>
52、<p> if (e.Button.ToolTipText == "首記錄")</p><p><b> {</b></p><p> this.dataGrid1.UnSelect(cmOrders.Position); //取消原選中的行</p><p> cmOrders.Position = 0;&
53、lt;/p><p> this.dataGrid1.Select(cmOrders.Position); //選中當前行</p><p> this.dataGrid1.CurrentRowIndex = cmOrders.Position; //移動表頭指示圖標</p><p><b> return;</b></p><
54、;p><b> }</b></p><p> if (e.Button.ToolTipText == "上一記錄")</p><p><b> {</b></p><p> if (cmOrders.Position >= 0)</p><p><b&g
55、t; {</b></p><p> this.dataGrid1.UnSelect(cmOrders.Position); </p><p> cmOrders.Position--;</p><p> this.dataGrid1.Select(cmOrders.Position); </p><p> th
56、is.dataGrid1.CurrentRowIndex = cmOrders.Position; </p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> if (e.Button
57、.ToolTipText == "下一記錄")</p><p><b> {</b></p><p> if (cmOrders.Position <= cmOrders.Count-1)</p><p><b> {</b></p><p> this.dataG
58、rid1.UnSelect(cmOrders.Position); </p><p> cmOrders.Position++;</p><p> this.dataGrid1.Select(cmOrders.Position); </p><p> this.dataGrid1.CurrentRowIndex = cmOrders.Positio
59、n; </p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> if (e.Button.ToolTipText == "尾記錄")</p><
60、;p><b> {</b></p><p> this.dataGrid1.UnSelect(cmOrders.Position); </p><p> cmOrders.Position = cmOrders.Count-1;</p><p> this.dataGrid1.Select(cmOrders.Position);
61、 </p><p> this.dataGrid1.CurrentRowIndex = cmOrders.Position; </p><p><b> return;</b></p><p><b> }</b></p><p> if(e.Button.ToolTipText=
62、="新增")</p><p><b> {</b></p><p> cmOrders.AddNew();//設置默認值</p><p> SetDefaultValue();</p><p> SetModifyMode(true);</p><p> cmb1.T
63、ext="";</p><p><b> }</b></p><p> if(e.Button.ToolTipText=="修改")</p><p><b> {</b></p><p> SetModifyMode(true);</p>
64、<p><b> }</b></p><p> if(e.Button.ToolTipText=="刪除")</p><p><b> {</b></p><p> DialogResult result=MessageBox.Show("確認刪除?","
65、;刪除數(shù)據(jù)",MessageBoxButtons.OKCancel);</p><p> if(result==DialogResult.OK)</p><p> if(cmOrders.Count>0)//立即從數(shù)據(jù)集中刪除</p><p><b> {</b></p><p> cmOrder
66、s.RemoveAt(cmOrders.Position);</p><p> da1.Update(dataSet11);</p><p><b> }</b></p><p><b> else</b></p><p> MessageBox.Show("表中為空,已無可刪除數(shù)
67、據(jù)","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);</p><p><b> }</b></p><p> if(e.Button.ToolTipText=="提交")</p><p><b> {</b></
68、p><p> if(txt4.Text.Trim()=="")//檢查字段</p><p><b> {</b></p><p> MessageBox.Show("請輸入圖書編號","提示",MessageBoxButtons.OK,MessageBoxIcon.Warning);
69、</p><p><b> return;</b></p><p><b> }</b></p><p> cmOrders.EndCurrentEdit();</p><p> if(dataSet11.GetChanges()!=null)</p><p><
70、;b> {</b></p><p><b> try</b></p><p><b> {</b></p><p> da1.Update(dataSet11);</p><p> SetModifyMode(false);</p><p><
71、;b> }</b></p><p> catch(Exception express)</p><p><b> {</b></p><p> MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Er
72、ror);</p><p> dataSet11.RejectChanges();</p><p><b> }</b></p><p><b> }</b></p><p><b> return;</b></p><p><b>
73、 }</b></p><p> if (e.Button.ToolTipText == "取消")</p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p>
74、<p> cmOrders.CancelCurrentEdit(); //取消編輯</p><p> SetModifyMode(false);</p><p><b> }</b></p><p> catch(Exception express</p><p><b> {</
75、b></p><p> MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);</p><p><b> }</b></p><p><b> return;</b></p&
76、gt;<p><b> }</b></p><p> if(e.Button.ToolTipText=="退出")</p><p><b> {</b></p><p> this.Close();</p><p><b> }</b>
77、;</p><p> 2.2.2 圖書檔案管理模塊設計</p><p> 圖書檔案管理主要實現(xiàn)的功能有首記錄的查詢、上一條記錄的查詢、下一記錄的查詢、未記錄的查詢、新增記錄的實現(xiàn)、修改和刪除、提交、取消和退出等功能。</p><p> 首先加入是個Button按鈕。并設置text分別為首記錄、上衣記錄、下一記錄、尾記錄、新增、修改、刪除、提交、取消和退出。再加
78、入一個搜索按鈕,加入Label控件、Text控件和List控件。</p><p> 運行時的窗體如下圖:</p><p> 圖2-3讀者檔案管理</p><p> 實現(xiàn)的主要代碼如下所示:</p><p> private void ReaderClassfy_Load(object sender, System.EventArgs
79、e)</p><p><b> {</b></p><p> da1.SelectCommand.Parameters[0].Value="%%";</p><p> da1.Fill(dataSet11);//為數(shù)據(jù)集添加數(shù)據(jù)項瀏覽控制</p><p> cmOrders=(Currency
80、Manager) BindingContext[dataSet11,"讀者類型"];</p><p><b> }</b></p><p> //--------------根據(jù)輸入查詢數(shù)據(jù)--------------</p><p> private void btnSearch_Click(object sende
81、r, System.EventArgs e)</p><p><b> {</b></p><p> da1.SelectCommand.Parameters[0].Value="%%";</p><p> if(txt1.Text.Trim()!="")</p><p>&
82、lt;b> {</b></p><p> da1.SelectCommand.Parameters[0].Value="%"+txt1.Text.Trim()+"%";</p><p> }//清空數(shù)據(jù)表,并根據(jù)新設置的查詢參數(shù)重新填充</p><p> dataSet11.讀者類型.Clear();
83、</p><p> da1.Fill(dataSet11);</p><p><b> }</b></p><p> private void toolBar1_ButtonClick(object sender, System.Windows.Forms.ToolBarButtonClickEventArgs e)</p>
84、<p><b> {</b></p><p> if (e.Button.ToolTipText == "首記錄")</p><p><b> {</b></p><p> this.dataGrid1.UnSelect(cmOrders.Position); //取消原選中的行&l
85、t;/p><p> cmOrders.Position = 0;</p><p> this.dataGrid1.Select(cmOrders.Position); //選中當前行</p><p> this.dataGrid1.CurrentRowIndex = cmOrders.Position; //移動表頭指示圖標</p><p>
86、;<b> return;</b></p><p><b> }</b></p><p> if (e.Button.ToolTipText == "上一記錄")</p><p><b> {</b></p><p> if (cmOrders.P
87、osition >= 0)</p><p><b> {</b></p><p> this.dataGrid1.UnSelect(cmOrders.Position); </p><p> cmOrders.Position--;</p><p> this.dataGrid1.Select(cmOrde
88、rs.Position); </p><p> this.dataGrid1.CurrentRowIndex = cmOrders.Position; </p><p><b> }</b></p><p><b> return;</b></p><p><b> }&
89、lt;/b></p><p> if (e.Button.ToolTipText == "下一記錄")</p><p><b> {</b></p><p> if (cmOrders.Position <= cmOrders.Count-1)</p><p><b>
90、{</b></p><p> this.dataGrid1.UnSelect(cmOrders.Position); </p><p> cmOrders.Position++;</p><p> this.dataGrid1.Select(cmOrders.Position); </p><p> this.
91、dataGrid1.CurrentRowIndex = cmOrders.Position; </p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> if (e.Button.To
92、olTipText == "尾記錄")</p><p><b> {</b></p><p> this.dataGrid1.UnSelect(cmOrders.Position); </p><p> cmOrders.Position = cmOrders.Count-1;</p><p>
93、 this.dataGrid1.Select(cmOrders.Position); </p><p> this.dataGrid1.CurrentRowIndex = cmOrders.Position; </p><p><b> return;</b></p><p><b> }</b><
94、;/p><p> if(e.Button.ToolTipText=="新增")</p><p><b> {</b></p><p> cmOrders.AddNew();//設置默認值</p><p> txt3.Text="1";</p><p>
95、 txt4.Text="1";</p><p> txt5.Text="1";</p><p> SetModifyMode(true);</p><p><b> }</b></p><p> if(e.Button.ToolTipText=="修改"
96、)</p><p><b> {</b></p><p> SetModifyMode(true);</p><p><b> }</b></p><p> if(e.Button.ToolTipText=="刪除")</p><p><b&
97、gt; {</b></p><p> DialogResult result=MessageBox.Show("確認刪除?","刪除數(shù)據(jù)",MessageBoxButtons.OKCancel);</p><p> if(result==DialogResult.OK)</p><p> if(cmOrde
98、rs.Count>0)//立即從數(shù)據(jù)集中刪除</p><p><b> {</b></p><p> cmOrders.RemoveAt(cmOrders.Position);</p><p> da1.Update(dataSet11);</p><p><b> }</b><
99、/p><p><b> else</b></p><p> MessageBox.Show("表中為空,已無可刪除數(shù)據(jù)","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);</p><p><b> }</b></p>&
100、lt;p> if(e.Button.ToolTipText=="提交")</p><p><b> {</b></p><p> if(txt2.Text.Trim()=="")//檢查非空字段</p><p><b> {</b></p><p&g
101、t; MessageBox.Show("類型名稱不能為空","提示",MessageBoxButtons.OK,MessageBoxIcon.Error);</p><p><b> return;</b></p><p><b> }</b></p><p> cmOrde
102、rs.EndCurrentEdit();</p><p> if(dataSet11.GetChanges()!=null)</p><p><b> {</b></p><p><b> try</b></p><p><b> {</b></p>&l
103、t;p> da1.Update(dataSet11);</p><p> SetModifyMode(false);</p><p><b> }</b></p><p> catch(Exception express)</p><p><b> {</b></p>
104、<p> MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error);</p><p> dataSet11.RejectChanges();</p><p><b> }</b></p><p><
105、;b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> if (e.Button.ToolTipText == "取消")</p><p><b> {</b>
106、</p><p><b> Try</b></p><p><b> {</b></p><p> cmOrders.CancelCurrentEdit(); //取消編輯</p><p> SetModifyMode(false);</p><p><b&g
107、t; }</b></p><p> catch(Exception express)</p><p><b> {</b></p><p> MessageBox.Show(express.ToString(),"提示",MessageBoxButtons.OK,MessageBoxIcon.Error)
108、;</p><p><b> }</b></p><p><b> return;</b></p><p><b> }</b></p><p> if(e.Button.ToolTipText=="退出")</p><p>
109、<b> {</b></p><p> this.Close();</p><p><b> }</b></p><p> 2.2.4程序運行效果及存在的問題</p><p> 1.(1)通過運行結果的分析,得到對軟件質(zhì)量的評價;</p><p> (2)分析系統(tǒng)
110、存在的缺陷,為今后修復做好準備。</p><p> 2.運行對象:圖書館管理系統(tǒng)。</p><p> 3.運行步驟:對登陸模塊測試;對圖書館信息模塊測試;對讀者上網(wǎng)模塊測試;測試結束;測試成功。</p><p><b> 4.發(fā)現(xiàn)問題:</b></p><p> ?。?)登錄模塊缺少密碼輸入三次退出程序的設計;&l
111、t;/p><p> (2)在開始設計登錄模塊的時候已經(jīng)準備好設計密碼輸入錯誤3次退出程序的部分了,但考慮到使用者可以重復打開登陸界面,那么所設計的3次退出程序就沒有意義了。我在研究如何綁定使用者的IP來控制錯誤輸入密碼的次數(shù);</p><p> ?。?)圖書館管理系統(tǒng)在運行時反映有些慢,這個問題我會研究下去的,目前還沒有解決辦法;</p><p> ?。?)用戶在安裝
112、的時候電腦里沒有本程序所需的Microsoft office辦公工具或版本不同導致安裝不成功??梢試L試在圖書館管理程序安裝之前將本程序所需的Microsoft office辦公工具安裝上。</p><p> ?。?)有些控件代碼并未找全,我會在未來的日子里完善。</p><p> 2.3程序部分源代碼及注釋</p><p> 實現(xiàn)用戶讀者添加功能:</p&
113、gt;<p> public partial class RegisterForm : Form</p><p><b> {</b></p><p> public RegisterForm()</p><p><b> {</b></p><p> InitializeC
114、omponent();</p><p><b> }</b></p><p> private void regbtn_Click(object sender, EventArgs e)</p><p><b> {</b></p><p> if (this.usernametxt.Tex
115、t == string.Empty)</p><p><b> {</b></p><p> MessageBox.Show("請輸入用戶姓名!", "提示!");</p><p><b> return;</b></p><p><b>
116、}</b></p><p> if(this.sextxt.Text== string.Empty)</p><p><b> {</b></p><p> MessageBox.Show("請輸入用戶性別!", "提示!");</p><p><b>
117、 return;</b></p><p><b> }</b></p><p> if (this.partcob.Text == string.Empty)</p><p><b> {</b></p><p> MessageBox.Show("請輸入用戶所在部門
118、!", "提示!");</p><p><b> return;</b></p><p><b> }</b></p><p> if (this.telphonetxt.Text == string.Empty)</p><p><b> {<
119、/b></p><p> MessageBox.Show("請輸入用戶移動電話!", "提示!");</p><p><b> return;</b></p><p><b> }</b></p><p> if (this.phonetxt.T
120、ext == string.Empty)</p><p><b> {</b></p><p> MessageBox.Show("請輸入用戶固定電話!", "提示!");</p><p><b> return;</b></p><p><b&g
121、t; }</b></p><p> string pat1 = @"^[0-9]{8,11}$";</p><p> bool m1 = Program.match(this.telphonetxt.Text, pat1);</p><p> bool m2 = Program.match(this.phonetxt.Text
122、, pat1);</p><p><b> if (!m1)</b></p><p><b> {</b></p><p> MessageBox.Show("電話號碼為8到11位的正整數(shù)!","提示!");</p><p><b> ret
123、urn;</b></p><p><b> }</b></p><p><b> if (!m2)</b></p><p><b> {</b></p><p> MessageBox.Show("電話號碼為8到11位的正整數(shù)!", &q
124、uot;提示!");</p><p><b> return;</b></p><p><b> }</b></p><p> string sq = string.Empty;</p><p> sq += "select * from tb_user";&l
125、t;/p><p> sq += " where uname='"+this.usernametxt.Text+"' and upart='"+this.partcob.Text+"' and utelphone='"+this.telphonetxt.Text+"'";</p>
126、<p> DataTable d = DBHelp.ExeOleCommand(sq);</p><p> bool b = false;</p><p> while (d.Rows.Count == 0)</p><p><b> {</b></p><p><b> b = tru
127、e;</b></p><p><b> break;</b></p><p><b> }</b></p><p><b> if (b)</b></p><p><b> {</b></p><p> str
128、ing sql = string.Empty;</p><p> sql += "insert into tb_user(uacc,upsw,uname,usex,upart,utelphone,uphone,udate,uright)";</p><p> sql += " values('" + this.useracctxt.Tex
129、t + "','" + this.pswtxt.Text + "','" + this.usernametxt.Text + "','" + this.sextxt.Text + "','" + this.partcob.Text + "','" + this
130、.telphonetxt.Text + "','" + this.phonetxt.Text + "','" + DateTime.Now.ToString() + "','" + this.rightbox.Text + "')";</p><p> DataTable dt
131、 = DBHelp.ExeOleCommand(sql);</p><p> MessageBox.Show("新用戶添加成功!", "恭喜!");</p><p> this.Hide();</p><p><b> }</b></p><p><b> els
132、e</b></p><p><b> {</b></p><p> MessageBox.Show("該用戶已存在!","提示!");</p><p> this.usernametxt.Text = "";</p><p> this.te
133、lphonetxt.Text = "";</p><p> this.phonetxt.Text = "";</p><p><b> }</b></p><p><b> }</b></p><p> private void cancelbtn_C
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- c語言圖書館管理系統(tǒng)課程設計---高校圖書館管理系統(tǒng)
- c課程設計報告--圖書館管理系統(tǒng)
- c語言圖書館管理系統(tǒng)課程設計
- 圖書館管理系統(tǒng)c語言課程設計
- c語言課程設計-圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計c#
- c語言課程設計--圖書館系統(tǒng)
- c語言課程設計報告---圖書館管理系統(tǒng)
- c語言課程設計-- 圖書館借閱管理系統(tǒng)
- c++圖書館管理系統(tǒng)課程設計報告
- 圖書館管理系統(tǒng)課程設計
- 課程設計--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計
- 圖書館管理系統(tǒng)課程設計報告
- 圖書館管理信息------系統(tǒng)課程設計
- jsp課程設計《圖書館管理系統(tǒng)》
- sqlserver課程設計——圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計報告
- 軟件課程設計--圖書館管理系統(tǒng)
- 圖書館管理系統(tǒng)課程設計報告
評論
0/150
提交評論