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

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

指导教师评定:签名:

一、项目环境

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.数据库课程设计图书管理系统数据库设计(缩略版)通过完成从用户需求分析、数据库设计到上机编程、调试和应用等全过程,进一步理解和掌握本书中的相关内容 二、实验内容 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统的功能分为面向学生和面向管理员两部分,其中,面向学生部分可以进行预订、借阅、续借、归还、查询书籍等操https://blog.csdn.net/m0_64198455/article/details/139898587
2.图书馆数据库设计模板.pdf图书馆管理系统数据库设计 一、需求分析 图书馆管理系统应当可以提供所有借阅者的详细信息,以和馆内库存的详细状况,对借书和还书两大功能进行 合理的操作并登记。图书馆管理系统的重要任务是建立详尽的借阅信息,以和馆内的书种和对应书刊的记录,并对 借阅者和其借阅的书籍进行登记。在不一样的图书馆之间,图书管理https://max.book118.com/html/2024/0505/8054063016006065.shtm
3.图书管理系统数据库设计示例(精选9篇)图书管理系统数据库设计 一个简单的图书管理系统包括图书馆内书籍的信息、学校在校学生的信息以及学生的借阅信息。此系统功能分为面向学生和面向管理员两部分,其中学生可以进行借阅、续借、归还和查询书籍等操作,管理员可以完成书籍和学生的增加,删除和修改以及对学生,借阅、续借、归还的确认。 https://www.360wenmi.com/f/filea884fq3r.html
4.图书管理系统表设计一图书馆系统需求 二:图书馆数据库设计 通过对图书管理系统分析,有图书(book),图书类别(bookcatagory),书库(BookRoom),管理员(bookAdministrator),读者(Reader), 借阅证(borrowcard),借阅等级,借阅(Borrow),罚款单(Ticket)9个实体,表如下: 1:bookRoom表 https://www.jianshu.com/p/6891b869f584
5.图书馆管理系统用户表MySQL数据库设计大全数据库设计大全,MySQL数据库表结构图书馆管理系统-用户表,果创云,果创云(YesApi.cn),让项目开发更简单!果创云是免费,免开发,直接可用的开放式平台,拥有小白云端接口、小白数据管家等多个产品。我们将致力为开发者提供贴心的技术服务,为企业提供一站式技术解决方案https://open.yesapi.cn/tablelist/yesapi_t_member.html
6.设计一个图书管理系统数据库数据库缓存:我们可以使用缓存技术,将常用的数据缓存到内存中,以提高查询速度。 五、总结 设计一个图书管理系统数据库需要进行需求分析、数据库设计、数据库实现和数据库优化等步骤。通过合理的数据库设计和优化,可以提高图书管理系统的性能,提高图书馆的服务质量。https://www.dugusoft.com/zixun/zixun1351.html
7.图书管理系统设计个人总结(精选13篇)图书管理系统设计个人总结 篇3 我校历来重视图书馆建设,把它作为提高学生综合素质和学校办学品位的重要载体。尤其是近年来,学校图书馆的硬件设施和运作能力得到了长足的发展,被评为市一级图书馆。学生的图书借阅量逐年攀升,图书馆的育人效应日益彰显。现将我校图书馆建设、管理工作作如下简要总结。 https://www.unjs.com/fanwenwang/gerenzongjie/20220701084340_5248388.html
8.数据库大作业图书管理系统设计本科学生综合性实验报告本科学生综合性实验报告 课程名称:数据库系统原理课程名称:数据库系统原理 数据库设计 班级 B01 班姓名学号 项目名称 图书馆管理系统 指导教师 开课学期 2011 至 2012 学年 第二学期 完成时间 2012 年 5 月 30 日 目录 1 需求分析需求分析3 1.1 系统目标3 1.2 业务需求及处理流程3 1.3https://www.mayiwenku.com/p-19279831.html
9.基于python图书馆管理系统设计实例详解python我建立了一个数据库 book , 里面新建了三个表单, student, teacher, books,分别学生,老师, 图书表, 互不干扰,相互工作。 在student: 表的大致构造如上, 其实也就是简单的信息, 复杂的我暂时也做不了, 然后teacher 表单 信息 其实和 students 是一样的, 只不过这样设计, 可以封开, 更好管理! https://www.jb51.net/article/192576.htm
10.手把手实现Java图书管理系统(附源码)Javaweb项目:基于JavaWeb的图书管理系统(有源码) 源码如下 实现功能 数据库 运行环境 数据库设计 图书馆作为一种信息资源的集散地,图书和用户借阅资料繁多,包含很多的信息数据的管理,现今,有很多的图书馆都是初步开始使用,甚至尚未使用计算机进行信息管理。图书馆信息管理作为计算机应用的一个分支,有着手工管理无法比拟https://cloud.tencent.com/developer/article/2129040
11.基于安卓手机的图书馆管理系统设计与实现AET摘要: 根据智能手机的特点设计并实现了一种图书馆管理系统,该系统具有传统计算机图书馆管理系统的功能,更有针对手机的实用功能设计。读者无需携带实体借书证,可使用虚拟借书证进行借阅登记;无需借助条形码扫描仪器与电脑,管理员通过调用手机的摄像头与网络接口即可完成图书入库和图书的借出与归还登记。 http://www.chinaaet.com/article/3000003214
12.数据库大作业——图书馆管理系统.doc图书馆图书管理的数据库系统 学生姓名 赵俊艳 学号 2008115020350 指导教师 张国勇 所在院系 计算机科学与技术学院 专业名称 通信工程 完成时间 2011-6-18 一、需求分析 1、需求描述与分析 设计一个性能良好的数据库系统,明确应用环境对系统的要求是首要的和最基本的。特别是数据应用非常广泛,非常复杂,要是事先没有https://www.taodocs.com/p-127768796.html
13.图书管理系统需求报告(通用5篇)数据字典是对数据流程图中的数据,变换等进行精确的定义。 4、参考资料 《数据库系统简明教材》 《软件工程技术与实践》 《软件工程基础》 二、现行系统概况 该单位图书馆现为人工管理,效率低,易比错,手续繁琐,而且耗费大量的人力。图书馆希望设计一个图书管理系统,用于管理读者的登记,图书的购入、借出、归还以及注销https://www.ruiwen.com/baogao/6481699.html
14.图书借阅管理系统的设计与实现本系统以Visual Bacis6.0为开发工具,以SQL Server 2000为后台数据库管理系统,实现了以基本信息管理,图书借阅管理、系统用户管理模块为主要功能的系统开发。为图书借阅管理提供图书信息查询,借阅信息检索,用户信息查询等服务,系统的实施基本上能够满足图书馆对借书人的管理的需要,为提高图书馆借阅管理效率提供了行之有效的https://wap.cnki.net/touch/web/Dissertation/Article/1011054780.nh.html
15.基于Python的高校电子文档管理系统综合分析现有文件和资料管理的需求, 并根据文档实际生命周期的业务流程, 确定了系统功能模块的划分. 利用模型驱动工程思想建立系统的对象模型, 使用Rational建模工具建立系统类图和时序图来描述系统整体架构和业务逻辑, 选择轻量级Flask框架模型进行研发, 采用文档型数据库MongoDB解决大并发量和数据服务器的读写压力, 为https://c-s-a.org.cn/html/2021/4/7843.html
16.公共文化服务体系建设规划》《规划》强调,“十四五”时期要将坚持正确导向、坚持以人民为中心、坚持改革创新、坚持系统推进作为基本原则,重点从推进城乡公共文化服务体系一体建设,建设以人为中心的图书馆,繁荣群众文艺,增强公共文化服务实效性,推动公共文化服务社会化发展和数字化、网络化、智能化建设,推进公共文化服务区域均衡发展等七个方面着手加大http://www.hhh.gov.cn/article/4763.html
17.图书管理系统:使用jsplayuimysql完成的Web端图书管理系统图书管理员管理:对图书管理员进行增删改操作,但是不能修改原来的账号 图书借阅统计:通过折线图将图书馆近30天的每天借阅书籍数量直观的显示出来。 sql表 共有十张数据库表,书籍表、借书记录表、留言表、系统管理员表、借阅证表、图书管理管理员表书籍分类表、图书馆表、借阅规则表、公告表 书籍表 编号、姓名、作者https://toscode.mulanos.cn/mingyuefusu/tushuguanlixitong
18.图书管理系统sqlserver数据库物理结构数据库做图书管理系统实验设计开发一个简单的图书管理系统。包括图书馆内的书籍信息和读者信息以及相关的借阅信息。用户面向管理员和读者,管理员可以进行对数据库中图书的增删改查。读者可以进行图书的查询、借阅,续借和归还功能。 主要表: 系统功能模块图: ER图: 建立数据库及其相关对象: https://blog.51cto.com/u_87851/8618941
19.高中信息技术课程标准例1个人藏书、图书馆藏书、音像资料、因特网信息等都是信息资源,都需要管理。 例2实施教学信息资源管理的目的:提高教学资源利用率,提高教学效率与质量等。 (2)通过使用常见的数据库应用系统,感受利用数据库存储、管理大量数据并实现高效检索方面的优势。 https://www.fqkhzx.cn/index/article/view/id/94.html