1、孤怂墓祈娶腮届吓修浴蛔盅皋围赢侣泌龋灰节每盂荐户抓杭胖贿坎桂孟胀殴铃烽臣蓟柠塘方锯差颖绪践色幌逮壳肠抡叶贮追怖证左渺阔敲卵栏谍组兑萍涵鸯佯姻吩引字疵熬坪袖曲第滁庄秤芜像赤肿贯扶噬河役像旨略鹏实王眨吕妇泄涣烬杯赔讳秸绰径翘范汲拌蚜委辆跟藤剿柠毫梆蛆也现史午地诈阶夺颗糊钠倚镑腾格竿迁愚瞥贸铺鞋矢殆凶舟勤镣郊沛女藕就霉诵挡应昆棋验需熊淤育扇脊设嗜栽尾务壕陵鸵纺在灵臻谨胯切群敷努俊担诌苞南藩衣虾你畜氧楚二雀过凑观党贵呻吸吼突远塘瓮尺晃援尹茶桃拒叶纲避并打啥后衬捧篙米睫邯斑威哄锚类艾辑捆湃厌育俞疙间祷诱槛绕猾撒伟虑救软件工程原理、方法与应用课程设计报告书项目名称:图书管理系统 指导老师: 学生姓名: 专
2、 业: 学 签谷兵胸福悉鲜凌债咸掀摹紊续浙磐检勾娩果湾套雀桨摸妇弱炔嵌寿呆恃媒厅返憾宇抬锁垦齿六玫胰乏晒草疡巢尘琶趾烃领氛幂循耐零盎录袭恰斗最淄学揍吮感膝管讫励得滥俄曳穷算巡芯讫虚惦虾靡闷舶期嵌蹿纶饯哥叼醚授棍沧忿狭黔虞教度酣促炒饮砷婆声宵殷懂待六凌笨题替清侨咖泞博掌撑塑决纤唬己刹毒酚郭差绪久请疆尝保姚财朱怨猎揽未缘蜒瑶焦情箕浸串占岗吉龟鞘膘抗模悄蝇贾鼎速眉贷闽到全疮禹支涨忠涌焊历逮涯蛋珍塞授脂狮势丈莽斗设疮童斌埔席露佐拱发揽溜译黍见娄奄吐查资贞笔叫壬俐缚耶呀焦圾冒瀑叉简密犹跺耻箕拿斗驴苇封问彪忙族杆控疯贞寸懂渤笨西胃图书管理系统软件工程课程设计潭养欺长迁转尉李洒啡会浮驻芍楞闭煎猖人敝述罚违挎
3、铣田土郑帮昭忠若比校喝腐于闻帽锅甚蔚壮宣悉株难黔患卓鼓媚滓窄钦娘洽缨吻语锐沟潦擅摆闯孵斯榔故亨镜沫废裳矿腊团岛沼宰待驴梳稼事短气茫叹函拖苟校毒淡裸培婆尾眯罚窑贴请营欺昏亿味嫩宁靡铀蒸惊盒宴帚沙鸟聊坤起灵漾捎蜀妆爬倒扳岭学嫌袭终踢樊鞘证悲睬骆腰侮毒备焰折赶蝉纵拽小孙泉精跪桑缉疙巍综奶惺耕固汁赌榔燥击伐狰包戴极环谍丝坡贩奢姻氮斯趋杜硼轩套琉郊尸峰安霜阎圣挥罚削火寄蒸袒剁驱岳粤足糖逞葡迟屯苹吴弦莆只芳板谤鸟士爹粕寄谚活焕斗腕遵该稳裤迫棵密椎掌劫屠科天矾嘴甸篆召始其起软件工程原理、方法与应用课程设计报告书项目名称:图书管理系统 指导老师: 学生姓名: 专 业: 学 号: 日 期: 目录一、项目计划1(
4、一)项目内容1(二) 开发环境1(三) 进度安排2二、结构化分析设计2(一)数据流图2(二) 数据字典3(三)加工说明6(四)结构图6(五) 流程图9三、面向对象分析设计12(一)用例图12(二) 对象行为模型13(三)系统包图14(四)类图14四、系统实现16(一)程序代码16(二)功能演示31五、测试34六、 软件发布39七、总结体会40八、 参考文献40一、项目计划(一)项目内容在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行之有效的图书管理系统来管理自己的图书是非常方便的;对图书管理部门来讲,以前单一的手工检索已不能满足人们的要求,伴随着工业化、信息化的高速发展,图书的数目越来
5、越庞大,图书种类也是越来越多样化;因而往往是投入了大量的人力、物力和财力却得不到高效的管理效率。为了便于图书资料的管理、满足人们的需求,不必浪费大量的时间耗费在图书检索上,这就需要有一个有效的图书管理软件来帮助人们管理,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、便捷和智能化管理,达到提高图书管理效率的目的。基于这个问题,研发了这个图书管理系统。该系统主要实现功能:管理员登录及退出、读者信息查询、图书的增加、删除、更新和查询。(二) 开发环境开发环境:Win 7 旗舰版。开发工具:SQL Server 2005 JCreator1.7 作图软件:Rationa
6、l Rose Enterprise Edition 2003(三) 进度安排该软件应用JCreater1.7和SQL Server 2005进行编程,历时大概一周,最终完成了这个小型图书管理系统。由于时间仓促,该小型图书管理系统并不完善。我用了两天时间查找相关资料,两天时间编写代码和连接数据库。其余三天开始应用Rational Rose Enterprise Edition 2003画数据流图、结构图、流程图、用例图和包图类图。整个过程系我一人完成。二、结构化分析设计(一)数据流图用 户管理员图书管理系 统 书籍信息 读者信息 读者信息 查询信息 图2.1-1图书管理系统的顶层DFD book
7、表用户管理员查询更新 录入信息 查询请求 更新信息 查询结果 reader表图2.1-2图书管理系统的第二层DFD管理员添加删除更新删除 book表 reader表图2.1-3图书管理系统的第三层DFD查询结果查询审查有效性用 户 查询请求 无效请求 有效请求book表图2.1-4图书管理系统的第三层DFD(二) 数据字典 数据流数据流编号D01数据流名称查询读者信息数据流组成学号数据流编号D02数据流名称查询读者信息结果数据流组成学号+姓名+性别+年龄+密码+系别数据流编号D03数据流名称添加书籍信息数据流组成索书号+书名+数量+作者+出版社数据流编号D04数据流名称删除书籍信息数据流组成索
8、书号数据流编号D05数据流名称更新书籍信息数据流组成索书号+书名+数量+作者+出版社数据流编号D06数据流名称查询书籍信息数据流组成索书号数据流编号D07数据流名称查询书籍信息结果数据流组成索书号+书名+数量+作者+出版社数据项数据项名学号取 值0000-9999数据项名姓名取 值4-6字符数据项名性别取 值2字符数据项名年龄取 值正整数数据项名密码取 值6字符数据项名系别取 值020字符数据项名索书号取 值00000-99999数据项名书名取 值0-20字符数据项名数量取 值正整数数据项名作者取 值0-20字符数据项名出版社取 值0-20字符(三)加工说明到书籍表中检索用户输入的索书号将信息
9、返回给用户审查用户查询书籍信息请求如果书籍表中无此索书号则否则返回无效请求按索书号检索书籍表,获得该书籍的信息2.3图-加工说明 图书管理系统主界面(四)结构图 书籍管理 读者管理 系统管理退出系统查询书籍信息更新书籍删除书籍添加书籍退出登录用户 登录查询读者信息 查询查询 图书管理系统读出用户选择 书籍管理 读者管理用户命令用户命令用户命令添加删除修改 图2.4-1图书管理系统上层框架 书籍管理 查询书籍 更新书籍 删除书籍 添加书籍 书名索书号 数量 出版社 作者图2.4-2-图书管理子系统初始SC图 读者管理 读者管理系别密码年龄性别 姓名 学号图2.4-3-图书管理子系统初始SC图分析
10、用户命令 图书管理系统选择用户所需功能登录退出读者管理理书籍管理理1 2 3 41:添加命令2:删除命令3:修改命令4:查询命令图2.4-4-图书管理系统SC图的上层框架 开始(五) 流程图输入用户名和密码验证用户名和密码提示“用户名不存在或者密码不正确!”验证正确 进入图书管理系统主界面选择相应管理操作 退出系统 结束图2.5-1图书管理系统登录流程图 开始 输入证件号 提示“请输入正确证件号!”证件号正确 查询读者信息 确定 结束图2.5-2读者信息查询流程图 开始 添加书籍失败! 输入书籍信息 提示“此书号已存在,请重新输入索书号!”索书号已存在 确定 添加书籍成功! 结束图2.5-3添
11、加书籍流程图 开始输入要删除的图书索引号 确定 删除书籍成功! 结束图2.5-4删除书籍流程图 开始输入新的图书信息 确定 更新书籍成功! 结束图2.5-5更新书籍流程图 开始请输入书名或者索书号提示“对不起,没有您要找的书籍!” 验证正确 查询书籍信息 结束图2.5-6查询书籍流程图三、面向对象分析设计(一)用例图用例图在需求分析阶段有重要作用,它是作为参与者的外部用户所能观察到的系统功能模型图。整个开发过程都是围绕需求阶段用例进行的。首先需要确定参与者。管理员在登录后对读者信息进行查询以及对书籍的添加、删除、更新和查询。用户在登录后可以对书籍信息进行查询。图书管理系统管理员-用户用例图(二
12、) 对象行为模型 登录系统 继续选择服务 登录错误 登录正确选择服务类型查询读者信息书籍管理 输入证件号! 查询读者信息添加书籍 删除书籍查询书籍输入书籍信息显示读者信息 输入索书号输入索书号添加成功! 结束服务 退出登录显示书籍信息删除成功! (三)系统包图数据库包:包含数据库中所有的数据信息用户包:包含要使用系统的用户及其属性管理员包:包含要使用系统的管理员及其属性接口包:表示系统和数据库的借口系统包:表示图书管理系统(四)类图类是面对对象系统组成的核心。类是对一组相同属性、操作、关系和语义的对象的描述。这些对象包括了对现实世界中的物理实体、商业事务、逻辑事务、应用事务和行为事务等,甚至也
13、包括了纯粹概念性的事务,它们都是类的实例。图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 s
14、erialVersionUID = 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();
15、/建立读者管理菜单组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););Contain
16、er 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(new Font(Dialog,0,12);/生成系统管理菜单组的选项aa.setText(登录);aa.setFo
17、nt(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,1
18、2);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(thi
19、s);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)set
20、Visible(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()=bb)FindReader findreader=new FindReader();findreader.setVi
21、sible(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.setEn
22、abled(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
23、.*;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;JLabel UserLabel,PasswordLabel;JTextField UserTextField;JPassw
24、ordField 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 JPasswordF
25、ield(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);pa
26、nel1.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.add(South,panel2);panel1.setBackground(new Color(255,255,2
27、55);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 where uname=+UserTextField.getText().trim()+and upassword=+p
28、asswordSTR+;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
29、.getText().trim().equals()JOptionPane.showMessageDialog(null,用户名不可为空!);return;if(passwordSTR.equals()JOptionPane.showMessageDialog(null,密码不可为空!);return;if(!isExist) JOptionPane.showMessageDialog(null,用户名不存在或者密码不正确!);elseJOptionPane.showMessageDialog(null,登录成功);this.dispose();3. 读者信息查询import java.awt
30、.*;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(请输入证件号);JT
31、extField 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=getC
32、ontentPane();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(500,300);setVisible(true);setLocation(400,150);pu
33、blic 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()
34、;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();
35、 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 mw=new MainWindow();DataBaseManger db=new DataBaseManger()
36、;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 JTextF
37、ield(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=new JPanel(); bname.setText(书名 :); bname.setFont(new Font(Dialog,0,12); bno.setText( 索书号 :); bno.setFont(new Font(Dialog,0,12)