计科系图书管理系统软件工程
更新时间: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
正在阅读:
计科系图书管理系统软件工程12-23
2014年信贷政策-中信银行07-10
专题2-9 与圆相关的最值问题讲-2018年高考数学文二轮复习讲练测03-18
建筑钢结构制作工艺学04-23
廖承志02-16
论审计风险形成的主客观因素及其09-19
看英文原版电影对初中生英语学习的积极意义12-16
我国机动车检测主要相关标准及法规10-12
2016年3月新增公共基础80道答案解析06-23
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 计科
- 软件工程
- 管理系统
- 图书
- 部编人教版3三年级上册道德与法制全册教案教学设计 - 图文
- 2010-2011(2)微观期末试卷(B)
- 2012高考数学解答题专题攻略 - --数列
- 拔罐 - 疗法·txt
- 转正定级(单位考核意见)
- 文员岗位职责-行政文员岗位职责
- 浅谈德育教育在中学信息技术教学中渗透
- 怎样把握好“人生的抛物线” - 初中作文
- CAD图纸集使用流程
- K12学习苏教版《石灰吟》公开课教案和课后反思
- ( - -)监理规划
- 无机分析化学章节测试题
- 领导祝福语大全
- 川教版历史社会八年级下册2014—2015学年度第二学期期中调研测试卷附参考答案 - 图文
- 公路工程施工总结报告1
- 小学一年级数学公开课教学设计得数是3的加法教案
- 基于内存多叉树的Ext JS无限级树形菜单实现方案
- 在体育教学中对学生个性的发展
- 2018经济专业技术资格考试名称、级别、专业和科目代码
- 物理好题精选