书店管理系统的设计与实现.docx
《书店管理系统的设计与实现.docx》由会员分享,可在线阅读,更多相关《书店管理系统的设计与实现.docx(49页珍藏版)》请在冰豆网上搜索。
书店管理系统的设计与实现
书店管理系统的设计与实现
——书籍销售管理模块
学生姓名:
指导老师:
摘要本课程设计主要解决书店的管理问题,设计开发一个简单的书店管理系统,实现分类登陆,书籍管理,仓库库存管理,会员管理以及各种查询等功能。
在课程设计中,系统开发平台为Windows7,程序设计语言采用Java,数据库采用OracleDatabase11gExpressEdition,程序运行平台为Windows7。
程序通过调试运行,初步实现了设计目标,并且经过适当完善后,将可以应用在普通书店的管理中,解决实际问题。
关键词书店管理系统;数据库;Java
1引言
1.1课题背景
随着科学技术的不断发展,电子技术悄无声息地走进了我们生活的各个角落,无时无刻的不在影响和改善着我们生活的各个方面。
同时,越来越多的人开始意识到计算机技术在日常生活中所起到的重大作用。
如今,随着书店规模的不断扩大,书籍种类和数量的不断增加,使得人工管理模式的局限性越发突出。
因此,利用计算机技术来优化书店管理具有重大的实际意义。
计算机信息管理技术的应用,除了能在相当大的程度上代替人工作业,从而减少人员工作量,减轻工作负担,减少工作中因人为原因而产生的错误从而避免不必要的损失外,更重要的是能建立准确畅通、简便的信息流通渠道,为工作提供所需要的准确、及时的信息以帮助做出正确而及时的选择与决定,从而给采用这门技术的单位带来了巨大的可见或不可见的利益与效益。
1.2课程设计目的
一个业绩好的书店每天都会销售出大量书籍,使用书店信息管理系统可以大大提高工作效率,减少工作中不必要的失误。
与此同时,通过书店管理系统,我们可以知晓书籍的销售情况,从而进一步总结出哪些书籍最为畅销,而哪些书籍鲜有人问津,通过对销售状况的总结,我们就能够知道需要大量购进哪些书籍,以便获得更大的经济效益。
而且,通过书店管理系统,我们可以对一些常来书店购书的客户实行适当的会员优惠,以留住一部分客户群体进行长期的合作,这样书店就能获取相当可观的经济效益。
本论文旨在论述书店管理系统的设计与开发。
通过书店管理系统的设计,熟练掌握Java、OracleDatabase10gExpressEdition等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提高自身分析问题、解决问题的能力。
1.3课程设计任务
本课程设计任务是通过开发一个数据库书店管理系统,学习数据库系统的设计与开发,采用JAVA和OracleDatabase11gExpressEdition等软件为开发工具。
通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。
在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。
2系统结构分析
2.1需求分析
书店管理系统是适应时代发展的需要,提高管理的效率而开发设计的。
通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为书店管理人员提供全面、准确的各种数据。
实现了书店管理的简单化和规划化,提高了书店的工作效率,从而使书店能够以少的投入获得更好的社会效益与经济效益。
经过综合分析,确定了书店管理系统的主要包括以下功能:
(1).书籍信息管理功能
系统设置包括书籍编号设置、书籍名称设置、书籍作者设置、出版社设置、书籍进价、书籍售价和书籍数量。
基本信息管理模块可以实现添加和重置书籍信息功能:
。
(2).会员信息管理功能
系统设置包括会员编号设置、会员姓名设置、会员等级设置、会员折扣设置和会员累计消费。
基本信息管理模块可以实现查询和删除会员信息功能。
(3).账单信息管理功能
系统设置包括会员姓名设置和当前消费金额设置。
通过此模块能基本实现修改会员信息功能。
2.2功能模块图
1.根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示。
图2.1书店管理系统功能模块示意图
2.“书籍信息管理”功能模块用于书籍编号设置、书籍名称设置、书籍作者设置、出版社设置、书籍进价、书籍售价和书籍数量,其功能模块如图2.2所示。
图2.2书籍管理信息设置
3.“会员信息管理”功能模块用于会员编号设置、会员姓名设置、会员等级设置、会员折扣设置和累计消费设置,其功能模块如图2.3所示。
图2.3会员信息管理
4.“账单信息管理”功能模块用于会员姓名设置和当前消费金额设置,其功能模块如图2.4所示。
图2.4账单信息管理
3系统数据库设计
3.1概念结构设计
根据需求分析抽象出信息结构,可得该系统的E-R图。
(1)书籍管理E-R图,如图3.1所示。
图3.1书籍管理E-R图
(2)会员管理E-R图,如图3.2所示。
图3.2会员管理E-R图
(3)账单管理E-R图,如图3.3所示。
图3.3账单管理E-R图
3.2逻辑结构设计
根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。
数据库Book包含以下5个表:
书籍信息表book、会员信息表member、账单信息表bill。
(1)书籍信息表book
订单信息表book用来保存书籍编号、书籍名称、书籍作者、书籍出版社、书籍进价、书籍售价和数量等信息。
表book的结构如表3-1所示。
表3-1表book的结构
编号
字段名称
数据结构
说明
1
Book_id
Varchar2(10)
记录书籍编号
2
Book_name
Varchar2(20)
记录书籍名称
3
Book_author
Varchar2(20)
记录书籍作者
4
Book_press
Varchar2(20)
记录出版社
5
Book_sale_price
Number(10)
记录书籍售价
6
Book_purchase_price
Number(10)
记录书籍进价
7
Book_amount
Number(10)
记录书籍库存数量
通过对上面表的分析,查找等操作,所有模式都符合3NF。
前面是通过前台来实现系统安全性的,我们也可以对数据库进行身份验证,可以从服务器角度建一个登录名,使得不同的服务器角色拥有不同的权限,从而实现对数据库的不同权限的管理,以此来增强书店管理系统的安全性。
3.3数据库表的建立
在设计数据库表结构之前,首先要创建一个数据库。
本系统使用的数据库为Book。
可以在企业管理器中创建数据库,也可以在查询分析器中执行以下Transact—SQl语句:
(1)创建表Book
CREATETABLEBOOK
(BOOK_IDNUMBER(10),
BOOK_NAMEVARCHAR2(20),
BOOK_AUTHORVARCHAR2(20),
BOOK_PRESSVARCHAR2(20),
BOOK_SALE_PRICENUMBER(10),
BOOK_AMOUNTNUMBER(10),
BOOK_PURCHASE_PRICENUMBER(10)
)
(2)创建表Bookid
CREATETABLEBOOKID
(BOOK_IDNUMBER(10)
)
(3)创建表member
CREATETABLEMEMBER
(MEMBER_IDNUMBER(10)NOTNULLENABLE,
MEMBER_NAMEVARCHAR2(20)NOTNULLENABLE,
MEMBER_LEVELNUMBER(20)NOTNULLENABLE,
MEMBER_REBATEFLOAT
(2)DEFAULT0.9NOTNULLENABLE,
MEMBER_CONSUMPTIONFLOAT(126)NOTNULLENABLE
)
(4)创建表bill
CREATETABLEBILL
(MEMBER_NAMEVARCHAR2(10),
MONEYNUMBER(10)
)
4系统实现
4.1数据库的连接
在该系统中使用的数据库是OracleDatabase11gExpressEdition。
客户端采用的是PL/SQLDeveloper。
Java运行环境为EclipseIndigo。
在安装好了软件之后,数据库的连接设置在Eclipse里的Properties功能键中。
如图4.1所示
图4.1数据库连接
在JavaBuildPath中的Libraries中,运行AddExternalJARs…找到classes12.jar并添加,则此时已将数据库和Java程序成功连接。
4.2系统功能模块设置
(1)设计书籍销售管理界面
书籍销售管理界面可以用来查询书籍、将选定书籍加入购买目录和账单结算。
创建一个选项卡面板,将其命名为OprationInfoPanel。
选项卡面板的布局如图4.2所示。
图4.2面板OprationInfoPanel的布局
面板启动,当你点击查找功能键时,则会出现要查询的书籍信息,此时你可以实现将选定书籍加入购买目录。
当用户单击“查询”按钮时,将执行findDao(StringbookName)函数,通过模糊查询检索出相关书籍信息;当用户单击“加入购买目录”按钮时,将执行addShoppingCart(intbookId)函数,系统将会自动加选定书籍添加到购买目录中并在显示出来;当用户单击“账单结算”按钮时,将执行newBillDialog(floatmoney),弹出账单结算对话框。
(2)设计账单结算管理对话框
账单结算管理对话框可以用来结算账单信息。
添加一个对话框,将其命名为BillDialog。
对话框的布局如图4.3所示。
图4.3对话框BillDialog的布局
对话框启动,输入相关信息,当你点击“确认账单”时,将执行confirmBillDao(StringmemberName)函数,则会显示根据数据库所计算出客户所需支付金额,当点击“提交账单”时,将执行submitOrdersDao(OrderVovo)函数,系统自动将本次交易的金额存入会员信息中,以便会员升级和下次调用会员信息。
5系统测试方案和测试报告
5.1测试方案
由于系统规模较小,所以没有安排单独的白盒测试,而是相应地将这部分测试归并到系统编码过程中。
整个测试过程基于自顶向下测试的组装模块的方法,先对主模块进行基本测试,然后在按深度优先策略逐一将子模块组装到主模块上进行测试,最后再对系统进行全面的整体测试。
5.2测试过程
(1)书籍销售管理主界面测试
运行程序,登录成功后进入书籍销售管理界面,如图5.1所示:
图5.1书籍销售管理界面
(2)书籍查询功能测试
输入书籍名称可查询到自己想要的书籍信息,本查询为模糊查询,会显示包含所输入字符所有书籍,如图5.2所示:
图5.2模糊查询
显示出的书籍分五本为一页,通过点击“上页”和“下页”按钮可以查询其他页码的书籍,如图5.3和5.4所示:
图5.3分页显示查询结果(a)
图5.4分页显示查询结果(b)
(3)选择书籍并加入购买目录功能测试
选择查询出的一条数据,并单击加入购物车按钮,将自动把选中书籍添加到购买目录中,如图5.5所示:
图5.5添加书籍至购买目录
(4)订单管理功能测试
移除书籍:
选定购买目录中的一本书,点击“移除”按钮,将自动把所选书籍从购买目录中移除,如图5.6所示:
图5.6移除书籍
账单结算:
点击“账单结算”,按钮,将自动弹出一个账单结算窗口,“订单查询”,如图5.7所示:
图5.7账单结算界面
输入会员名称和实付金额,点击确认账单,将自动计算根据会员折扣后所需找零金额,如图5.8所示:
图5.8账单结算功能
点击“提交账单”,将提示账单提交成功,将会吧数据传到数据库,并对相应的数据进行处理,如图5.9所示:
图5.9提交账单
6结束语
本系统完成了一个书店管理系统的基本功能,包括书籍销售管理、库存管理、会员管理等。
我们小组将该系统分为三大模块,分别由三位小组成员负责,最后再一起汇总,经过不断的调试,所有功能经过测试均能够正确运行,操作简便,界面友好。
通过小组合作完成本次课程设计,我对数据库这门课程有了更加深刻的理解,同时也能熟练的运用eclipse来编写较为简单的java程序,并且也使得自己在对系统数据库的分析、设计有更深刻的了解。
我们在各自编写程序中遇到了很多问题,通过查阅相关资料,问题得到了解决,同时也学到了一定的java编程知识。
另外,通过运用JDBC数据库连接技术,我对java数据库编程技术也有了一定的了解和认识,希望通过以后的学习继续加深这方面知识的掌握。
参考文献
[1]王汝传.计算机图形学[M].北京:
人民邮电出版社,1999:
123-130.
[2]刘榴娣,刘明奇,党长民.实用数字图像处理[M].北京:
北京理工大学出版,2000:
12-25..
[3]李彦,韩光林,李玉波.SQLSERVE完全自学手册[M].北京:
电子工业出版社,2007
[4]萨师煊,王珊.数据库系统概论.北京:
高等教育出版社.2005
附录:
部分程序代码
//程序名称:
MainFrame.java
//程序功能:
主界面
//程序作者:
漆盛
//最后修改日期:
2013-09-26
package.view;
importjava.awt.BorderLayout;
importjavax.swing.JFrame;
importjavax.swing.JTabbedPane;
import.view.panel.MemberInfoPanel;
import.view.panel.OprationInfoPanel;
import.view.panel.WarehouseInfoPanel;
publicclassMainFrameextendsJFrame{
privatestaticfinallongserialVersionUID=1L;
privateJTabbedPanetab;
privatebooleanflag;
publicMainFrame(booleanflag){
this.flag=flag;
init();
}
privatevoidinit(){
this.add(createTab(),BorderLayout.CENTER);
this.setTitle("书店管理系统");
this.setSize(1000,700);
this.setLocationRelativeTo(null);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
this.setResizable(false);
}
privateJTabbedPanecreateTab(){
if(tab==null){
tab=newJTabbedPane();
}
tab.add("书籍销售管理",newOprationInfoPanel());
if(flag){
tab.add("仓库库存管理",newWarehouseInfoPanel());
tab.add("会员信息管理",newMemberInfoPanel());
}
returntab;
}
}
/*书籍销售管理选项卡面板*/
package.view.panel;
importjava.util.Vector;
importjavax.swing.JButton;
importjavax.swing.JLabel;
importjavax.swing.JPanel;
importjavax.swing.JScrollPane;
importjavax.swing.JTable;
importjavax.swing.JTextField;
importjavax.swing.table.DefaultTableModel;
import.action.OprationInfoPanelAction;
import.vo.BookVo;
import.vo.PageVo;
publicclassOprationInfoPanelextendsJPanel{
privatestaticfinallongserialVersionUID=1L;
@SuppressWarnings("rawtypes")
privateVectortitle=newVector();
@SuppressWarnings("rawtypes")
privateVectortitle1=newVector();
privateJScrollPanescroll;
privateDefaultTableModelmodel;
privateDefaultTableModelmodel1;
privateJTabletable;
privateJTablecartTable;
privateOprationInfoPanelActionaction=newOprationInfoPanelAction(this);
privateJTextFieldbookName=newJTextField(10);
privateintrow=-1;
privateBookVovo;
privateintrows=-1;
privateJPanelcreateOprationPanel;
privateJPanelcreateCartPanel;
privateJTextFieldpageText=newJTextField
(2);
privatePageVopageVo;
privateJPanelpagePanel;
privateJLabelcartName=newJLabel("购买目录");
privateJScrollPanecartScroll;
privateintcartRow;
publicOprationInfoPanel(){
init();
}
privatevoidinit(){
this.setLayout(null);
this.add(createOprationPanel());
createOprationPanel.setBounds(0,0,1000,40);
this.add(createScroll());
scroll.setBounds(0,45,1000,125);
this.add(createPagePanel());
pagePanel.setBounds(0,170,1000,40);
this.add(cartName);
cartName.setBounds(0,200,80,40);
this.add(createCartScroll());
cartScroll.setBounds(0,240,1000,250);
this.add(createCartPanel());
createCartPanel.setBounds(0,490,1000,50);
}
privateJPanelcreatePagePanel(){
if(pagePanel==null){
pagePanel=newJPanel();
}
pagePanel.add(createBut("首页"));
pagePanel.add(createBut("上页"));
pagePanel.add(newJLabel("第"));
pagePanel.add(pageText);
pagePanel.add(newJLabel("页"));
pageText.setEditable(false);
pagePanel.add(createBut("下页"));
pagePanel.add(createBut("末页"));
returnpagePanel;
}
privateJPanelcreateOprationPanel(){
if(createOprationPanel==null){
createOprationPanel=newJPanel();
}
createOprationPanel.add(newJLabel("书籍名称:
"));
createOprationPanel.add(bookName);
createOprationPanel.add(createBut("查询"));
createOprationPanel.add(createBut("加入购买目录"));
returncreateOprationPanel;
}
privateJPanelcreateCartPanel(){
if(createCartPanel==null){
createCartPanel=newJPanel();
createCartPanel.add(createBut("刷新"));
createCartPanel.add(createBut("移除"));
createCartPanel.add(createBut("账单结算"));
}
returncreateCartPanel;
}
privateJScrollPanecreateScroll(){
if(scroll==null){
scroll=newJScrollPane(createTable());
}
returnscroll;
}
privateJScrollPanecreateCartScroll(){
if(cartScroll==null){
cartScroll=newJScrollPane(createCartTable());
}
returncartScroll;
}