课程名称:数据库原理名称:图书借阅子系统数据库设计
指导教师评定:签名:
一、项目环境
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);//连接数据库对象