最新版图书管理系统软件工程毕业课程设计.docx
- 文档编号:27535054
- 上传时间:2023-07-02
- 格式:DOCX
- 页数:42
- 大小:302.11KB
最新版图书管理系统软件工程毕业课程设计.docx
《最新版图书管理系统软件工程毕业课程设计.docx》由会员分享,可在线阅读,更多相关《最新版图书管理系统软件工程毕业课程设计.docx(42页珍藏版)》请在冰豆网上搜索。
最新版图书管理系统软件工程毕业课程设计
《软件工程—原理、方法与应用》
课程设计报告书
项目名称:
图书管理系统
指导老师:
学生姓名:
专业:
学号:
日期:
一、项目计划
(一)项目内容
在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行之有效的图书管理系统来管理自己的图书是非常方便的;对图书管理部门来讲,以前单一的手工检索已不能满足人们的要求,伴随着工业化、信息化的高速发展,图书的数目越来越庞大,图书种类也是越来越多样化;因而往往是投入了大量的人力、物力和财力却得不到高效的管理效率。
为了便于图书资料的管理、满足人们的需求,不必浪费大量的时间耗费在图书检索上,这就需要有一个有效的图书管理软件来帮助人们管理,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、便捷和智能化管理,达到提高图书管理效率的目的。
基于这个问题,研发了这个图书管理系统。
该系统主要实现功能:
管理员登录及退出、读者信息查询、图书的增加、删除、更新和查询。
(2)开发环境
开发环境:
Win7旗舰版。
开发工具:
SQLServer2005JCreator1.7
作图软件:
RationalRoseEnterpriseEdition2003
(3)进度安排
该软件应用JCreater1.7和SQLServer2005进行编程,历时大概一周,最终完成了这个小型图书管理系统。
由于时间仓促,该小型图书管理系统并不完善。
我用了两天时间查找相关资料,两天时间编写代码和连接数据库。
其余三天开始应用RationalRoseEnterpriseEdition2003画数据流图、结构图、流程图、用例图和包图类图。
整个过程系我一人完成。
二、结构化分析设计
(一)数据流图
书籍信息读者信息
读者信息查询信息
图2.1-1图书管理系统的顶层DFD
book表
录入信息查询请求
更新信息查询结果
reader表
图2.1-2图书管理系统的第二层DFD
book表reader表
图2.1-3图书管理系统的第三层DFD
查询结果
查询请求
无效请求有效请求
book表
图2.1-4图书管理系统的第三层DFD
(2)数据字典
数据流
数据流编号
D01
数据流名称
查询读者信息
数据流组成
学号
数据流编号
D02
数据流名称
查询读者信息结果
数据流组成
学号+姓名+性别+年龄+密码+系别
数据流编号
D03
数据流名称
添加书籍信息
数据流组成
索书号+书名+数量+作者+出版社
数据流编号
D04
数据流名称
删除书籍信息
数据流组成
索书号
数据流编号
D05
数据流名称
更新书籍信息
数据流组成
索书号+书名+数量+作者+出版社
数据流编号
D06
数据流名称
查询书籍信息
数据流组成
索书号
数据流编号
D07
数据流名称
查询书籍信息结果
数据流组成
索书号+书名+数量+作者+出版社
数据项
数据项名
学号
取值
数据项名
姓名
取值
4-6字符
数据项名
性别
取值
2字符
数据项名
年龄
取值
正整数
数据项名
密码
取值
6字符
数据项名
系别
取值
0—20字符
数据项名
索书号
取值
数据项名
书名
取值
0-20字符
数据项名
数量
取值
正整数
数据项名
作者
取值
0-20字符
数据项名
出版社
取值
0-20字符
(三)加工说明
审查用户查询书籍信息请求
2.3图-加工说明
(四)结构图
图2.4-1—图书管理系统上层框架
图2.4-2-图书管理子系统初始SC图
图2.4-3-图书管理子系统初始SC图
图2.4-4-图书管理系统SC图的上层框架
(5)流程图
图2.5-1—图书管理系统登录流程图
图2.5-2—读者信息查询流程图
图2.5-3—添加书籍流程图
图2.5-4—删除书籍流程图
图2.5-5—更新书籍流程图
图2.5-6—查询书籍流程图
三、面向对象分析设计
(一)用例图
用例图在需求分析阶段有重要作用,它是作为参与者的外部用户所能观察到的系统功能模型图。
整个开发过程都是围绕需求阶段用例进行的。
首先需要确定参与者。
管理员在登录后对读者信息进行查询以及对书籍的添加、删除、更新和查询。
用户在登录后可以对书籍信息进行查询。
图书管理系统管理员-用户用例图
(2)对象行为模型
继续选择服务登录错误
登录正确
查询读者信息
(三)系统包图
数据库包:
包含数据库中所有的数据信息
用户包:
包含要使用系统的用户及其属性
管理员包:
包含要使用系统的管理员及其属性
接口包:
表示系统和数据库的借口
系统包:
表示图书管理系统
(四)类图
类是面对对象系统组成的核心。
类是对一组相同属性、操作、关系和语义的对象的描述。
这些对象包括了对现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务等,甚至也包括了纯粹概念性的事务,它们都是类的实例。
图3.4-1类图
图3.4-2系统的类图
四、系统实现
(一)程序代码
1.主窗口界面
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.border.TitledBorder;
importjava.awt.Font;
importjavax.swing.JMenu;
publicclassMainWindowextendsJFrameimplementsActionListener
{privatestaticfinallongserialVersionUID=1L;
staticStringloginName;
staticStringloginNo;
JLabelmlabel;
JPaneljp=newJPanel();
建立菜单栏
JMenuBarmenu=newJMenuBar();
JMenua=newJMenu();
JMenub=newJMenu();
JMenuc=newJMenu();
建立系统管理菜单组
JMenuItemaa=newJMenuItem();
JMenuItemab=newJMenuItem();
JMenuItemac=newJMenuItem();
建立读者管理菜单组
JMenuItembb=newJMenuItem();
建立书籍管理菜单组
JMenuItemca=newJMenuItem();
JMenuItemcb=newJMenuItem();
JMenuItemcc=newJMenuItem();
JMenuItemcd=newJMenuItem();
publicMainWindow(){
super("图书管理系统");
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0);}});
Containerd=getContentPane();
this.setSize();
this.setTitle("图书管理系统");
d.add(menu);
menu.add(a);
menu.add(b);
menu.add(c);
添加菜单组
a.setText("系统管理");
a.setFont(newFont("Dialog",0,12));
b.setText("读者管理");
b.setFont(newFont("Dialog",0,12));
c.setText("书籍管理");
c.setFont(newFont("Dialog",0,12));
生成系统管理菜单组的选项
aa.setText("登录");
aa.setFont(newFont("Dialog",0,12));
ab.setText("退出登录");
ab.setFont(newFont("Dialog",0,12));
ac.setText("退出系统");
ac.setFont(newFont("Dialog",0,12));
生成读者管理菜单组的选项
bb.setText("查询读者信息");
bb.setFont(newFont("Dialog",0,12));
生成书籍管理菜单组的选项
ca.setText("添加书籍");
ca.setFont(newFont("Dialog",0,12));
cb.setText("删除书籍");
cb.setFont(newFont("Dialog",0,12));
cc.setText("查询读书信息");
cc.setFont(newFont("Dialog",0,12));
cd.setText("更新书籍");
cd.setFont(newFont("Dialog",0,12));
添加系统管理菜单组
a.add(aa);
a.add(ab);
a.add(ac);
添加读者管理菜单组
b.add(bb);
添加书籍管理菜单组
c.add(ca);
c.add(cb);
c.add(cc);
c.add(cd);
添加事件侦听
aa.addActionListener(this);
ab.addActionListener(this);
ac.addActionListener(this);
bb.addActionListener(this);
ca.addActionListener(this);
cb.addActionListener(this);
cc.addActionListener(this);
cd.addActionListener(this);
setJMenuBar(menu);}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==aa){
UserLoginlogin=newUserLogin(this);
login.setVisible(true);}
if(e.getSource()==ab){
setVisible(false);
MainWindowmainFrame=newMainWindow();
mainFrame.setLocation();
mainFrame.setVisible(true);
}
if(e.getSource()==ac)
{System.exit(0);}
if(e.getSource()==cc)
{FindBookfindbook=newFindBook();
findbook.setVisible(true);
}
if(e.getSource()==bb)
{
FindReaderfindreader=newFindReader();
findreader.setVisible(true);
}
if(e.getSource()==ca)
{
AddBookaddBook=newAddBook();
addBook.setVisible(true);
}
if(e.getSource()==cb)
{
DeleteBookdelBook=newDeleteBook();
delBook.setVisible(true);
}
if(e.getSource()==cd)
{
UpdateBookupdBook=newUpdateBook();
updBook.setVisible(true);
}}
publicvoidsetenabled(intright)
{if(right==1)
{
b.setEnabled(true);
c.setEnabled(true);}
if(right==2)
{
b.setEnabled(true);
c.setEnabled(true);}
}
publicstaticvoidmain(String[]args){
MainWindowmainFrame=newMainWindow();
mainFrame.setLocation();
mainFrame.setVisible(true);
}
}
2.用户登录界面
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjava.sql.*;
importjava.io.*;
publicclassUserLoginextendsJFrameimplementsActionListener
{
privatestaticfinallongserialVersionUID=1L;
Stringname;
DataBaseMangerdb=newDataBaseManger();
MainWindowmainFrame;
JFramef=null;
JPanelpanel1,panel2;
JLabelUserLabel,PasswordLabel;
JTextFieldUserTextField;
JPasswordFieldPasswordTextField;
JButtonYesBtn,CancelBtn;
Containerc;
ResultSetrs;
publicUserLogin(MainWindowmainFrame)
{
super("用户登录");
this.mainFrame=mainFrame;
UserLabel=newJLabel("用户名",JLabel.CENTER);
PasswordLabel=newJLabel("密码",JLabel.CENTER);
UserTextField=newJTextField(10);
PasswordTextField=newJPasswordField(10);
YesBtn=newJButton("确定");
CancelBtn=newJButton("取消");
YesBtn.addActionListener(this);
CancelBtn.addActionListener(this);
panel1=newJPanel();
panel1.setLayout(newGridLayout(2,2));
panel2=newJPanel();
c=getContentPane();
c.setLayout(newBorderLayout());
panel1.add(UserLabel);
panel1.add(UserTextField);
panel1.add(PasswordLabel);
panel1.add(PasswordTextField);
c.add(panel1,BorderLayout.CENTER);
panel2.add(YesBtn);
panel2.add(CancelBtn);
c.add(panel2,BorderLayout.CENTER);
setSize();
JLabelJL=newJLabel();
c.add(JL,"North");
c.add(panel1,"Center");
c.add("South",panel2);
panel1.setBackground(newColor());
setLocation();
}
publicvoidactionPerformed(ActionEvente)
{if(e.getSource()==CancelBtn)
{this.dispose();}
else
{char[]password=PasswordTextField.getPassword();
StringpasswordSTR=newString(password);
StringstrSQL;
strSQL="select*fromuserswhereuname='"+UserTextField.getText().trim()+"'andupassword='"+passwordSTR+"'";
rs=db.getResult(strSQL);
booleanisExist=false;
try
{rs.next();
mainFrame.loginNo=rs.getString
(1);
name=rs.getString
(1);
mainFrame.loginName=name;
intright;
right=rs.getInt
(1);
mainFrame.setenabled(right);
if(name.length()!
=0)
isExist=true;
}
catch(Exceptionpe)
{pe.printStackTrace();}
if(UserTextField.getText().trim().equals(""))
{
JOptionPane.showMessageDialog(null,"用户名不可为空!
");
return;
}
if(passwordSTR.equals(""))
{
JOptionPane.showMessageDialog(null,"密码不可为空!
");
return;
}
if(!
isExist)
{JOptionPane.showMessageDialog(null,"用户名不存在或者密码不正确!
");}
else
{JOptionPane.showMessageDialog(null,"登录成功");
this.dispose();}
}}}
3.读者信息查询
importjava.awt.*;
importjava.awt.event.*;
importjavax.swing.*;
importjavax.swing.event.*;
importjava.sql.*;
importjava.lang.String;
publicclassFindReaderextendsJFrameimplementsActionListener
{DataBaseMangerdb=newDataBaseManger();
MainWindowmw=newMainWindow();
ResultSetrs;
JLabelselect=newJLabel("请输入证件号");
JTextFieldjtf=newJTextField(10);
JPanelp1=newJPanel();
JPanelp2=newJPanel();
JPanelp3=newJPanel();
JPanelp4=newJPanel();
JLabellb=newJLabel("读者信息");
JButtonfindbt=newJButton("查询");
JButtonyesbt=newJButton("确定");
JTextAreajta=newJTextArea(10,10);
publicFindReader()
{super("查询读者信息");
Containerc=getContentPane();
p1.add(select);
p1.add(jtf);
p1.add(findbt);
c.add(p1,BorderLayout.NORTH);
p2.add(lb);p2.add(jta);
c.add(p2,BorderLayout.CENTER);
p4.add(yesbt);
c.add(p4,BorderLayout.SOUTH);
yesbt.addActionListener(this);
findbt.addActionListener(this);
setSize();
setVisible(true);
setLocation();
}
publicvoidactionPerformed(ActionEvente)
{
if(e.getActionCommand()=="确定")
this.dispose();
if(e.getActionCommand()=="查询")
{
Stringsno=jtf.getText();
StringsqlstrR;
if((mw.loginNo.trim().equals(sno))||(mw.loginName.trim().equals("admin")))
{sqlstrR="select*fromreaderwheresno='"+sno+"'";
rs=db.getResult(sqlstrR);
try
{rs.next();
jta.setText("");
jta.append("学号为:
"+rs.getString
(1)+","+"姓名为:
"+rs.getString
(2)+","+"性别为:
"+rs.getString(3)+"\n");
jta.append("年龄为:
"+rs.getString(4)+","+"密码为:
"+rs.getString(5)+","+"学院为:
"+rs.getString(6)+"\n");
Stringsqlstr="select*fromlendbookwheresno='"+
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新版 图书 管理 系统软件 工程 毕业 课程设计