图书管理系统软件工程课程方案.docx
《图书管理系统软件工程课程方案.docx》由会员分享,可在线阅读,更多相关《图书管理系统软件工程课程方案.docx(49页珍藏版)》请在冰豆网上搜索。
图书管理系统软件工程课程方案
工程名称:
图书管理系统
指导老师:
学生姓名:
专业:
学号:
日期:
一、工程计划
(一)工程内容
在计算机日渐走进普通家庭的今天,对于个人来讲,采用一套行之有效的图书管理系统来管理自己的图书是非常方便的;对图书管理部门来讲,以前单一的手工检索已不能满足人们的要求,伴随着工业化、信息化的高速发展,图书的数目越来越庞大,图书种类也是越来越多样化;因而往往是投入了大量的人力、物力和财力却得不到高效的管理效率。
为了便于图书资料的管理、满足人们的需求,不必浪费大量的时间耗费在图书检索上,这就需要有一个有效的图书管理软件来帮助人们管理,减轻工作人员的工作量,方便工作人员对它的操作,提高管理的质量和水平,做到高效、便捷和智能化管理,达到提高图书管理效率的目的。
基于这个问题,研发了这个图书管理系统。
该系统主要实现功能:
管理员登录及退出、读者信息查询、图书的增加、删除、更新和查询。
(二)开发环境
开发环境:
Win7旗舰版。
开发工具:
SQLServer2005JCreator1.7
作图软件:
RationalRoseEnterpriseEdition2003
(三)进度安排
该软件应用JCreater1.7和SQLServer2005进行编程,历时大概一周,最终完成了这个小型图书管理系统。
由于时间仓促,该小型图书管理系统并不完善。
我用了两天时间查找相关资料,两天时间编写代码和连接数据库。
其余三天开始应用RationalRoseEnterpriseEdition2003画数据流图、结构图、流程图、用例图和包图类图。
整个过程系我一人完成。
二、结构化分析设计
(一)数据流图
书籍信息读者信息
读者信息查询信息
图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
数据流名称
查询书籍信息结果
数据流组成
索书号+书名+数量+作者+出版社
数据项
数据项名
学号
取值
0000-9999
数据项名
姓名
取值
4-6字符
数据项名
性别
取值
2字符
数据项名
年龄
取值
正整数
数据项名
密码
取值
6字符
数据项名
系别
取值
0—20字符
数据项名
索书号
取值
00000-99999
数据项名
书名
取值
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.主窗口界面
importjava.awt.*。
importjava.awt.event.*。
importjavax.swing.*。
importjavax.swing.border.TitledBorder。
importjava.awt.Font。
importjavax.swing.JMenu。
publicclassMainWindowextendsJFrameimplementsActionListener
{privatestaticfinallongserialVersionUID=1L。
staticStringloginName。
staticStringloginNo。
JLabelmlabel。
JPaneljp=newJPanel()。
//建立菜单栏
JMenuBarmenu=newJMenuBar()。
JMenua=newJMenu()。
JMenub=newJMenu()。
JMenuc=newJMenu()。
//建立系统管理菜单组
JMenuItemaa=newJMenuItem()。
JMenuItemab=newJMenuItem()。
JMenuItemac=newJMenuItem()。
//建立读者管理菜单组
JMenuItembb=newJMenuItem()。
//建立书籍管理菜单组
JMenuItemca=newJMenuItem()。
JMenuItemcb=newJMenuItem()。
JMenuItemcc=newJMenuItem()。
JMenuItemcd=newJMenuItem()。
publicMainWindow(){
super("图书管理系统")。
addWindowListener(newWindowAdapter(){
publicvoidwindowClosing(WindowEvente){
System.exit(0)。
}})。
Containerd=getContentPane()。
this.setSize(300,200)。
this.setTitle("图书管理系统")。
d.add(menu)。
menu.add(a)。
menu.add(b)。
menu.add(c)。
//添加菜单组
a.setText("系统管理")。
a.setFont(newFont("Dialog",0,12))。
b.setText("读者管理")。
b.setFont(newFont("Dialog",0,12))。
c.setText("书籍管理")。
c.setFont(newFont("Dialog",0,12))。
//生成系统管理菜单组的选项
aa.setText("登录")。
aa.setFont(newFont("Dialog",0,12))。
ab.setText("退出登录")。
ab.setFont(newFont("Dialog",0,12))。
ac.setText("退出系统")。
ac.setFont(newFont("Dialog",0,12))。
//生成读者管理菜单组的选项
bb.setText("查询读者信息")。
bb.setFont(newFont("Dialog",0,12))。
//生成书籍管理菜单组的选项
ca.setText("添加书籍")。
ca.setFont(newFont("Dialog",0,12))。
cb.setText("删除书籍")。
cb.setFont(newFont("Dialog",0,12))。
cc.setText("查询读书信息")。
cc.setFont(newFont("Dialog",0,12))。
cd.setText("更新书籍")。
cd.setFont(newFont("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)。
}
publicvoidactionPerformed(ActionEvente){
if(e.getSource()==aa){
UserLoginlogin=newUserLogin(this)。
login.setVisible(true)。
}
if(e.getSource()==ab){
setVisible(false)。
MainWindowmainFrame=newMa