图书资料管理课程设计(附源码和连接)
摘要
圖書資料管理系統基于eclipse下可視化工具WindowsBuilder配合Mysql數據庫進行開發,具有的基本功能有管理員登陸,圖書類別管理(包括圖書類別的添加和刪除),圖書信息的管理 (包括圖書基本信息的錄入,刪除和修改)。進行此次課程設計可有效的對數據庫的概念結構設計和數據庫邏輯結構設計進行一定的掌握與理解,同時通過建立圖書資料管理系統E-R圖,關系圖可以加深對數據庫相關知識的學習。
關鍵字:圖書資料管理系統;數據庫設計;Java開發
?
目錄
1 系統簡介 1
1.1 開發背景及意義 1
1.2 系統分析 1
1.3 開發環境 1
2 需求分析 2
3數據庫概念設計 3
4.數據庫邏輯結構設計 7
4.1 數據庫模型圖設計 7
4.2系統功能模塊圖 8
4.3數據流程分析 9
5.數據庫物理設計 12
5.1 索引設計 12
5.2 視圖設計 12
6.編碼及實現 13
6.1 文件夾組織結構 13
6.2公共模塊的編寫 14
6.2.1數據庫連接 14
6.2.2字符串工具類 15
6.3窗體設計 16
6.3.1主窗體設計 16
6.3.2登陸界面 17
6.3.3圖書信息添加界面 18
7測試分析報告 24
總結 26
參考文獻 27
致謝 28
1 系統簡介
1.1 開發背景及意義
圖書資料管理系統在實際中應用廣泛,例如所有大型圖書館或者高校的圖書館都必須配備一套完整的圖書管理系統,甚至部分小學也需要一個圖書管理系統。它主要對一個學校的圖書館或者其他類型的圖書相關業務部門的所有圖書信息進行管理。圖書借閱管理系統是圖書管理系統的一個子系統,它主要完成對書籍的借出與歸還的管理。
1.2 系統分析
1 基本功能
高校圖書借閱管理系統的基本功能包括借書管理,還書管理,書籍和用戶信息管理,以及圖書信息檢索等及格方面
2 用戶分類
對于一個管理系統,首先就需要管理人員對數據庫進行管理,其次應該對老師和學生的使用權限進行管理,同時可以對用戶資料進行維護。
3 書籍信息
應該保存書籍的書名、作者、出版社等信息,以供用戶查詢。
4 信息查詢
讀者應該可以登陸到系統內查看所借書籍的信息,可以對書籍的信息進行查詢和檢索。
1.3 開發環境
本系統所采用的開發環境為 基于Java環境下eclipse開發,插件為Windows builder運行環境為Windows 10平臺,運行的軟硬件要求如下:
1 硬件部分:內存512M(或更高),標準的鼠標、鍵盤及顯示器。
2 軟件部分:數據庫系統為mysql,開發工具使用eclipse。數據庫建模工具powerdesigner
?
2 需求分析
本次課設的圖書資料管理系統,是按照實際的圖書借閱流程來設計的,因此其功能也是跟實際的圖書館借閱功能一致。
所以,該小型圖書管理系統的設計,要包含圖書類別的添加,圖書借出、歸還功能和數據統計功能。主要應具備以下業務處理能力:圖書借出,完成借書時的信息查詢,借后的信息入庫,借書次數統計等等;圖書歸還,完成還書時的信息查詢和數據入庫等。另外還需具有圖書信息管理和讀者信息管理所需的基本功能,包括添加、刪除、修改和查詢,以及相關信息導入Excel和打印功能等。此外,一些相關的數據統計功能也很必要,如借閱統計、讀者超期罰款統計等,可以為管理員工作提供參考。
整個系統既要實現基本業務,還要提供高效性、易用性和穩定性的性能要求。
按規范設計法,可將數據庫設計分為四個階段:系統需求分析階段、概念結構設計階段、邏輯結構設計階段、物理設計階段。而一個完整的數據庫系統的開發過程還需增加數據庫實施和數據庫運行與維護兩個階段 。圖書資料管理系統正是基于以上六點所完成的。
?
3數據庫概念設計
數據庫設計是指對于一個給定的應用環境,構造(設計)出某種數據庫管理系統所支持的優化的數據庫邏輯模式和物理結構,并據此建立數據庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據處理要求。
數據庫已經成為現代信息系統的基礎和核心部分,而數據庫設計的好壞直接影響到整個系統的效率和質量。
創建一個完整的、盡可能規范化的和完全集成的概念、邏輯和物理數據庫模型。具體要達到以下要求:
減少有害的數據冗余,提高程序共享性;
保證數據的獨立性,可修改,可擴充;
訪問數據庫的時間要短;
數據庫的存儲空間要小;
要保證數據的安全性和保密性;
易于維護。
數據庫概念設計是在系統開發的總體任務的基礎上完成。圖書資料管理系統需要完成功能主要有:
(1)各種信息的輸入,包括圖書類別的添加,圖書基本信息、借閱信息、員工信息等;
(2)借閱信息的處理;圖書類別的修改,圖書信息的增加與重置
(3)各種信息的修改、刪除;
(4)按照某種條件,查詢統計符合條件的各類信息;
(5)對查詢、統計的結果打印輸出。
數據庫概念結構的ER模型可采用自頂向下、自底向上、逐步擴張和混合策略四種方法。其中最常用的方法是自底向上 。自底向上方法是先定義各局部應用的概念結構ER模型,然后將它們集成,得到全局概念結構ER模型 。
E-R圖是建立數據模型的基礎,根據E-R模型向關系模式的轉換規則,可以將E-R圖中所有的實體和聯系都用關系來表示,從而可以得到數據庫的邏輯模型。
數據庫設計是指對于一個給定的應用環境,構造(設計)出某種數據庫管理系統所支持的優化的數據庫邏輯模式和物理結構,并據此建立數據庫及其應用系統,使之能夠有效地存儲和管理數據,滿足各種用戶的應用需求,包括信息管理要求和數據處理要求。
數據庫已經成為現代信息系統的基礎和核心部分,而數據庫設計的好壞直接影響到整個系統的效率和質量。
員工信息ER圖主要包括的基本信息有:編號,員工編號,員工姓名,學歷,職稱,性別,聯系電話,專業,讀者類別,所在部門,職務等信息。如圖2.1所示。
圖書信息ER圖主要包括的信息有:圖書編號,作者,版次,出版時間,分類,出版社,單價等信息。
借閱信息ER圖主要包括的信息有:辦證日期,員工編號 ,員工姓名,借閱日期 ,歸還日期,是否歸還等信息。
圖書分類ER圖主要包括的信息有:圖書編號,可借天數和類別名稱等信息。
圖書訂購信息ER圖主要包括的信息有:訂購日期,訂購數量,圖書編號,折扣,是否入庫,操作員等信息。
庫存信息ER圖主要包括的信息有:編號和庫存數量。
管理員信息ER圖主要包括的信息有:身份證號,聯系電話,員工編號,性別,年齡,工作日期,密碼等信息。
?
4.數據庫邏輯結構設計
4.1 數據庫模型圖設計
概念結構設計階段得到的ER模型是用戶模型,它獨立于任何一種數據模型,獨立于任何一個具體的DBMS,是一個與計算機軟、硬件的具體性能無關的全局概念模式。為了建立用戶所要求的數據庫,需要把上述概念模型轉換為某個具體的DBMS所支持的數據模型,即邏輯結構設計。
數據庫邏輯設計的任務是將概念結構轉換成特定DBMS所支持的數據模型的過程。關系數據庫邏輯設計的結果是一組關系模式的定義 。
E-R圖是建立數據模型的基礎,根據E-R模型向關系模式的轉換規則,可以將E-R圖中所有的實體和聯系都用關系來表示,從而可以得到數據庫的邏輯模型。
圖書資料管理系統主要是對讀者基本信息的查詢、修改,包括讀者編號、讀者姓名、讀者種類、讀者性別、工作單位、家庭住址、電話號碼、電子郵件地址、辦證日期、備注等等。
在本次課程設計中關于圖書資料管理數據庫共建立了七個實體關系:
員工信息表:工姓名、性別、所在部門、職務、職稱、學歷、專業、聯系電話、辦證日期、書證編號、讀者類別,等
圖書信息表:包的數據項有:圖書編號、名稱、作者、版次、單價、出版社、分類、出版時間等;
借閱信息表:的數據項有:借閱日期、借閱人、還回日期等。
圖書分類表:包括的數據項有:編號,可借天數,編號名稱。
圖書訂購信息表:包括的數據項有:訂購日期,訂購數量,圖書編號,折扣,操作員以及是否入庫。
庫存信息表:包括的數據項有編號和庫存數量。
管理員信息表:包括的數據項有身份證號,聯系電話,員工編號,性別,密碼,工作日期,年齡等。
本次本人通過PowerDesigner設計軟件進行建模操作,所設計的數據庫模型如圖3.1所示
圖3.1圖書資料管理系統關系圖
4.2系統功能模塊圖
對上述各功能進行集中、分塊業務流程分析
新添加的圖書由管理員進行入庫操作,添加圖書信息到圖書信息表中。管理員依次輸入圖書條形碼,書名,作者,出版社,出版時間,頁數,類別,存放位置,圖書總數和圖書價格,系統自動根據圖書類別、出版時間給出該書在數據庫中的唯一編號,并同時記錄入館時間。所有這些信息將會被添加到圖書基本信息表中。
添加讀者(新加入的讀者也由管理員進行添加操作,添加新讀者信息到讀者信息表中)
圖書管理(可以對數據庫中所有的圖書(包括在館和不在館的)進行管理)
讀者管理(可以對數據庫中所有的讀者進行管理,可以對讀者的信息進行修改、刪除)
信息查詢業務(包括圖書基本信息查詢,讀者基本信息查詢,在這個查詢界面,系統提供多種查詢條件供用戶選擇)
圖書借出業務(讀者根據需要查詢圖書信息,找到要借圖書后,系統根據讀者編號和圖書編號調出相關信息,判斷讀者能否借此書)
圖書歸還業務(系統根據圖書實際歸還日期以及應還日期判斷是否超期)
統計業務(包括圖書借閱排名統計和罰款金額統計)
系統管理(這部分包括修改管理員登錄密碼、圖書類別設置、存放位置設置和讀者類別設置等)
打印操作(本系統提供所有圖書信息打印,所有讀者信息打印等,另外也提供自定義打印,即可對查詢出來的結果進行打印)
業務流程描述主要功能如圖3.2所示:
圖3.2小型圖書資料管理系統功能圖
4.3數據流程分析
數據流程圖(Data Flow Diagram, DFD)是以管理業務流程圖為依據,通過抽象以舍去具體的組織結構、工作場所和物流等,單從數據信息流動的角度,來描述系統內部及系統與環境之間的數據信息的傳遞、處理和存儲過程的一種工具。
根據系統的業務流程,對其中的數據流向、處理及數據存儲進行分析后,可以得到本系統的數據流程圖如圖3.3所示:
圖3.3圖書資料管理系統數據流程圖
數據字典
數據字典是用來規范化描述數據具體內容的工具,也是對數據匯總分析的一個總結,包括數據流字典、數據存儲字典和數據處理字典。數據流程圖配以數據字典,就可以從圖形和文字兩個方面對系統的邏輯模型進行完整的描述
數據庫邏輯結構設計
該圖書館管理信息系統中各個數據表的設計如下所示:表4.1員工信息表
表4.1員工信息表
表4.2圖書信息表
表4.3管理員信息表
5.數據庫物理設計
5.1 索引設計
表5.1讀者表(reader)
字段名 sno sname passwd which num
索引表達式 sno
索引類型 主索引
表5.2書籍表(book)
字段名 bno bname bwriter bpress binfo bstate
索引表達式 bno
索引類型 主索引
5.2 視圖設計
該視圖建立在書籍表和借閱表的基礎上,用來查詢用戶的借書信息,設計如下:
表5.2視圖設計
字段名 bno bname bwriter bpress starttime endtime
說明 書籍號 書籍名稱 作者 出版社 借書時間 還書時間
6.編碼及實現
6.1 文件夾組織結構
在編寫代碼之前,可以先將系統中可能用到的文件夾或者包建立起來,這樣方便我們后期的開發與管理,也可以規范系統的整體框架,我在做圖書館管理系統時設計了如圖6.1所示的文件夾結構,在開發時,將相對應的放到各自根目錄下即可。
圖6.1圖書資料管理系統文件夾結構
6.2公共模塊的編寫
在一般的開發中,經常會遇到一些公共模塊的編寫,如數據庫連接及相關操作的類,這樣的好處就在于方便管理和后期功能的擴展。
6.2.1數據庫連接
數據庫連接及操作類通常包括,數據庫連接的方法(GetConnection),數據庫關閉的方法(Close),執行查詢語句的方法(List),執行添加語句的方法(Add),執行修改語句的方法(update),以及刪除語句的方法(Delete),下面開始對各個模塊及Dao類進行編碼
在工具類DButil中創建數據庫連接的操作在此類中新定義數據庫連接驅動包名稱,數據庫連接路徑,數據庫用戶名,密碼等靜態變量,然后在構造函數中實現連接數據庫的操作。在數據庫連接時需要添加trycatch關鍵字來捕捉數據庫連接時異常。同時為了進行優化,我加入了判斷數據庫連接是否為空的情況,為空則進行連接,同時建立了數據庫關閉操作,當對數據庫的連接操作完成后進行關閉。
package java1.book.util;
import java.sql.Connection;//導入數據庫連接時所使用的類
import java.sql.DriverManager;
/*
-
數據庫工具類
/
public class DButil {
private String dbURl=“jdbc:mysql://localhost:3306/db_book?serverTimezone=UTC”;
private String dbUserName=“root”;//用戶名
private String dbUserPassword=“123456”;//密碼
private String jdbcName=“com.mysql.cj.jdbc.Driver”;//驅動名稱
/*- 獲取數據庫連接
/
public Connection GetCon()throws Exception{
Class.forName(jdbcName);
Connection con=DriverManager.getConnection(dbURl, dbUserName, dbUserPassword);
return con;
}
/* - 關閉數據庫連接
/
public void closeCon(Connection con)throws Exception{
if(con!=null)
{
con.close();
}
}
public static void main(String[] args) {
DButil Dbutil=new DButil();
try {
Dbutil.GetCon();
System.out.println(“數據庫連接成功”);
} catch (Exception e) {
e.printStackTrace();
System.out.println(“數據庫連接失敗”);
}
}
}
6.2.2字符串工具類
字符串連接工具在后期的進行查詢等操作時可以進行有效的提高效率,和進行字符串拼接時將會用到。
package java1.book.util;
/*
- 獲取數據庫連接
-
字符串工具類
/
public class Stringutil {
/*- 判斷是否為空
/
public static boolean isEmpty(String str) {
if(str==null || “”.equals(str.trim())) {
return true;
}else {
return false;
}
}
/* - 判斷是否不是空
/
public static boolean isNoteEmpty(String str ) {
if(str!=null && !"".equals(str.trim())) {
return true;
}else {
return false;
}
}
6.3窗體設計
6.3.1主窗體設計
管理員通過“系統登陸”模塊的驗證后,可以登陸到圖書資料管理系統的主界面,系統主窗體包括基本數據維護(圖書類別管理,圖書信息管理,和安全退出模塊),“關于我們”只是簡單的進行了一個展示。調用了一個JTextPane容器 進行文本框書寫,在后面不在過多介紹。下面對這一模塊的具體實現進行描述。
圖6.2圖書資料管理系統主界面
//設置JFrame最大化
this.setExtendedState(JFrame.MAXIMIZED_BOTH);
其添加事件的方法,點開Design然后在相關的需要添加事件的地方進行右擊鼠標,找到Add event handler 下的action,再進一層點開actionPerformed。點擊之后即可進行實際的事件添加,編寫相應的代碼。
圖6.3添加功能方法圖
代碼如下:
public void actionPerformed(ActionEvent e) {
booktypeInter jbooktypeInter=new booktypeInter();
jbooktypeInter.setVisible(true);
table.add(jbooktypeInter);
6.3.2登陸界面
對于整個系統來說,無論是管理員還是普通讀者,都必須登陸后才可以進行各種各樣的操作。因此登陸界面的設計是本系統的關鍵。用戶登陸必須輸入用戶名和密碼,系統檢測數據庫中是否有該用戶的信息以及密碼是否正確,若符合要求則登陸成功,否者登陸失敗。
登陸界面的設計如下:登陸界面通過添加相應的屬性即可完成,不過區別在于這個時候要和數據庫連接,檢查數據庫中是否有相應的管理員所以建立工具類Userdao。代碼如下所示:
package java1.book.dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java1.book.model.User;
/*
- 判斷是否為空
-
用戶Dao類
-
@author 徐建國
/
public class Userdao {
public User login(Connection con,User user)throws Exception{
User resultUser=null;
String sql="select from t_user where username=?and password=?";
PreparedStatement pstmt=con.prepareStatement(sql);//結果集遍歷
pstmt.setString(1, user.getUserName());
pstmt.setString(2, user.getPassword());
ResultSet rs=pstmt.executeQuery();
if(rs.next())
{
resultUser=new User();
resultUser.setId(rs.getInt(“id”));//獲取id
resultUser.setUserName(rs.getString(“username”));//獲取用戶名
resultUser.setPassword(rs.getString(“password”));//獲取密碼
}
return resultUser;
}}
運行后界面如圖所示:
圖6.4圖書資料管理系統登陸界面圖
6.3.3圖書信息添加界面
圖書信息是本系統的基礎。書籍管理包括書籍數據的添加和修改等功能,同時可以根據書籍的id號進行查詢等功能。主要是對數據庫中書籍表(t_book)的操作。本模塊中的操作有“查詢”“添加”“修改”“保存”“刪除”。涉及對數據庫的操作有查詢、增加、刪除、修改等。
1.若數據庫中存在此書籍的信息,則將結果顯示出來。
2.保存:當管理員新增或修改書籍信息后,需要將數據信息保存到數據庫中,更新數據庫的數據。操作完成后,可到數據庫中查看信息是否保存成功。
3.刪除:當書籍不存在時,管理員需要將數據庫中書籍的信息刪除,以防止數據的冗余。
對于修改操作的實現,本系統采用如下方法:當用戶單擊“修改”按鈕后,系統將刪除數據庫中當前的書籍信息,等待用戶填入新的信息后,必須單擊保存按鈕將新的信息保存到數據庫中。對于添加操作同樣要在填入新的信息后單擊保存才可以。圖書類別的添加主要包括圖書類別名稱和圖書描述信息的添加。
(1)添加方法就是在添加按鈕添加事件,進行調用。
圖6.5圖書類別的添加
/- 圖書類別添加事件處理
/
private void bookTypeAddActionPerformed(ActionEvent evt) {
String bookTypeName=this.bookTypeNametxt.getText();
String bookTypeDesc=this.bookTypeDesctxt.getText();
if(Stringutil.isEmpty(bookTypeName)) {
JOptionPane.showMessageDialog(null, “圖書類別不能為空”);
return;
}
Booktype booktype=new Booktype(bookTypeName,bookTypeDesc);
Connection con=null;
try {
con=dbutil.GetCon();
int n=booktypedao.add(con, booktype);
if(n==1) {
JOptionPane.showMessageDialog(null, “圖書類別添加成功”);
resetValue();
}else {
JOptionPane.showMessageDialog(null, “圖書類別添加失敗”);
}
}catch(Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, “圖書類別添加失敗”);
}finally {
try {
dbutil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
添加成功之后還會進行表格的刷新。
圖6.5圖書類別添加
在此還設置了重置按鈕可以防止數據的誤操作之后進行數據的恢復。
/* - 重置表單
/
private void resetValue() {
this.bookTypeNametxt.setText("");
this.bookTypeDesctxt.setText("");
}
(2)圖書類別的修改主要是通過和數據庫進行連接之后進行更新操作。
/* - 圖書類別修改記錄 事件處理
- @param evt
*/
private void bookTypeUpdateActionEvent(ActionEvent evt) {
this.fillTable(new Booktype());} else {JOptionPane.showMessageDialog(null, "修改失敗");} }catch (Exception e) { e.printStackTrace();JOptionPane.showMessageDialog(null, "修改失敗");}finally {try {dbutil.closeCon(con);} catch (Exception e) {// TODO Auto-generated catch blocke.printStackTrace();}} }
String id=idTxt.getText();
String bookTypeName=bookTypeNameTxt.getText();
String bookTypeDesc=bookTypeDescTxt.getText();
if(Stringutil.isEmpty(id)) {
JOptionPane.showMessageDialog(null, “請選擇要修改的記錄”);
return;
}
if(Stringutil.isEmpty(bookTypeName)) {
JOptionPane.showMessageDialog(null, “圖書類別不能為空”);
return;
}
Booktype bookType=new Booktype(bookTypeName,bookTypeDesc );
Connection con =null;
try {
con=dbutil.GetCon();
int modifyNum=booktypedao.update( con, bookType);
if(modifyNum==1) {
JOptionPane.showMessageDialog(null, “修改成功”);
this.resetValue(); - 圖書類別添加事件處理
(3)圖書類別的查詢與修改
圖書類比的查詢與修改主要涉及到的就是表單操作以及對數據的查詢,修改和及時更新數據,書籍信息查詢或者說是書籍檢索是任何人都可以進行的操作,它不要求用戶的登陸。其功能已在書籍管理模塊中涉及,不同之處在于此時只用于顯示,用戶不可對其修改。查詢時的關鍵字可有“書籍作者”“出版社”“書籍名稱”“書籍號”“書籍簡介”。
圖6.6圖書類別的查詢與修改
/**
* 圖書類別修改記錄 事件處理
/
private void bookTypeUpdateActionEvent(ActionEvent evt) {
String id=idTxt.getText();
String bookTypeName=bookTypeNameTxt.getText();
String bookTypeDesc=bookTypeDescTxt.getText();
if(Stringutil.isEmpty(id)) {
JOptionPane.showMessageDialog(null, “請選擇要修改的記錄”);
return;}
if(Stringutil.isEmpty(bookTypeName)) {
JOptionPane.showMessageDialog(null, “圖書類別不能為空”);
return;}
Booktype bookType=new Booktype(bookTypeName,bookTypeDesc );
Connection con =null;
try {
con=dbutil.GetCon();
int modifyNum=booktypedao.update( con, bookType);
if(modifyNum==1) {
JOptionPane.showMessageDialog(null, “修改成功”);
this.resetValue();
this.fillTable(new Booktype());
} else {
JOptionPane.showMessageDialog(null, “修改失敗”);}
}catch (Exception e) {
e.printStackTrace();
JOptionPane.showMessageDialog(null, “修改失敗”);
}finally {
try {
dbutil.closeCon(con);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}} }
(4)表格行點擊事件主要是對上面的表格數據進行遍歷按照相應的顯示規則,在下面進行同步顯示,此操作和后期的圖書信息的添加與維護一致,后面不在描述
/*
* 表格行點擊事件處理
/
private void bookTypeTableMousePressed(MouseEvent evt) {
int row=bookTypeTable.getSelectedRow();
idTxt.setText((String)bookTypeTable.getValueAt(row, 0));
bookTypeNameTxt.setText((String)bookTypeTable.getValueAt(row, 1));
bookTypeDescTxt.setText((String)bookTypeTable.getValueAt(row, 2)); }
/*
* 圖書類別搜索事件
*/
private void bookTypeSearchActionPerformed(ActionEvent evt) {
String s_bookTypeName=this.s_bookTypeNameTxt.getText();
Booktype booktype=new Booktype();
booktype.setBooktypename(s_bookTypeName);
this.fillTable(booktype); }
(5)圖書信息添加
對于本系統來說,圖書信息添加和重置是最重要的功能,涉及到數據庫中的兩張表,考慮到查詢效率和方便程度,決定建立視圖查詢,要求輸入,圖書名稱,圖書作者,作者性別,圖書價格,圖書類別,圖書價格等信息 ,因為代碼和之前添加 事件代碼區別不大 ,這里不在贅述而采用代碼的復用。
圖6.7圖書信息添加與重置
(6)圖書資料管理是重中之重,如何有效的對數據管理,才是關鍵,所以采用嵌套語句和字符串拼接等方式,與數據庫進行有效的連接并且同步數據 。在此用到了表格行點擊事件。
圖6.8圖書資料管理
?
7測試分析報告
在測試分析的基礎上,進行測試后需要對測試的結果以及測試的數據等加以記錄和分析總結,它是測試過程的一個重要的環節,同時,它也是對軟件性能的一個總的分析和對認識不足的說明。為以后的軟件開發程序提供了豐富的經驗。
系統的設計工作完成后,必須經過嚴格的測試才可以進行實際的應用。作為一個數據庫軟件,應該結合數據庫本身和軟件進行聯合測試,即可以在軟件中進行一些操作,同時在數據庫中查看相關數據。下面對系統的各模塊進行測試。
1 登陸模塊等測試
登陸模塊的測試包括登陸成功,不成功以及退出等3種情況,還需要查看登陸成功即退出后的菜單是否正常等。程序運行后,選擇“系統”|“登陸”命令,彈出登陸對話框,在上面輸入用戶名和密碼后,單擊“確定”按鈕。如下所示:如果輸入錯誤的用戶名或密碼,則顯示登陸失敗。登陸后選擇“系統”|“退出”命令,可看到狀態欄的改變,即完成退出命令。其他的圖書類別的添加修改等都是相同操作。
圖7.1登陸模塊及相關測試
2 書籍信息模塊測試
使用管理員權限登陸后,可以對書籍信息進行管理。選擇“基本資料維護”|“圖書資料維護”命令,彈出書籍資料維護對話框。如果單擊“添加”按鈕,輸入新的信息后,單擊“保存”按鈕保存到數據庫中。如下圖所示:
圖7.2書記信息模塊測試
上面對系統的各個模塊進行了簡單的測試,圖示資料系統基本模塊的功能是正確的。
3.性能測試及未完成的模塊
在本次圖書資料管理系統中測試時出現過好多BUG,
1.Java.lang.NullPointerException
首先要理解的是此錯誤并不會在 程序中報錯,只會在運行的時候報錯。
是由于某個參數(集合,數組等數據)可能出現一個null值而導致后面的程序不能運行時候報的錯誤,這時候我們只需要加一個判斷是否為null,再去在不為空的情況下進行后續代碼,這樣就能解決問題。
那么在這個時候就要去查看你的程序,因為我在編寫代碼的時候偷懶
當報錯bookkatype時直接按照引導。加了Integer booktypeId = null;
所以報錯的時候我就想到了在這兒去解決。幸運的是把這兒的變量初始化賦值以后解決了錯誤,程序也很好的運行起來了!
現在歸納一下:報錯原因
1.字符串變量未初始化;如Sting s;這時在后面的處理過程中就可能會報錯。
2.接口類型的對象沒有用具體的類初始化,List lt; 會報錯
List lt = new ArrayList(); 則不會報錯了。
剩下在調試中也出現了好多bug。但是只要掌握了問題的解決辦法就不會太難。我也總結出來了解決bug的辦法。
1. 細心查看異常信息,確定異常種類和相關Java代碼行號;
2. 拷貝異常信息到百度,查看相關帖子,尋找解決思路;
3. 前兩步無法搞定,再問同學或老師;
4. 前三步無法搞定,去學習 底層只是,由于目前課設時間短可以注釋了,后期解決。
很多同學碰到異常一下就慌了,立刻開始請教別人搬救兵,殊不知這樣做有兩大壞處。第一、太不尊重別人,把別人當苦力。第二、失去提高自我的機會,自己解決一個異常,就意味著有能力解決一類異常。解決一類異常能大大提高自身能力。
?
總結
這次課程設計的設計時間比較緊迫,所以我們組成小組共同完成此次課程設計。在這次課程設計中我們遇到了很多問題,我們通過網上查詢以及咨詢同學對各種問題有了簡單的了解,基本上完成了此次課程設計的任務。數據庫作為現代數據管理最先進的手段,掌握數據庫系統設計的基本方法和步驟是對現代軟件開發人員的基本要求。本次通過一個小型圖書資料管理系統的設計,了解了數據庫系統開發的基本知識。本次課程設計讓我們學到了許多知識,受益匪淺。了解了如何利用JDBC技術對數據庫進行操作,如連接數據庫以及如何利用程序將數據庫中的信息以界面的形式顯示出來,同時掌握了界面設計的一些方法和技巧,對Java語言的使用更加深入。對書本上學到的SQL語句的使用也更加熟悉。真正做到了把書本上學到的知識應用到實踐中來。對我們的動手能力和團隊合作能力都有所加強。在編寫程序方面,學會了規范化的編程方法,例如按功能將一組代碼放在一起,并添加注釋,方便自己和他人閱讀。
不過本次課程設計中也出現了許多問題,例如數據庫沒有連接上,操作無法進行,對各個界面的設計還不夠完善,系統的功能還不夠強大等等,在老師的幫助和小組成員的不懈努力下,大部分問題得到了解決。本次課程設計只是一個小型系統的研究,并沒有考慮運行效率等方面的諸多問題,我們還可以對這些方面進行研究和實現,或者在此基礎上增加新的功能,使系統的可用性更為強大。
?
參考文獻
[1] 王珊.數據庫系統概論(第四版)[M].高等教育出版社.2014.12
[2] 劉金嶺.數據庫原理及應用實驗與課程設計指導[M].清華大學出版社出版.2010.6
[3] 錢雪忠.數據庫原理及技術課程設計(全新正版)[M].清華大學出版社出版.2009.2
[4] 周屹.數據庫原理及開發應用-實驗與課程設計指導[M]. 清華大學出版社出版.2008.12
[5] 李春葆.Visual Basic數據庫系統設計與開發[M].清華大學出版社出版.2003.8
[6] 唐紅亮.SQL Server數據庫設計與系統開發教程[M].清華大學出版社出版.2007.10
[7] 丁忠俊.數據庫系統原理及應用[M].清華大學出版社出版.2012.4
[8] 李曉峰.數據庫系統原理及應用[M].水利水電出版社.2011.2
[9] 萬常選.數據庫系統原理與設計(第2版) [M].清華大學出版社出版.2012.9
[10] 馮健華.數據庫系統設計與原理(第2版)[M].清華大學出版社出版.2012.8
?
致謝
本次《數據庫系統》的課程設計學習中,老師嚴謹的治學態度、豐富淵博的知識、精益求精的工作態度以及侮人不倦的師者風范是我終生學習的楷模,謝謝老師在大的方向上進行指導,感謝老師在課程設計過程中對我的關系圖ER圖的指導,讓我茅塞頓開,雖然有瀏覽器的幫助 ,但是在某些方面老師給的指導更多。教會了我專業知識,教會了我如何學習,教會了我如何做人。正是由于他們,我才能在各方面取得顯著的進步,在此向他們表示我由衷的謝意。?
另外,感謝校方給予我這樣一次機會,能夠獨立地完成一個課程設計,并在這個過程當中,給予我們各種方便,使我們在這學期快要結束的時候,能夠將學到的知識應用到實踐中,增強了我們實踐操作和動手應用能力,提高了獨立思考的能力。?
在這次課程設計的撰寫中,我得到了許多人的幫助。首先我要感謝我的老師在課程設計上給予我的指導、提供給我的支持和幫助,這是我能順利完成這次設計的主要原因,更重要的是老師幫我解決了許多技術上的難題,讓我能把系統做得更加完善。在此期間,我不僅學到了許多新的知識,而且也開闊了視野,提高了自己的設計能力。其次,我要感謝幫助過我的同學,他們也為我解決了不少我不太明白的設計上的難題。?
最后再一次感謝所有在設計中幫助過我的良師益友和同學。?圖書資料管理系統
總結
以上是生活随笔為你收集整理的图书资料管理课程设计(附源码和连接)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: No enclosing instanc
- 下一篇: 连接数据库版本不一致