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

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

指导教师评定:签名:

一、项目环境

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.借阅规则图书馆7. 一般图书借阅期限为1个月,需要时可续借一次,延长借期1个月,逾期不还加收滞纳金,每周每册0.5元,读者借阅证有超期的图书,不能续借和借阅新的图书;随书光盘借期1周,逾期按每片每天1元加收滞纳金。 8. 在法定节假日及寒暑假内到期的图书由借还书系统根据总借期自动顺延;学生因教学安排离校实习,事先应以班https://tsg.jscc.edu.cn/26539/
2.免费的图书管图书借阅管理系统基于百宝云在线表单设计的图书借阅系统,实现了三个基本功能。主要运用到了百宝云表单系统的数据联动和计算公式。这样借书还书只要扫一个条形码,图书资料会自动显示。本套系统免费使用,适合中小型图书借阅机构和简单图书管理。下载使用http://www.baibaoyun.com/ https://blog.csdn.net/btloveet/article/details/78049606
3.图书借阅管理系统的设计与实现图书借阅管理系统的设计与实现,图书信息管理,借阅管理, Visual Bacis6.0, SQL Server 2000,本系统以Visual Bacis6.0为开发工具,以SQL Server 2000为后台数据库管理系统,实现了以基本信息管理,图书借阅管理、系统用户管理模https://wap.cnki.net/touch/web/Dissertation/Article/1011054780.nh.html
4.C语言图书借阅系统源码C语言这篇文章主要为大家分享了C语言图书借阅系统源码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】 本文实例为大家分享了C语言图书借阅系统的具体代码,供大家参考,具体内容如下 1 2 3 4 5 6 7 8 9 10 https://www.jb51.net/article/135435.htm
5.图书借阅系统满天星公益图书借阅系统致力提升乡村中小学图书馆管理效率,是一个具有图书馆管理、数据收集、数据分析和交流反馈功能的云端服务平台,是一套轻量级的图书馆管理解决方案,专为乡村中小型图书馆量身订制,适用于需管理多个图书馆的机构及其下属的中小型图书馆。 https://www.starscn.org/Home/Project/detail/id/46.html
6.图书借阅系统v1.6.4下载图书借阅系统最新版下载大小:84.20MB 版本:v1.6.4 语言:多国 更新:2023-08-24 资源说明 《图书借阅系统》是一款方便图书室管理书籍借阅的软件,软件可以帮助用户统计各种借阅信息,让管理者更方便管理图书室,有需要的用户不要错过。 软件图片https://soft.3dmgame.com/down/269699.html
7.图书借阅系统关于图书借阅系统--设计思路思维导图,从结构体显示、操作、主函数等几个方面。 亿图脑图MindMaster原创思维导图社区提供海量优质的思维导图模板资源,一个各类脑图创意思维绘制,整理知识学习与交流的平台 - 用思维导图来表述图书借阅系统https://mm.edrawsoft.cn/template/1483422
8.图书借阅系统官方电脑版图书借阅系统简介 51推荐 图书借阅系统支持会员充值场内计时收费,包月包年图书借阅。适合图书馆,书社,书吧,书屋,阅览室等图书借阅及现场计时收费场所,支持数据导入导出。51下载站为您提供图书借阅系统2024免费下载,喜欢图书借阅系统的朋友快来51下载站下载体验吧!https://www.51xiazai.cn/soft/10063987.htm
9.4.2图书借阅系统数据库设计MySQL腾讯云开发者社区大家好,我是天罡gg,一个有十多年丰富经验的高级架构师,参与过很多系统的数据库设计,在数据库设计方面有相当丰富的经验。正赶上这篇实战专栏的数据库设计,所以今天让我们来一起做一下《图书借阅系统的数据库设计》,一篇既有理论知识,又能实战落地的数据库设计! https://cloud.tencent.com/developer/article/2266828
10.图书借阅系统UML图简约图书借阅系统管理UML图 免费 使用模版 图书管理系统UML图 免费 使用模版 用户图书捐赠系统UML图 免费 使用模版 简约风图书借阅状态机图 免费 使用模版 图书借阅管理系统项目管理 免费 使用模版 图书借阅系统ER图 免费 推荐分类 流程图组织架构图模型图思维导图图表图形分析画布示意图UML图路线图时间轴E-R图鱼骨图https://imiaoban.com/pic/11919.html
11.图书借阅管理系统:对接微信公众号或小程序,实现图书绘本在线图书借阅管理系统 线上借阅与线下办理 支持对接微信公众号或小程序 适合各类图书、绘本等借阅管理 微信联系我们 产品体验中心 微信添加9629002联系演示功能 TEl:400-161-9986 色卡会科技https://www.sekahui.com/feedback/canpin_zujie.php
12.图书借阅管理系统:SpringBoot+MyBatis+thymeleaf+MySQL+Spring Boot + MyBatis + thymeleaf + MySQL + jQuery + ajax等实现轻便的图书借阅管理系统 管理员操作进行用户借阅,借阅出的图书在归还之前不能删除,同一个人(姓名+手机号)在图书归还之前不能再次借阅同一本图书,并且采用逻辑删除来处理已经删除的图书在借阅记录中的回显问题(图书已经被删除,但保留之前这本图书https://gitee.com/superb12580/BookInfo
13.软件工程课程设计——学校图书借阅管理系统专业方向组设计 学校图书借阅管理系统 指导教师 李鑫 院(系、部) 电信学院 专业班级 计算机 06—2 学 号 0606010212 姓 名 宋成龙 电子与信息工程学院 计算机科学系 参考目录 1 问题定义 2 项目背景 https://doc.mbalib.com/view/c33c697a77fd207ec1f042da189adfdd.html
14.图书借阅管理系统图书借阅管理系统下载图书管理图书借阅管理系统软件是适用于各类学校的图书借阅管理软件,是但思蒲老师花了半年左右时间开发的,该系统软件运用功能良好,设计,已有多校使用该软件,学校的图书借阅管理都取得了良好的效果,是全国各中小学(义务教育)必不可少的软件之一。 软件截图 查看安装过程 https://www.crsky.com/soft/19859.html
15.学校图书管理系统软件免费图书借阅系统自助借还书机南昌北创科技发展有限公司专业提供学校图书管理软件,校园图书管理系统,图书管理系统软件,自助借还书机,智慧图书馆,免费图书借阅系统.驭文图书管理系统适用于各行各业图书馆自动化管理,高效快捷的图书录入,读者录入、图书借还、统计分析、条码打印、书标打印、备份管理等业https://free.bc863.com/
16.图书借阅管理系统业务流程5篇在数字化时代,图书馆借阅管理系统已成为现代图书馆不可或缺的一部分。该系统不仅提高了图书借阅的效率,还为用户提供了便捷、快速的借阅体验。那么,图书借阅管理系统的业务流程是如何运作的呢?下面,我们将为您详 创建时间 2024-04-10 10:33:33 Word 文件格式 https://hsy.chanjet.com/wenku/wkc844936cfe5c.html
17.图书借阅管理系统毕业设计论文.pdf图书借阅管理系统毕业设计论文.pdf,摘要 本文主要介绍图书借阅管理系统的开发过程,其开发主要包括后台数据库的建立和维 护以及前端应用程序的开发两个方面。对于前者要求建立数据一致性好、完整性强、安全 性强的数据库,而对于后者则要求应用程序功能完备,界面友好等。 https://max.book118.com/html/2024/0609/8046044014006077.shtm
18.图书借阅管理系统,简化您的图书馆管理流程答:是的,大多数图书借阅管理系统都可以与现有的图书馆系统兼容。 问题2:图书借阅管理系统是否需要专门的设备支持? 答:不一定,图书借阅管理系统可以通过智能手机、平板电脑等设备进行使用。 问题3:图书借阅管理系统是否有安全性保障? 答:是的,图书借阅管理系统通常会采取安全措施,确保读者和图书馆信息的安全。 https://www.huoban.com/news/post/151724.html
19.图文用例图之图书借阅管理系统【图文】用例图之图书借阅管理系统,图文,用例图,图书,借阅,管理,系统 将三个部分合并到一起构成完整的图书借阅管理系统https://www.renrendoc.com/paper/199779624.html
20.银博图书借阅管理系统(图书管理,图书借阅)7.36.6免费版下载银博图书借阅管理系统功能特点: 1系统维护: 系统参数设置,操作员权限设置,执行SQL语言,密码修改,更换操作员,退出系统。 读者类型设置,图书类型设置(可按中图分类法逐级划分),出版社设置(内置大部分出版社),预约天数设置,管理员权限设置。 2 数据字典: 图书分类(中图分类法逐级划分),读者分类,存放位置,馆藏地,出版https://www.xiazaiba.com/html/26868.html
21.图书借阅管理系统需求规格说明书.pdf该【图书借阅管理系统需求规格说明书 】是由【hh思密达】上传分享,文档一共【12】页,该文档可以免费在线阅读,需要了解更多关于【图书借阅管理系统需求规格说明书 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑https://www.taodocs.com/p-883074160.html
22.图书馆管理系统软件自助借阅查询智慧图书馆信息管理系统图书馆管理软件自助借阅,无人智能图书馆图书借阅查询系统,适用于学校,单位,部队等图书管理方案.图书自动录入,自助借阅信息查询,提高管理效率,系统包含图书销售、读者管理、读书卡管理、图书借阅等,操作简单,功能强大,免费体验.https://www.yr95.com/
23.图书管理系统借阅流程流程图模板对于图书借阅流程的简述 后端设计 软件设计 作者其他创作 大纲/内容 借阅结束 1.触发下级任务节点(借阅登记、结束)2.单本藏书状态设置为1(已借阅状态)3.t_borrowing_return_appointment 表更新预登记状态、借阅完成时间font color=\"#1976d2\ 书籍发放 1. 单本藏书状态修改为1(预借阅)2. t_borrowing_return_https://www.processon.com/view/63bacda85eee0107236c4c8d