第一篇:數據庫課程設計 圖書管理系統(精選)
課 程 設 計
軟件工程與數據庫 課程設計 任務書
學院名稱:
數學與計算機學院
課程代碼:_6014419_ 專
業:
年
級:
一、設計題目
圖書管理系統
二、主要內容
一個簡單的圖書管理系統包括圖書館內書籍的信息、學校在校學生的信息以及學生的借閱信息。此系統功能分為面向學生和面向管理員兩部分,其中學生可以進行借閱、續借、歸還和查詢書籍等操作,管理員可以完成書籍和學生的增加,刪除和修改以及對學生,借閱、續借、歸還的確認。如:
圖書室有各種圖書一萬多冊。
每種圖書都有書名、書號(ISBN)、一名或多名作者(譯者)、出版社、定價和內容簡介。
借書證記錄有借閱者的姓名、所在單位、職業等。
憑借書證借書,每次最多能借8本書。借書期限最長為30天。實現新進圖書的數據錄入。
實現對所有購進圖書的分類查詢和分類統計。能夠按書名、作者等分類查詢現有圖書的數量。
記錄借閱者的個人資料和所借圖書的書名、書號數據等。
三、具體要求
1、完成系統的需求分析
通過需求分析確定系統需要處理的數據的需求,要求使用數據庫的輔助設計工具(PowerDesigner等),建立業務處理模型。
課 程 設 計
2、完成系統概念結構設計 概念數據模型(CDM)用于完成數據庫的設計,與人和數據庫平臺和具體數據存儲結構和工具無關。首先選擇局部應用畫出分E-R圖,最終形成系統的E-R圖
3、完成系統邏輯結構設計
按照E-R圖轉換成關系模式的規則,將CDM轉換成邏輯數據模型,并為每個關系模式設計主鍵、外鍵。分析關系模式中的依賴關系,對關系模式規范化處理
4、完成系統物理結構設計
為每個關系分配存儲長度,建立數據庫的索引和視圖,定義關系中的主碼和外碼,寫出關系創建和查詢的SQL語句。
5、編碼 選擇你自己熟悉的開發工具完成一個DBS系統的編碼工作。源代碼格式規范,注釋不少于三分之一
四、主要技術路線提示
1.仔細閱讀設計指導書內容,認真掌握任務要求?2.需求分析? 3.概念結構設計? 4.邏輯結構設計?5.物理結構設計?6.編碼.2.后臺推薦采用SQL server或Oracle;前臺開發環境不限制。可采用ADO,ODBC,OLE DB或JDBC連接數據庫,并調用系統存儲過程、自定義存儲過程、函數等。
五、進度安排
第1周: 數據庫系統概念模型、數據模型設計,創建數據庫以及相關對象; 第2周: 前臺程序開發,撰寫報告,接受檢查。
六、完成后應上交的材料
1. 源程序一份(包含數據庫)
2. 課程設計報告一份
七、推薦參考資料
1.王珊.數據庫系統概論(第四版).高等教育出版社 2.閃四清.數據庫系統原理與應用教程.清華大學出版社
課 程 設 計
3.周龍驤.數據庫管理系統實現技術.中國地質大學出版社 4.張海藩.軟件工程概論.清華大學出版社 5.陳明 編著.實用軟件工程基礎.清華大學出版社
6.成先海.數據庫基礎與應用-SQL SERVER2000.機械工業出版社出版
指導教師 簽名日期 年 月 日 系 主 任 審核日期 年 月 日
第二篇:圖書管理系統數據庫設計
數據庫設計.................................................................2 3.1 專門術語的定義...................................................2 3.1.1 系統中常用的術語(或使用頻率較高的術語).........................2 3.1.2 表格定義及規范.................................................2 3.1.2.1數據約定.....................................................2 3.1.2.2表和表字段命名規范:.........................................3 3.2 數據設計.........................................................3 3.2.1 數據流程圖設計.................................................3 3.2.2實體關系結構設計...............................................4 3.3安全保密設計.....................................................6 3.3.1 邏輯上的安全保密...............................................6 3.3.2 物理上的安全保密...............................................6 3.4 表格與功能模塊相關性分析.........................................7 3.5 表格定義.........................................................7 數據庫設計
3.1 專門術語的定義
暫無
3.1.1 系統中常用的術語(或使用頻率較高的術語)暫無
3.1.2 表格定義及規范 3.1.2.1數據約定
所有數據項都用英文、漢語拼音或縮寫表示,數據庫名稱除外。
所有字段在設計時,除以下數據類型timestamp、image、datetime、smalldatetime、uniqueidentifier、binary、sql_variant、binary、varbinary外,必須有默認值。字符型的默認值為一個空字符值串;數值型的默認值為數值0;邏輯型的默認值為數值0;
其中:系統中所有邏輯型中數值0表示為“假”;數值1表示為“真”。datetime、smalldatetime類型的字段沒有默認值,必須為NULL。當字段定義為字符串形時建議使用varchar而不用nvarchar。建議在大多數表中(如報銷單,申請單),應都有以下字段: 字段名說明類型默認值 CreatorID創建者int CreatedTime創建時間DatetimeNULL 字符集采用 UTF-8,請注意字符的轉換。
所有數據表第一個字段都是系統內部使用自動序列主鍵列,自增字段,不可空,名稱為:id,確保不把此字段暴露給最終用戶。
除特別說明外,所有字符串字段都采用varchar(50)類型,(無論漢字還是英文,都算一個字符)。
除特別說明外,所有小數的字段都采用 decimal(18,2)的形式表達。
除特別說明外,所有日期格式都采用 datetime 格式(根據需要提取時間格式); 除特別說明外,所有整形都采用 bigint 格式。除特別說明外,所有字段默認都設置為 null。3.1.2.2表和表字段命名規范:
命名規則約束的范圍包括:數據庫的命名、表的命名及字段的命名。數據庫相關的命名規則采用與通常的編程的變量命名規則原則一致,具體要求如下: 1)字段名及表名為典型的名詞結構; 2)中文名稱要求語言精練、文法嚴謹;
3)望文知意、易懂易用,禁止采用如:A002這種命名;
4)主體采用拼音字母的首寫字母拼寫構成,基于慣常法可適度采用無詞義歧義性的英文命名;
5)長度不少于3個字母,不大于12個字母;
6)在對于拼音首字母類似的字段和表,為區別,添加下劃線和數字如男性人數:NXRS,女性人數:NXRS_2。
3.2 數據設計
繪制數據流程圖的目的是為了方便開發人員與用戶的交流,以及為系統的設計提供依據。數據流程圖的繪制過程通常采用自頂向下,逐層分解,直到功能細化為止,形成若干層次的數據流程圖。3.2.1 數據流程圖設計
0層數據流圖
1層數據流圖
3.2.2實體關系結構設計
圖書實體關系
讀者實體關系
圖書借閱關系實體
用戶實體關系
圖書類別實體關系
3.3安全保密設計
3.3.1 邏輯上的安全保密
1、系統對非法使用者的安全保密處理措施
2、系統對正常使用者的安全保密處理措施
3、系統對管理員的安全保密 3.3.2 物理上的安全保密
1、數據庫系統異常時的還原處理措施
2、設備遭異常毀壞時的安全防護措施
3、數據參數做到及時更新,保證系統正常運行
3.4 表格與功能模塊相關性分析
3.5 表格定義
a.圖書信息表
b.讀者信息表
c.借閱表
d.管理員_書籍
e.管理員_學生
第三篇:圖書管理系統數據庫源代碼
圖書管理系統數據庫源代碼
//創建工程及設計主界面
public class Main extends JFrame { private static final JDesktopPane {
DESKTOP_PANE=new JDesktopPane();
//桌面窗體
} public static void main(String[] args)
//入口方法
{
try
{
UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());//設置系統界面外觀
new BookLogin();
//登錄窗口
}
catch(Exception ex)
{
ex.printStackTrace();
} } public static void addIFame(JInternalFrame iframe)
//添加子窗體的方法
{
DESKTOP_PANE.add(iframe);
//新增子窗體
} public Main(){
super();
//設置“關閉”按鈕處理事件
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
//創建工具欄
Toolkit tool=Toolkit,getDefaultToolkit();
//獲得屏幕大小
Dimension screenSize=tool.getScreenSize();
setSize(800,600);
//設置窗體大小
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2;//設置窗體位置
setTitle(“圖書管理系統”);
//設置窗體標題
JMenuBar menuBar=createMenu();
//創建菜單欄
setJMenuBar(menuBar);
//設置菜單欄
JToolBar toolBar=createToolBar();
//創建工具欄的方法
getContentPane(),add(toolBar,BorderLayout.NORTH);
//設置工具欄
final JLable lable=new JLable();
//創建一個標簽,用來顯示圖片
lable.setBounds(0,0,0,0);
//設置窗體的大小和位置
lable.setIcon(null);
//窗體背景
DESKTOP_PANE.addComponentListener(new ComponentAdapter())
{
public void componentResized(final ComponentEvent e)
{
Dimension size=e.getComponent().getSize();
//獲得組建大小
lable.setSize(e.getComponent().getSize());
//設置標簽大小
lable.setText(“”);
//設置標簽文本,設置窗口背景
}
}
//將標簽添加到桌面窗體
DESKTOP_PANE.add(lable,new Integer(Integer.MIN_VALUE));
getContentPane().add(DESKTOP_PANE);
//將桌面窗體添加到主窗體中
} } private JToolBar createToolBar()
//創建工具欄的方法 { JToolBar toolBar=new JToolBar();
//初始化工具欄
toolBar.setFloatable(false);
//設置是否可以移動工具欄
toolBar.setBorder(new BevelBorder(BevelBorder.RAIZED));
//設置邊框
//圖書信息添加按鈕
JButton bookAddButton=new JButton(MenuActions.BOOK_ADD);ImageIcon icon=new ImageIcon(Main.class.getResource(“/bookAddtb.jpg”));//添加菜單欄圖標
bookAddButton.setIcon(icon);
//設置按鈕圖標
bookAddButton.setHideActionText(true);
//顯示提示文本
toolBar.add(bookAddButton);
//添加到工具欄中
JButton bookModiAndDelButton=new JButton(MenuActions.BOOK_MODIFY);
//圖書信息修改按鈕
ImageIcon bookmodiicon=Icon.add(“bookModiAndDeltb.jpg”);
//創建圖表方法
bookModiAndDelButton.setIcon(bookmodiicon);
//設置按鈕圖標
bookModiAndDelButton.setHideActionText(true);
//顯示提示文本
toolBar.add(bookModiAndDelButton);
//添加到工具欄
JButton bookTypeAddButton=new JButton(MenuActions.BOOKTYPE_ADD);
//圖書類別添加按鈕
ImageIcon bookTypeAddicon=Icon.add(“bookTypeAddtb.jpg”);
//創建圖標方法
bookTypeAddButton.setIcon(bookTypeAddicon);
//設置按鈕圖標
bookTypeAddButton.setHideActionText(true);
//顯示提示文本
toolBar.add(bookTypeAddButton);
//添加到工具欄
JButton bookBorrowButton=new JButton(MenuActions.BORROW);
//圖書借閱按鈕
ImageIcon bookBorrowicon=Icon.add(“bookBorrowtb.jpg”);
//創建圖標方法
bookBorrowButton.setIcon(bookBorrowicon);
//設置按鈕圖標
bookBorrowButton.setHideActionText(true);
//顯示提示文本
toolBar.add(bookBorrowButton);
//添加到工具欄
JButton bookOrderButton=new JButton(MenuActions.NEWBOOK_ORDER);
//新書訂購按鈕
ImageIcon bookOrdericon=Icon.add(“bookOrdertb.jpg”);
//創建圖標方法
bookOrderButton.setIcon(bookOrdericon);
//設置按鈕圖標
bookOrderButton.setHideActionText(true);
//顯示提示文本
toolBar.add(bookOrderButton);
//添加到工具欄
JButton bookCheckButton=new JButton(MenuActions.NEWBOOK_CHECK);
//驗收新書按鈕
ImageIcon bookCheckicon=Icon.add(“newbookChecktb.jpg”);
//創建圖標方法
bookCheckButton.setIcon(bookCheckicon);
//設置按鈕圖標
bookCheckButton.setHideActionText(true);
//顯示提示文本
toolBar.add(bookCheckButton);
//添加到工具欄
JButton readerAddButton=new JButton(MenuActions.READER_ADD);
//讀者信息添加按鈕
ImageIcon readerAddicon=Icon.add(“readerAddtb.jpg”);
//創建圖標方法
readerAddButton.setIcon(readerAddicon);
//設置按鈕圖標
readerAddButton.setHideActionText(true);
//顯示提示文本
toolBar.add(readerAddButton);
//添加到工具欄
JButton readerModiAndDelButton=new JButton(MenuActions.READER_MODIFY);
//讀者信息修改按鈕
ImageIcon readerModiAndDelicon=Icon.add(“readerModiAndDeltb.jpg”);
//創建圖標方法
readerModiAndDelButton.setIcon(readerModiAndDelicon);
//設置按鈕圖標
readerModiAndDelButton.setHideActionText(true);
//顯示提示文本
toolBar.add(readerModiAndDelButton);
//添加到工具欄
JButton ExitButton=new JButton(MenuActions.EXIT);
//退出系統按鈕
ImageIcon Exiticon=Icon.add(“exittb.jpg”);
//創建圖標方法
ExitButton.setIcon(Exiticon);
//設置按鈕圖標
ExitButton.setHideActionText(true);
//顯示提示文本
toolBar.add(ExitButton);
//添加到工具欄
return toolBar;} public class Business { protected static String dbClassName=“com.mysql.jdbc.Driver”;
//數據庫驅動類
protected static String dbUr1=“jdbc:mysql://localhost/ts”;
//連接URL protected static String dbUser=“root”;
//數據庫用戶名
protected static String dbpwd=“root”;
//數據庫密碼
private static Connection conn=null;
//數據庫連接對象,初值為null public Business(){
try
{
if(coon==null)
//連接對象為空
{
Class.forName(dbClassName);
//加載驅動類信息
conn=DriverManager.getConnection(dbUr1,dbUser,dbPwd);
//建立連接對象
}
}
catch(Exception ee)
{
ee.printStackTrace();
} } public static ResultSet executeQuery(String sql)
//執行查詢方法
{
try
{
//如果連接對象為空,則重新調用構造方法
if(conn==null)
{
new Business();
return conn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);
//執行查詢
}
}
catch(SQLException e)
{
e.printStackTrace();
return null;
//返回null值
}
finally
{} } public static int executeUpdata(String sql)
//更新方法
{
try
{
if(conn==null)
{
new Business();
//如果連接對象為空,則重新調用構造方法
return conn.createStatement().executeUpdate(sql);//執行更新
}
}
catch(SQLException e)
{
e.printStackTrace();
return-1;
}
finally
{} } public static void close()
//關閉方法 {
try
{
conn.close();
//關閉連接對象
}
catch(SQLException e)
{
e.printStackTrace();
}
finally
{
conn=null;
//設置連接對象為null值
} } }
//為數據庫添加對應的類 public class BookInfo { private String Book_id;
//圖書編號
private String typeid;
//類別編號
private String writer;
//作者
private String translator;//譯者
private String publisher;
//出版社
private Date date;
//出版日期
private Double price;
//圖書單價
private String getBookname;//圖書名稱
public String getBookname(){
return bookname;} public void setBookname(String bookname){
this.bookname=bookname;} public Date getDate(){
return date;} public void setDate(Date date){
this.date=date;} public string getBook_id()
{ return Book_id;} public void setBook_id(String Book_id){ this.Book_id=Book_id;} public Double getPrice(){ return price;} public void setprice(Double price){ this.price=price;} public String getPublisher(){ return Publisher;} public void setPublisher(String publisher){ this.Publisher=Publisher;} public String getTranslator(){ return translator;} public void setTranslator(String translator){ this.translator=translator;} public String getTypeid(){ return typeid;} public void setTypeid(String typeid){ this.typeid=typeid;} public String getWriter(){ return writer;} public void setWriter(String writer){
this.writer=writer;} } public class BookType
//圖書列表信息類 { private String id;
//圖書類別編號
private String typeName;
//圖書類別名稱
private String days;
//可解天數
private String fk;//每罰款金額
public String getFk(){
return fk;} public void setFk(String fk){
this.fk=fk;} public String getDays(){
return days;} public void setDays(String days){
this.days=days;} public string getId(){
return id;} public void setId(String id){
this.Bid=id;} public String getTypeName(){
return typeName;} public void setTypeName(String typeName){
this.typeName=typeName;} } public class Order
//圖書訂單信息類 {
private String Book_id;
//圖書編號 private Date date;
//下單時間 private String number;
//圖書數量 private String operator;//操作員
private String checkAndAccept;
//是否收到貨 private String zk;
//圖書折扣 public String getcheckAndAccept(){ return checkAndAccept;} public void setcheckAndAccept(String checkAndAccept){ this.checkAndAccept=checkAndAccept;} public Date getDate(){ return date;} public void setDate(Date date){ this.date=date;} public string getBook_id(){ return book_id;} public void setBook_id(String book_id){ this.book_id=book_id;} public String getNumber(){ return number;} public void setNumber(String number){ this.number=number;} public String getOperator(){ return operator;} public void setOperator(String operator){
this.operatorr=operator;
} public String getZk(){
return zk;} public void setZk(String Zk){
this.zk=zk;} } public class Operater { private String id;
//操作員編號
private String name;
//操作員用戶名
private String grade;
//操作員等級
private String password;//操作員密碼
private String type;
//出版社
public String getType(){
return type;} public void setType(String type){
this.type=type;} public string getGrade(){
return grade;} public void setGrade(String grade){
this.grade=grade;} public String getId(){
return id;} public void setId(String id){
this.id=id;} public String getName(){
return name;} public void setName(String name){
this.name=name;} public String getPassword(){
return password;} public void setPassword(String password){
this.password=password;} } public class Borrow
//書籍借閱信息類 { private int id;
//借閱編號
private String book_id;
//圖書編號
private String reader_id;
//讀者編號
private String num;
//借書數量
private String borrowDate;
//借書日期
private String backDate;
//應還日期
private String Bookname;//圖書名稱
public String getBookname(){
return bookname;} public void setBookname(String bookname){
this.bookname=bookname;} public string getBackDate(){
return backDate;} public void setBackDate(String backDate){
this.backDate=backDate;} public string getBorrowDate(){
return borrowDate;} public void setBorrowDate(String borrowDate){
this.borrowDate=borrowDate;} public String getNum(){
return num;} public void setNum(String num){
this.num=num;} public String getBook_id(){
return book_id;} public void setBook_id(String book_id){
this.book_id=book_id;} public String getReader_id(){
return reader_id;} public void setReader_id(String reader_id){
this.reader_id=reader_id;} public int getId(){
return id;} public void setId(Int id){
this.id=id;} } public class Back
//圖書歸還信息類 { private String book_id;
//圖書編號
private String bookname;
//圖書名稱
private String operatorId;
//操作員編號
private String borrowDate;//圖書借閱時間
private String backDate;
//圖書歸還時間 private String readerName;
//讀者姓名 private String reader_id;//讀者編號 private int typeId;private int id; public int getId(){ return id;} public void setId(int id){ this.id=id;} public int getTypeId(){ return typeid;} public void setTypeId(int typeid){ this.typeId=typeId;} public string getBackDate(){ return backDate;} public void setBackDate(String backDate){ this.backDate=backDate;} public String getBookname(){ return bookname;} public void setBookname(String bookname){ this.bookname=bookname;} public string getBorrowDate(){ return borrowDate;} public void setBorrowDate(String borrowDate){ this.borrowDate=borrowDate;} public String getOperatorId(){
return operatorId;} public void setOperatorId(String operatorId){
this.operatorId=operatorId;} public String getBook_id(){
return book_id;} public void setBook_id(String book_id){
this.book_id=book_id;}
public String getReader_id(){
return reader_id;} public void setReader_id(String reader_id){
this.reader_id=reader_id;}
public String getReaderName(){
return readerName;} public void setReaderName(String readerName){
this.readerName=readerName;} }
//系統登錄模塊設計
public class BookLogin extends JFrame { private static final Operater Type=null;
//人員類型
private static Operater user;
//用戶名
private JPasswordField password;private JTextField username;private JButton login;private JButton reset;public BookLogin(){
super();
final BorderLayout borderLayout=new BorderLayout();
//創建布局管理器
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//設置“關閉”按鈕處理事件
borderLayout.setVgap(10);
//設置組件間的垂直關系
getContentPane().setLayout(borderLayout);
//使用布局管理器
setTitle(“圖書管理系統登錄”)
//設置窗體標題
Toolkit tool=Toolkit.getDefaultToolkit();
//獲得默認的工具箱
Dimension screenSize=tool.getScreenSize();//獲得屏幕的大小
setSize(285,194);
setLocation((screenSize.width-getWidth())/2,(screenSize.height-getHeight())/2);//設置窗體位置
final JPanel mainPanel=new JPanel();
//創建主面板
mainPanel.setLayout(new BorderLayout());
//設置邊框布局
mainPanel.setBorder(new EmptyBorder(0,0,0,0))
//設置邊框為0
getContentPane().add(mainPanel);
//在窗體中加入主面板
final JLabel imageLabel=new JLabel;
//創建一個標簽,用來顯示圖片
ImageIcon loginIcon=Icon.add(“login.jpg”);
//創建一個圖像圖標
imagelabel.setIcon(loginIcon);
//設置圖片
imageLabel.setOpaque(true);
//設置繪制其邊界內的所有像素
imageLabel.setBackground(Color.GREEN);
//設置背景顏色
imageLabel.setpreferredSize(new Dimension(260,60));//設置標簽大小
mainPanel.add(imageLabel,BorderLayout.NORTH);
//添加標簽到主面板
final JPanel centerPanel=new JPanel();
//添加一個中心面板
final GridLayout gridLayout=new GridLayout(2,2);//創建網絡布局管理器
gridLayout.setHgap(5);
//設置組件之間平行的距離
gridLayout.setVgap(20);
//設置組件之間垂直的距離
centerPanel.setLayout(gridLayout);
//使用布局管理器
mainPanel.add(centerPanel);
//添加到主桌面
final JLabel userNamelabel=new JLabel();
//創建一個標簽
userNameLabel.setHorizontalAlignment(SwingConstants.CENTER);//設置對齊方式
userNameLabel.setPreferredSize(new Dimension(0,0));
//設置組件大小
userNameLabel.setMinimumSize(new Dimension(0,0));
//設置組件最小的大小
centerPanel.add(userNameLabel);
//添加到中心面板
userNameLabel.setText(“用
戶
名:”);
//設置標簽文本
username=new JTextField(20);
//創建文本框
username.setPreferredSize(new Dimension(0,0));
//設置組件大小
centerPanel.add(username);
//添加到中心面板
final JLabel passwordLabel=new JLabel();
//創建一個標簽
passwordLabel.setHorizontalAlignment(SwingConstants.CENTER);
//設置對齊方式
centerPanel.add(passwordLabel);
//添加到中心面板
passwordLabel.setText(“密
碼:”);
//設置標簽文本
password=new JPasswordField(20);
//創建密碼框
password.setDocument(new Document(6));
//設置密碼長度為6
password.addKeyListener(new KeyAdapter()
//監聽密碼框
{
public void keyPressed(final keyEvent e)
//監聽鍵盤案件事件
{
if(e.getKeyCode()==10)
//如果按了回車鍵
{
login.doClick();
//進行登錄
}
}
})
centerPanel.add(password);
//添加到中心面板
final JPanel southPanel=new JPanel;//新增一個底部面板
mainPanel.add(southPanel,BorderLayout.SOUTH);
//添加到主面板中
login=new JButton();
//創建按鈕組件
login.addActionListener(new BookLoginAtion());
//添加監聽器
login.setText(“登錄”);
//設置按鈕文本
southPanel.add(login);
//把按鈕添加到底部面板
reset=new JButton();
//創建按鈕組件
reset.addActionListener(new BookResetAction());
//添加監聽器
reset.setText(“重置”);
//設置按鈕文本
southPanel.add(reset);
//把按鈕添加到底部面板
setVisible(true);
//設置創建可見
setResizable(false);
//設置窗體不可改變大小
} public static Operater getUser(){
return user;} public static Operater getType(){
return Type;} public static void setUser(Operater user){
BookLogin.user=user;} } private class BookResetAction implements ActionListener { public void actionPerformed(final ActionEvent e){
username.setText(“");//設置用戶名輸入框為空
password.setText(”“);//設置密碼輸入框為空
} } private class BookLoginAction implements ActionListener { public void actionPerformed(final ActionEvent e){
user=Business.check(username.getText(),new String(password.getPassword()));//調用business方法
if(user.getName()!=null)
//判斷用戶名是否為null
{
try
{
Main frame=new Main();
//創建一個主窗體
frame.setVisible(true);
//設置其可見
BookLogin.this.setVisible(false);
//設置登錄窗體為不顯示
}
catch(Exception ex)
{
ex.printStackTrace();
}
}
else
{
JOptionPane.showMessageDialog(null,”請輸入正確的用戶名和密碼!“);//彈出提示框
username.setText(”“);
//設置用戶名輸入框為空
password.setText(”“);
//設置密碼輸入框為空
} } }
//基本信息管理模塊
public class ReaderAdd extends JInternalFrame
//添加讀者信息 { public ReaderAdd(){
super();
setTitle(”讀者相關信息添加“);
setIconifiable(true);
//設置窗體可最小化
setClosable(true);
//設置窗體可關閉
setBounds(100,100,500,350);
final JLabel logoLabel=new JLabel();
ImageIcon readerAddIcon=Icon.add(”readerAdd.jpg“);
logoLabel.setIcon(readerAddIcon);
logoLabel.setOpaque(true);
logoLabel.setBackground(Color.CYAN);
logoLabel.setPreferredSize(new Dimension(400,60));
getContentPane().add(logoLabel,BorderLayout.NORTH);
final JPanel panel=new JPanel();
panel.setLayout(new FlowLayout());
getContentPane().add(panel);
final JPanel panel_1=new JPanel();
final GridLayout gridLayout=new GridLayout(0,4);
gridLayout.setVgap(15);
gridLayout.setHgap(15);
panel_1.setLayout(gridLayout);
panel_1.setPreferredSize(new Dimension(450,200));
panel.add(panel_1);
final JLabel label_2=new JLabel();
label_2.setText(”姓名:“);
panel_1.add(label_2);
readername=new JTextField();
readername.setDocument(new Document(10));
panel_1.add(readername);
final JLabel label_3=new JLabel();
public void actionPerformed(final ActionEvent e)
{
Check validator=new Check();
//校驗類
String zj=String.valueof(comboBox.getSelectedIndex());
String id=read_id.getText().trim();
Vector v1=new Vector();
v1.clear();
v1.add(”reader“);
//讀取配置文件中相應的查詢語句
v1.add(id);
if(l==validator.Validate(V1))
//檢查是否存在該讀者
{
JOptionPane.showMessageDialog(null,”添加失敗,該讀者編號已存在!“);
}
else
{
Int i=Business.InsertReader(readername.getText().trim(),sex.trim(),age.getText().trim(),zjnumber.getText().trim(),Date.valueOf(date.getText().trim()),maxnumber.getText().trim().tel.getText().trim(),Double.valueof(keepmoney.getText().trim()),zj,zy.getText().trim(),Date.valueOf(bztime.getText().trim()),read_id.getText().trim());
if(i==1)
{
JOptionPane.showMessageDialog(null,”添加成功!“);
doDefaultCloseAction();
}
}
}
}
class TelListener extends KeyAdapter
{ public void keyTyped(KeyEvent e){
String numStr=”0123456789-“+(char)8;
//類型轉換
if(numStr.indexOf(e.getKeyChar())<0)
{
e.consume();
} }
}
//添加“關閉”按鈕的事件監聽器
class CloseActionListener implements ActionListener
{
public void actionPerformed(final ActionEvent e)
{
doDefaultCloseAction();
}
}
private String[] columnNames(”名稱“,”性別“,”年齡“,”證件號碼“,”借書證有效日期“,”借書量“,”電話“,”押金“,”證件“,”職業“,”讀者編號“,”辦證時間“);
private String[] array=new String[]{”身份證“,”軍人證“,”學生證“};
String id;
private Object[][] getFileStates(List list)
{
Object[][]results=new Object[list.size()][columnNames.length];
for(int i=0;i { Reader reader=(Reader)list.get(i); result[i][0]=reader.getName(); //定義二維數組 String sex; if(reader.getSex().equals(”1“)) { sex=”男“; } else { sex=”女“; } results[i][1]=sex; //讀取讀者歌屬性值 results[i][2]=reader.getAge(); results[i][3]=reader.getIdentityCard(); results[i][4]=reader.getDate(); results[i][5]=reader.getMaxNum(); results[i][6]=reader.getTel(); results[i][7]=reader.getKeepMoney(); results[i][8]=array[reader.getZj()]; results[i][9]=reader.getZy(); results[i][10]=reader.getBook_id(); results[i][11]=reader.getBZtime(); } return results; } //圖書類別管理 //添加圖書信息 utton.addActionListener(new ActionListener() { public void actionPerformed(final ActionEvent e) { if(bookTypeName.getText().length()==0) { JOptionPane.showMMessageDialog(null,”圖書類別文本框不可為空“); return; } if(days.getText().length()==0) { JOptionPane.showMessageDialog(null,”可借天數文本框不可為空“); return; } if(!check.isNumeric(days.getText().trim())) { JOptionPane.showMessageDialog(null,”可借天數必須為數字“); return; } if(fakuan.getText().length()==0) { JOptionPane.showMessageDialog(null,”罰款文本框不可為空“); return; } if(!check.isNumeric(fakuan.getText().trim())) { JOptionPane.showMessageDialog(null,”罰款必須為數字“); return; } int i=Business.InsertBookType(bookTypeName.getText().trim(),days.getText().trim(),Double.valueof(fakuan.getText.trim())/10); if(i==1) { JOptionPane.showMessageDialog(null,”添加成功!“); doDefaultCloseAction(); } } }); panel_6.add(button); final JButton buttonDel=new JButton(); buttonDel.setText(”關閉“); buttonDel.addActionListener(new ActionListener(){ public void actionPerformed(final ActionEvent e){ doDefaultCloseAction(); } }); panel_6.add(buttonDel); setVisibel(true);} //修改圖書類 class ButtonAddListener implements ActionListener{ public void actionPerformed(ActionEvent e){ Object selectedItem=bookTypeModel.getSelectedItem(); int i=Business.UpdatebookType(BookTypeId.getText().trim(),selectedItem.toString(),days.getText().trim(),fk.getText().trim()); if(i==1) { JOptionPane.showMessageDialog(null,”修改成功"); object[][] results=getFileStates(Business.selectBookCategory()); model.setDataVector(results.columnNames); } } } table.setModel(model); 請設計圖書管理系統數據庫,要求能滿足讀者的注冊、注銷、個人信息修改、圖書的入庫、圖書報廢、圖書的借閱、歸還、續約、滯納金賠償、損壞賠償功能 系統中至少包含如下信息: 讀者姓名、id、性別、學歷(初等、中等、高等)、年齡、職業類別、圖書id、圖書名稱、圖書類別(基礎類、科技類、文史類、社會科學、自然科學)、圖書書齡、所屬出版社、圖書價格、圖書是否完好、圖書借閱人、借閱起始時間、圖書借閱時長、圖書續約(最多可連續續約3次)、圖書是否已歸還、圖書是否已損壞,讀者注冊級別(分普通讀者和vip讀者,普通讀者同時可以借閱2本書,vip讀者可以同時借閱5本書)。 圖書系統中,相同的書籍可以不止一本,讀者可以同名。一次借閱期限一個月(30天),一次續約延長一個月。過期后每超出一天須繳納滯納金一元。圖書損毀后就被報廢。 1、請用完整、連續的SQL語句設計數據庫和表,請根據情理和場景設計各類約束。 2、請查詢‘計算機導論’這本書籍的被借閱次數。 3、請查詢借書證號為11的讀者歷年來的借閱次數(不包括續約)。 4、請用一條或者多條語句查詢‘計算機導論’這本書籍當前是否可以借閱。 5、請找出最熱門的書籍名稱(總共借閱次數)。 6、請找出學歷中等或中等以上人員關注度比中等以下人員關注度高的書籍。 7、請查詢‘王小東’當前可以借閱多少本書。 8、請查詢‘王小東’當前共須繳納多少滯納金。 9、請統計各職業類別人員的借閱次數。 10、請查閱哪個出版社的書籍借閱頻率最高(可以考慮按進行統計)。 11、檢索學歷比‘王小東’高,年齡比‘王小東’大,而借閱次數比他少的讀者id。 12、請查詢至少關注過圖書類別中3個類別的讀者id。 13、請查詢‘計算機導論’書籍在各個學歷階層的借閱次數。 14、請將“根據借書證查詢所借閱書籍編號和名稱”這樣的行為以存儲過程加以實現。 學籍管理系統 本次數據庫課程設計是以Access數據庫作為后臺以VB作為前臺的應用型設計課程。 綜合我們所學的兩大課程創建應用型的數據庫系統,大大的提高了我們學生的動手能力,作到了理論與實踐相結合。一.題目說明: 學生學藉管理系統是典型的學藉管理系統(MIS),其開發主要包括后臺數據庫的建立和維護以及前端應用程序的開發兩個方面。對于前者要求建立起數據一致性和完整性強、數據安全性好的庫。而對于后者則要求應用程序功能完備,易使用等特點。 本系統主要完成對學生情況和學生成績的管理,包括數據庫中表的添加、刪除等。系統還可以完成對各類信息的瀏覽、添加、刪除、等功能。 系統的核心是數據庫中各個表聯系,每一個表的修改都將聯動的影響其它的表,當完成對數據的操作時系統會自動地完成數據庫的修改。查詢功能也是系統的核心之一,在系統中即有單條件查詢和多條件查詢,也有精確查詢和模糊查詢,系統不僅有靜態的條件查詢,也有動態生成的條件查詢,其目的都是為了方便用戶使用。系統有完整的用戶添加、刪除和密碼修改功能,并具備報表打印功能。關鍵字:窗體、數據庫、vb6.0、access2000。 學生學籍管理系統被廣泛應用于各類學校的學生學籍管理工作中,要求其具有實用性強、使用方便、效率高和安全可靠等特點。本管理系統正是圍繞以上幾個方面進行開發的,在開發過程中充分考慮到本系統的應用特點,并進行了大量的檢驗,證明其的確達到了設計的要求,是一個已具備了實際應用能力的軟件。本文主要論述學生學籍管理系統的開發過程,在涉及到VB及Access中的部分知識以舉例的方式進行講解 二.總體設計: 我的總體設計如下: (1).利用Access建立數據庫,并在該數據庫下創建五張表格,分別是學生表、課程表、選課表、學生選課表以及口令表。 (2)利用VB來建立界面并對它進行設計和修改,大體框架如下: FORM1 用于首界面 FORM2 用于登陸此系統的登錄界面 FORM3 是主窗體,在這上面建立相應的菜單 如:文件——退出、添加用戶(FORM4)數據信息——管理使用(FORM5) 基本操作——學生操作、選課操作、課程操作(FORM6、FORM7、FORM8)(3)對以上的界面進行設計以及對所要操作的部件進行編程。 三.常用控件的說明: 所有的Windows應用程序窗口或對話框,都是由諸如文本框、列表框、命令按扭、滾動條、命令菜單等組成的。VB通過控件工具箱提供了它們與用戶進行交 互的可視化部件,即控件。程序開發人員只需要通過簡單的操作,在窗體上安排所需要的控件,完成應用程序的用戶界面設計即可。序號 名稱 功能 Label標簽 用于說明 Textbox文本框 用于文本輸入或顯示 3 Frame框架 用于組合控件 Commandbutton命令按扭 單擊執行命令 5 Timer計時期 用于定時 Data數據控件 用于訪問數據庫 三.詳細說明: 1.數據庫的建立與設計: 數據庫是有結構的數據集合,它與一般的數據文件不同,(其中的數據是無結構的)是一串文字或數字流。數據庫中的數據可以是文字、圖象、聲音等。 Access數據庫由六種對象組成,它們是表、查詢、窗體、報表、宏和模塊。 (1).表(Table)——表是數據庫的基本對象,是創建其他5種對象的基礎。表由記錄組成,記錄由字段組成,表用來存貯數據庫的數據,故又稱數據表。 (2).查詢(Query)——查詢可以按索引快速查找到需要的記錄,按要求篩選記錄并能連接若干個表的字段組成新表。 (3).窗體(Form)——窗體提供了一種方便的瀏覽、輸入及更改數據的窗口。還可以創建子窗體顯示相關聯的表的內容。窗體也稱表單。 (4).報表(Report)——報表的功能是將數據庫中的數據分類匯總,然后打印出來,以便分析。 (5).宏(Macro)——宏相當于DOS中的批處理,用來自動執行一系列操作。Access列出了一些常用的操作供用戶選擇,使用起來十分方便。 (6).模塊(Module)——模塊的功能與宏類似,但它定義的操作比宏更精細和復雜,用戶可以根據自己的需要編寫程序。模塊使用Visual Basic編程。 我們利用Access來建立數據庫,我們的庫中有五張表格,其分別是學生表、課程表、選課表、學生選課表以及口令表。 我們就以學生表為例做一個簡單的說明: 我們使用設計器來創建表的,我的這張表有七個字段,每個字段的名稱分別是:學號、班級、姓名、性別、出生年月、民族、地址、電話號碼,每個字段有七個數據。我并對其字段的屬性進行了重新的修改,以做到不浪費其空間。 我具體的實施步驟是:啟動數據庫管理器——建立數據庫——建立數據表結構——輸入記錄。 最終產生了這樣的一個數據庫:(如下) 2.VB界面的建立設計以及程序的編寫說明: VB 是在Windows操作平臺下,用于開發和創建具有圖形用戶界面的應用程序的強有力工具之一。VB為開發Windows應用程序不僅提供了全新的相對簡單的方式,而且也引進了新的程序設計方法——面向對象的設計方法(00P)。從傳統的面向過程的程序設計,轉移到更先進的面向對象的程序設計,無論是對老的程序員,還是初學者,都是一個挑戰。而學習VB,則是掌握這一新的程序設計方法的一條捷徑。 (1).界面的設計和程序的編寫: 設計一個像這樣的友好的界面,我考慮到它的顏色的配制,界面的大小,界面所載的內容的多少等,在后臺我用定時器給其限定時間讓它在一定的時間后自動跳到下一個界面。 這個界面是系統的主界面,用戶可以在通過系統登錄后直接到我們的主界面上來進行相應的操作,我的主界面采用的是一張蘇州市職業大學的圖片,在這個圖片的上面有三個菜單,分別是文件、數據信息和基本操作。在各自的下面還有與之相對應的子菜單,文件下有退出和添加用戶,數據信息下有管理使用,基本操作下有學生操作、選課操作和課程操作。我利用FORMn.SHOW命令連接到相對應的界面上。 我們的界面有好幾張我就對其中的一張進行詳細的分析: 這是一張學生選課瀏覽表的界面,這也是對應我的主界面菜單中的數據信息下的管理使用子菜單的一張界面,在這張界面中包含了8個LABEL標簽控件、7個 TEXTBOX文本框控件、6個COMMANDBUTTON命令按扭控件、1個FRAME框架控件和1個DATA部件。我利用DATA部件將界面與 ACCESS數據庫相連接,具體的操作是利用DATABASENAME與數據庫連接,在RECORDSOURCE中找到與之對應的表,再用 DATASOURCE、DATAFIELD與個文本框內容對應,從而實現界面與數據庫的連接。下面是程序的編寫過程: 顯示前一個數據: COMMAND1: Private Sub Command1_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” Else If Data1.Recordset.BOF Then Data1.Recordset.MoveFirst MsgBox “這是第一條記錄!” Else Data1.Recordset.MovePrevious If Data1.Recordset.BOF = True Then Data1.Recordset.MoveFirst MsgBox “這是第一條記錄!” End If End If End If End Sub 顯示第一個數據: COMMAND2: Private Sub Command2_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” Else Data1.Recordset.MoveFirst End If End Sub 顯示最后一個數據: COMMAND4: Private Sub Command4_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” Else Data1.Recordset.MoveLast End If End Sub 顯示后一個數據: COMMAND3: Private Sub Command3_Click()If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄” Else If Data1.Recordset.EOF Then Data1.Recordset.MoveLast MsgBox “這是最后一條記錄!” Else Data1.Recordset.MoveNext If Data1.Recordset.EOF = True Then Data1.Recordset.MoveLast MsgBox “這是最后一條記錄!” End If End If End If End Sub 添加一個數據:COMMAND6 Private Sub command6_Click()If Command6.Caption = “添加” Then Command1.Enabled = 0 Command2.Enabled = 0 Command3.Enabled = 0 Command4.Enabled = 0 Command6.Caption = “確定” Command5.Caption = “放棄” If Data1.Recordset.RecordCount > 0 Then Data1.Recordset.MoveLast End If Data1.Recordset.AddNew Text1.SetFocus Else Command1.Enabled =-1 Command2.Enabled =-1 Command3.Enabled =-1 Command4.Enabled =-1 Command6.Caption = “添加” Command5.Caption = “刪除” Text2.Enabled = 0 Text5.Enabled = 0 Text3.Enabled = 0 Text4.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Data1.Recordset.Update Command1.SetFocus End If End Sub 刪除一個記錄:COMMAND5 Private Sub Command5_Click()If Command5.Caption = “放棄” Then Command4.Enabled =-1 Command5.Enabled =-1 Command6.Enabled =-1 Command3.Enabled =-1 Command1.Caption = “添加” Command2.Caption = “刪除” Text2.Enabled = 0 Text5.Enabled = 0 Text6.Enabled = 0 Text7.Enabled = 0 Text1.Enabled = 0 Else If Data1.Recordset.RecordCount = 0 Then MsgBox “沒有記錄”, 32, “注意” Exit Sub Else str1 = MsgBox(“刪除該記錄嗎?”, 17, “刪除”)If str1 = 1 Then Data1.Recordset.Delete Data1.Refresh If Data1.Recordset.RecordCount = 0 Then MsgBox “記錄數為零” Data1.Recordset.AddNew End If End If End If End If End Sub 四、在此過程中遇到的問題以及解決方法: 在開始編寫程序的時候總是有一些出錯,在查找有關書籍和向老師詢問后得出了結果。在將界面與數據庫相連接的時候,不知道用哪種方法,在老師的幫助下我學會了兩種方法:1.DATA、2.ADODC。我最終使用DATA這種方法。 五、心得體會: 在這次的設計過程中,我學到的不僅是知識,我還認識到許多事情。這次設計使我的編程水平提高了一大步,使我充分的認識到合作的可貴。由于這次設計涉及到數據庫,我的學到了不少編程工具與數據庫連接的知識,對數據庫的操作有了進一步的了解。這次設計對我的綜合能力是一次很好的鍛煉,但是我必須承認自己的能力和知識還很膚淺。所以今后我的學習道路還是很漫長的。最后,在這里我要衷心的感謝我們的指導老師牛麗、程淵,謝謝她的悉心指導和熱心幫助。由于我水平有限,加之時間短暫,故學籍管理系統中還有許多不足之處,請老師批評指正,我會在以后的制作中不斷改進,不斷完善。第四篇:數據庫圖書管理系統題目
第五篇:數據庫課程設計學籍管理系統