版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
中北大學(xué)課程設(shè)計(jì)說明書數(shù)據(jù)庫課程實(shí)驗(yàn)周學(xué)生姓名:劉彥成學(xué)號:0706034123學(xué)院:電子與計(jì)算機(jī)科學(xué)技術(shù)學(xué)院
專業(yè):計(jì)算機(jī)科學(xué)與技術(shù)題目:圖書管理系統(tǒng)
——借書還書管理子系統(tǒng)指導(dǎo)教師:楊曉文2023年6月10日1系統(tǒng)設(shè)計(jì)1.1設(shè)計(jì)目標(biāo)在學(xué)習(xí)了數(shù)據(jù)庫原理和SQLServer2000數(shù)據(jù)庫管理系統(tǒng)后,采用VisualC++編程語言開發(fā)工具,設(shè)計(jì)并實(shí)現(xiàn)圖書管理系統(tǒng)。本課程的目的是培養(yǎng)學(xué)生數(shù)據(jù)庫技術(shù)的綜合應(yīng)用能力,通過設(shè)計(jì)開發(fā)一個(gè)小型的數(shù)據(jù)庫管理系統(tǒng),將原理與應(yīng)用相結(jié)合,鍛煉學(xué)生實(shí)際問題的分析、設(shè)計(jì)與編程能力。1.2開發(fā)和運(yùn)行環(huán)境選擇開發(fā)工具:前臺開發(fā)語言為VisualC++,后臺數(shù)據(jù)庫為SQLServer2000運(yùn)行環(huán)境:windows2000及更高的操作系統(tǒng)數(shù)據(jù)庫設(shè)計(jì)2.1需求描述圖書管理系統(tǒng)程序運(yùn)行界面分為登陸界面,功能選擇系統(tǒng)主菜單界面兩個(gè)主要界面。使用時(shí)應(yīng)先知道管理員帳號和密碼,登陸進(jìn)入系統(tǒng)主菜單界面,里面包括用戶信息管理,讀者信息管理,圖書信息管理,借書還書信息管理,關(guān)于系統(tǒng)等五個(gè)菜單項(xiàng)選擇項(xiàng),并其內(nèi)部功能分別對應(yīng)工具欄中的功能。其中用戶信息管理包括增加用戶、刪除用戶、修改密碼、查詢用戶和退出系統(tǒng)。讀者信息管理包括增加讀者、刪除讀者、修改讀者和查詢讀者。圖書信息管理包括添加圖書、刪除圖書、修改圖書和查詢圖書。借書還書信息管理包括借書操作、還書操作、續(xù)借操作和查詢操作。借書還書管理子系統(tǒng)的具體功能目標(biāo)如下:(1)借書操作:用戶借書后在借出圖書信息表中添加用戶信息及書籍信息等,并將圖書信息表中的數(shù)量減1。(2)續(xù)借操作:當(dāng)用戶借閱圖書后,如需延長借閱日期那么可使用此功能續(xù)借圖書。(3)還書操作:用戶歸還書籍后在借書表中刪除借出信息,同時(shí)在圖書信息表中將對應(yīng)書籍的數(shù)量加1,便于他人借閱。并在還書表中增加借書歷史的信息。(4)逾期罰金:歸還書籍時(shí)如果超過期限,規(guī)定超過一天罰0.1元錢。(5)查詢借書信息:查詢借書表中讀者已借的圖書信息。數(shù)據(jù)庫概念設(shè)計(jì)系統(tǒng)功能結(jié)構(gòu)圖:描述系統(tǒng)要實(shí)現(xiàn)的各個(gè)模塊的功能圖書管理系統(tǒng)圖書管理系統(tǒng)圖書管理借閱證管理系統(tǒng)管理借書還書管理新書入庫書籍信息修改辦理借閱證借閱證信息查詢添加賬號修改密碼用戶登錄退出系統(tǒng)借書操作還書操作續(xù)借操作逾期罰金刪除借閱證刪除圖書信息查詢圖書信息修改借閱證信息刪除賬戶查詢借書信息圖1圖書管理系統(tǒng)功能結(jié)構(gòu)圖圖書圖書管理員圖書管理讀者借書n11111n借出日期還書日期借書期限罰款金額讀者管理1n圖2圖書管理系統(tǒng)總體E-R圖圖書圖書圖書編號價(jià)格類別名圖書名出版社數(shù)量作者ISBN圖3圖書信息表E-R圖圖書(圖書編號,圖書名,價(jià)格,類別名,出版社,作者,數(shù)量,ISBN)讀者讀者密碼姓名學(xué)號班級性別借書證號到期日期圖4讀者信息表E-R圖讀者(借書證號,姓名,班級,學(xué)號,密碼,性別,到期日期)管理員管理員用戶名密碼權(quán)限圖5管理員表E-圖管理員(用戶名,密碼,權(quán)限)數(shù)據(jù)庫邏輯設(shè)計(jì)用戶信息表〔users〕:表1用戶表〔users〕字段名字段名稱數(shù)據(jù)類型主鍵是否為空用戶名users文本Yes否權(quán)限powers文本No否用戶密碼passwd文本No否讀者信息表〔reader〕:表2讀者表〔reader〕字段名字段名稱數(shù)據(jù)類型主鍵是否為空借書證號reader_code文本Yes否姓名name文本No否性別sex文本No是學(xué)號sno文本No否班級dept文本No是密碼passwd文本No否到期日期limite日期/時(shí)間No是圖書信息表〔book〕:表3圖書表〔book〕字段名字段類型數(shù)據(jù)類型主鍵是否為空圖書編號book_code文本Yes否書名book_name文本No否作者writer文本No是出版社press文本No是定價(jià)pricedoubleNo是ISBNisbn文本No是數(shù)量numintNo是類別名type文本No是借書信息表〔jsb〕:表4借書表〔jsb〕字段名字段名稱類型主鍵是否為空借書證號reader_code文本Yes否還書日期return_date日期/時(shí)間No是應(yīng)還日期Limite_date日期/時(shí)間No否圖書編號book_code文本Yes否罰款金額punishdoubleNo是還書信息表〔hsb〕:表5還書表〔hsb〕字段名字段名稱數(shù)據(jù)類型主鍵是否為空借書證號reader_code文本Yes否圖書編號book_code文本Yes否借書日期borrow_date日期/時(shí)間No否應(yīng)還日期return_date日期/時(shí)間No否3圖書管理系統(tǒng)〔借書還書管理子系統(tǒng)〕詳細(xì)設(shè)計(jì)3.1登陸界面:圖6登陸界面圖功能:提供用戶登錄,使用戶能操作圖書管理系統(tǒng)。代碼:voidCLoginDlg::OnLoginbr()//登錄系統(tǒng){ CStringstr1,str2; intsuc; if(m_uet.IsOpen()){//翻開數(shù)據(jù)庫 m_uet.Close(); }else{ m_uet.Open(); } if(!m_uet.CanUpdate()){ AfxMessageBox(_T("無法登錄")); }else{ GetDlgItemText(IDC_EDIT1,str1); //獲得編輯框中的內(nèi)容 GetDlgItemText(IDC_EDIT2,str2); m_uet.MoveFirst(); while(!m_uet.IsEOF()){ m_uet.m_users.Replace("",""); //去掉空格以便于比擬 m_uet.m_passwd.Replace("",""); if(m_uet.m_users==str1&&m_uet.m_passwd==str2)//判斷用戶名和密碼{ suc=1; break; }else{ m_uet.MoveNext(); } } if(suc==1){ OnOK(); //用戶名和密碼正確,登錄系統(tǒng) }else{ MessageBox("用戶名或密碼錯(cuò)誤,請重新輸入!"); } } m_uet.Close();}voidCLoginDlg::OnCancel() //退出系統(tǒng){ ExitProcess(1);}3.2主菜單界面:圖7主菜單界面圖功能:主菜單界面包含圖書管理系統(tǒng)的所有功能,具體如下:1〕用戶管理模塊:添加用戶,刪除用戶,修改密碼,查詢用戶信息。2〕讀者管理模塊:添加讀者,刪除讀者,修改讀者信息,查詢讀者信息。3〕圖書管理模塊:添加圖書,刪除圖書,修改圖書信息,查詢圖書信息。4〕借書和還書操作模塊:借書操作,還書操作,續(xù)借操作,查詢借書信息。借書還書子系統(tǒng)界面、功能及實(shí)現(xiàn)代碼如下:借書操作:借書操作界面:圖8借書操作界面圖 借書操作功能:用戶借書后在借出圖書信息表中添加用戶信息及書籍信息等,并將圖書信息表中對應(yīng)圖書的數(shù)量減1。 借書操作代碼:voidCLibraryView::OnBorrowsys() //響應(yīng)借書操作模態(tài)對話框{CBorrowDlgbordlg; bordlg.DoModal();}voidCBorrowDlg::OnBorrow() //借書操作{ CTimetime=CTime::GetCurrentTime(); //獲得系統(tǒng)當(dāng)前時(shí)間 intm=0,suc=0,success=0; //定義變量 CStringstr; if(m_jet.IsOpen()){ //翻開數(shù)據(jù)庫 m_jet.Close(); } else{ m_jet.Open(); } if(!m_jet.CanUpdate()){ AfxMessageBox(_T("不能完成借書功能!")); } else{ m_jet.MoveLast(); //將記錄移到最后 m_jet.AddNew(); //增加新紀(jì)錄 UpdateData(TRUE); //更新數(shù)據(jù)庫記錄 m_jet.m_reader_code=m_borrow1; m_jet.m_book_code=m_borrow2; str=m_jet.m_book_code; m_jet.m_borrow_date=time; if(time.GetMonth()==2){ m=28; } elseif(time.GetMonth()==4||time.GetMonth()==6||time.GetMonth()==9||time.GetMonth()==11){ m=30; } else{ m=31; } CTimeSpantmsp(m,0,0,0); time=time+tmsp; m_jet.m_return_date=time; UpdateData(FALSE); m_jet.Update(); m_jet.Close(); } if(m_jbet.IsOpen()){ //翻開數(shù)據(jù)庫 m_jbet.Close(); } else{ m_jbet.Open(); } if(!m_jbet.CanUpdate()){ AfxMessageBox(_T("不能完成借書功能!")); } else{ m_jbet.MoveFirst(); while(!m_jbet.IsEOF()){ //判斷是否到達(dá)最后一條記錄 m_jbet.m_book_code.Replace("",""); if(m_jbet.m_book_code!=str){ //找到當(dāng)前借出圖書的信息 m_jbet.MoveNext(); } else{ success=1; suc=1; break; } } if(success==1){ m_jbet.Edit(); m_jbet.m_num=m_jbet.m_num-1; //將當(dāng)前圖書數(shù)量減1 m_jbet.Update(); m_jbet.Close(); //關(guān)閉數(shù)據(jù)庫 } } if(suc==1){ MessageBox("借書成功!"); }else{ MessageBox("借書失敗!"); } m_pbt->Invalidate(); //重繪窗口}還書操作:還書操作界面:圖9還書操作界面圖 還書操作功能:用戶歸還書籍后在借書表中刪除借出信息,同時(shí)在圖書信息表中將對應(yīng)書籍的數(shù)量加1,便于他人借閱,假設(shè)所借圖書超出限制歸還的期限應(yīng)繳納罰款金額,并在還書表中增加借書歷史信息。 還書操作代碼:voidCLibraryView::OnReturnsys() //響應(yīng)還書操作模態(tài)對話框{ CReturnDlgretdlg; retdlg.DoModal();}voidCReturnDlg::OnReturn() //還書操作{ CStringedit1,edit2,str,str1,str2,str3; //定義變量 CTimet1; intsuc=0,success=0; if(m_jret.IsOpen()) //翻開數(shù)據(jù)庫借書表 m_jret.Close(); m_jret.Open(); if(!m_jret.CanUpdate()){ AfxMessageBox(_T("無法完成還書功能!")); } if(m_ret.IsOpen()) //翻開數(shù)據(jù)庫還書表 m_ret.Close(); m_ret.Open(); if(!m_ret.CanUpdate()){ AfxMessageBox(_T("無法完成還書功能!")); } CTimetime=CTime::GetCurrentTime(); //獲得系統(tǒng)當(dāng)前時(shí)間 UpdateData(); GetDlgItemText(IDC_EDIT2,edit1); //獲得編輯框中的內(nèi)容 GetDlgItemText(IDC_EDIT3,edit2); m_jret.MoveFirst(); while(!m_jret.IsEOF()) //判斷是否到最后一條記錄 { m_jret.m_reader_code.Replace("",""); //合并空格 m_jret.m_book_code.Replace("",""); if(m_jret.m_reader_code==edit1&&m_jret.m_book_code==edit2){ //比擬 t1=m_jret.m_return_date; suc=1; break; } else m_jret.MoveNext(); //下移一條表中記錄 } if(suc==1){ m_ret.MoveLast(); m_ret.AddNew(); //在還書表中增加借書歷史記錄 m_ret.m_reader_code=m_return1; m_ret.m_book_code=m_return2; str=m_ret.m_book_code; m_ret.m_return_date=time; str1=m_ret.m_return_date.Format(_T("%Y-%m-%d%H:%M:%S"));//時(shí)間類型轉(zhuǎn)換為字符串類型 SetDlgItemText(IDC_EDIT4,str1); m_ret.m_limite_date=t1; str2=m_ret.m_limite_date.Format(_T("%Y-%m-%d%H:%M:%S")); SetDlgItemText(IDC_EDIT5,str2); CTimebegin=m_ret.m_return_date; CTimeend=m_ret.m_limite_date; inty1=begin.GetYear(); //獲得年 inty2=end.GetYear(); intm1=begin.GetMonth(); //獲得月 intm2=end.GetMonth(); intd1=begin.GetDay(); //獲得日 intd2=end.GetDay(); intnum=(y2*365+m2*30+d2*1)-(y1*365+m1*30+d1*1); floatmon; mon=num*0.1-3; //計(jì)算罰金 m_ret.m_punish=mon; str3.Format("%f",m_ret.m_punish); SetDlgItemText(IDC_EDIT6,str3); m_ret.Update(); MessageBox("還書成功!"); m_ret.Close(); //關(guān)閉數(shù)據(jù)庫還書表 m_jret.MoveFirst(); while(!m_jret.IsEOF()){ m_jret.m_reader_code.Replace("",""); m_jret.m_book_code.Replace("",""); if(m_jret.m_reader_code==edit1&&m_jret.m_book_code==edit2){ m_jret.Delete(); //刪除借書表中的信息 break; } else m_jret.MoveNext(); } m_jret.Close(); //關(guān)閉借書表 }else{ MessageBox("歸還失敗!"); } if(m_bret.IsOpen())//翻開圖書表{ m_bret.Close(); }else{ m_bret.Open(); } if(!m_bret.CanUpdate()){ AfxMessageBox(_T("不能完成借書功能!")); }else{ m_bret.MoveFirst(); while(!m_bret.IsEOF()){ m_bret.m_book_code.Replace("",""); if(m_bret.m_book_code!=str){ m_bret.MoveNext(); }else{ success=1; break; } } if(success==1){ m_bret.Edit(); m_bret.m_num=m_bret.m_num+1; //圖書表中對應(yīng)圖書數(shù)量加1 m_bret.Update(); m_bret.Close(); //關(guān)閉圖書表 } } m_prt->Invalidate(); }續(xù)借操作:續(xù)借操作界面:圖10續(xù)借操作界面圖 續(xù)借操作功能:當(dāng)用戶借閱圖書后,如需延長借閱日期那么可使用此功能續(xù)借圖書。 續(xù)借操作代碼:voidCLibraryView::OnReborrowbook() //響應(yīng)續(xù)借操作模態(tài)對話框{ CReborrowDlgreborrowdlg; reborrowdlg.DoModal();}voidCReborrowDlg::OnReborrow() //續(xù)借操作{ CStringedit1,edit2; //定義變量 CTimetime; intm; BOOLsuc; if(m_rbet.IsOpen()) //翻開數(shù)據(jù)庫借書表 m_rbet.Close(); m_rbet.Open(); if(!m_rbet.CanUpdate()){ AfxMessageBox(_T("無法修改數(shù)據(jù)庫記錄")); }else{ GetDlgItemText(IDC_EDIT1,edit1); //獲得編輯框的內(nèi)容 GetDlgItemText(IDC_EDIT2,edit2); m_rbet.MoveFirst(); while(!m_rbet.IsEOF()){ m_rbet.m_reader_code.Replace("",""); //合并空格 m_rbet.m_book_code.Replace("",""); if(m_rbet.m_reader_code!=edit1&&m_rbet.m_book_code!=edit2){ m_rbet.MoveNext(); }else{ suc=true; break; } } if(suc){ m_rbet.Edit(); time=m_rbet.m_return_date; if(time.GetMonth()==2) m=28; else if(time.GetMonth()==4||time.GetMonth()==6||time.GetMonth()==9||time.GetMonth()==11) m=30; else m=31; CTimeSpantmsp(m,0,0,0); time=time+tmsp; m_rbet.m_return_date=time; //續(xù)借一個(gè)月 m_rbet.Update(); } else MessageBox("無此圖書或?qū)W號,請重新輸入!"); m_rbet.Close(); MessageBox("續(xù)借成功!"); m_prbt->Invalidate(); //重繪窗口 }}查詢操作:查詢操作界面:圖11查詢操作界面圖查詢操作功能:查詢借書表中讀者已借的圖書信息。查詢操作代碼:voidCLibraryView::OnChecksys(){CcheckDlgchedlg;Chedlg.DoModal();}voidCCheckDlg::OnCheck() //查詢讀者借書信息{ CStringedit1,str1,str2; //定義變量 intsuc=0; if(m_cet.IsOpen()){ //翻開數(shù)據(jù)庫借書表 m_cet.Close(); }else{ m_cet.Open(); } if(!m_cet.CanUpdate()){ AfxMessageBox(_T("無法查詢數(shù)據(jù)庫記錄")); }else{ GetDlgItemText(IDC_EDIT5,edit1); //獲得編輯框中的內(nèi)容 m_cet.MoveFirst(); while(!m_cet.IsEOF()){ m_cet.m_reader_code.Replace("",""); //合并空格 if(m_cet.m_reader_code!=edit1)//比擬借書證號是否匹配{ m_cet.MoveNext(); }Else{ suc=1; break; } } if(suc==1){ //假設(shè)匹配那么返回借書信息 SetDlgItemText(IDC_EDIT1,m_cet.m_reader_code); SetDlgItemText(IDC_EDIT2,m_cet.m_book_code); str1=m_cet.m_borrow_date.Format(_T("%Y-%m-%d%H:%M:%S")); SetDlgItemText(IDC_EDIT3,str1); str2=m_cet.m_return_date.Format(_T("%Y-%m-%d%H:%M:%S")); SetDlgItemText(IDC_EDIT4,str2); UpdateData(); }else{ MessageBox("此同學(xué)未借書或無此學(xué)號,請重新輸入!"); } m_cet.Close(); //關(guān)閉數(shù)據(jù)庫借書表 m_pct->Invalidate(); //重繪窗口 }}關(guān)于系統(tǒng): 關(guān)于系統(tǒng)界面:圖12關(guān)于系統(tǒng)界面圖 關(guān)于系統(tǒng)的功能:介紹開發(fā)環(huán)境和運(yùn)行環(huán)境。 關(guān)于系統(tǒng)的代碼:voidCLibraryView::OnHelpdlg(){ CIntroDlgintrodlg; introdlg.DoModal();}4系統(tǒng)測試4.1借書操作測試: 測試方法:輸入一讀者表中存在的借書證號和一圖書表中存在的圖書編號點(diǎn)擊借書進(jìn)行測試,假設(shè)提示借書成功信息,且借書表中對應(yīng)的添加了一條新紀(jì)錄,同時(shí)圖書表對應(yīng)圖書編號的圖書數(shù)量減1,假設(shè)以上兩條均已實(shí)現(xiàn),那么證明借書操作正確,否那么借書操作不正確。測試數(shù)據(jù):以借書證號:00001,圖書編號:55555為例,測試結(jié)果如下:圖13借書操作測試界面圖經(jīng)查看表,執(zhí)行借書操作前,圖書表中圖書編號為55555的圖書數(shù)量為4,執(zhí)行借書操作后此編號的圖書數(shù)量為3,且借書表中對應(yīng)增加了一條信息。測試結(jié)論:經(jīng)反復(fù)測試由測試數(shù)據(jù)可知:借書操作功能已經(jīng)實(shí)現(xiàn)。4.2還書操作測試:測試方法:輸入一借書表中的借書證號和對應(yīng)的圖書編號點(diǎn)擊還書進(jìn)行測試,假設(shè)提示還書成功信息,且查詢還書表中對應(yīng)的添加了一條新紀(jì)錄,同時(shí)圖書表對應(yīng)圖書編號的圖書數(shù)量是否加1,并且借書表中對應(yīng)此條信息已經(jīng)刪除,假設(shè)以上三條均已實(shí)現(xiàn),那么證明還書操作正確,否那么還書操作不正確。測試數(shù)據(jù):以借書證號:00001,圖書編號:55555為例,測試結(jié)果如下:圖14還書操作測試界面圖經(jīng)查看表,執(zhí)行還書操作前,圖書表中圖書編號為55555的圖書數(shù)量為3,執(zhí)行借書操作后此編號的圖書數(shù)量為4,且借書表中對應(yīng)以上借書證號和圖書編號的信息已經(jīng)刪除,同時(shí)在還書表中增加了一
溫馨提示
- 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 濰坊醫(yī)學(xué)院《雕刻基礎(chǔ)(浮雕)》2023-2024學(xué)年第一學(xué)期期末試卷
- 攪拌混凝土出售合同范例
- 工人住宿出租合同范例
- 基金產(chǎn)品協(xié)議合同范例
- 租車助理買單合同范例
- 校園搬遷運(yùn)輸合同范例
- 農(nóng)場民房出售合同范例
- 企業(yè)現(xiàn)金入股合同范例
- 物業(yè)房租租售合同范例
- 代交話費(fèi)合同范例
- Python財(cái)務(wù)應(yīng)用課后參考答案
- 《樹葉中的比》(說課稿)蘇教版六年級上冊數(shù)學(xué)
- 德菲婭定制衣柜導(dǎo)購培訓(xùn)手冊
- 人文英語3復(fù)習(xí)資料
- 2023-2024學(xué)年云南省昆明市小學(xué)語文二年級期末評估測試題附參考答案和詳細(xì)解析
- 基樁聲波透射法檢測記錄表格
- 《人生的枷鎖 毛姆長篇作品精選 》讀書筆記思維導(dǎo)圖PPT模板下載
- GB/T 42461-2023信息安全技術(shù)網(wǎng)絡(luò)安全服務(wù)成本度量指南
- FURUNOECDISMultipleChoiceTest古野電子海圖題庫測試題
- 牛頓運(yùn)動定律的應(yīng)用(說課稿)
- 中醫(yī)骨傷學(xué)課程教案
評論
0/150
提交評論