搜档网
当前位置:搜档网 › 图书管理系统软件工程毕业课程设计

图书管理系统软件工程毕业课程设计

(此文档为word格式,下载后您可任意编辑修改!)

《软件工程—原理、方法与应用》

课程设计报告书

项目名称:图书管理系统

指导老师:

学生姓名:

专业:

学号:

日期:

目录

一、项目计划 (1)

(一)项目内容 (1)

(二)开发环境 (1)

(三)进度安排 (2)

二、结构化分析设计 (2)

(一)数据流图 (2)

(二)数据字典 (3)

(三)加工说明 (6)

(四)结构图 (6)

(五)流程图 (6)

三、面向对象分析设计 (7)

(一)用例图 (7)

(二)对象行为模型 (8)

(三)系统包图 (9)

(四)类图 (9)

四、系统实现 (11)

(一)程序代码 (11)

(二)功能演示 (26)

五、测试 (29)

六、软件发布 (34)

七、总结体会 (35)

八、参考文献 (35)

一、项目计划

(一)项目内容

在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行之有效的图书管理系统来管理自己的图书是非常方便的;对图书管理部门来讲,以前单一的手工检索已不能满足人们的要求,伴随着工业化、信息化的高速发展,图书的数目越来越庞大,图书种类也是越来越多样化;因而往往是投入了大量的人力、物力和财力却得不到高效的管理效率。为了便于图书资料的管理、满足人们的需求,不必浪费大量的时间耗费在图书检索上,这就需要有一个有效的图书管理软件来帮助人们管理,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、便捷和智能化管理,达到提高图书管理效率的目的。基于这个问题,研发了这个图书管理系统。

该系统主要实现功能:管理员登录及退出、读者信息查询、图书的增加、删除、更新和查询。

(二)开发环境

开发环境:Win 7 旗舰版。

开发工具:SQL Server 2005 JCreator1.7

作图软件:Rational Rose Enterprise Edition 2003

(三)进度安排

该软件应用JCreater1.7和SQL Server 2005进行编程,历时大概一周,最终完成了这个小型图书管理系统。由于时间仓促,该小型图书管理系统并不完善。我用了两天时间查找相关资料,两天时间编写代码和连接数据库。其余三天开始应用Rational Rose Enterprise Edition 2003画数据流图、结构图、流程图、用例图和包图类图。

整个过程系我一人完成。

二、结构化分析设计

(一)数据流图

书籍信息读者信息

读者信息查询信息

图2.1-1图书管理系统的顶层DFD

book表

录入信息查询请求

更新信息查询结果 reader表

图2.1-2图书管理系统的第二层DFD

book表 reader表

图2.1-3图书管理系统的第三层DFD

查询结果

查询请求

无效请求有效请求

book表

图2.1-4图书管理系统的第三层DFD (二)数据字典

数据流

数据流编号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图的上层框架(五)流程图

图2.5-1—图书管理系统登录流程图

图2.5-2—读者信息查询流程图

图2.5-3—添加书籍流程图

图2.5-4—删除书籍流程图

图2.5-5—更新书籍流程图

图2.5-6—查询书籍流程图

三、面向对象分析设计

(一)用例图

用例图在需求分析阶段有重要作用,它是作为参与者的外部用户所能观察到的系统功能模型图。整个开发过程都是围绕需求阶段用例进行的。首先需要确定参与者。

管理员在登录后对读者信息进行查询以及对书籍的添加、删除、更新和查询。

用户在登录后可以对书籍信息进行查询。

图书管理系统管理员-用户用例图(二)对象行为模型

继续选择服务登录错误

登录正确

查询读者信息

(三)系统包图

数据库包:包含数据库中所有的数据信息

用户包:包含要使用系统的用户及其属性

管理员包:包含要使用系统的管理员及其属性

接口包:表示系统和数据库的借口

系统包:表示图书管理系统

(四)类图

类是面对对象系统组成的核心。类是对一组相同属性、操作、关系和语义的对象的描述。这些对象包括了对现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务等,甚至也包括了纯粹概念性的事务,它们都是类的实例。

图3.4-1类图

图3.4-2系统的类图

四、系统实现

(一)程序代码

1.主窗口界面

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.border.TitledBorder;

import java.awt.Font;

import javax.swing.JMenu;

public class MainWindow extends JFrame implements ActionListener { private static final long serialVersionUID = 1L;

static String loginName;

static String loginNo;

JLabel mlabel;

JPanel jp=new JPanel();

建立菜单栏

JMenuBar menu=new JMenuBar();

JMenu a=new JMenu();

JMenu b=new JMenu();

JMenu c=new JMenu();

建立系统管理菜单组

JMenuItem aa=new JMenuItem();

JMenuItem ab=new JMenuItem();

JMenuItem ac=new JMenuItem();

建立读者管理菜单组

JMenuItem bb=new JMenuItem();

建立书籍管理菜单组

JMenuItem ca=new JMenuItem();

JMenuItem cb=new JMenuItem();

JMenuItem cc=new JMenuItem();

JMenuItem cd=new JMenuItem();

public MainWindow(){

super("图书管理系统");

addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);}});

Container d=getContentPane();

this.setSize();

this.setTitle("图书管理系统");

d.add(menu);

menu.add(a);

menu.add(b);

menu.add(c);

添加菜单组

a.setText("系统管理");

a.setFont(new Font("Dialog",0,12));

b.setText("读者管理");

b.setFont(new Font("Dialog",0,12));

c.setText("书籍管理");

c.setFont(new Font("Dialog",0,12)); 生成系统管理菜单组的选项

aa.setText("登录");

aa.setFont(new Font("Dialog",0,12)); ab.setText("退出登录");

ab.setFont(new Font("Dialog",0,12)); ac.setText("退出系统");

ac.setFont(new Font("Dialog",0,12)); 生成读者管理菜单组的选项

bb.setText("查询读者信息");

bb.setFont(new Font("Dialog",0,12)); 生成书籍管理菜单组的选项

ca.setText("添加书籍");

ca.setFont(new Font("Dialog",0,12)); cb.setText("删除书籍");

cb.setFont(new Font("Dialog",0,12)); cc.setText("查询读书信息");

cc.setFont(new Font("Dialog",0,12)); cd.setText("更新书籍");

cd.setFont(new Font("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);}

public void actionPerformed(ActionEvent e){ if(e.getSource()==aa){

UserLogin login=new UserLogin(this);

login.setVisible(true);}

if(e.getSource()==ab){

setVisible(false);

MainWindow mainFrame=new MainWindow();

mainFrame.setLocation();

mainFrame.setVisible(true);

}

if(e.getSource()==ac)

{System.exit(0);}

if(e.getSource()==cc)

{FindBook findbook=new FindBook();

findbook.setVisible(true);

}

if(e.getSource()==bb)

{

FindReader findreader=new FindReader(); findreader.setVisible(true);

}

if(e.getSource()==ca)

{

AddBook addBook=new AddBook();

addBook.setVisible(true);

}

if(e.getSource()==cb)

{

DeleteBook delBook=new DeleteBook();

delBook.setVisible(true);

}

if(e.getSource()==cd)

{

UpdateBook updBook=new UpdateBook();

updBook.setVisible(true);

}}

public void setenabled(int right)

{if(right==1)

{

b.setEnabled(true);

c.setEnabled(true);}

if(right==2)

{

b.setEnabled(true);

c.setEnabled(true);}

}

public static void main (String[] args){

MainWindow mainFrame=new MainWindow();

mainFrame.setLocation();

mainFrame.setVisible(true);

}

}

2.用户登录界面

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import java.sql.*;

import java.io.*;

public class UserLogin extends JFrame implements ActionListener {

private static final long serialVersionUID = 1L;

String name;

DataBaseManger db=new DataBaseManger();

MainWindow mainFrame;

JFrame f=null;

JPanel panel1,panel2;

JLabel UserLabel,PasswordLabel;

JTextField UserTextField;

JPasswordField PasswordTextField;

JButton YesBtn,CancelBtn;

Container c;

ResultSet rs;

public UserLogin(MainWindow mainFrame)

{

super("用户登录");

this.mainFrame=mainFrame;

UserLabel=new JLabel("用户名",JLabel.CENTER);

PasswordLabel=new JLabel("密码",JLabel.CENTER);

UserTextField=new JTextField(10);

PasswordTextField=new JPasswordField(10);

YesBtn=new JButton("确定");

CancelBtn=new JButton("取消");

YesBtn.addActionListener(this);

CancelBtn.addActionListener(this);

panel1=new JPanel();

panel1.setLayout(new GridLayout(2,2));

panel2=new JPanel();

c=getContentPane();

c.setLayout(new BorderLayout());

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();

JLabel JL=new JLabel();

c.add(JL,"North");

c.add(panel1,"Center");

c.add("South",panel2);

panel1.setBackground(new Color());

setLocation();

}

public void actionPerformed(ActionEvent e)

{if(e.getSource()==CancelBtn)

{this.dispose();}

else

{char[] password=PasswordTextField.getPassword();

String passwordSTR=new String(password);

String strSQL;

strSQL="select * from users where uname='"+UserTextField.getText().trim()+"'and upassword='"+passwordSTR+"'";

rs=db.getResult(strSQL);

boolean isExist=false;

try

{ rs.next();

mainFrame.loginNo=rs.getString(1);

name=rs.getString(1);

mainFrame.loginName=name;

int right;

right=rs.getInt(1);

mainFrame.setenabled(right);

if(name.length()!=0)

isExist=true;

}

catch(Exception pe)

{ 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.读者信息查询

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

import javax.swing.event.*;

import java.sql.*;

import https://www.sodocs.net/doc/9481457.html,ng.String;

public class FindReader extends JFrame implements ActionListener

{ DataBaseManger db=new DataBaseManger();

MainWindow mw=new MainWindow();

ResultSet rs;

JLabel select=new JLabel("请输入证件号");

JTextField jtf=new JTextField(10);

JPanel p1=new JPanel();

JPanel p2=new JPanel();

JPanel p3=new JPanel();

JPanel p4=new JPanel();

JLabel lb=new JLabel("读者信息");

JButton findbt=new JButton("查询");

JButton yesbt=new JButton("确定");

JTextArea jta=new JTextArea(10,10);

public FindReader()

{ super("查询读者信息");

Container c=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();

}

public void actionPerformed(ActionEvent e)

{

if(e.getActionCommand()=="确定")

this.dispose();

if(e.getActionCommand()=="查询")

{

String sno=jtf.getText();

String sqlstrR;

if((mw.loginNo.trim().equals(sno))||(mw.loginName.trim().equals("admin")))

{ sqlstrR="select * from reader where sno='"+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");

String sqlstr="select * from lendbook where sno='"+sno+"'";

rs=db.getResult(sqlstr);}

catch(Exception pe)

{ pe.printStackTrace(); } }

else

{

JOptionPane.showMessageDialog(null,"请输入正确的证件号!");

}}}}

4.增加图书信息

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

相关主题