计科系图书管理系统软件工程

更新时间:2023-12-23 06:47:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

项目名称:图书管理系统 指导老师: 学生姓名:专 业:学 号:日 期:

目录

一、项目计划........................................................ 1

(一)项目内容.................................................. 1 (二) 开发环境................................................. 1 (三) 进度安排................................................. 2 二、结构化分析设计.................................................. 2

(一)数据流图.................................................. 2 (二) 数据字典................................................. 3 (三)加工说明.................................................. 6 (四)结构图.................................................... 6 (五) 流程图................................................... 9 三、面向对象分析设计............................................... 12

(一)用例图................................................... 12 (二) 对象行为模型............................................ 13 (三)系统包图................................................. 14 (四)类图..................................................... 15 四、系统实现....................................................... 16

(一)程序代码................................................. 16 (二)功能演示................................................. 31 五、测试........................................................... 34 六、 软件发布...................................................... 39 七、总结体会....................................................... 39 八、 参考文献...................................................... 40

《软件工程—原理、方法与应用》课程设计报告书

一、项目计划

(一)项目内容

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

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

(二)开发环境

开发环境:Win 7 旗舰版。

开发工具:SQL Server 2005 JCreator1.7 作图软件:Rational Rose Enterprise Edition 2003

1

《软件工程—原理、方法与应用》课程设计报告书

(三)进度安排

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

二、结构化分析设计

(一)数据流图

管 图书 书籍信息 读者信息 理 管理 读者信息 查询信息 员 系 统

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

book表

管 录入信息 查询请求 用

理 更新 查询 员 更新信息 查询结果 户

reader表

2

《软件工程—原理、方法与应用》课程设计报告书

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

管理员 添加 删除 更新 删除 book表 reader表 图2.1-3图书管理系统的第三层DFD

查询结果 查询请求 审查有 效性 有效请求 无效请求 户 用 查询 book表

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

(二)数据字典

数据流

数据流编号 数据流名称

D01 查询读者信息

3

《软件工程—原理、方法与应用》课程设计报告书

数据流组成 数据流编号 数据流名称 数据流组成 数据流编号 数据流名称 数据流组成 数据流编号 数据流名称 数据流组成 数据流编号 数据流名称 数据流组成 数据流编号 数据流名称 数据流组成 数据流编号 数据流名称 数据流组成 学号 D02 查询读者信息结果 学号+姓名+性别+年龄+密码+系别 D03 添加书籍信息 索书号+书名+数量+作者+出版社 D04 删除书籍信息 索书号 D05 更新书籍信息 索书号+书名+数量+作者+出版社 D06 查询书籍信息 索书号 D07 查询书籍信息结果 索书号+书名+数量+作者+出版社 数据项

数据项名 学号 取 值 0000-9999

4

《软件工程—原理、方法与应用》课程设计报告书

数据项名 姓名 取 值 4-6字符 数据项名 性别 取 值 2字符 数据项名 年龄 取 值 正整数 数据项名 密码 取 值 6字符 数据项名 系别 取 值 0—20字符 数据项名 索书号 取 值 00000-99999 数据项名 书名 取 值 0-20字符 数据项名 数量 取 值 正整数 数据项名 作者 取 值 0-20字符 数据项名 出版社 取 值 0-20字符 5

《软件工程—原理、方法与应用》课程设计报告书

(三)加工说明

审查用户查询书籍信息请求

到书籍表中检索用户输入的索书号

将信息返回给用户 如果书籍表中无此索书号 则 否则 按索书号检索书籍表,获得该书籍的信息 返回无效请求

2.3图-加工说明

(四)结构图

系统管理 用 退出登录 退出系统 图书管理系统主界面 读者管理 书籍管理 查询读者信6 添加书籍 删除书籍 查询书籍信息 更新书籍 户 登录 息 《软件工程—原理、方法与应用》课程设计报告书

图书管理系统 用户命令 用户命令 用户命令 读出用户选择 书籍管理 读者管理 查询 添加 删除 修改 查询

图2.4-1—图书管理系统上层框架 添加书籍 索书号 图2.4-2-图书管理子系统初始SC图

7

书籍管理 删除书籍 更新书籍 查询书籍 书名 数量 作者 出版社 《软件工程—原理、方法与应用》课程设计报告书

学号 读者管理 读者管理 姓名 性别 年龄 密码 系别 图2.4-3-图书管理子系统初始SC图

图书管理系统 选择用户所需功能 分析用户命令 1:添加命令

2:删除命令 3:修改命令 4:查询命令

1 2 3 4 登录 退出 读者管理书籍管理

图2.4-4-图书管理系统SC图的上层框架

8

《软件工程—原理、方法与应用》课程设计报告书

(五)流程图

开始

验证用户名和密码 输入用户名和密码

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

查询读者信息

9 验证正确 进入图书管理系统主界面 提示“用户名不存在或者密码不正确!” 选择相应管理操作 退出系统 开始 输入证件号 证件号正确 提示“请输入正确证件号!” 《软件工程—原理、方法与应用》课程设计报告书

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

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

结束

10

确定 开始 输入书籍信息 添加书籍失败! 索书号已存在 提示“此书号已存在,请重新输入索书号!” 确定 添加书籍成功! 开始 输入要删除的图书索引号 确定 删除书籍成功! 《软件工程—原理、方法与应用》课程设计报告书

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

结束

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

结束

11

开始 输入新的图书信息 确定 更新书籍成功! 开始 请输入书名或者索书号 验证正确 提示“对不起,没有您要找的书籍!” 查询书籍信息 《软件工程—原理、方法与应用》课程设计报告书

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

三、面向对象分析设计

(一)用例图

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

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

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

12

《软件工程—原理、方法与应用》课程设计报告书

图书管理系统管理员-用户用例图

(二)对象行为模型

登录系统 继续选择服务 登录错误 登录正确 书籍管理 选择服务类型 查询读者信息 查询读者信息 13 输入证件号!

《软件工程—原理、方法与应用》课程设计报告书

添加书籍 删除书籍 显示读者信息 添加成功! 查询书籍 输入书籍信息 输入索书号 输入索书号 删除成功! 显示书籍信息 (三)系统包图 退出登录 结束服务

数据库包:包含数据库中所有的数据信息 用户包:包含要使用系统的用户及其属性 管理员包:包含要使用系统的管理员及其属性 接口包:表示系统和数据库的借口 系统包:表示图书管理系统

14

《软件工程—原理、方法与应用》课程设计报告书

(四)类图

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

图3.4-1类图

15

《软件工程—原理、方法与应用》课程设计报告书

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

16

《软件工程—原理、方法与应用》课程设计报告书

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(300,200);

this.setTitle(\图书管理系统\d.add(menu); menu.add(a); menu.add(b); menu.add(c); //添加菜单组

a.setText(\系统管理\

a.setFont(new Font(\b.setText(\读者管理\

b.setFont(new Font(\c.setText(\书籍管理\

c.setFont(new Font(\//生成系统管理菜单组的选项 aa.setText(\登录\

aa.setFont(new Font(\ab.setText(\退出登录\

ab.setFont(new Font(\ac.setText(\退出系统\

ac.setFont(new Font(\//生成读者管理菜单组的选项 bb.setText(\查询读者信息\

bb.setFont(new Font(\//生成书籍管理菜单组的选项

17

《软件工程—原理、方法与应用》课程设计报告书

setVisible(false);

MainWindow mainFrame=new MainWindow(); mainFrame.setLocation(400,150); mainFrame.setVisible(true);

}

UserLogin login=new UserLogin(this); login.setVisible(true);} if(e.getSource()==ab){

ca.setText(\添加书籍\

ca.setFont(new Font(\cb.setText(\删除书籍\

cb.setFont(new Font(\cc.setText(\查询读书信息\

cc.setFont(new Font(\cd.setText(\更新书籍\

cd.setFont(new Font(\//添加系统管理菜单组 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){

if(e.getSource()==ac) {System.exit(0);} if(e.getSource()==cc)

18

《软件工程—原理、方法与应用》课程设计报告书

{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(400,200); mainFrame.setVisible(true);

2.用户登录界面 import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.sql.*;

19

《软件工程—原理、方法与应用》课程设计报告书

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(\用户名\PasswordLabel=new JLabel(\密码\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(300,150); JLabel JL=new JLabel(); c.add(JL,\c.add(panel1,\

20

《软件工程—原理、方法与应用》课程设计报告书

c.add(\

panel1.setBackground(new Color(255,255,255)); setLocation(400,200); }

public void actionPerformed(ActionEvent e) {if(e.getSource()==CancelBtn) {this.dispose();} else

{char[] password=PasswordTextField.getPassword(); String passwordSTR=new String(password); String strSQL; strSQL=\

*

from

users

where

uname='\

upassword='\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();} }}}

21

《软件工程—原理、方法与应用》课程设计报告书

3.读者信息查询 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.sql.*; import java.lang.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);

}

public void actionPerformed(ActionEvent e) {

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

this.dispose();

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

22

yesbt.addActionListener(this); findbt.addActionListener(this); setSize(500,300); setVisible(true); setLocation(400,150);

《软件工程—原理、方法与应用》课程设计报告书

{

String sno=jtf.getText(); String sqlstrR;

{ sqlstrR=\

rs=db.getResult(sqlstrR); try

{ rs.next();

jta.setText(\

if((mw.loginNo.trim().equals(sno))||(mw.loginName.trim().equals(\

jta.append(\学号为:\, \姓名为:\,\性别为:\

jta.append(\年龄为:\, \密码为:\,\学院为:\

String sqlstr=\

rs=db.getResult(sqlstr);} {

JOptionPane.showMessageDialog(null,\请输入正确的证件号!\catch(Exception pe)

{ pe.printStackTrace(); } }

else

}}}}

4.增加图书信息 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.sql.*;

public class AddBook extends JFrame implements ActionListener { MainWindow mw=new MainWindow();

DataBaseManger db=new DataBaseManger(); ResultSet rs; JPanel a,b,c,d,e,f; JLabel bno=new JLabel(); JLabel bnum=new JLabel(); JLabel author=new JLabel(); JLabel publisher=new JLabel(); JTextField tname=new JTextField(20); JTextField tno=new JTextField(20); JTextField tnum=new JTextField(20); JTextField tauthor=new JTextField(20); JTextField tpublisher=new JTextField(20); JButton addbt=new JButton(\添加\

JLabel bname=new JLabel();

JButton yesbt=new JButton(\确定\

23

《软件工程—原理、方法与应用》课程设计报告书

JPanel p3=new JPanel();

public AddBook()

{

super(\添加图书\

a=new JPanel();

b=new JPanel(); c=new JPanel(); d=new JPanel(); e=new JPanel(); f=new JPanel();

bname.setText(\书名 :\

bname.setFont(new Font(\ bno.setText(\索书号 :\

bno.setFont(new Font(\ bnum.setText(\数量:\

bnum.setFont(new Font(\ author.setText(\作者:\

author.setFont(new Font(\ publisher.setText(\出版社 :\

publisher.setFont(new Font(\ a.add(bname);

a.add(tname);

b.add(bno);

c.add(bnum);

b.add(tno);

c.add(tnum);

d.add(author); e.add(publisher);

d.add(tauthor); e.add(tpublisher);

f.add(addbt);

f.add(yesbt);

add(a);

add(b); add(c); add(d); add(e); add(f);

}

setLayout(new GridLayout(8,1)); addbt.addActionListener(this); yesbt.addActionListener(this); setSize(500,300); setLocation(400,150);

24

《软件工程—原理、方法与应用》课程设计报告书

public void actionPerformed(ActionEvent e) {

String bname,bno,author,publisher; int bnum;

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

this.dispose();

if(e.getActionCommand()==\添加\{

bname=tname.getText(); bno=tno.getText(); author=tauthor.getText(); publisher=tpublisher.getText(); bnum=Integer.parseInt(tnum.getText()); String sqlstr1=\rs=db.getResult(sqlstr1); try{

while(rs.next()) {

if(rs.getString(1).trim().equals(bno)) {

JOptionPane.showMessageDialog(null,\此书号已存在,请重新输入索书

号!\

}

catch(Exception pe) {

}

} else {break;}

pe.printStackTrace();

}

String sqlstr=\into book (bno,bname,bnum,author,publisher) values

('\

boolean result=db.updateSql(sqlstr); db.closeConnection(); if(result) {

JOptionPane.showMessageDialog(null,\添加书籍成功!\ } else {

JOptionPane.showMessageDialog(null,\添加书籍失败!\ }}}}

5.删除图书信息

25

《软件工程—原理、方法与应用》课程设计报告书

import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.sql.*;

public class DeleteBook extends JFrame implements ActionListener { MainWindow mw=new MainWindow();

DataBaseManger db=new DataBaseManger(); ResultSet rs;

JLabel bno=new JLabel(\请输入要删除的图书索引号:

\

JLabel L;

JTextField tno=new JTextField(10); JTable table;

JButton delbt=new JButton(\删除\JButton yesbt=new JButton(\确定\JPanel p1=new JPanel(); JPanel p2=new JPanel(); public DeleteBook() { super(\删除图书\

Container c=getContentPane(); p1.add(bno); p1.add(tno); p2.add(delbt); p2.add(yesbt);

c.add(p2,BorderLayout.SOUTH); delbt.addActionListener(this); yesbt.addActionListener(this); setSize(400,300); setLocation(400,150); JPanel p=new JPanel();

p.setLayout(new BorderLayout()); }

c.add(p1,BorderLayout.NORTH);

public void actionPerformed(ActionEvent e) { String bno;

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

this.dispose();

if(e.getActionCommand()==\删除\{ bno=tno.getText();

String sqlstr=\

boolean result=db.updateSql(sqlstr); db.closeConnection(); if(result)

{JOptionPane.showMessageDialog(null,\删除书籍成功!\

26

《软件工程—原理、方法与应用》课程设计报告书

else

{JOptionPane.showMessageDialog(null,\删除书籍失败!\ }}}}

6.更新图书信息 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.sql.*;

public class UpdateBook extends JFrame implements ActionListener { MainWindow mw=new MainWindow();

DataBaseManger db=new DataBaseManger(); ResultSet rs; JPanel a,b,c,d,e,f; JLabel bname=new JLabel(); JLabel bno=new JLabel(); JLabel bnum=new JLabel(); JLabel author=new JLabel(); JLabel publisher=new JLabel(); JTextField tname=new JTextField(20); JTextField tno=new JTextField(20); JTextField tnum=new JTextField(20); JTextField tauthor=new JTextField(20); JTextField tpublisher=new JTextField(20); JButton addbt=new JButton(\更新\

JButton yesbt=new JButton(\确定\

JPanel p3=new JPanel(); public UpdateBook() { super(\更新图书\

a=new JPanel(); b=new JPanel(); c=new JPanel(); d=new JPanel(); e=new JPanel(); f =new JPanel();

bname.setText(\书名 :\

bname.setFont(new Font(\ bno.setText(\索书号 :\

bno.setFont(new Font(\ bnum.setText(\数量:\

bnum.setFont(new Font(\ author.setText(\作者:\

author.setFont(new Font(\ publisher.setText(\出版社 :\

27

《软件工程—原理、方法与应用》课程设计报告书

publisher.setFont(new Font(\ a.add(bname); a.add(tname);

b.add(bno);

b.add(tno);

c.add(bnum);

c.add(tnum);

d.add(author); e.add(publisher);

d.add(tauthor);

e.add(tpublisher);

f.add(addbt); add(a);

f.add(yesbt); add(b);

add(c); add(d); add(e); add(f);

setLayout(new GridLayout(8,1));

addbt.addActionListener(this); yesbt.addActionListener(this); setSize(500,300); setLocation(400,150); }

public void actionPerformed(ActionEvent e)

{ String bname,bno,author,publisher;

int bnum;

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

this.dispose();

if(e.getActionCommand()==\更新\{ bname=tname.getText();

bno=tno.getText(); author=tauthor.getText(); publisher=tpublisher.getText(); bnum=Integer.parseInt(tnum.getText()); String sqlstr1=\rs=db.getResult(sqlstr1); try{ while(rs.next())

{ if(rs.getString(1).trim().equals(bno))

{

JOptionPane.showMessageDialog(null,\此书号已存在,请重新输入索书号!\

else {break;}}}

catch(Exception pe)

28

《软件工程—原理、方法与应用》课程设计报告书

{ pe.printStackTrace();

}

sqlstr=\

book

set

String 'where bno='\

Boolean result=db.updateSql(sqlstr); db.closeConnection(); if(result)

bno='\

{JOptionPane.showMessageDialog(null,\更新书籍成功!\ else

{ JOptionPane.showMessageDialog(null,\更新书籍失败!\ }

}

}

7.查询图书信息 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; import java.sql.*;

public class FindBook extends JFrame implements ActionListener { DataBaseManger db=new DataBaseManger(); ResultSet rs;

JLabel select=new JLabel(\请输入书名或者索书号\ JTextField jtf=new JTextField(20); JPanel a=new JPanel(); JPanel b=new JPanel();

JLabel lb=new JLabel(\书籍信息\ JButton findbt=new JButton(\查询\ JButton yesbt=new JButton(\确定\ JTextArea jta=new JTextArea(10,10); public FindBook()

{ super(\查询书籍信息\ Container c=getContentPane(); a.add(select); a.add(jtf); a.add(findbt);

c.add(a,BorderLayout.NORTH); b.add(lb); b.add(jta); b.add(yesbt);

c.add(b,BorderLayout.SOUTH); yesbt.addActionListener(this); findbt.addActionListener(this);

setSize(500,300);

29

《软件工程—原理、方法与应用》课程设计报告书

}

public void actionPerformed(ActionEvent e) { if(e.getActionCommand()==\确定\

this.dispose(); setVisible(true); setLocation(400,150);

if(e.getActionCommand()==\查询\{ String bname=jtf.getText();

String bno=jtf.getText(); String sqlstr;

sqlstr=\rs=db.getResult(sqlstr); try

{ jta.setText(\

if(rs.next()){

jta.append(\索书号为:\

jta.append(\书名为:\ jta.append(\现有数量为:\ jta.append(\出版社为:\

jta.append(\作者为:\

else

{jta.append(\对不起,没有您要找的书籍!\

catch(Exception pe)

{ pe.printStackTrace();

} }}}

8.数据库连接 import java.sql.*; import java.io.*;

public class DataBaseManger {

String name; Connection con; Statement stmt; ResultSet rs;

public DataBaseManger(){

try{

Class.forName(\System.out.println(\驱动加载完成\System.out.println(\已建立链接\

con=DriverManager.getConnection(\\

stmt=con.createStatement(); }catch (Exception e){

e.printStackTrace();

30

《软件工程—原理、方法与应用》课程设计报告书

}

public ResultSet getResult(String strSQL) { rs=stmt.executeQuery(strSQL); return rs;

}

{ try

}

catch(SQLException sqle)

{System.out.println(sqle.toString()); return null; }}

public boolean updateSql(String strSQL)

{ try

{stmt.executeUpdate(strSQL); con.commit(); return true;

}

catch(SQLException sqle)

{System.out.println(sqle.toString()); return false; } }

public void closeConnection() { try

{con.close(); }

catch(SQLException sqle)

{System.out.println(sqle.toString());} }}

(二)功能演示

图1:图书管理系统主界面

31

《软件工程—原理、方法与应用》课程设计报告书

图2:用户登录

图3:用户登录成功

图4:查询读者信息

图5:添加图书

32

《软件工程—原理、方法与应用》课程设计报告书

图6:添加书籍成功

图7:删除书籍

图8:查询书籍信息

33

《软件工程—原理、方法与应用》课程设计报告书

图9:更新图书信息

图10:更新书籍成功

五、测试

序号 1 测试内容 合法输入格式 2 错误用户名 测试数据 000000,000000 Admin,00000 提示“用户提示“用户名不存在或名不存在或者密码不正者密码不正确” 3 错误密码 Admin,xx,确” 正确 正确 期望结果 登陆成功 测试结果 登陆成功 测试结论 正确 提示“用户提示“用户正确验证码 名不存在或名不存在或

34

《软件工程—原理、方法与应用》课程设计报告书

者密码不正者密码不正确” 4 确” 正确 用户名为空 Null,00000 提示“用户提示“用户名不能为空” 名不能为空” 5 密码为空 000000,Null 提示“密码提示“密码不能为空” 不能为空” 正确 表1 登陆模块的测试用例

序号 1 测试内容 合法输入格式 测试数据 00001 期望结果 王明 00001 女 20 123456 计算机 2 错误证件号名 测试结果 王明 00001 女 20 123456 计算机 正确 测试结论 正确 10060028 提示“请输提示“请输入正确的证入正确的证件号!” 件号!” 3 空数据 Null 提示“请输提示“请输入正确的证入正确的证件号!” 件号!” 正确 表2 读者查询模块的测试用例

序号 1 测试内容 合法输入格式 测试数据 00001 期望结果 测试结果 测试结论 正确 索书号为:索书号为:00001,书名00001,书名为:Java程为:Java程序设计,现序设计,现有数量为1 有数量为1 35

《软件工程—原理、方法与应用》课程设计报告书

,出版社为:,出版社为:清华大学出清华大学出版社,作者版社,作者为:沈泽刚 为:沈泽刚 2 错误索书号 0 提示“对不提示“对不起,没有您起,没有您要找的书籍!” 3 空索书号 Null 要找的书籍!” 正确 正确 提示“对不提示“对不起,没有您起,没有您要找的书籍!” 要找的书籍!” 表3 图书查询模块的测试用例

序号 1 测试内容 合法输入格式 测试数据 00001 期望结果 测试结果 测试结论 正确 提示“删除提示“删除成功” 成功” 2 错误索书号 0 提示“删除提示“删除书籍失败!” 书籍失败!” 正确 3 空数据 Null 提示“删除提示“删除书籍失败!” 书籍失败!” 正确 表4书籍删除模块的测试用例

序号 1 测试内容 测试数据 期望结果 测试结果 测试结论 正确 合法输入格中国近现代提示“添加提示“添加式 史纲要,00006,5,编写组,高等教育出版社 书籍成功!” 书籍成功!” 36

《软件工程—原理、方法与应用》课程设计报告书

2 重复书号 中国近现代提示“此书提示“此书史纲要,号已存在,号已存在,正确 00006,5,请重新输入请重新输入编写组,高等教育出版社 3 遗漏书名 Null,提示“添加提示“添加正确 索书号!” 索书号!” 00006,5,书籍失败!” 书籍失败!” 编写组,高等教育出版社 4 遗漏书号 中国近现代提示“添加提示“添加史纲要,Null,5,编写组,高等教育出版社 5 遗漏数量 中国近现代提示“添加提示“添加史纲要,00006,Null,编写组,高等教育出版社 6 遗漏作者 中国近现代提示“添加提示“添加史纲要,00006,5,Null,高等教育出版社 7 遗漏出版社 中国近现代提示“添加提示“添加史纲要,

正确 书籍失败!” 书籍失败!” 正确 书籍失败!” 书籍失败!” 正确 书籍失败!” 书籍失败!” 正确 书籍失败!” 书籍失败!” 37

《软件工程—原理、方法与应用》课程设计报告书

00006,5,编写组,Null 表5 书籍添加模块的测试用例

序号 1 测试内容 测试数据 期望结果 测试结果 测试结论 正确 合法输入格行政能力测提示“更新提示“更新式 试,00004,书籍成功!” 书籍成功!” 7,李永新,中共教育出版社 2 不存在书号 中国近现代提示“更新提示“更新史纲要,00106,5,编写组,高等教育出版社 书籍失败!” 书籍失败!” 正确 3 遗漏书名 Null,提示“更新提示“更新正确 00004,7,书籍失败!” 书籍失败!” 李永新,中共教育出版社 4 遗漏书号 行政能力测提示“更新提示“更新试,Null,7,书籍失败!” 书籍失败!” 李永新,中共教育出版社 5 遗漏数量 行政能力测提示“更新提示“更新试,00004,书籍失败!” 书籍失败!” Null,李永

38

正确 正确

《软件工程—原理、方法与应用》课程设计报告书

新,中共教育出版社 6 遗漏作者 行政能力测提示“更新提示“更新试,00004,书籍失败!” 书籍失败!” 7,Null,中共教育出版社 7 遗漏出版社 行政能力测提示“更新提示“更新试,00004,书籍失败!” 书籍失败!” 7,李永新,Null 表6 书籍更新模块的测试用例

正确 正确 六、软件发布

1. 电脑操作系统:Windows 7/XP 数据库:SQL Server 2005 设计软件:JCreator1.7 作图软件:Rational Rose Enterprise Edition 2003 2.系统配置说明:分别需要给JCreator配置特定JDK这里用到JDK1.7.0,需要配置SQLsever系统软件我们用的的是SQL Server 2005,因此需要在给JAVA写代码时应注意连接数据库的语句是否匹配。 3.登录用户名:00000 密码:00000

七、总结体会

在本次课程设计中,经历了无数次调试失败,修改,再调试的过程。本系统基本实现了关键的功能模块,在功能上基本满足了用户的需求,但是由于时间较紧,有些模块以及整个系统还有许多不完善的地方,如界面不太美观,操作性不太友好等。学习和实践了分析和设计软件系统的各种知识,包括结构化分析设计、面向对象的系统分析与设计,编码和测试方面的知识。毋庸置疑,

39

《软件工程—原理、方法与应用》课程设计报告书

在实践的过程中也遇到了一些问题,但是通过我自己的努力,以及查找资料,包括同学的帮助,很大限度的提高了自己的自身学习能力,自我独立解决问题的能力。这次课程设计是我第一次独立完成的,但还是得到了大家的帮助,我很开心。在今后的学习生活中,我会将这种精神继续发扬。并且更加努力,认真学习,将在这过程中得到的经验与同伴分享,享受这个学习过程。为以后的学习打下坚实的基础。

八、参考文献

[1] 窦万峰.软件工程方法与实践[M].机械工业出版社,2009

[2] 李兆锋,张得生.Java Web项目开发案例精粹[M].电子工业出版社,2010 [3] 沈泽刚,秦玉平.Java Web编程技术[M].清华大学出版社,2009

[4]史济民,顾春华,郑红。软件工程—原理、方法与应用。高等教育出版社,2009

40

本文来源:https://www.bwwdw.com/article/g3g5.html

Top