版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、一、系統(tǒng)分析21.開發(fā)背景22.需求分析2二、系統(tǒng)設(shè)計21.系統(tǒng)總體結(jié)構(gòu)22.數(shù)據(jù)庫設(shè)計33.編碼設(shè)計4三、系統(tǒng)實施41.登錄42.系統(tǒng)主界面53.書庫管理71)新書登記:72)借書/還書:131)繳費202)書籍掛失:233)圖書信息查詢:284)借書信息查詢:304.借閱證管理:311)辦理借閱證:312)借閱證信息查詢:343)借閱證掛失:355.系統(tǒng)/其它:381)添加賬號:382)修改密碼:403)退出:41四、總結(jié)(體會、經(jīng)驗與教訓)42一、 系統(tǒng)分析1. 開發(fā)背景隨著人們知識層次的提高,圖書館成為日常生活中不可缺少的一部分。而圖書館的存數(shù)量和業(yè)務(wù)量龐大,僅僅靠傳統(tǒng)的記賬式管理是不
2、可行的。圖書館管理系統(tǒng)應運而生,逐漸成為信息化建設(shè)的重要組成部分。圖書館管理系統(tǒng)為學?;蛏鐣蛨D書館的管理員提供所有借閱者的詳細信息,以及館內(nèi)庫存的詳細情況,對借書和還書兩大功能進行合理操縱并登記。2. 需求分析經(jīng)過仔細分析系統(tǒng)需求之后,本圖書管理系統(tǒng)主要完成的主要功能如下:l 進入系統(tǒng)前需要身份驗證、用戶名、密碼,輸入正確后方可進入。l 用戶可以根據(jù)需要進行書庫管理。l 用戶可以進行借書證的辦理、查詢、掛失等操作。l 用戶可以添加賬戶和修改密碼。l 身份驗證:提供系統(tǒng)的訪問控制功能。l 書庫管理:包括新書登記、借書、還書、書籍掛失、圖書信息查詢、借書信息查詢等功能。l 借閱證管理:提供辦理借
3、閱證、借閱證信息查詢、借閱證掛失功能。l 系統(tǒng)管理功能:包括添加賬號、修改密碼和退出系統(tǒng)等功能。二、 系統(tǒng)設(shè)計1. 系統(tǒng)總體結(jié)構(gòu)通過對圖書管理系統(tǒng)的功能分析,可以定義出系統(tǒng)的功能模塊圖如下:2. 數(shù)據(jù)庫設(shè)計l 管理員基本信息表字段名稱數(shù)據(jù)類型可否為空約束條件說明WorkIDintNOT NULL主鍵成員IDUser_NameVARCHAR(24)NOT NULL無姓名PasswordVARCHAR(24)NOT NULL無密碼l 圖書信息表字段名稱數(shù)據(jù)類型可否為空約束條件說明Book_IDVARCHAR(50)NOT NULL主鍵書籍IDBook_NameVARCHAR(50)NOT NULL
4、無書名WriterVARCHAR(50)NOT NULL無作者PressVARCHAR(50)NOT NULL無出版社PricefloatNOT NULL無單價InLibrary_DatedatetimeNOT NULL無入庫時間Total_AmountintNOT NULL無總量Now_AmountintNOT NULL無現(xiàn)存量l 借閱卡信息表字段名稱數(shù)據(jù)類型可否為空約束條件說明Proof_IDVARCHAR(50)NOT NULL主鍵借閱卡IDNameVARCHAR(50)NOT NULL無姓名SexVARCHAR(50)NOT NULL無性別Birth_TimedatetimeNOT N
5、ULL無出生日期AddressVARCHAR(50)NOT NULL無地址ID_NumberVARCHAR(50)NOT NULL無身份證號Tel_NumberVARCHAR(50)NOT NULL無電話號碼Now_Borrow_AmountintNOT NULL無現(xiàn)借書量l 借書信息表字段名稱數(shù)據(jù)類型可否為空約束條件說明BorrowIDintNOT NULL主鍵借書IDProof_IDVARCHAR(50)NOT NULL外鍵(Proof_Info)借書卡IDBook_IDVARCHAR(50)NOT NULL外鍵(Book_Info)書籍IDBorrow_DatedatetimeNOT N
6、ULL無借出時間l 罰單信息表字段名稱數(shù)據(jù)類型可否為空約束條件說明Puni_IDintNOT NULL主鍵罰單IDProof_IDVARCHAR(50)NOT NULL無借書卡IDBook_IDVARCHAR(50)NOT NULL無書籍IDBorrow_DatedatetimeNOT NULL無借出時間Return_DatedatetimeNOT NULL無還書時間Puni_MoneyfloatNOT NULL無罰金3. 編碼設(shè)計l WorkID,BorrowID,Puni_ID都設(shè)置了標識規(guī)范,增加記錄時自動加1,保持其唯一性。l Borrow_Date,Return_Date,InLib
7、rary_Date都設(shè)置成datetime類型,插入記錄時自動獲取當前日期,不需要管理員輸入日期。l Proof_ID,Book_ID,ID_Number,Tel_Number,Proof_ID由于它們只是代表一個標識,不是一個表示大小的數(shù)字,所以用VARCHAR類型,用int或long可能會有溢出現(xiàn)象。三、 系統(tǒng)實施1. 登錄l 功能說明:驗證管理員的用戶名和密碼是否正確,正確則進入主界面。l 源代碼:頭文件:using System.Data.SqlClient;連接數(shù)據(jù)庫:SqlConnection con = newSqlConnection(server=20100310-1827S
8、QLEXPRESS;database=Library;Integrated Security=True);程序主體:privatevoid button_exit_Click(object sender, EventArgs e)/退出Application.Exit();privatevoid button_log_Click(object sender, EventArgs e)/登錄 if (this.UserName.Text.Trim() = | this.PassWord.Text.Trim() = )MessageBox.Show(用戶名和密碼都不能為空!);if (con.St
9、ate = ConnectionState.Closed) con.Open();String str = select count(*) from Admin_Info where User_Name= + this.UserName.Text.Trim() + and Password= + this.PassWord.Text + ;SqlCommand com = newSqlCommand(str, con);int i = Convert.ToInt32(com.ExecuteScalar();if (i 0) Form2 form2 = newForm2();/系統(tǒng)主界面 for
10、m2.Show();this.Visible = false; else MessageBox.Show(用戶名或密碼輸入有誤,請重新輸入!);this.UserName.Text = ;this.PassWord.Text = ; l 界面演示:登錄名和密碼正確的話進入系統(tǒng)主界面(圖一);登錄名或者密碼不正確的話會彈出提示對話框,并將用戶名、密碼欄置空(圖二);如果用戶名或者密碼有空,彈出對話框并將用戶名、密碼欄置空(圖三)。 圖1 圖2 圖3 圖42. 系統(tǒng)主界面l 功能說明:選擇各個功能模塊l 源代碼:privatevoid Form2_FormClosing(object sender
11、, FormClosingEventArgs e) Application.Exit(); privatevoid button_exit_Click(object sender, EventArgs e) Application.Exit(); privatevoid button_new_book_Click(object sender, EventArgs e) Form3 form3 = newForm3();/新書登記 form3.Show(); /初始化對應界面,和上面類似,不再贅述l 界面演示:如圖43. 書庫管理1) 新書登記:l 功能說明:入庫的實現(xiàn)過程是首先要輸入書籍的各種
12、信息,包括書的書號、書名、作者、出版社、價錢、總量、現(xiàn)存量等,這里書的數(shù)量由兩個變量來記錄,總量代表圖書館中這種這種書的總量,現(xiàn)存量是目前正在管中的量,兩者之差就是被讀者借出去的數(shù)量。其中每個信息不能有遺漏或者格式不正確,因為這是每一本書的基本信息,在函數(shù)的實現(xiàn)過程中有檢驗的功能。然后判斷圖書館中是否存在這種圖書,如果存在,那么時間簡單的把庫存的數(shù)量加上新加入的數(shù)量,如果不存在,那么就要新建記錄。l 源代碼:連接數(shù)據(jù)庫:SqlDataAdapter da = newSqlDataAdapter();DataSet ds = newDataSet();程序主體:/主界面調(diào)用的每個模塊的返回按鈕都
13、是隱藏本體,以后不再寫出返回按鈕的操作帶代碼privatevoid button_back_Click(object sender, EventArgs e)/返回 this.Visible = false; privatevoid button_in_Click(object sender, EventArgs e)/入庫 int res;/檢驗輸入數(shù)據(jù)是否合法if (this.textBox_book_no.Text.Trim() = |this.textBox_name .Text .Trim ()= |boBox_press .Text .Trim ()=|this.textBox_p
14、rice .Text .Trim ()= |this.textBox_total .Text .Trim ()=|this.textBox_writer .Text .Trim ()=) MessageBox.Show (請正確填寫要求的數(shù)據(jù)!, 新書入庫登記);this.textBox_book_no.Text = ;this.textBox_name.Text = ;boBox_press .Text = ;this.textBox_price.Text = ;this.textBox_total.Text = ;this.textBox_writer.Text = ; /判斷書庫中是否有
15、該書,有,僅把數(shù)量加進去,沒有,加進一條新的記錄else if (con.State = ConnectionState.Closed) con.Open();String str1 = select Total_Amount from Book_Info where Book_ID= + this.textBox_book_no.Text.Trim() + ;SqlCommand com1 = newSqlCommand(str1, con);int total_num = Convert.ToInt32(com1.ExecuteScalar();String str2 = select N
16、ow_Amount from Book_Info where Book_ID= + this.textBox_book_no.Text.Trim() + ;SqlCommand com2 = newSqlCommand(str2, con);int now_num = Convert.ToInt32(com2.ExecuteScalar();int num1 = Convert.ToInt32(this.textBox_total.Text); total_num += num1; now_num += num1;String str = select count(*) from Book_I
17、nfo where Book_ID= + this.textBox_book_no.Text.Trim() + ;SqlCommand com = newSqlCommand(str, con);int i = Convert.ToInt32(com.ExecuteScalar();if (i 0) String str3 = update dbo.Book_Info set Total_Amount= + total_num.ToString ().Trim () + ,Now_Amount= + now_num.ToString() .Trim () + where Book_ID= +
18、this.textBox_book_no.Text.Trim() + ; da.UpdateCommand = newSqlCommand(str3, con); res=da.UpdateCommand.ExecuteNonQuery();if(res0)MessageBox.Show(新書入庫成功!,新書登記);elseMessageBox.Show(新書入庫失??!, 新書登記); else String bookid = this.textBox_book_no.Text .ToString().Trim();String name = this.textBox_name.Text .T
19、oString().Trim();String writer = this.textBox_writer.Text .ToString().Trim();String press = boBox_press .Text .ToString().Trim(); float price =(float) Convert.ToDouble (this.textBox_price.Text .ToString().Trim();String dt = DateTime.Now.ToString();int totalaccount = Convert.ToInt32(total_num.ToStrin
20、g().Trim();int nowacount =Convert .ToInt32 (now_num.ToString().Trim();String str3 = insert into dbo.Book_Info (Book_ID,Book_Name,Writer,Press,Price,+InLibrary_Date,Total_Amount,Now_Amount) +values (+bookid+,+name+, +writer+,+press+,+price+, + dt + ,+totalaccount+,+nowacount+); da.InsertCommand = new
21、SqlCommand(str3, con); res=da.InsertCommand.ExecuteNonQuery();if (res 0)MessageBox.Show(新書入庫成功!, 新書登記);elseMessageBox.Show(新書入庫失??!, 新書登記); con.Close(); /主界面調(diào)用的每個模塊的關(guān)閉按鈕都是隱藏本體,以后不再寫出關(guān)閉按鈕的操作帶代碼privatevoid Form3_FormClosing(object sender, FormClosingEventArgs e) this.Visible = false; privatevoid button
22、_check_Click(object sender, EventArgs e)/查詢 if (con.State = ConnectionState.Closed) con.Open();int i;String str1; ds.Tables.Clear();if (this.textBox_book_no.Text.Trim() = & this.textBox_name.Text.Trim() = & boBox_press .Text.Trim() = & this.textBox_price.Text.Trim() = & this.textBox_total.Text.Trim(
23、) = & this.textBox_writer.Text.Trim() = ) MessageBox.Show(請?zhí)顚懭我豁椷M行查詢!, 新書入庫登記); else if (this.textBox_book_no.Text != )/按書號查找 String str = select count(*) from dbo.Book_Info where Book_ID= + this.textBox_book_no.Text.ToString().Trim() + ; da.SelectCommand = newSqlCommand(str, con); i = Convert.ToInt
24、32(da.SelectCommand.ExecuteScalar();if (i 0) str1 = select * from dbo.Book_Info where Book_ID= +this.textBox_book_no.Text.ToString().Trim() + ; da.SelectCommand = newSqlCommand(str1, con); da.Fill(ds, selectifo2); dataGridView_result.DataSource = ds.Tablesselectifo2; dataGridView_result.Refresh(); e
25、lse MessageBox.Show(不存在此記錄!); elseif (this.textBox_name.Text != )/按書名查找 /和上面類似 elseif (this.textBox_writer.Text != )/按作者查找 /和上面類似 elseif (this.textBox_price.Text != )/按單價查找 /和上面類似 elseif (boBox_press.Text != )/按出版社查找 /和上面類似 elseif (this.textBox_total.Text != )/按總量查找 /和上面類似 con.Close(); /更新的代碼操作就是將控件
26、內(nèi)容置空,每個模塊都是,所以以后的更新操作不再給出具體代碼privatevoid button_update_Click(object sender, EventArgs e)/更新 this.textBox_book_no.Text = ;this.textBox_name.Text = ;boBox_press .Text = ;this.textBox_price.Text = ;this.textBox_total.Text = ;this.textBox_writer.Text = ; privatevoid dataGridView_result_CellClick(object
27、sender, DataGridViewCellEventArgs e) int i = dataGridView_result.CurrentRow.Index;/dataGridView當前選中行this.textBox_book_no.Text = ds.Tablesselectifo2.Rowsi0.ToString();this.textBox_name.Text = ds.Tablesselectifo2.Rowsi1.ToString();this.textBox_writer.Text = ds.Tablesselectifo2.Rowsi2.ToString();this.t
28、extBox_price.Text = ds.Tablesselectifo2.Rowsi4.ToString();boBox_press.Text = ds.Tablesselectifo2.Rowsi3.ToString(); l 運行結(jié)果:u 運行前數(shù)據(jù)庫中Book_Info表中的數(shù)據(jù):圖5 u 如果信息有沒填的,點擊“入庫”會彈出如下對話框,圖6:圖6 圖7 圖8 圖9u 填入書號后點擊“查詢”在DataGridView控件里會顯示按書號查詢的結(jié)果,圖7:u 在DataGridView控件里點擊一條記錄會在上面的textBox和ComboBox控件里顯示該書的信息,圖8:u 輸入總量:
29、8,點擊“入庫”會在數(shù)據(jù)庫中看到書號是787121030462的書籍的總量由20變到28本,現(xiàn)存量由20(圖5)變到28本(圖10)。并彈出圖9對話框: 圖10 圖11u 如果入庫的書籍在數(shù)據(jù)庫中沒有的話,在Book_Info表中則增加一條新的記錄: 圖12 圖13 圖14u “刷新”按鈕就是將textBox和ComboBox控件里的信息清空: u “查詢”可以在textBox和ComboBox控件里填寫任一項來查詢,如果同時填有多項,則按前面的一項查詢。u “返回”則返回到主界面窗口。2) 借書/還書:l 功能說明:借書/還書管理是圖書管理系統(tǒng)中的最重要的模塊,包括了查詢書籍、顯示借閱信息、
30、借書、還書等功能。l 源代碼:privatevoid button_check_books_Click(object sender, EventArgs e) Form5 form5 = newForm5();/查詢書籍 form5.Show(); privatevoid button_borrow_Click(object sender, EventArgs e) if (this.textBox_book_no.Text.Trim() = | this.textBox_proof_no.Text.Trim() = ) MessageBox.Show(請正確填寫要求的數(shù)據(jù)!, 借書/還書管理
31、);this.textBox_book_no.Text = ;this.textBox_proof_no.Text = ; else /判斷借書人是否有資格if (con.State = ConnectionState.Closed) con.Open();String str = select count(*) from dbo.Proof_Info where Proof_ID= + this.textBox_proof_no.Text.Trim() + ;SqlCommand com = newSqlCommand(str, con);int i = Convert.ToInt32(co
32、m.ExecuteScalar();if (i 0) ds.Tables.Clear();/檢查該讀者已借書中是否有超期的String str1 = select * from dbo.Borrow_Info where Proof_ID=+this.textBox_proof_no .Text .Trim ()+; da.SelectCommand = newSqlCommand(str1, con); da.Fill(ds,borrow);bool BORROW = true;float punish = (float)0.0;String str9 = select * from dbo
33、.Punish_Info where Proof_ID= + this.textBox_proof_no.Text.Trim() + ; da.SelectCommand = newSqlCommand(str9, con); da.Fill(ds, borrow1);for (int p = 0; p ds.Tablesborrow1.Rows.Count; p+) BORROW = false;float punishment = (float)Convert.ToDouble(ds.Tablesborrow1.Rowsp5); punish += punishment; for (int
34、 j = 0; j 30) BORROW =false; punish+=(float)0.1*(day-30); if (!BORROW) MessageBox.Show(您已欠費+punish+元,請先繳費!, 借書/還書); else /檢查該讀者所借圖書數(shù)量,是否達到個人限度String str2 = select Now_Borrow_Amount from dbo.Proof_Info where Proof_ID= + this.textBox_proof_no.Text.Trim() + ;SqlCommand com1 = newSqlCommand(str2, con);i
35、nt total_num = Convert.ToInt32(com1.ExecuteScalar();String str3 = select Now_Amount from Book_Info where Book_ID= + this.textBox_book_no.Text.Trim() + ;SqlCommand com2 = newSqlCommand(str3, con);int now_num = Convert.ToInt32(com2.ExecuteScalar();if (total_num = 8)/不滿足借書條件 MessageBox.Show(該讀者的借書數(shù)量已達到
36、8本!, 借書/還書); else/滿足借書條件 ds.Tables.Clear();/判斷書號是否正確String str4 = select count(*) from dbo.Book_Info where Book_ID= +this.textBox_book_no.Text.Trim() + ;SqlCommand com3 = newSqlCommand(str4, con);int j = Convert.ToInt32(com3.ExecuteScalar();if (j 0)/輸入書號正確 total_num+;/Proof_Info表中借書數(shù)量加1String str5 =
37、 update dbo.Proof_Info set Now_Borrow_Amount= + total_num.ToString().Trim() +where Proof_ID= + this.textBox_proof_no.Text.Trim() + ; da.UpdateCommand = newSqlCommand(str5, con); da.UpdateCommand.ExecuteNonQuery();/BookInfo表中NowAmount減1 now_num-;String str6 = update dbo.Book_Info set Now_Amount= + no
38、w_num.ToString().Trim() +where Book_ID= + this.textBox_book_no.Text.Trim() + ; da.UpdateCommand = newSqlCommand(str6, con); da.UpdateCommand.ExecuteNonQuery();/將借書信息保存到借書信息表中String bookid = this.textBox_book_no.Text.ToString().Trim();String proofid = this.textBox_proof_no.Text.ToString().Trim();Stri
39、ng dt = DateTime.Now.ToString();String str7 = insert into dbo.Borrow_Info (Proof_ID,Book_ID,Borrow_Date) +values ( + proofid + , + bookid + , + dt + ); da.InsertCommand = newSqlCommand(str7, con);int res=da.InsertCommand.ExecuteNonQuery();if (res 0)MessageBox.Show(借書成功!, 借書/還書);elseMessageBox.Show(借
40、書失??!, 借書/還書);/將該讀者的借閱信息顯示在DataGridView控件中String str8 = select * from dbo.Borrow_Info where Proof_ID= + this.textBox_proof_no.Text.ToString().Trim() + ; da.SelectCommand = newSqlCommand(str8, con); da.Fill(ds, selectifo);/在dataGridView控件中顯示該讀者的借書信息 dataGridView_result.DataSource = ds.Tablesselectifo;
41、 dataGridView_result.Refresh(); else/輸入書號不正確 MessageBox.Show(輸入書號不正確!, 借書/還書);this.textBox_book_no.Text = ; /滿足借書條件 /if(!BORROW) / if (i 0)else MessageBox.Show(數(shù)據(jù)庫中沒有這個人的信息!, 借書/還書); con.Close(); privatevoid button_return_Click(object sender, EventArgs e)/還書 if (this.textBox_book_no.Text.Trim() = |
42、this.textBox_proof_no.Text.Trim() = ) MessageBox.Show(請正確填寫要求的數(shù)據(jù)!, 借書/還書管理);this.textBox_book_no.Text = ;this.textBox_proof_no.Text = ; else /判斷還書人是否有資格if (con.State = ConnectionState.Closed) con.Open();String str = select count(*) from dbo.Proof_Info where Proof_ID= + this.textBox_proof_no.Text.Tri
43、m() + ;SqlCommand com = newSqlCommand(str, con);int i = Convert.ToInt32(com.ExecuteScalar();if (i 0) /判斷書號是否正確String str1 = select count(*) from dbo.Book_Info where Book_ID= +this.textBox_book_no.Text.Trim() + ;SqlCommand com1 = newSqlCommand(str1, con);int j = Convert.ToInt32(com1.ExecuteScalar();if (j 0)/輸入書號正確 ds.Tables.Clear();/判斷該書是否過期String str2 = select Borrow_Date from dbo.Borrow_Info where Proof_ID= +this.textBox_
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 醫(yī)療衛(wèi)生公共管理新挑戰(zhàn)
- 農(nóng)業(yè)項目消防工程招標文件
- 農(nóng)村道路改善工程合同
- 醫(yī)療器械儲存消毒
- 土地復墾框架協(xié)議
- 醫(yī)療器械貸后管理策略
- 文化產(chǎn)業(yè)園區(qū)房屋轉(zhuǎn)讓租賃合同
- 電力工程師聘用及培訓協(xié)議
- 哈爾濱市消防員技能培訓
- 勞動合同糾紛解決辦法
- 2024年秋季新人教版7年級上冊生物課件 第2單元 第2章大單元整體設(shè)計
- 第1課 課題一《課外生活小調(diào)查·周末生活我采訪》(教案)-2024-2025學年三年級上冊綜合實踐活動浙教版
- 世界的氣溫和降水課件
- 大學生職業(yè)發(fā)展與就業(yè)指導 課件 模塊3、4 職業(yè)世界探索、大學生就業(yè)和未來發(fā)展的主要方式
- 離心壓縮機設(shè)計-曼透平
- 北京市通州區(qū)2024屆高三上學期期中質(zhì)量檢測數(shù)學試題 含解析
- Unit2 School things Lesson 3 (教學設(shè)計)-2024-2025學年人教精通版(2024)英語三年級上冊
- 江蘇省2024高中學業(yè)水平合格考歷史試卷試題(含答案詳解)
- DB11T 2256-2024 城市軌道交通鋼軌踏面維修技術(shù)規(guī)范
- 堤溪沱江大橋特別重大坍塌事故工程倫理案例分析
- 住建領(lǐng)域有限空間作業(yè)安全管理知識課件
評論
0/150
提交評論