《需求分析图书管理系统课程设计.doc》由会员分享,可在线阅读,更多相关《需求分析图书管理系统课程设计.doc(32页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、需求工程课程设计报告书项目名称:图书管理系统 指导老师: 学生姓名: 专 业: 学 号: 日 期: 目录一、项目计划1(一)项目内容1(二) 开发环境1(三) 进度安排2二、结构化分析设计2(一)数据流图2(二) 数据字典3(三)加工说明6(四)结构图6(五) 流程图9三、面向对象分析设计12(一)用例图12(二) 对象行为模型13(三)系统包图14(四)类图14四、系统实现16(一)程序代码16(二)功能演示31五、测试34六、 软件发布39七、总结体会40八、 参考文献40一、项目计划(一)项目内容在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行之有效的图书管理系统来管理自己的图书
2、是非常方便的;对图书管理部门来讲,以前单一的手工检索已不能满足人们的要求,伴随着工业化、信息化的高速发展,图书的数目越来越庞大,图书种类也是越来越多样化;因而往往是投入了大量的人力、物力和财力却得不到高效的管理效率。为了便于图书资料的管理、满足人们的需求,不必浪费大量的时间耗费在图书检索上,这就需要有一个有效的图书管理软件来帮助人们管理,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、便捷和智能化管理,达到提高图书管理效率的目的。基于这个问题,研发了这个图书管理系统。该系统主要实现功能:管理员登录及退出、读者信息查询、图书的增加、删除、更新和查询。(二) 开发环境
3、开发环境:Win 7 旗舰版。开发工具:SQL Server 2005 JCreator1.7 作图软件:Rational Rose Enterprise Edition 2003(三) 进度安排该软件应用JCreater1.7和SQL Server 2005进行编程,历时大概一周,最终完成了这个小型图书管理系统。由于时间仓促,该小型图书管理系统并不完善。我用了两天时间查找相关资料,两天时间编写代码和连接数据库。其余三天开始应用Rational Rose Enterprise Edition 2003画数据流图、结构图、流程图、用例图和包图类图。整个过程系我一人完成。二、结构化分析设计(一)数
4、据流图用 户管理员图书管理系 统 书籍信息 读者信息 读者信息 查询信息图2.1-1图书管理系统的顶层DFD book表用户管理员查询更新 录入信息 查询请求 更新信息 查询结果 reader表图2.1-2图书管理系统的第二层DFD管理员添加删除更新删除 book表 reader表图2.1-3图书管理系统的第三层DFD查询结果查询审查有效性用 户 查询请求 无效请求 有效请求book表图2.1-4图书管理系统的第三层DFD(二) 数据字典 数据流数据流编号D01数据流名称查询读者信息数据流组成学号数据流编号D02数据流名称查询读者信息结果数据流组成学号+姓名+性别+年龄+密码+系别数据流编号D
5、03数据流名称添加书籍信息数据流组成索书号+书名+数量+作者+出版社数据流编号D04数据流名称删除书籍信息数据流组成索书号数据流编号D05数据流名称更新书籍信息数据流组成索书号+书名+数量+作者+出版社数据流编号D06数据流名称查询书籍信息数据流组成索书号数据流编号D07数据流名称查询书籍信息结果数据流组成索书号+书名+数量+作者+出版社数据项数据项名学号取 值0000-9999数据项名姓名取 值4-6字符数据项名性别取 值2字符数据项名年龄取 值正整数数据项名密码取 值6字符数据项名系别取 值020字符数据项名索书号取 值00000-99999数据项名书名取 值0-20字符数据项名数量取 值
6、正整数数据项名作者取 值0-20字符数据项名出版社取 值0-20字符(三)加工说明到书籍表中检索用户输入的索书号将信息返回给用户审查用户查询书籍信息请求如果书籍表中无此索书号则否则返回无效请求按索书号检索书籍表,获得该书籍的信息2.3图-加工说明 图书管理系统主界面(四)结构图 书籍管理 读者管理 系统管理退出系统查询书籍信息更新书籍删除书籍添加书籍退出登录用户 登录查询读者信息 查询查询 图书管理系统读出用户选择 书籍管理 读者管理用户命令用户命令用户命令添加删除修改 图2.4-1图书管理系统上层框架 书籍管理 查询书籍 更新书籍 删除书籍 添加书籍 书名索书号 数量 出版社 作者图2.4-
7、2-图书管理子系统初始SC图 读者管理 读者管理系别密码年龄性别 姓名 学号图2.4-3-图书管理子系统初始SC图分析用户命令 图书管理系统选择用户所需功能登录退出读者管理理书籍管理理1 2 3 41:添加命令2:删除命令3:修改命令4:查询命令图2.4-4-图书管理系统SC图的上层框架 开始(五) 流程图输入用户名和密码验证用户名和密码提示“用户名不存在或者密码不正确!”验证正确 进入图书管理系统主界面选择相应管理操作 退出系统 结束图2.5-1图书管理系统登录流程图 开始 输入证件号 提示“请输入正确证件号!”证件号正确 查询读者信息 确定 结束图2.5-2读者信息查询流程图 开始 添加书
8、籍失败! 输入书籍信息 提示“此书号已存在,请重新输入索书号!”索书号已存在 确定 添加书籍成功! 结束图2.5-3添加书籍流程图 开始输入要删除的图书索引号 确定 删除书籍成功! 结束图2.5-4删除书籍流程图 开始输入新的图书信息 确定 更新书籍成功! 结束图2.5-5更新书籍流程图 开始请输入书名或者索书号提示“对不起,没有您要找的书籍!” 验证正确 查询书籍信息 结束图2.5-6查询书籍流程图三、面向对象分析设计(一)用例图用例图在需求分析阶段有重要作用,它是作为参与者的外部用户所能观察到的系统功能模型图。整个开发过程都是围绕需求阶段用例进行的。首先需要确定参与者。管理员在登录后对读者
9、信息进行查询以及对书籍的添加、删除、更新和查询。用户在登录后可以对书籍信息进行查询。图书管理系统管理员-用户用例图(二) 对象行为模型 登录系统继续选择服务 登录错误 登录正确选择服务类型查询读者信息书籍管理输入证件号! 查询读者信息添加书籍 删除书籍查询书籍输入书籍信息显示读者信息 输入索书号输入索书号添加成功! 结束服务 退出登录显示书籍信息删除成功! (三)系统包图数据库包:包含数据库中所有的数据信息用户包:包含要使用系统的用户及其属性管理员包:包含要使用系统的管理员及其属性接口包:表示系统和数据库的借口系统包:表示图书管理系统(四)类图类是面对对象系统组成的核心。类是对一组相同属性、操
10、作、关系和语义的对象的描述。这些对象包括了对现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务等,甚至也包括了纯粹概念性的事务,它们都是类的实例。图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 JFr
11、ame 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();JM
12、enuItem 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
13、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(Dialog,0,12);b.setText(读者管理);b.setFont(new Font(Dialog,0,12);c.setText(书籍管理);c.setFont(n
14、ew 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(Dia
15、log,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(
16、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 UserL
17、ogin(this);login.setVisible(true);if(e.getSource()=ab)setVisible(false);MainWindow mainFrame=new MainWindow();mainFrame.setLocation(400,150);mainFrame.setVisible(true);if(e.getSource()=ac)System.exit(0);if(e.getSource()=cc)FindBook findbook=new FindBook();findbook.setVisible(true);if(e.getSource()=b
18、b)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(
19、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.*;imp
20、ort java.awt.event.*;import javax.swing.*;import java.sql.*;import java.io.*;public class UserLogin extends JFrame implements ActionListenerprivate static final long serialVersionUID = 1L;String name;DataBaseManger db=new DataBaseManger();MainWindow mainFrame;JFrame f=null;JPanel panel1,panel2;JLabe
21、l 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);UserText
22、Field=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 BorderLa
23、yout();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,North);c.add(panel1,Center);c.a
24、dd(South,panel2);panel1.setBackground(new Color(255,255,255);setLocation(400,200);public void actionPerformed(ActionEvent e)if(e.getSource()=CancelBtn)this.dispose();elsechar password=PasswordTextField.getPassword();String passwordSTR=new String(password);String strSQL;strSQL=select * from users whe
25、re 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;c
26、atch(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,用户名不存在或者密码不正确!);elseJOptionPane.showMessage
27、Dialog(null,登录成功);this.dispose();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 Main
28、Window();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(
29、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);
30、setSize(500,300);setVisible(true);setLocation(400,150);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 read
31、er 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.ge
32、tResult(sqlstr);catch(Exception pe) pe.printStackTrace(); elseJOptionPane.showMessageDialog(null,请输入正确的证件号!);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 m
33、w=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);JTextFi
34、eld 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 AddBook()super(添加图书); a=new JPanel();b=new JPanel();c=new JPanel();d=new JPanel();e=new JPanel();f=ne
35、w JPanel(); bname.setText(书名 :); bname.setFont(new Font(Dialog,0,12); bno.setText( 索书号 :); bno.setFont(new Font(Dialog,0,12); bnum.setText(数量:); bnum.setFont(new Font(Dialog,0,12); author.setText(作者:); author.setFont(new Font(Dialog,0,12); publisher.setText( 出版社 :); publisher.setFont(new Font(Dialog
36、,0,12); a.add(bname); a.add(tname);b.add(bno); b.add(tno);c.add(bnum); c.add(tnum);d.add(author); d.add(tauthor);e.add(publisher); 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.addActionL
37、istener(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=select bno from book;rs=db.getResult(sqlstr1);trywhile(rs.next()if(rs.getString(1).trim().equals(bno)JOptionPane.showMessageDialog(null,此书号已存在,请重新输入索书号!);elsebreak;
限制150内