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

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

指导教师评定:签名:

一、项目环境

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+mysql+servlet+jsp+mysql公共图书馆图书借阅系统的设计与3.系统功能设计 本系统实现一个公共图书馆图书借阅系统,分为管理员和读者两种用户。具体功能描述如下: 管理员模块包括: 1.管理员管理:此功能为超级管理员所有,普通管理员没有此权限,实现超级管理员可以对普通管理员信息的添加、查看、编辑或删除。 2.读者管理:管理员可以对读者信息进行添加、查看、编辑或删除。 https://blog.51cto.com/u_12948819/12853946
2.数据结构课程设计报告——图书管理系统经管文库设计一个计算机管理系统完成图书管理基本业务。【基本要求】1)每种书的登记内容包括书号、书名、著作者、https://bbs.pinggu.org/forum.php?mod=viewthread&tid=13238195
3.Java+MySQL的图书信息管理系统及效果图资源浏览查阅194次。Java和MySQL结合构建的图书信息管理系统是一个典型的前后端分离的应用,它主要利用Java作为后端开发语言,处理业务逻辑和数据库交互,而MySQL作为关系型数据库管理系统,负责存储和管理图书的各种信息。https://download.csdn.net/download/m0_37738838/10529500
4.图书管理系统设计个人总结(精选13篇)总结是事后对某一时期、某一项目或某些工作进行回顾和分析,从而做出带有规律性的结论,它可以促使我们思考,是时候写一份总结了。总结怎么写才不会千篇一律呢?下面是小编精心整理的图书管理系统设计个人总结,仅供参考,希望能够帮助到大家。 图书管理系统设计个人总结 篇1 https://www.unjs.com/fanwenwang/gerenzongjie/20220701084340_5248388.html
5.图书管理系统数据库设计示例(精选9篇)图书管理系统数据库设计 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。 https://www.360wenmi.com/f/filea884fq3r.html
6.4.2图书借阅系统数据库设计MySQL腾讯云开发者社区大家好,我是天罡gg,一个有十多年丰富经验的高级架构师,参与过很多系统的数据库设计,在数据库设计方面有相当丰富的经验。正赶上这篇实战专栏的数据库设计,所以今天让我们来一起做一下《图书借阅系统的数据库设计》,一篇既有理论知识,又能实战落地的数据库设计! https://cloud.tencent.com/developer/article/2266828
7.北京大学第四届计算机应用设计大赛成功举办数据库管理系统:《班级公共服务系统》 郭 磊医学部公共教学部11级 媒体设计:《游园惊梦》 金子琳光华管理学院 11级 杨浩琪光华管理学院 11级 贾婷彦光华管理学院 11级 媒体设计:《巧心建筑 民族传统建筑综合视觉设计》 张宇翔法学院11级 翟宏堃法学院11级 http://eecs.pku.edu.cn/xxkxjsxy/info/1023/8285.htm
8.高中信息技术课程标准建议该模块在高中一年级第一学期开设。 信息技术科目的选修部分包括“选修1:算法与程序设计”“选修2:多媒体技术应用”“选修3:网络技术应用”“选修4:数据管理技术”和“选修5:人工智能初步”五个模块,每个模块2学分。选修部分强调在必修模块的基础上关注技术能力与人文素养的双重建构,是信息素养培养的继续,是支持https://www.fqkhzx.cn/index/article/view/id/94.html
9.科学网—圕人堂周讯(总第396期20211210)(4)世界艺术鉴赏库定制台历捐赠圕人堂 (5)圕人堂服务体系对《2020年中国高校图书馆基本统计数据报告》科学普及的“成绩” 1.5高校图书馆文献资源经费状况知多少? 1.6校龄在高校图书馆薪酬中的作用 1.7论文被擅自收录,九旬教授维权获赔70多万 2圕人堂专题与群文件共享 https://wap.sciencenet.cn/blog-213646-1316014.html
10.深入理解SpringCloud与微服务构建图书目录: 详情 本书全面讲解了Spring Cloud构建微服务架构相关知识,包含基本的Spring Cloud 的各大组件,由浅入深,并介绍了Spring Cloud的开发工具、构建工具、和基础框架,结合简单实例帮助读者理解巩固。同时本书还探讨了微服务的任务调度和全局统一,以及容器技术Docker。本书最后将有一个综合案例作为总结和进阶应用。 https://www.epubit.com/bookDetails?id=N20360
11.图书管理系统的sqlserver数据库设计示例MsSql这篇文章主要介绍了图书管理系统的sqlserver数据库设计示例,文中通过E_R图、数据字典、数据库脚本代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用!【 如果你想靠AI翻身,你先需要一个靠谱的工具!】首先,https://www.jb51.net/article/192755.htm
12.西安决策参考他建议,各级财政应加大造林绿化、森林抚育、草原经营、生态系统保护修复工程建设投资力度,提高资金补助标准,构建健康稳定功能强大的森林和草原生态系统,有效增加林草碳汇功能。 全国政协常委、农业和农村委员会副主任吴晓青表示,打好污染防治攻坚战,千万别忘记农村这一主战场,千万别忘记农业面源这一重要污染源的防治,千万http://www.xalib.org.cn/info/72409.jspx
13.形考作业3:基于UML的大学图书馆图书信息管理系统设计实验.docx形考作业3:基于UML的大学图书馆图书信息管理系统设计实验.docx,面向对象方法的系统设计规格 系统设计规格说明书 基于UML的大学图书馆图书信息管理系统设计实验 1、图书信息管理系统课题研究背景及意义 随着信息技术和 网络技术的迅速 发展,信息化和网络化也将成为必然的趋https://max.book118.com/html/2022/0702/8077120103004114.shtm
14.图书管理系统论文12篇图书馆管理系统要有开放和合作的理念,通过与数字资源的数据供应商、系统的供应商、出版商等进行紧密的沟通与合作,例如,可以通过新检索系统的开发,链接元数据供应商的检索入口,从而使检索系统能够同时检索到本馆资源、元数据库资源等,从而使读者更为便利的获得各种信息,充分整合图书馆的各种资源,提高管理效率,既解决了https://www.yjbys.com/biyelunwen/fanwen/guanli/733539.html
15.德国发布《德国国家区块链战略》海外视窗2.2 联邦政府正在试行一种基于区块链的能源设施与公共数据库的连接 2019年5月,联邦政府进行了一项可行性研究“基于区块链的能源设施注册和管理——智能电表网关”。研究结果将在今年年底公布。最近发布的中期报告形势乐观,在其积极结果的支持下,联邦政府已经开始准备试点基于区块链的能源设施与公共数据库的连接。项目阶段https://www.fjlib.net/zt/fjstsgjcxx/hwsc/202003/t20200304_431838.htm
16.公共文化服务体系建设规划》《规划》强调,“十四五”时期要将坚持正确导向、坚持以人民为中心、坚持改革创新、坚持系统推进作为基本原则,重点从推进城乡公共文化服务体系一体建设,建设以人为中心的图书馆,繁荣群众文艺,增强公共文化服务实效性,推动公共文化服务社会化发展和数字化、网络化、智能化建设,推进公共文化服务区域均衡发展等七个方面着手加大http://www.hhh.gov.cn/article/4763.html
17.java图书管理系统(LibrarySystem)Library_management_system JAVA写的图书管理系统 期末作业要求 一、建立一个小型数据库管理软件。(内容自选,例如:动物实验管理,值日管理,实验室管理等内容,图书管理,资产管理 等等,使用ACCESS建立。 ) 要求如下: 1.在ACCESS中建立数据库,至少要有两个以上的表,并写出表定义。 2.实现数据的增加、删除和修改。 3.https://www.iteye.com/resource/listen322-1308583
18.成都文理学院20162017学年度本科教学质量报告2.图书资料 图书馆覆盖两个校区,馆舍面积3.21万平方米,阅览座位3000多个。图书馆印本馆藏共229.31万册,新增图书9.17万册,生均图书103册,生均年进书量4.1册。图书馆硬件设备设施建设施行总体规划,力求读者使用安全、便捷,在金堂新馆增加LED显示屏、触摸屏查询台和红外线扫描等科技设备。升级“金盘图书馆集成管理系统”http://www.scnucas.com/info/1261/14000.htm
19.图书管理系统总体设计2. 设计概述 2.1 限制和约束 图书管理系统的现有开发条件已满足项目的正常开发,但没有网络建设,且数据存储能力不足、无互联网网站、个人设施的数据处理能力不足,导致对于一些特殊要求服务无法实现。 2.2 设计原则和设计要求 (1)设计原则 1、模块化。在面向对象的设计中,模块体现为一个个的类或者类的对象,它们封装https://www.jianshu.com/p/7967c63b2f75
20.图书管理系统需求分析报告范文(精选10篇)为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写该程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者、某种图书的借阅情况,还可以对当前图书借阅情况进行一些统计,给出统计表格,以便全面掌握图书的流通情况。 图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读https://www.ruiwen.com/baogao/6437442.html
21.[开题]基于JAVA计算机毕业设计电子书阅读系统(附源码)本研究的主要目的是设计并实现一个功能全面、用户体验良好的电子书阅读系统。该系统应能够满足用户的个性化阅读需求,提供丰富的电子书资源,实现电子书的分类管理、信息展示以及书架管理等功能。通过该系统,用户可以方便地浏览、搜索、下载和阅读电子书,享受更加便捷、高效的数字化阅读体验。同时,该系统还应具备良好的可扩https://zhuanlan.zhihu.com/p/13058551238