java窗体毕业设计之图书管理系统.docx
- 文档编号:6675960
- 上传时间:2023-01-08
- 格式:DOCX
- 页数:108
- 大小:1.12MB
java窗体毕业设计之图书管理系统.docx
《java窗体毕业设计之图书管理系统.docx》由会员分享,可在线阅读,更多相关《java窗体毕业设计之图书管理系统.docx(108页珍藏版)》请在冰豆网上搜索。
java窗体毕业设计之图书管理系统
毕业论文
课题名称:
图书管理系统
学号:
姓名:
班级:
院系:
指导老师:
前言
随着社会的发展,人们对于知识的需求也在不断地增长。
书籍做为人们获取并增长知识的主要途径,使得图书馆在人们的生活中占有了一定位置。
但是近几年来,随着藏书量不断的增长,造成了书库空间极度不足,图书挤压,管理不善。
这些都直接影响了读者对图书馆藏书的充分利用。
这时各个图书馆就特别需要开发一套图书馆管理系统,通过该系统来提高图书馆的管理效率,从而减少管理方面的工作流和成本。
本系统针对图书馆的业务范围及工作特点,设计了用户客服端、读者管理、图书管理等三个大模块。
这三个模块包括了图书馆的主要业务。
用户客服端提供了个人信息、借阅情况、查询书籍状态,读者管理模块提供了个人信息、借/还书、查询书籍状态,图书管理模块提供了采购、编目、检索、统计等业务的计算机管理。
使图书馆管理水平和业务水平跃上一个新的台阶。
应用本系统可以在计算机上灵活、方便地管理用户和图书,从而大大的提高了处理速率,使管理更加现代化。
本系统是根据实际情况和具体内容,按照一定的要求,科学、合理的进行系统分析、设计,具体包括菜单设计、数据输入、查询、删除、个性等设计。
从而使本系统完全能满足经济性、灵活性、系统性及可靠性的要求。
第1章概述
早年的图书馆采用的都是手工操作的管理方式,随着图书馆藏书种类的增长,藏书量的不断增加,读者群的不断增多,这种传统的管理方式,暴露出了许多的管理漏洞。
随着计算机和网络技术在我国的快速发展,图书馆迫切需要一个能够实现自动化管理的管理系统。
通过该系统能够实时显示图书的库存数量和种类信息,还能够对读者进行管理,还能够实时显示书籍的借阅情况和订购情况。
通过系统来提高图书馆管理水平,同时提高工作效率。
第2章开发工具的选择
一、NetBeansIDE
是一个屡获殊荣的集成开发环境,可以方便的在Windows,Mac,Linux和Solaris中运行。
NetBeans包括开源的开发环境和应用平台,NetBeansIDE可以使开发人员利用Java平台能够快速创建Web、企业、桌面以及移动的应用程序,NetBeansIDE目前支持PHP、Ruby、JavaScript、Ajax、Groovy、Grails和C/C++等开发语言。
NetBeans项目由一个活跃的开发社区提供支持,NetBean开发环境提供了丰富的产品文档和培训资源以及大量的第三方插件。
NetBeans是开源软件开发集成环境,是一个开放框架,可扩展的开发平台,可以用于Java、C/C++,PHP等语言的开发,本身是一个开发平台,可以通过扩展插件来扩展功能。
在NetBeansPlatform平台中,应用软体是用一系列的软体模组(ModularSoftwareComponents)建构出来。
而这些模组是一个jar档(JavaArchiveFile)它包含了一组Java程式的类别而它们实作全依据依NetBeans定义了的公开介面以及一系列用来区分不同模组的定义描述档(ManifestFile)。
有赖於模组化带来的好处,用模组来建构的应用程式可只要加上新的模组就能进一步扩充。
由於模组可以独立地进行开发,所以由NetBeans平台开发出来的应用程式就能利用着第三方软件,非常容易及有效率地进行扩充。
第3章系统分析
一、需求分析
图书馆管理系统是一个高度集成的图书信息处理系统,通过将图书管理的各种功能进行整合,从而达到高速检索信息、提高工作效率、降低管理成本等目的。
一个典型的图书馆管理系统应该能够管理所有的图书种类、图书信息以及读者信息,还需要提供各种图书信息的检索查询功能。
该系统还需要能够对图书借阅、归还进行管理,并对读者的罚款进行自动计算。
通过该系统的自动化管理,能够大大养活图书馆管理人员,还能减少管理人员的工作任务,从而降低管理开销和成本。
二、功能分析
图书馆管理系统是管理图书的一个重要工具,一个功能完善的图书馆管理系统需要提供5个功能模块,分别是图书类别管理模块、图书信息管理模块、读者信息管理模块、图书借阅管理模块,以及系统维护模块。
其中各功能模块的具体说明如下。
图书类别管理模块:
该模块主要负责管理图书馆的图书种类信息,如图书种类的名称、可借天数、罚款数目等信息。
图书信息管理模块:
该模块主要负责管理图书馆的图书信息,如图书编号、图书名称、作者、出版社等信息。
读者信息管理模块:
该模块主要负责管理图书馆的读者信息,如读者编号、读者信息、最大借书量等信息。
图书借阅管理模块:
该模块主要负责管理图书馆的书籍借阅和归还信息,包括图书借阅、图书归还、图书搜索3个子模块。
系统维护模块:
该模块主要负责管理图书馆的工作人员信息,包括用户管理和更改系统口令两个子模块。
第4章系统设计
一、绘制用例图设计系统功能
图书馆管理系统是一个内部售货员使用的系统,也就是说不是所有人都能够使用它,只有图书馆的工作人员才能使用。
操作员,主要负责图书的借阅和归还的工作;还能够对书籍列表、书籍信息、读者信息等进行管理。
下面以普通用户和管理员为例绘制其所对应的用例图。
二、绘制系统流程图
本系统首先需要对用户的身份进行识别,只有合法的用户才能进入系统;否则将无法进入系统。
进入系统后,首先打开系统主窗体,在系统首页的菜单栏或者功能区可以选择各种导航链接来进行各种操作。
由于不同权限的用户对于系统有不同的功能。
其普通用户系统流程图如图所示。
其管理者系统流程图如图所示。
第5章数据库分析与设计
1.数据库分析
在开发图书管理系统时,考虑到图书量大,数据维护大的特点,决定采用SQLServer2000作为数据库管理系统。
在SQLServer中新增一个数据库,其数据库名为l。
数据库中一共包含6张表,储存不同的信息详细如图所示。
2.数据库概念设计
(1)读者超期罚金实体E—R图
(2)图书借阅信息实体E—R图
(3)管理员信息实体E—R图
(4)图书状态实体E—R图
(5)图书信息实体E—R图
(6)学生信息实体E—R图
3.数据库逻辑结构设计
(1)读者超期罚金表(book_overtime),表结构如下表所示:
(2)图书借阅信息表(BR),表结构如下表所示:
(3)管理员信息实体表(Manege),表结构如下表所示:
(4)图书状态表(status),表结构如下表所示:
(5)图书信息表(tushu),表结构如下表所示:
(6)学生信息表(U),表结构如下表所示:
4.绘制表之间关系E-R图
第6章图书管理系统具体实现
1.类设计
设计学生及图书公共类,数据库连接类,文本框限制长度类。
学生及图书公共类
publicclassTuShu{
publicTuShu(){
}
publicStringuserid;//学号
publicStringbook_id;//条型码
publicStringbook_name;//图书名称
publicStringbr_time;//借书时间
publicStringbook_return;//应还时间
publicStringbr_status;//图书状态
publicStringauthor;//作者
publicStringp_name;//出版社名
publicStringp_price;//价格
publicStringoverdue_book;//是否有超期图书
publicStringbook_overtime;
publicStringbook_NumberOfTimes;//预借次数
publicStringbook_Choose;//判断是否选择图书
}
数据库连接类
publicclassDAO{
protectedstaticStringdbCLassName="com.microsoft.jdbc.sqlserver.SQLServerDriver";
protectedstaticStringdbURL="jdbc:
microsoft:
sqlserver:
//localhost:
1433;DatabaseName=l";
privatestaticConnectionconn;
privateStringuser="sa";
privateStringpassword="";
privateDAO(){
try{
if(conn==null)
{Class.forName(dbCLassName);
conn=DriverManager.getConnection(dbURL,user,password);
}}catch(Exceptione)
{
e.printStackTrace();
}}
publicstaticResultSetexecuteQuery(Stringsql)
{try
{
if(conn==null)
newDAO();
returnconn.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_UPDATABLE).executeQuery(sql);//鍒涘缓鎵ц瀵硅薄
}catch(SQLExceptione)
{e.printStackTrace();
returnnull;
}}
publicstaticintexecuteUpdate(Stringsql)
{try
{if(conn==null)
newDAO();
Statementstat=conn.createStatement();
returnstat.executeUpdate(sql);
}catch(SQLExceptione)
{e.printStackTrace();
return-1;
}}
publicstaticvoidclose()
{try{
conn.close();
}catch(SQLExceptione)
{e.printStackTrace();}
finally{conn=null;}}}
文本框限制长度类
publicclassDocumentSizeFilterextendsDocumentFilter{
privateintmaxLength;
publicDocumentSizeFilter(intmaxLength){
this.maxLength=maxLength;
}
@Override
publicvoidinsertString(FilterBypassfb,intoffset,Stringstring,AttributeSetattrs)throwsBadLocationException{
if(fb.getDocument().getLength()+string.length()<=maxLength){
super.insertString(fb,offset,string,(javax.swing.text.AttributeSet)attrs);
}else{Toolkit.getDefaultToolkit().beep();}}
@Override
publicvoidreplace(FilterBypassfb,intoffset,intlength,Stringstring,AttributeSetattrs)throwsBadLocationException{
if(fb.getDocument().getLength()+string.length()<=maxLength){
super.replace(fb,offset,length,string,(javax.swing.text.AttributeSet)attrs);
}else{Toolkit.getDefaultToolkit().beep();}
}}
2.普通用户登录模块
用户账号非数字的报错
系统登录界面代码:
publicclassUserextendsjavax.swing.JFrameimplementsActionListener,ItemListener,FocusListener,KeyListener{
staticprivateStringUsername;
staticprivateStringManegename;
publicUser(){
initComponents();
this.setLocationRelativeTo(this);
jTextField1.setText("");
jPasswordField1.setText("");
jButton1.addActionListener(this);
jButton2.addActionListener(this);
jComboBox1.addItemListener(this);
jButton4.addActionListener(this);
jPasswordField1.addFocusListener(this);
jTextField1.addFocusListener(this);
jLabel4.setText("");
jPasswordField1.addKeyListener(this);
AbstractDocumentTextField1=(AbstractDocument)jTextField1.getDocument();
AbstractDocumentPasswordField1=(AbstractDocument)jPasswordField1.getDocument();
TextField1.setDocumentFilter(newDocumentSizeFilter(12));//设置文本长度12
PasswordField1.setDocumentFilter(newDocumentSizeFilter(12));
}
publicstaticStringUserName(){
returnUsername;
}
publicstaticvoidmain(Stringargs[]){
java.awt.EventQueue.invokeLater(newRunnable(){
publicvoidrun(){
newUser().setVisible(true);
}
});
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==jButton2){//登录按钮
intSelect=jComboBox1.getSelectedIndex();
Stringpwd=null;
pwd=String.valueOf(jPasswordField1.getPassword()).trim();
if(Select==0){//普通用户登录
try{
Long.valueOf(jTextField1.getText().trim());
Username=jTextField1.getText().trim();
Stringsql="select*fromUwhereuserid='"+Username+"'";
ResultSetresult=DAO.executeQuery(sql);
try{
if(result.next()){
Stringrepwd;
repwd=result.getString(4);
if(pwd.equals(repwd.trim())){
UserJFramnewmain=newUserJFram();
newmain.setVisible(true);
this.setVisible(false);}
else{JOptionPane.showMessageDialog(null,"密码出错!
",null,2);}
}else
JOptionPane.showMessageDialog(null,"用户账号不存在!
",null,2);
}catch(SQLExceptionex){
ex.printStackTrace();}
}catch(NumberFormatExceptionex){
JOptionPane.showMessageDialog(null,"用户号必须是数字!
",null,2);
}
}
if(Select==1){//管理者登录
try{
Long.valueOf(jTextField1.getText().trim());
Manegename=jTextField1.getText().trim();
Stringsql="select*fromManegewhereManegeID='"+Manegename+"'";
ResultSetresult=DAO.executeQuery(sql);
try{
if(result.next()){
Stringrepwd;
repwd=result.getString
(2);
if(pwd.equals(repwd.trim())){
ChooseJFramenewmain=newChooseJFrame();
newmain.setVisible(true);
this.setVisible(false);}
else{JOptionPane.showMessageDialog(null,"密码出错!
",null,2);}
}else
JOptionPane.showMessageDialog(null,"管理者账号不存在!
",null,2);
}catch(SQLExceptionex){
ex.printStackTrace();}
}catch(NumberFormatExceptionex){
JOptionPane.showMessageDialog(null,"用户号必须是数字!
",null,2);
}}}
if(e.getSource()==jButton4){
zhucheu=newzhuche();
u.setVisible(true);}
if(e.getSource()==jButton1){
jTextField1.setText("");
jPasswordField1.setText("");}}
@Override
publicvoiditemStateChanged(ItemEvente){
if(e.getSource()==jComboBox1){
if(jComboBox1.getSelectedIndex()==1)jButton4.setVisible(false);
elsejButton4.setVisible(true);}}
@Override
publicvoidfocusGained(FocusEvente){
if(e.getSource()==jPasswordField1){
try{jLabel4.setText("");
if(jTextField1.getText().equals(""))jLabel4.setText("用户号不能为空!
");
elseLong.valueOf(jTextField1.getText().trim());
}catch(NumberFormatExceptionex){
jLabel4.setText("用户号必须是数字!
");
}}}
@Override
publicvoidfocusLost(FocusEvente){
if(e.getSource()==jTextField1){
try{jLabel4.setText("");
if(jTextField1.getText().equals(""))jLabel4.setText("用户号不能为空!
");
elseLong.valueOf(jTextField1.getText().trim());
}catch(NumberFormatExceptionex){
jLabel4.setText("用户号必须是数字!
");}}}
@Override
publicvoidkeyTyped(KeyEvente){}
@Override
publicvoidkeyPressed(KeyEvente){}
@Override
publicvoidkeyReleased(KeyEvente){
if(e.getSource()==jPasswordField1){
if(e.getKeyCode()==10)jButton2.doClick();
}}}
3.普通用户注册
由于没有账号先进行“注册”,进入注册界面。
单击“确定”注册成功,数据库有刚刚注册用户的信息。
如果重复注册则会报错或如果注册的密码位数不在6—10之间则会提示出错!
“注册”界面的代码
publicclasszhucheextendsjavax.swing.JFrameimplementsActionListener,FocusListener,ItemListener{
Stringuserid="",repassword="",userpassword="";//用户学号
publiczhuche(){
initComponents();
this.setLocationRelativeTo(this);
this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
jTextField1.setText("");
jTextField2.setText("");
jPasswordField1.setText("");
jPasswordField2.setText("");
jTextField4.setText("");
jLabel11.setText("");
jLabel12.setText("");
jLabel13.setText("");
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- java 窗体 毕业设计 图书 管理 系统
![提示](https://static.bdocx.com/images/bang_tan.gif)