图书借阅子系统数据库设计安良

课程名称:数据库原理名称:图书借阅子系统数据库设计

指导教师评定:签名:

一、项目环境

1.Windows2000或以上版本;

2.SQLServer2005或以上版本。

二、项目目的

掌握数据库设计的基本方法,了解C/S与B/S结构应用系统的特点与适用场合,了解C/S与B/S结构应用系统的不同开发设计环境与开发设计方法,综合运用前面实验掌握的数据库知识与技术设计某小型数据库应用系统。

三、项目要求

完成实验指导书中p255(2)。

四、项目设计开发过程及参考源代码

1、需求分析

功能需求:

1.浏览功能

列出当前数据文件中的图书信息,读者信息,借阅信息,还书信息等记录

2.查询功能

书目匹配查询

读者匹配查询

书目和读者匹配查询

3.添加功能

添加书目和读者记录及借还书记录

4.修改功能

5.删除功能

性能需求:

1.数据精确度

保证查询的查全率和查准率为100%,所在相应域中包含查询关键字的记录都能查到,所有在相应域中不包含查询关键字的记录都不能查到。

2.适应性

满足运行环境在允许操作系统之间的安全转换和与其他应用软件的独立运行要求。

2、数据库概念结构设计

概念模型如下:

3、数据库逻辑结构设计

借书证表stu:

属性名

类型

备注

姓名sna

Varchar(20)

不允许空

系别sde

专业ssp

学号sid

不允许空,唯一

性别sex

Varchar(2)

男或女不允许空

借书上限sup

Int

4

借书证号sno

主键

联系方式ste

能否借书scan

Varchar(5)

能或不能

图书表book1:

书名bna

Varchar(50)

类型bki

出版社bpu

出版日期bda

存放位置bpl

存放数量bum

大于0

图书详细表book2:

借阅状态byn

已借或未借不允许空

书编号bno

图书借阅表lend:

属性

Datetime

借书期限lda

62

允许空

超期处罚表punishment:

罚款金额pmo

Money

管理人员表manager:

账号mno

姓名mna

密码mpa

4、表及视图的创建代码

创表:

createtablestu

(

snovarchar(20)primarykey,

snavarchar(20)notnull,

sdevarchar(20)notnull,

sspvarchar(20)notnull,

sidvarchar(20)notnullunique,

sexvarchar(2)check(sex='男'orsex='女')notnull,

supintdefault(4)notnull,

stevarchar(20)notnull,

scanvarchar(5)check(scan='能'orscan='不能')notnull,

);

createtablebook1

bnavarchar(50)primarykey,

bkivarchar(20)notnull,

bpuvarchar(50)notnull,

bdavarchar(20)notnull,

bplvarchar(20)notnull,

bnumintcheck(bnum>=0)

createtablebook2

bnovarchar(20)primarykey,

bnavarchar(50)notnull,

bynvarchar(5)check(byn='已借'orbyn='未借')notnull

createtablemanager

mnovarchar(20)primarykey,

mnavarchar(20)notnull,

mpavarchar(20)notnull

createtablelend

snovarchar(20),

bnavarchar(20),

bnovarchar(20),

lboDatetimenotnull,

ldaintdefault(62),

lreDatetime,

primarykey(sno,bno),

foreignkey(sno)referencesstu(sno),

foreignkey(bno)referencesbook2(bno),

createtablepunishment

pdaintnotnull,

pmomoneynotnull,

创建视图:

createviewFind_Book1

as

select*

frombook1

wherebnum>0;

createviewFind_Book2

frombook2

wherebyn='未借';

/*插入数据

insertintobook1(bna,bki,bpu,bda,bpl,bnum)

values('数据库系统概论','数据库','高等教育出版社','2020年4月','A-1-3',3);

values('Java程序设计','编程语言','机械工业出版社','2020年11月','B-2-4',2);

values('Java程序设计2','编程语言','机械工业出版社','2020年11月','B-2-4',1);

insertintobook2(bno,bna,byn)

values('000001','数据库系统概论','未借');

values('000002','数据库系统概论','未借');

values('000003','数据库系统概论','未借');

values('000004','Java程序设计','未借');

values('000005','Java程序设计','未借');

values('000006','Java程序设计2','未借');

insertintostu(sno,sna,sde,ssp,sid,sex,sup,ste,scan)

values('000001','张三','软件','物联网工程','19207201','男','4','13109876543','能');

values('000002','李红','软件','软件工程','19201601','女','4','13199999999','能');

values('000003','王五','软件','软件工程','19201602','男','4','13188888888','能');

*/

5、存储过程和触发器的设计

借书触发器:

createtriggert_lend

onlendforinsert

declare@bnavarchar(50),@bnovarchar(20),@snovarchar(20)

select@bna=bna,@bno=bno,@sno=snofrominserted

begin

updatebook1setbnum=bnum-1wherebna=@bna

updatebook2setbyn='已借'wherebno=@bno

updatestusetsup=sup-1wheresno=@sno

End

例子:

insertintolend(sno,bna,bno,lbo)

values('000001','数据库系统概论','000001','2005-12-1623:32:48')

还书触发器:

createtriggert_back

onlendforupdate

asifupdate(lre)

updatebook1setbnum=bnum+1wherebna=@bna

updatebook2setbyn='未借'wherebno=@bno

updatestusetsup=sup+1wheresno=@sno

updatelend

setlre='2006-3-1623:32:48'

wherebno='000001'andsno='000001'

罚款触发器:

createtriggert_punish

ifupdate(lre)

declare@lredatetime,

@lbodatetime,

@ldaint,

@pdaint,

@daysint,

@pmomoney,

@snovarchar(20),

@bnovarchar(20)

select@lre=lrefrominserted

select@lbo=lbofrominserted

select@lda=ldafrominserted

select

@days=convert(int,@lre)-convert(int,@lbo)

select@sno=snofrominserted

select@bno=bnofrominserted

if@days>@lda

select@pda=@days-@lda

select@pmo=@pda*0.02

insertinto

punishment(sno,bno,pda,pmo)

values(@sno,@bno,@pda,@pmo)

end

上个还书的例子已经超时,结果如下:

是否能借书触发器:

createtriggert_ifcanlend

declare@snovarchar(10),

@scanvarchar(5),

@supint

select@scan=scan,@sup=supfromstuwheresno=@sno

if@scan='不能'

print'您有超期罚款!'

rollbacktransaction

if@sup<0

print'超过最大借书上限!'

是否能删除书籍:

createtriggert_deletebook

onbook1fordelete

declare@bnavarchar(20),

select@bna=bnafromdeleted

select@bno

frombook1,book2

wherebook1.bna=book2.bnaandbook1.bna=@bnaandbook2.byn='已借';

if@bnoisnull

print'还有未归还的书籍!'

values('000001','Java程序设计2','000006','2006-12-1623:32:48');

deletefrombook1wherebna='Java程序设计2';

存储过程:

借书:

createprocedurep1

@bnavarchar(20),

@bnovarchar(20),

@lbodatetime

lend(sno,bna,bno,lbo)

values(@sno,@bna,@bno,@lbo)

还书:

createprocedurep2

@lredatetime

updatelendsetlre=@lrewheresno=@snoandbno=@bno

查询书:

createprocedurep3

@bnavarchar(50)

wherebna=@bna

查询学生正在借阅书籍的信息:

createprocedurep4

@snovarchar(50)

fromlend,book2

wheresno=@snoandbook2.byn='已借'andlend.bno=book2.bno

6、前台系统连接数据库代码

1.学生的增删:

package图书管理系统;

importjava.awt.*;

importjava.awt.event.*;

importjavax.swing.*;

importjava.sql.*;

publicclassUserAdd

extendsJFrame

implementsActionListener{

DataBaseManagerdb=newDataBaseManager();

ResultSetrs;

Containerc;

JPanelpanel1,panel2;

JLabeluser_ID_Label,userLabel,passwordLabel,passwordConfirmLabel,loginPrivelegeLabel;

JTextFielduser_ID_TextField,userTextField;

JPasswordFieldpasswordTextField,passwordConfirmTextField;

JComboBoxloginPrivelegeComboBox;

JButtonaddBtn,cancelBtn;

publicUserAdd(){

super("添加用户");

c=getContentPane();

c.setLayout(newBorderLayout());

user_ID_Label=newJLabel("用户ID",JLabel.CENTER);

userLabel=newJLabel("用户名",JLabel.CENTER);

passwordLabel=newJLabel("密码",JLabel.CENTER);

passwordConfirmLabel=newJLabel("确认密码",JLabel.CENTER);

user_ID_TextField=newJTextField(25);

userTextField=newJTextField(25);

passwordTextField=newJPasswordField(25);

passwordConfirmTextField=newJPasswordField(25);

loginPrivelegeComboBox=newJComboBox();

loginPrivelegeComboBox.addItem("系统管理员");

loginPrivelegeComboBox.addItem("书籍管理员");

loginPrivelegeComboBox.addItem("学生");

addBtn=newJButton("添加");

cancelBtn=newJButton("取消");

addBtn.addActionListener(this);

cancelBtn.addActionListener(this);

panel1=newJPanel();

panel1.setLayout(newGridLayout(5,2));

panel1.add(user_ID_Label);

panel1.add(user_ID_TextField);

panel1.add(userLabel);

panel1.add(userTextField);

panel1.add(passwordLabel);

panel1.add(passwordTextField);

panel1.add(passwordConfirmLabel);

panel1.add(passwordConfirmTextField);

panel1.add(loginPrivelegeLabel);

panel1.add(loginPrivelegeComboBox);

c.add(panel1,BorderLayout.CENTER);

panel2=newJPanel();

panel2.add(addBtn);

panel2.add(cancelBtn);

c.add(panel2,BorderLayout.SOUTH);

setSize(300,300);

}

publicvoidactionPerformed(ActionEvente){

if(e.getSource()==cancelBtn){

db.closeConnection();

this.dispose();

elseif(e.getSource()==addBtn){

try{

StringstrSQL="select*fromuserTablewhereuserName='"+

userTextField.getText().trim()+"'";

if(userTextField.getText().trim().equals("")){

JOptionPane.showMessageDialog(null,"用户名不能为空!");

elseif(newString(passwordTextField.getPassword()).trim().equals("")){

JOptionPane.showMessageDialog(null,"密码不能为空!");

elseif(!newString(passwordTextField.getPassword()).trim().equals(

newString(passwordConfirmTextField.getPassword()).trim())){

JOptionPane.showMessageDialog(null,"两次输入的密码不一致!");

else{

if(db.getResult(strSQL).first()){

JOptionPane.showMessageDialog(null,"此用户已经存在,请重新输入用户名!");

strSQL="insertintouserTablevalues('"+

user_ID_TextField.getText().trim()+"','"+

userTextField.getText().trim()+"','"+

newString(passwordTextField.getPassword()).

trim()+"','"+loginPrivelegeComboBox.getSelectedItem()+

"')";

rs=db.getResult(strSQL);

JOptionPane.showMessageDialog(null,"添加用户成功!");

catch(SQLExceptionsqle){

System.out.println(sqle.toString());

catch(Exceptionex){

System.out.println(ex.toString());

publicclassUserDelete

JLabeluserLabel,passwordLabel;

JTextFielduserTextField;

JPasswordFieldpasswordTextField;

JButtonyesBtn,cancelBtn;

publicUserDelete(){

super("删除用户");

yesBtn=newJButton("确定");

yesBtn.addActionListener(this);

panel1.setLayout(newGridLayout(2,2));

panel2.add(yesBtn);

elseif(e.getSource()==yesBtn){

char[]password=passwordTextField.getPassword();

StringpasswordSTR=newString(password);

userTextField.getText().trim()+"'andpassword='"+

passwordSTR+"'";

elseif(passwordTextField.equals("")){

elseif(db.getResult(strSQL).first()){

strSQL="deleteuserTablewhereusername='"+

db.getResult(strSQL);

JOptionPane.showMessageDialog(null,"删除成功!");

JOptionPane.showMessageDialog(null,"不存在此用户或者密码错误!");

2.借书还书:

importjavax.swing.table.*;

importjava.util.Vector;

publicclassBorrowBookList

/**

*

privatestaticfinallongserialVersionUID=1L;

JLabelbookNameLabel,studentNameLabel;

JTextFieldbookNameTextField,studentNameTextField;

JButtonsearchBtn,exitBtn;

JTabletable=null;

DefaultTableModeldefaultModel=null;

publicBorrowBookList(){

super("借阅信息查询!");

bookNameLabel=newJLabel("书名",JLabel.CENTER);

studentNameLabel=newJLabel("借阅者",JLabel.CENTER);

bookNameTextField=newJTextField(15);

studentNameTextField=newJTextField(15);

searchBtn=newJButton("查询");

exitBtn=newJButton("退出");

searchBtn.addActionListener(this);

exitBtn.addActionListener(this);

Boxbox1=Box.createHorizontalBox();

box1.add(studentNameLabel);

box1.add(studentNameTextField);

box1.add(searchBtn);

Boxbox2=Box.createHorizontalBox();

box2.add(bookNameLabel);

box2.add(bookNameTextField);

box2.add(exitBtn);

BoxboxH=Box.createVerticalBox();

boxH.add(box1);

boxH.add(box2);

boxH.add(Box.createVerticalGlue());

panel1.add(boxH);

String[]name={

"借阅者ID","借阅者","书籍ID","书名","借阅日期","还入日期","备注"};

String[][]data=newString[0][0];

defaultModel=newDefaultTableModel(data,name);

table=newJTable(defaultModel);

table.setPreferredScrollableViewportSize(newDimension(600,120));

JScrollPanes=newJScrollPane(table);

panel2.add(s);

c.add(panel1,BorderLayout.NORTH);

if(e.getSource()==exitBtn){

elseif(e.getSource()==searchBtn){

//StringstrSQL=

//"selectstudentname,bookname,borrowdate,returndate,comfrombookbrowse";

StringstrSQL=

"selectID,Username,BookID,BookName,borrowdate,returndate,comfromStudent_Borrow";

StringstrSql=null;

if(studentNameTextField.getText().trim().equals("")&&

bookNameTextField.getText().trim().equals("")){

strSql=strSQL;

elseif(studentNameTextField.getText().trim().equals("")){

strSql=strSQL+"whereBookName='"+

bookNameTextField.getText().trim()+"'";

elseif(bookNameTextField.getText().trim().equals("")){

strSql=strSQL+"whereUsername='"+

studentNameTextField.getText().trim()+"'";

studentNameTextField.getText().trim()+"'andbookName='"+

//首先要删除table中的数据:

introwCount=defaultModel.getRowCount()-1;//取得table中的数据行;

intj=rowCount;

for(inti=0;i<=rowCount;i++){

defaultModel.removeRow(j);//删除rowCount行的数据;

defaultModel.setRowCount(j);//重新设置行数;

j=j-1;

rs=db.getResult(strSql);

while(rs.next()){

Vectordata=newVector();

data.addElement(rs.getString(1));

data.addElement(rs.getString(2));

data.addElement(rs.getString(3));

data.addElement(rs.getString(4));

data.addElement(rs.getString(5));

data.addElement(rs.getString(6));

data.addElement(rs.getString(7));

defaultModel.addRow(data);

table.revalidate();

publicclassReturnBook

JLabelreturnedBookStudentLabel,returnedBookNameLabel,

returnedDateLabel,returnedCommentLabel;

JTextFieldreturnedBookStudentTextField,

returnedDateTextField,returnedCommentTextField;

JButtonclearBtn,yesBtn,cancelBtn;

JComboBoxbookNameComboBox=newJComboBox();

publicReturnBook(){

super("书籍还入");

returnedBookStudentLabel=newJLabel("还书者姓名",JLabel.CENTER);

returnedBookNameLabel=newJLabel("书名",JLabel.CENTER);

returnedDateLabel=newJLabel("日期",JLabel.CENTER);

returnedCommentLabel=newJLabel("备注",JLabel.CENTER);

returnedBookStudentTextField=newJTextField(15);

returnedDateTextField=newJTextField(15);

returnedCommentTextField=newJTextField(15);

Strings="";

StringstrSQL="selectbookNamefrombookBrowsewhereis_returned='否'";

bookNameComboBox.addItem(rs.getString(1));

panel1.setLayout(newGridLayout(4,2));

panel1.add(returnedBookStudentLabel);

panel1.add(returnedBookStudentTextField);

panel1.add(returnedBookNameLabel);

panel1.add(bookNameComboBox);

panel1.add(returnedDateLabel);

panel1.add(returnedDateTextField);

panel1.add(returnedCommentLabel);

panel1.add(returnedCommentTextField);

panel2.setLayout(newGridLayout(1,3));

clearBtn=newJButton("清空");

clearBtn.addActionListener(this);

panel2.add(clearBtn);

elseif(e.getSource()==clearBtn){

returnedBookStudentTextField.setText("");

returnedDateTextField.setText("");

returnedCommentTextField.setText("");

if(returnedBookStudentTextField.getText().trim().equals("")){

JOptionPane.showMessageDialog(null,"请输入还书者的姓名。。。");

elseif(bookNameComboBox.getSelectedItem().equals("")){

JOptionPane.showMessageDialog(null,"图书馆没有出借过书!");

StringstrSQL="updatebookBrowsesetreturnDate='"+

returnedDateTextField.getText().trim()+"',com='"+

returnedCommentTextField.getText().trim()+

"',is_returned='是'wherestudentName='"+

returnedBookStudentTextField.getText().trim()+"'andbookName='"+

bookNameComboBox.getSelectedItem()+"'";

JOptionPane.showMessageDialog(null,"还书完成!");

strSQL=

"updatebookssetborrowed_count=borrowed_count-1wherebookname='"+

3.主界面设计代码:

package图书借阅管理系统;

publicclassMainFrame

JPanelpanel1;

JMenuBarmenuB;

JMenusystemMenu,bookMGRMenu,borrowBookMenu,returnBookMenu,

infoBrowseMenu,userMGRMenu,aboutMenu;

JMenuItemadminLoginMenuItem,userLoginMenuItem,userAddMenuItem,userModifyMenuItem,

userDeleteMenuItem,exitMenuItem,bookAddMenuItem,bookModifyMenuItem,

bookDeleteMenuItem,

borrowBookMenuItem,borrowInfoMenuItem,returnBookMenuItem,

returnInfoMenuItem,

bookListMenuItem,borrowBookListMenuItem,userListMenuItem,

aboutMenuItem;

publicMainFrame(){

super("图书馆管理系统");

//--系统管理菜单--

menuB=newJMenuBar();

systemMenu=newJMenu("系统管理");

userMGRMenu=newJMenu("用户管理");

userAddMenuItem=newJMenuItem("添加用户");

userModifyMenuItem=newJMenuItem("修改密码");

userDeleteMenuItem=newJMenuItem("删除用户");

exitMenuItem=newJMenuItem("退出");

systemMenu.add(adminLoginMenuItem);

systemMenu.add(userLoginMenuItem);

userMGRMenu.add(userAddMenuItem);

userMGRMenu.add(userModifyMenuItem);

userMGRMenu.add(userDeleteMenuItem);

systemMenu.add(userMGRMenu);

systemMenu.add(exitMenuItem);

adminLoginMenuItem.addActionListener(this);

userLoginMenuItem.addActionListener(this);

userAddMenuItem.addActionListener(this);

userModifyMenuItem.addActionListener(this);

userDeleteMenuItem.addActionListener(this);

exitMenuItem.addActionListener(this);

menuB.add(systemMenu);

//---书籍管理菜单--

bookMGRMenu=newJMenu("书籍管理");

bookAddMenuItem=newJMenuItem("添加书籍");

bookModifyMenuItem=newJMenuItem("修改书籍");

bookDeleteMenuItem=newJMenuItem("删除书籍");

bookMGRMenu.add(bookAddMenuItem);

bookMGRMenu.add(bookModifyMenuItem);

bookMGRMenu.add(bookDeleteMenuItem);

bookAddMenuItem.addActionListener(this);

bookModifyMenuItem.addActionListener(this);

bookDeleteMenuItem.addActionListener(this);

menuB.add(bookMGRMenu);

//--借书管理菜单--

borrowBookMenu=newJMenu("借书管理");

borrowBookMenuItem=newJMenuItem("书籍出借");

borrowInfoMenuItem=newJMenuItem("出借信息修改");

borrowBookMenu.add(borrowBookMenuItem);

borrowBookMenu.add(borrowInfoMenuItem);

borrowBookMenuItem.addActionListener(this);

borrowInfoMenuItem.addActionListener(this);

menuB.add(borrowBookMenu);

//--还书管理菜单--

returnBookMenu=newJMenu("还书管理");

returnBookMenuItem=newJMenuItem("书籍还入");

returnInfoMenuItem=newJMenuItem("书籍还入信息修改");

returnBookMenu.add(returnBookMenuItem);

returnBookMenu.add(returnInfoMenuItem);

returnBookMenuItem.addActionListener(this);

returnInfoMenuItem.addActionListener(this);

menuB.add(returnBookMenu);

//--信息一览菜单--

infoBrowseMenu=newJMenu("信息查询");

bookListMenuItem=newJMenuItem("书籍信息查询");

borrowBookListMenuItem=newJMenuItem("借阅信息查询");

userListMenuItem=newJMenuItem("用户列表");

infoBrowseMenu.add(bookListMenuItem);

infoBrowseMenu.add(borrowBookListMenuItem);

infoBrowseMenu.add(userListMenuItem);

bookListMenuItem.addActionListener(this);

borrowBookListMenuItem.addActionListener(this);

userListMenuItem.addActionListener(this);

menuB.add(infoBrowseMenu);

//--关于菜单--

aboutMenu=newJMenu("帮助");

aboutMenuItem=newJMenuItem("关于");

aboutMenuItem.addActionListener(this);

aboutMenu.add(aboutMenuItem);

menuB.add(aboutMenu);

//----------------------------------

setJMenuBar(menuB);

panel1.setLayout(newBorderLayout());

//--设置初始功能:--

userMGRMenu.setEnabled(false);

bookMGRMenu.setEnabled(false);

borrowBookMenu.setEnabled(false);

returnBookMenu.setEnabled(false);

infoBrowseMenu.setEnabled(false);

aboutMenu.setEnabled(false);

//--设置每个菜单点击后出现的窗口和窗口显示的位置--

AdminLoginAdminLoginFrame=newAdminLogin(this);//创建用例类实例对象

DimensionFrameSize=AdminLoginFrame.getPreferredSize();//子窗口大小

DimensionMainFrameSize=getSize();//主窗口大小

Pointloc=getLocation();//主窗口位置

AdminLoginFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

loc.x,

(MainFrameSize.height-FrameSize.height)/2+

loc.y);//设置子窗口的位置位于主窗口的中央

AdminLoginFrame.pack();

AdminLoginFrame.show();

UserLoginUserLoginFrame=newUserLogin(this);//创建用例类实例对象

DimensionFrameSize=UserLoginFrame.getPreferredSize();//子窗口大小

UserLoginFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

UserLoginFrame.pack();

UserLoginFrame.show();

elseif(e.getActionCommand()=="添加用户"){

UserAddUserAddFrame=newUserAdd();

DimensionFrameSize=UserAddFrame.getPreferredSize();

DimensionMainFrameSize=getSize();

Pointloc=getLocation();

UserAddFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

loc.y);

UserAddFrame.pack();

UserAddFrame.show();

elseif(e.getActionCommand()=="修改密码"){

UserModifyUserModifyFrame=newUserModify();

DimensionFrameSize=UserModifyFrame.getPreferredSize();

UserModifyFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

UserModifyFrame.pack();

UserModifyFrame.show();

elseif(e.getActionCommand()=="删除用户"){

UserDeleteUserDeleteFrame=newUserDelete();

DimensionFrameSize=UserDeleteFrame.getPreferredSize();

UserDeleteFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

UserDeleteFrame.pack();

UserDeleteFrame.show();

elseif(e.getActionCommand()=="添加书籍"){

BookAddBookAddFrame=newBookAdd();

DimensionFrameSize=BookAddFrame.getPreferredSize();

BookAddFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

BookAddFrame.pack();

BookAddFrame.show();

elseif(e.getActionCommand()=="修改书籍"){

BookModifyBookModifyFrame=newBookModify();

DimensionFrameSize=BookModifyFrame.getPreferredSize();

BookModifyFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

BookModifyFrame.pack();

BookModifyFrame.show();

elseif(e.getActionCommand()=="删除书籍"){

BookDeleteBookDeleteFrame=newBookDelete();

DimensionFrameSize=BookDeleteFrame.getPreferredSize();

BookDeleteFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

BookDeleteFrame.pack();

BookDeleteFrame.show();

elseif(e.getActionCommand()=="书籍出借"){

BorrowBookBorrowBookFrame=newBorrowBook();

DimensionFrameSize=BorrowBookFrame.getPreferredSize();

BorrowBookFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

BorrowBookFrame.pack();

BorrowBookFrame.show();

elseif(e.getActionCommand()=="出借信息修改"){

BorrowInfoBorrowInfoFrame=newBorrowInfo();

DimensionFrameSize=BorrowInfoFrame.getPreferredSize();

BorrowInfoFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

BorrowInfoFrame.pack();

BorrowInfoFrame.show();

elseif(e.getActionCommand()=="书籍还入"){

ReturnBookReturnBookFrame=newReturnBook();

DimensionFrameSize=ReturnBookFrame.getPreferredSize();

ReturnBookFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

ReturnBookFrame.pack();

ReturnBookFrame.show();

elseif(e.getActionCommand()=="书籍还入信息修改"){

ReturnInfoReturnInfoFrame=newReturnInfo();

DimensionFrameSize=ReturnInfoFrame.getPreferredSize();

ReturnInfoFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

ReturnInfoFrame.pack();

ReturnInfoFrame.show();

elseif(e.getActionCommand()=="书籍信息查询"){

BookListBookListFrame=newBookList();

DimensionFrameSize=BookListFrame.getPreferredSize();

BookListFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

BookListFrame.pack();

BookListFrame.show();

elseif(e.getActionCommand()=="借阅信息查询"){

BorrowBookListBorrowBookListFrame=newBorrowBookList();

DimensionFrameSize=BorrowBookListFrame.getPreferredSize();

BorrowBookListFrame.setLocation((MainFrameSize.width-FrameSize.width)/

2+loc.x,

(MainFrameSize.height-FrameSize.height)/

2+loc.y);

BorrowBookListFrame.pack();

BorrowBookListFrame.show();

elseif(e.getActionCommand()=="用户列表"){

UserListUserListFrame=newUserList();

DimensionFrameSize=UserListFrame.getPreferredSize();

UserListFrame.setLocation((MainFrameSize.width-FrameSize.width)/2+

UserListFrame.pack();

UserListFrame.show();

elseif(e.getActionCommand()=="退出"){

System.exit(0);

publicvoidsetEnable(StringpowerType){

if(powerType.trim().equals("系统管理员")){

userMGRMenu.setEnabled(true);

bookMGRMenu.setEnabled(true);

borrowBookMenu.setEnabled(true);

returnBookMenu.setEnabled(true);

infoBrowseMenu.setEnabled(true);

userListMenuItem.setEnabled(true);

aboutMenu.setEnabled(true);

elseif(powerType.trim().equals("书籍管理员")){

userListMenuItem.setEnabled(false);

elseif(powerType.trim().equals("学生")){

elseif(powerType.trim().equals("else")){

publicstaticvoidmain(Stringargs[]){

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

catch(Exceptione){

e.printStackTrace();

MainFramemainFrame=newMainFrame();

mainFrame.setSize(500,400);

Dimensiond=Toolkit.getDefaultToolkit().getScreenSize();

mainFrame.setLocation((d.width-mainFrame.getSize().width)/2,

(d.height-mainFrame.getSize().height)/2);

mainFrame.show();

publicclassAdminLogin

MainFramemainFrame;

staticStringusername,passwordSTR;

staticStatementstmt;

publicAdminLogin(MainFramemainFrame){

this.mainFrame=mainFrame;

userTextField=newJTextField(20);

passwordTextField=newJPasswordField(20);

setSize(400,400);

mainFrame.setEnable("else");

DataBaseManager1();

username=userTextField.getText().trim();

passwordSTR=newString(password);

JOptionPane.showMessageDialog(null,"用户名不可为空!");

return;

if(passwordSTR.equals("")){

JOptionPane.showMessageDialog(null,"密码不可为空!");

JOptionPane.showMessageDialog(null,"登陆成功");

mainFrame.setEnable("系统管理员");

publicstaticvoidDataBaseManager1(){

Stringurl="jdbc:sqlserver://127.0.0.1:1433;DatabaseName=图书管理系统";

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");

Connectioncon=DriverManager.getConnection(url,username,passwordSTR);//连接数据库对象

stmt=con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,

ResultSet.CONCUR_UPDATABLE);

catch(ClassNotFoundExceptioncnfex){

cnfex.printStackTrace();

publicclassDataBaseManager{

Connectioncon=null;

ResultSetrs=null;

Statementstmt;

publicDataBaseManager(){

Stringuser="DH";

Stringpassword="123456";

Connectioncon=DriverManager.getConnection(url,user,password);//连接数据库对象

THE END
1.Java毕设选题推荐基于SpringBoot的图书馆智能选座系统数据库:MySQL 系统架构:B/S 后端:SpringBoot 前端:Vue 工具:IDEA,JDK1.8,Maven 二、系统介绍 2.1 项目介绍参考 在当今快速发展的信息化时代,图书馆作为知识与信息的聚集地,其服务模式正经历着前所未有的变革。随着移动互联网、大数据、云计算等技术的发展,图书馆的数字化、智能化水平不断提升,为读者提供了更加便https://zhuanlan.zhihu.com/p/712641727
2.图书馆数据库设计模板.pdf图书馆数据库设计模板.pdf 原文免费试下载 想预览更多内容,点击免费在线预览全文 免费在线预览全文 图书馆管理系统数据库设计 一、需求分析 图书馆管理系统应当可以提供所有借阅者的详细信息,以和馆内库存的详细状况,对借书和还书两大功能进行 合理的操作并登记。图书馆管理系统的重要任务是建立详尽的借阅信息,以和馆https://max.book118.com/html/2024/0505/8054063016006065.shtm
3.图书管理系统数据库设计示例(精选9篇)图书管理系统数据库设计 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。 https://www.360wenmi.com/f/filea884fq3r.html
4.数据库设计——以设计图书管理系统为例设计一个图书管理系统数据库7.设计一个分组统计数据的问题(基于多表连接基础上),并用SQL实现 8.设计一个数据安全的问题(能够用到自主存取控制的授权或回收权限),并用SQL实现 1、需求分析(功能分析及数据) 图书馆作为一种信息集散地,图书、用户借阅得资料繁多,包含很多信息资源数据的管理。而大多数图书馆却反对数据的规范化整理,导致数据繁多https://blog.csdn.net/weixin_64890968/article/details/131756230
5.mysql设计一个图书管理系统数据库设计一个图书馆数据库图书馆数据库,该项目同时提供pythonweb可视化展示界面,也可提供相关报告数据,可以用来作为数据库系统设计的期末作业 主要设计到如下几个功能: 1.1管理员方面 增、删、改、挂失图书信息和读者信息; 查看用户信息和图书信息。 登录管理员界面 为读者办理借书还书 1.2读者方面 登录读者界面 查询借书记录和个人信息 2、项目https://blog.51cto.com/u_14499/7998337
6.基于python图书馆管理系统设计实例详解python我建立了一个数据库 book , 里面新建了三个表单, student, teacher, books,分别学生,老师, 图书表, 互不干扰,相互工作。 在student: 表的大致构造如上, 其实也就是简单的信息, 复杂的我暂时也做不了, 然后teacher 表单 信息 其实和 students 是一样的, 只不过这样设计, 可以封开, 更好管理! https://www.jb51.net/article/192576.htm
7.院校数据库范文12篇(全文)随着开放存取服务模式的不断发展以及图书馆文献资源载体的逐步演变, 图书馆的文献管理和服务方式由传统的人工管理向信息化、智能化、个性化服务方向发展。以数字化存储文献资源的数据库技术逐步成熟, 特色数据库也就应运而生。特色数据库建设是高校图书馆开展工作的一项重要内容。具不完全统计, 全国768所高校图书馆建设https://www.99xueshu.com/w/ikeyhv224w8j.html
8.数据库管理系统er图实例,图书馆数据库er图码农集市专业分享IT数据库图书馆实例,有ER图,业务流程图等文件级SQL程序语句。点赞(0) 踩踩(0) 反馈 所需:1 积分 电信网络下载 ouzexi 2020-06-04 15:53:51 评论 正在学习中gdaemon 2015-05-07 20:15:11 评论 有用,可以做参考hyghysj 2014-05-01 11:41:12 评论 真的挺有用的https://www.coder100.com/index/index/content/id/1066926
9.Access数据库应用实例——图书借阅管理系统Access数据库应用实例——图书借阅管理系统 本“图书借阅管理系统”是以实现图书馆借阅工作系统化为目的和背景而设计开发的一个简单系统。 图书借阅管理系统主要实现对图书馆工作的信息化管理。本系统实现了对图书的基本信息和会员(图书借阅者)的基本信息的登记、保存、统计和查询等功能,另外还对会员的借阅信息进行了登记https://www.360doc.cn/article/32034372_658586105.html
10.数据库复习笔记(全覆盖,包括往年部分真题)腾讯云开发者社区**2.3数据模型的组成要素** 数据模型是严格定义的一组概念的集合, 精确地描述了系统的静态特性、动态特性和完整性约束条件。 数据模型由三部分组成: 数据结构–描述系统的静态特性 数据结构的类型来命名数据模型 数据操作–描述系统的动态特性 对数据库中各种对象的实例允许执行的操作的集合 完整性约束 一组完整性规https://cloud.tencent.com/developer/article/2055640
11.Access数据库开发经典案例解析(PDF文档/电子书)Access软件网摘要:本书实例的实用性非常强,读者从中可以迅速了解相应实例的行业特点和用户需求,成为行业专家;同时还可以全面掌握利用Microsoft Office Access 2003开发信息管理系统的过程和方法,同时书中提供了所有系统完整的数据库建库脚本,读者在实际的工作中可以直接使用,在此基础上进行补充,从而可以大大减少系统数据库设计的工作量http://www.accessoft.com/article-show.asp?id=7735
12.头条文章1、Berg Fashion Library(伯格时尚图书馆数据库) (冷芸推荐):Berg Fashion Library(伯格时尚图书馆数据库)是全球最权威的时尚与服装设计类数据库,能满足处在各个不同职业阶段的时尚与服装设计工作者的需要。无论是学生、教师还是职业人士,都能从中获取所需,立足于时尚最前沿。 https://card.weibo.com/article/m/show/id/2309404586382453506199
13.图书馆数据库管理系统用例图在图书馆数据库管理系统中,例如“查询图书信息”、“借阅图书”、“归还图书”等用例。 1.2 参与者 参与者是使用系统的人、机器、其他系统或其他实体,它们与用例之间通过交互实现。 在图书馆数据库管理系统中,例如“读者”、“图书管理员”等参与者。 1.3 关系 关系就是参与者和用例之间的联系。可以用连线来表示。https://www.volcengine.com/theme/845520-T-7-1