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

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

指导教师评定:签名:

一、项目环境

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.图书借阅系统数据库设计51CTO博客已为您找到关于图书借阅系统数据库设计的相关内容,包含IT学习相关文档代码介绍、相关教程视频课程,以及图书借阅系统数据库设计问答内容。更多图书借阅系统数据库设计相关解答可以来51CTO博客参与分享和学习,帮助广大IT技术人实现成长和进步。https://blog.51cto.com/topic/tushujieyuexitongshujukusheji.html
2.Mysql图书借阅管理系统设计图书借阅管理系统数据库设计说明:本文章的图书管理系统设计将演示mysql数据库设计的基本流程:总体需求,功能需求,数据流图,数据字典,概念模型设计,逻辑模型设计,创建数据库,创建数据库表,创建视图,功能相关sql语句。不涉及前端页面的编写,前后端交互等部分。 设计需求:设计并开发一个小型的图书借阅管理系统。图书借阅管理系统主要有三类用户,(1)https://blog.csdn.net/qq_63530155/article/details/135683294
3.4.2图书借阅系统数据库设计MySQL腾讯云开发者社区图书馆作为一种信息资源的交换场所,图书和用户借阅资料繁多,包含很多数据信息的管理,因此实现图书管理的电子信息化,可以简化繁琐的工作模式,有效解决图书借阅过程中的诸多问题,给图书管理员和借阅者带来极大的便利。 图书借阅系统是为了满足图书馆借阅图书的工作而设计的,它的功能主要分为数据维护和基本功能两大模块。其中https://cloud.tencent.com/developer/article/2266828
4.电子图书馆(图书借阅系统):图书借阅管理的功能模块根据登录人员普通用户登录后可以查看所有图书、查询图书、查看最新的图书列表和自己的图书借阅记录。而管理员登录后不但可以进行关于图书的操作,还可以管理所有的普通用户,添加删除普通用户,查看普通用户的个人信息。使用maven管理项目的构建,持久层使用的是Mybatis实现,数据库使用的是MySQL。 第一章 需求分析 图书管理系统是当前海量https://gitee.com/hehe8/library
5.图书借阅管理系统的设计与实现本系统以Visual Bacis6.0为开发工具,以SQL Server 2000为后台数据库管理系统,实现了以基本信息管理,图书借阅管理、系统用户管理模块为主要功能的系统开发。为图书借阅管理提供图书信息查询,借阅信息检索,用户信息查询等服务,系统的实施基本上能够满足图书馆对借书人的管理的需要,为提高图书馆借阅管理效率提供了行之有效的https://wap.cnki.net/touch/web/Dissertation/Article/1011054780.nh.html
6.数据库大作业图书管理系统设计本科学生综合性实验报告本科学生综合性实验报告 课程名称:数据库系统原理课程名称:数据库系统原理 数据库设计 班级 B01 班姓名学号 项目名称 图书馆管理系统 指导教师 开课学期 2011 至 2012 学年 第二学期 完成时间 2012 年 5 月 30 日 目录 1 需求分析需求分析3 1.1 系统目标3 1.2 业务需求及处理流程3 1.3https://www.mayiwenku.com/p-19279831.html
7.设计一个图书管理系统数据库在设计图书管理系统数据库之前,我们需要先进行需求分析。根据图书馆的实际需求,我们需要设计一个能够满足以下功能的数据库: 图书信息管理:包括图书的基本信息、借阅信息、归还信息等。 读者信息管理:包括读者的基本信息、借阅信息、归还信息等。 借阅管理:包括借阅记录、借阅时间、归还时间等。 https://www.dugusoft.com/zixun/zixun1351.html
8.数据库课程设计报告—图书借阅管理系统.doc数据库课程设计报告—图书借阅管理系统,数据库课程设计报告(一) ——图书借阅管理系统本报告包含三部分,简要摘录参见下属。本文共42页,1.3万余字系统概述图书馆管理系统是一些单位不可缺少的部分,书籍是人类不可缺少的精神食粮,尤其对一些学校来说,尤其重要。所以图书馆管理系统应该能够为用户提供充足的信息和快捷的http://www.queshao.com/docs/34523/
9.基于安卓手机的图书馆管理系统设计与实现AET摘要: 根据智能手机的特点设计并实现了一种图书馆管理系统,该系统具有传统计算机图书馆管理系统的功能,更有针对手机的实用功能设计。读者无需携带实体借书证,可使用虚拟借书证进行借阅登记;无需借助条形码扫描仪器与电脑,管理员通过调用手机的摄像头与网络接口即可完成图书入库和图书的借出与归还登记。 http://www.chinaaet.com/article/3000003214
10.图书管理系统开题报告15篇数据信息处理工作量大,容易出错;由于数据繁多,容易丢失,且不易查找。总的来说,缺乏系统,规范的信息管理手段。尽管有的图书馆有计算机,但是尚未用于信息管理,没有发挥效力,资源闲置比较突出,这就是管理信息系统的开发的基本环境。 数据处理手工操作,工作量大,出错率高,出错后不易更改。图书馆采取手工方式对图书借阅https://www.ruiwen.com/kaitibaogao/6479128.html
11.简单的图书馆管理系统数据库设计简单的图书馆管理系统数据库设计 tenlee关注赞赏支持简单的图书馆管理系统数据库设计 tenlee关注IP属地: 四川 0.0732015.12.13 20:40:55字数231阅读14,794 表的设计及字段说明 lib_user 字段数据类型作用 userid varchar(50) 主键,学号,可用于登录 userpassword varchar(50) 密码 username varchar(50) 用户姓名 userhttps://www.jianshu.com/p/507ffb0eacf2
12.使用javaspringboot设计实现的图书管理系统(建议收藏)java图书管理系统的主要功能是实现图书馆图书借阅和归还的管理的自动化。围绕这一主要功能,本系统涉及到以下核心功能:借阅管理,归还管理。除了这些核心功能外,还包括一些基本和辅助功能,它们是:用户管理、图书管理、图书查询。 数据库设计 用户表 1 2 3 4 5 6 7 8 9 10 11 12 CREATE TABLE `NewTable` ( `adminhttps://www.jb51.net/article/219800.htm
13.图书管理系统设计个人总结(精选13篇)图书管理系统设计个人总结 篇3 我校历来重视图书馆建设,把它作为提高学生综合素质和学校办学品位的重要载体。尤其是近年来,学校图书馆的硬件设施和运作能力得到了长足的发展,被评为市一级图书馆。学生的图书借阅量逐年攀升,图书馆的育人效应日益彰显。现将我校图书馆建设、管理工作作如下简要总结。 https://www.unjs.com/fanwenwang/gerenzongjie/20220701084340_5248388.html
14.基于JAVA的图书馆管理系统的设计与实现计算机专业论文2.2 图书借阅管理系统需求概述3 2.2.1系统目标3 2.2.2用户类和用户特性4 2.3 图书借阅管理系统需求模型4 2.3.1功能描述4 2.3.2图书管理员详细功能描述5 2.3.3读者详细功能描述5 2.3.4主要用例的用例描述5 第三章 总体设计9 3.1 数据库分析与设计9 https://bbs.pinggu.org/jg/lunwen_jisuanjizhuanyelunwen_120498_2.html
15.图书管理系统的设计与实现图书管理系统论文.docx计算机 数据库图书管理系统的设计与实现图书管理系统论文.docx 23页内容提供方:店小二 大小:687.75 KB 字数:约7.95千字 发布时间:2017-11-19发布于辽宁 浏览人气:321 下载次数:仅上传者可见 收藏次数:3 需要金币:*** 金币 (10金币=人民币1元)图书https://max.book118.com/html/2017/1119/140761372.shtm
16.图书管理系统数据库设计示例(精选9篇)图书管理系统数据库设计 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。 https://www.360wenmi.com/f/filea884fq3r.html
17.汇文Libsys图书馆编目管理系统简介湖北恩施学院图书馆本馆现已更新为汇文图书管理查询系统,现将主要特点和功能进行简介如下,以供广大师生读者了解。 支持第三方自助式借阅终端。 支持一卡通实现借阅服务解决方案。 严格规范的标准化设计 提供个别、批量、手工或自动的系统数据全部或者部分的备份功能。 提供对数据库的卸载、加载和重组操作。https://lib.hbesxy.edu.cn/info/1096/3036.htm
18.图书管理系统论文12篇功能虽然繁多,但系统操作却很方便简单,工作人员和读者通过对图书电子书签的扫描就能满足自身的大部分需求。读者通过该系统也能实现大部分自助服务,设立账户、修改账户、查询检索图书信息、借阅归还图书等,并且这些功能都是基于读者账户的密码进行操作,具备了相当的安全性。 二、目前我国图书馆管理系统发展所存在的问题 1https://www.yjbys.com/biyelunwen/fanwen/guanli/733539.html
19.图书馆数据库管理系统用例图在图书馆数据库管理系统中,例如“查询图书信息”、“借阅图书”、“归还图书”等用例。 1.2 参与者 参与者是使用系统的人、机器、其他系统或其他实体,它们与用例之间通过交互实现。 在图书馆数据库管理系统中,例如“读者”、“图书管理员”等参与者。 1.3 关系 关系就是参与者和用例之间的联系。可以用连线来表示。https://www.volcengine.com/theme/845520-T-7-1
20.图书管理系统:使用jsplayuimysql完成的Web端图书管理系统一、用户模块 二、图书管理员模块 三、系统管理员模块 sql表 二、部署 2.1 乱码 2.2 点击登录无反应 2.3 账号密码不正确 2.3 其他问题 三、项目演示 用户 图书管理员 系统管理员 一、项目介绍 项目简介 使用jsp、layui、mysql完成的图书馆系统,包含用户图书借阅、图书管理员、系统管理员界面,功能齐全。 开发工具https://toscode.mulanos.cn/mingyuefusu/tushuguanlixitong