书店管理系统数据库课程设计_第1页
书店管理系统数据库课程设计_第2页
书店管理系统数据库课程设计_第3页
书店管理系统数据库课程设计_第4页
书店管理系统数据库课程设计_第5页
已阅读5页,还剩22页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

目录

1■引言.................................................................41.1

课题背景......................................................……--.4

1.2课程设计目的.................................................•••.4

1.3课程设计任务.................................................……4

2系统结构分析...............................5

2.1需求分析.........................................................5

2.2系统模块图...............................................…….-.6

3数据库设计......................................................…….-9

3.1概念结构设计..................................................…9

3.2逻辑结构设计............................................…….-10

3.3数据库表的建立............................................…….10

4系统实现............…….......................12

4.1数据库的连接.....................................................12

4.2系统功能模块设计.........................................13

5功能测试.........……......................15

5.1订单界面.............................................15

5.2各功能模块的测试...............................................16

6结束语.................................................................18

致谢.............……...................................19

参考文献…….....……..................................................20

附录...........................21

书店管理系统的设计与实现

—订单信息管理模块

学生姓名:冯淑华指导老师:唐汇国

摘要本课程设计主要解决书店的管理问题,设计开发一个简单的书店管理系统,实现

分类登陆,人员管理,书籍管理,订单管理以及各种查询,报表等功能。在课程设计中,系统开

发平台为Windows7,程序设计语言采用Java,数据库采用OracleDatabase10g

ExpressEdition,程序运行平台为Windows7。程序通过调试运行,初步实现了设计目

标,并且经过适当完善后,将可以应用在网上书店的管理中,解决实际问题。

关键词书店管理系统;数据库;Java

TheDesignandImplementationofthe

BookstoreManagementSystem

-Orderinformationmanagementmodule

Studentname:FengShuhuaAdvisor:TANGHui-guo

AbstractThiscourseisdesignedmainlytosolvethemanagementissuesofthe

bookstorewhichincludethedesignanddevelopmentofasimplebookstore

managementsystems,classificationlandingJachievement,personnel

management,bookmanagement,ordermanagementandvariousqueries'or

reports'functions.Incurriculumdesign,oursystemdevelopmentplatformis

Windows7andprogramminglanguageusestheJavaanddatabaseusesOracle

Database10gExpressEdition,andtheprogramrunplatformmakesuseof

Windows7.Afterdebuggingandrunning,Theprogramispreliminarydesigned

toachieveobjectives,andproperlyperfectsothatitcanbeappliedinthe

managementoftheonlinebookstoretosolvepracticalproblems.

KeywordsBookstoremanagementsystem;Database;Java

1引言

LI课题背景

Intemet的迅速发展正以前所未有的深度和广度影响和改善着人类生活的各个方面,

越来越多的人开始意识到Internet所起到的重大作用.随着书店规模的不断扩大,员工人数

的不断增多,使得书店管理的手工操作管理模式的局限性越发突出.本书店管理系统应用了

科学的管理模式对员工.书籍.订单信息进行管理和维护,并且还提供了给类报表的打印,使

原本非常复杂的手工管理变得简洁明了。

计算机信息管理技术的应用,除了能在相当大的程度上代替人工作业,从而减少人员

工作量,减轻工作负担,减少工作中因人为原因而产生的错误从而避免不必要的损失外,

更重要的是能建立准确畅通、简便的信息流通渠道,为工作提供所需要的准确、及时的信

息以帮助做出正确而及时的选择与决定,从而给采用这门技术的单位带来了巨大的可见或

不可见的利益与效益。

L2课程设计目的

书店的不断扩张,需要更为人性化的管理。因而设计一个好的书店管理系统,能够提高

书店的管理效率,创造更多的社会价值和经济价值。本论文旨在论述书店管理费系统的设

计与开发。

通过书店管理系统的设计,熟练掌握Java、OracleDatabase10gExpressEdition

等工具软件,系统地掌握需求分析、数据库设计、编码实现、测试等软件开发的流程,提

高自身分析问题、解决问题的能力。

1.3课程设计任务

本课程设计任务是通过开发一个数据库书店管理系统,学习数据库系统的设计与开

发,采用Java和OracleDatabase10gExpressEdition等软件为开发工具。通过对

计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据

库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使

得设计的数据库系统能够实现一般数据库的管理。

2系统结构分析

2.1需求分析

书店管理系统是适应时代发展的需要,提高管理的效率而开发设计的。通过对信息的

收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为书店管理人员

提供全面、准确的各种数据。实现了书店管理的简单化和规划化,提高了书店的工作效率,

从而使书店能够以少的投入获得更好的社会效益与经济效益。

经过综合分析,确定了书店管理系统的主要包括以下功能:

(1).登陆管理功能

登陆设置包括员工登陆。基本信息需要正确的员工姓名和密码才可以登陆。

(2).员工管理功能

系统设置包括员工编号设置、员工姓名设置、员工性别设置、员工生日设置和备注。

基本信息管理模块可以实现查询和删除员工信息功能。

(3).书籍管理功能

系统设置包括图书名称设置、书籍编号设置、书籍出版社设置、书籍数量设置、书籍

价格设置和书籍备注信息。基本信息管理模块可以实现添加和重置书籍信息功能:

(4).订单管理功能

系统设置包括客户姓名设置、订单日期设置、订单编号设置和经手人信息。基本信息

管理模块可以实现删除订单信息功能,以及对订单的模糊查询。

⑸.订单详单管理功能

系统设置包括客户姓名设置、订单日期设置、订单编号设置、书籍名称设置、书籍

数目设置、图书单价设置和经手人信息。基本信息管理模块可以实现查询订单详单信息功

能。

2.2功能模块图

1.根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示。

图2.1书店管理系统功能模块示意图

2.“雇员信息设置”功能模块用于雇员编号管理、雇员姓名管理、雇员性别管理、雇员

生日管理以及备注信息管理,其功能模块如图2.2所示。

图2.2雇员信息设置

3.“书籍信息管理”功能模块用于图书名称管理、书籍编号管理、出版社信息、书

籍数量管理、书籍价格管理以及备注信息,其功能模块如图2.3所示。

图2.3书籍信息管理

4.“订单详单信息管理”功能模块用于销售信息统计查询以及医生效益统计查询,

其功能模块如图2.4所示。

图2.4订单详单信息管理

5.“订单信息管理”功能模块用于订单编号管理、客户姓名管理、经手人姓名管理、

订单日期管理,其功能模块如图2.5所示。

图2.5订单信息管理

6.“顾客信息设置”功能模块用于顾客编号管理、顾客姓名管理、联系方式管理、权限

密码信息管理,其功能模块如图2.6所示。

图2.6顾客信息管理

本系统将用户划分为一种类型,即书店员工用户。管理员可以管理其他用户的信息,

在所有方面所有管理员的权限相同O

3数据库设计

3.1概念结构设计

根据需求分析抽象出信息结构,可得该系统的E-R图。

(1).雇员E-R图,如图3.1所示。

图3.1用户E-R图

根据分E-R图和需求分析,可得到总E-R图,如图3.10所示。

图3.10总体E-R图

3.2逻辑结构设计

根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。

数据库Bookmanage包含以下5个表:员工信息表Employee、书籍信息表

Bookinfo、订单信息表BookOrders»顾客信息表Customs、订单详单表OrderDetaiL

(1).订单信息表Bookinfo

订单信息表Booklnf。用来保存书籍编号、书籍名称、书籍价格、书籍类型、书籍标记、

出版社和库存等信息。表Booklnf。的结构如表3-2所示。

表3-2表Bookinfo的结构

编号字段名称数据结构说明

1BookIDVarchar2(12)记录书籍编号

2BookNameVarchar2(40)记录书籍名称

3Pricenumber记书籍价格

4BookTypeVarchar2(20)记录书籍类型

5BookRemarkVarchar2(20)记录书籍标记

6PublisVarchar2(20)记录出版社

7Stocknumber记录书籍库存

通过对上面表的分析,插入,删除,查找等操作,所有模式都符合3NF。

前面是通过前台来实现系统安全性的,我们也可以对数据库进行身份验证,可以从服

务器角度建一个登录名,使得不同的服务器角色拥有不同的权限,从而实现对数据库的不

同权限的管理,以此来增强书店管理系统的安全性。

3.3数据库表的建立

在设计数据库表结构之前,首先要创建一个数据库。本系统使用的数据库为

Bookmanage。可以在企业管理器中创建数据库,也可以在查询分析器中执行以下

Transact—SQ1语句:

(1).创建表BookOrders

创建表BookOrders(订单信息表),它的代码如下:

createtableBookOrders(

OrdIDvarchar2(12),

TotalPruenumber(8),

CusIDvarchar2(12),

EmpIDvarchar2(12),

OrdDatedate,

primarykey(OrdID,CusID,EmpID),

foreignkey(CusID)referencesCustoms(CusID),

foreignkey(EmpID)referencesEmployee(EmpID)

);

GO

(2).创建表OrderDetail

创建表OrderDetail(订单详单信息表),它的代码如下:

createtableOrderDetail(

OrdIDvarchar2(12),

BookIDvarchar2(12),

BookCountnumber

—primarykey(OrdlD)

—foreignkey(OrdlD)referencesOrders(OrdlD),

—foreignkey(BooklD)referencesBooklnfo(BooklD)

);

4系统实现

4.1数据库的连接

在该系统中使用的数据库是OracleDatabase10gExpressEditiono客户端采用

的是PL/SQLDeveloperoJava运行环境为EclipseIndigoo

在安装好了软件之后,数据库的连接设置在Eclipse里的Properties功能键中。如

图4.1所示

图4.1数据库连接

在JavaBuildPath中的Libraries中,运行AddExternalJARs…找至

ojdbcl4_g.jar并添加,则此时已将数据库和Java程序成功连接。

4.2系统功能模块设置

(1).设计订单信息管理对话框

订单信息管理对话框可以用来删除和查询订单信息。添加一个对话框,将其命名为

ContentPaneo

对话框的布局如图4.2所示。

图4.2对话框ContentPane的布局

对话框启动,当你点击查找功能键时,则会出现要查询的订单信息,此时你可以实现

删除。

当用户单击“查询”按钮时,将执行ChazhaoYuangonglnfo。函数;当用户单击“删

除”按钮时,将执行ShanchuYuanfonglnfo。函数,在删除数据之前,程序要是否选择

了要删除的订单记录,否则会提示请“请选中一行”。

设计订单详单信息管理对话框

订单信息管理对话框可以用来删除和查询订单信息。添加一个对话框,将其命名为

ContentPaneo

对话框的布局如图4.3所示。

图4.3对话框ContentPane的布局

对话框启动,当你点击查找功能键时,则会出现要查询的订单细则信息,此时你可以

实现查询。

当用户单击"查询”按钮时,将执行ChazhaoYuangonglnfo。函数。

5功能测试

该程序实现了书店管理系统应有的功能,即登陆设置功能、员工信息管理功能、顾客

信息管理功能、书籍信息管理功能和订单信息管理和订单详单管理功能。

5.1订单信息管理

程序运行时,登陆后点击“订单管理”便进入订单管理界面.点击“订单详单”便进入订单

详单管理界面。如图5.1所示

图5.1订单管理界面和订单详单管理界面

5.2各功能模块的实现

各功能的实现均与设计对话框相符合,如订单信息管理,当用户选择该项时,会弹出

订单信息管理对话框,用户可以进行删除以及查询等操作,界面如图5.2所示,其他界面的

功能也都一一实现,完成了该系统的功能要求。

图5.2订单信息管理对话框

6结束语

经过这些天的努力,本次课程设计终于完成了。通过这次课程设计,使我对数据库

这门课程有了更深入的理解,数据库是一门实践性较强的课程,为了学好这门课程,必须

在掌握理论知识的同时,加强上机实践。

在本次课程设计中,我明白了理论与实际应用相结合的重要性,并提高了自己组织

数据及编写程序的能力,培养了基本的、良好的程序设计技能。这次课程设计同样提高了

我的综合运用所学知识的能力。并对Java语言有了更深入的了解。

由于我的经验和知识的不足,在程序中还存在很多缺陷。经过这次课程设计,我的知

识得到了很大提高,经验也更加丰富。今后我会更多的学习编程技巧,不断的提高程

序理解和设计能力

致谢

在这次数据库的课程设计中,曾遇到过不少问题,单靠我个人的努力,很难按时完成

该课程设计。在此,我衷心感谢我的指导老师——彭玉旭。彭玉旭老师认真负责的工作态

度,严谨的治学精神和深厚的理论水平都使我获益非浅。另外,还要感谢学校领导、辅导

员、各位同学对我们的关怀、帮助,为我们提供了良好的设计环境以及各方面的支持。

参考文献

[1]李彦,韩光林,李玉波.SQLSERVE完全自学手册[M].北京:电子工业出版社,

2007

[2]萨师炬,王珊.数据库系统概论.北京:高等教育出版社.2005

[3]Y.DanielLiang.Java.万波.JAVA语言程序设计[M].第六版.北京:机械工业出版

社,2008

附录部分程序代码

//程序名称:BookDenglu.java

//程序功能:登陆管理

//程序作者:冯淑华

//最后修改日期:2012-09-12

/*订单类*/

publicclassOrdersVo{

privateStringordersID;

privateStringcusName;

privateStringempName;

privateStringbookName;

privateStringbookPrice;

privateStringbookCount;

privateStringtotalPrice;

privateStringordersDate;

publicStringgetOrdersIDQ{

returnordersID;

publicvoidsetOrdersID(StringordersID){

this,ordersID=ordersID;

}

publicStringgetCusNameQ{

returncusName;

)

publicvoidsetCusName(StringcusName){

this.cusName=cusName;

)

publicStringgetEmpName(){

returnempName;

}

publicvoidsetEmpName(StringempName){

this.empName=empName;

)

publicStringgetBookName(){

returnbookName;

)

publicvoidsetBookName(StringbookName){

this.bookName=bookName;

publicStringgetBookPrice(){

returnbookPrice;

)

publicvoidsetBookPrice(StringbookPrice){

this.bookPrice=bookPrice;

}

publicStringgetBookCount(){

returnbookCount;

)

publicvoidsetBookCount(StringbookCount){

this.bookCount=bookCount;

)

publicStringgetTotalPrice(){

returntotalPrice;

)

publicvoidsetTotalPrice(StringtotalPrice){

this.totalPrice=totalPrice;

)

publicStringgetOrdersDate(){

returnordersDate;

}

publicvoidsetOrdersDate(StringordersDate){

this.ordersDate=ordersDate;

)

/*订单信息*/

publicclassOrdersDaoimplementslOrdersDao{

privatePreparedStatementpstm;

privateResultSetrs;

privateintrowNum;

privateConnectionconn;

privateStringsql;

©Override

publicList<OrdersVo>queryOrders(OrdersVotemp){

//TODOAuto-generatedmethodstub

DBUtildu=newDBUtilQ;

List<OrdersVo>list=newArrayList<OrdersVo>();

OrdersVovo=null;

try{

conn=du.getConnectQ;

sql="selectBookOrders.Ordid,BookOrders.Orddate,bookinfo.price,

customs.cusname,employee.empname,Bookinfo.Bookname,

OrderDetail.BookcountfromBookOrdersinnerjoinOrderDetailon

BookOrders.Ordid=OrderDetail.OrdidinnerjoincustomsonBookOrders.Cusid

=customs.cusidinnerjoinemployeeonBookOrders.Empid=employee.empid

innerjoinBookinfoonOrderDetail.Bookid=Bookinfo.Bookidwhere

customs.cusName=

pstm=conn.prepareStatement(sql);

pstm.setString(1,temp.getOrdersID());

rs=pstm.executeQuery();

while(rs.nextQ){

StringordersID=rs.getString(nORDIDn);

StringcusName=rs.getString("CUSNAMEn);

StringempName=rs.getString("EMPNAME");

StringordersDate=rs.getString("ORDDATE");

vo=newOrdersVoQ;

vo.setOrdersID(ordersID);

vo.setCusName(cusName);

vo.setEmpName(empName);

vo.setOrdersDate(ordersDate);

list.add(vo);

)

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTraceQ;

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

du.free(conn,pstm,rs);

}

returnlist;

)

©Override

publicList<OrdersVo>queryAHOrders(){

//TODOAuto-generatedmethodstub

DBUtildu=newDBUtilQ;

List<OrdersVo>list=newArrayList<OrdersVo>();

OrdersVovo=null;

try{

conn=du.getConnectQ;

sql="selectBookOrders.Ordid,BookOrders.Orddate,bookinfo.price,

customs.cusname,employee.empname,Bookinfo.Bookname,

OrderDetail.BookcountfromBookOrdersinnerjoinOrderDetailon

BookOrders.Ordid=OrderDetail.OrdidinnerjoincustomsonBookOrders.Cusid

=customs.cusidinnerjoinemployeeonBookOrders.Empid=employee.empid

innerjoinBookinfoonOrderDetail.Bookid=Bookinfo.Bookid";

pstm=conn.prepareStatement(sql);

rs=pstm.executeQuery();

while(rs.nextQ){

StringordersID=rs.getString(nORDIDn);

StringcusName=rs.getString("CUSNAMEn);

StringempName=rs.getString(MEMPNAME");

StringordersDate=rs.getString("ORDDATEu);

vo=newOrdersVoQ;

vo.setOrdersID(ordersID);

vo.setCusName(cusName);

vo.setEmpName(empName);

vo.setOrdersDate(ordersDate);

list,add(vo);

)

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTraceQ;

}finally{

du.free(conn,pstm,rs);

}

returnlist;

)

©Override

publicList<OrdersVo>queryOrdersDetail(OrdersVotemp){

//TODOAuto-generatedmethodstub

DBUtildu=newDBUtilQ;

List<OrdersVo>list=newArrayList<OrdersVo>();

OrdersVovo=null;

try{

conn=du.getConnectQ;

sql="selectBookOrders.Ordid,BookOrders.Orddate,bookinfo.price,

customs.cusname,employee.empname,Bookinfo.Bookname,

OrderDetail.BookcountfromBookOrdersinnerjoinOrderDetailon

BookOrders.Ordid=OrderDetail.OrdidinnerjoincustomsonBookOrders.Cusid

=customs.cusidinnerjoinemployeeonBookOrders.Empid=employee.empid

innerjoinBookinfoonOrderDetail.Bookid=Bookinfo.Bookidwhere

BookOrders.ordid=?H;

pstm=conn.prepareStatement(sql);

pstm.setString(l,temp.getOrdersID());

rs=pstm.executeQuery();

while(rs.nextQ){

StringordersID=rs.getString("ORDIDH);

StringcusName=rs.getString("CUSNAMEn);

StringempName=rs.getString("EMPNAMEn);

StringbookName=rs.getString(nBOOKNAMEn);

StringbookCount=rs.getString(nBOOKCOUNTu);

StringbookPrice=rs.getString(,'PRICEH);

StringordersDate=rs.getString("ORDDATE");

vo=newOrdersVoQ;

vo.setOrdersID(ordersID);

vo.setCusName(cusName);

vo.setEmpName(empName);

vo.setBookName(bookName);

vo.setBookCount(bookCount);

vo.setBookPrice(bookPrice);

vo.setOrdersDate(ordersDate);

list.add(vo);

)

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTraceQ;

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}finally{

du.free(conn,pstm,rs);

}

returnlist;

}

©Override

publicList<OrdersVo>queryAllOrdersDetail(){

//TODOAuto-generatedmethodstub

DBUtildu=newDBUtilQ;

List<OrdersVo>list=newArrayList<OrdersVo>();

OrdersVovo=null;

try{

conn=du.getConnectQ;

sql="selectBookOrders.Ordid,BookOrders.Orddate,bookinfo.price,

customs.cusname,employee,empname,Bookinfo.Bookname,

OrderDetail.BookcountfromBookOrdersinnerjoinOrderDetailon

BookOrders.Ordid=OrderDetail.OrdidinnerjoincustomsonBookOrders.Cusid

=customs.cusidinnerjoinemployeeonBookOrders.Empid=employee.empid

innerjoinBookinfoonOrderDetail.Bookid=Bookinfo.Bookid";

pstm=conn.prepareStatement(sql);

rs=pstm.executeQuery();

while(rs.nextQ){

StringordersID=rs.getString(nORDIDn);

StringcusName=rs.getString("CUSNAMEu);

StringempName=rs.getString("EMPNAME");

StringbookName=rs.getString("BOOKNAMEu);

StringbookCount=rs.getString("BOOKCOUNTu);

StringbookPrice=rs.getString("PRICE");

StringordersDate=rs.getString("ORDDATE");

vo=newOrdersVoQ;

vo.setOrdersID(ordersID);

vo.setCusName(cusName);

vo.setEmpName(empName);

vo.setBookName(bookName);

vo.setBookCount(bookCount);

vo.setBookPrice(bookPrice);

vo.setOrdersDate(ordersDate);

list,add(vo);

)

}catch(ClassNotFoundExceptione){

//TODOAuto-generatedcatchblock

e.printStackTrace();

}catch(SQLExceptione){

//TODOAuto-generatedcatchblock

e.printStackTraceQ;

}finally{

du.free(conn,pstm,rs);

}

returnlist;

)

©Override

publicBooleandeleteOrders(OrdersVotemp){

//TODOAuto-generatedmethodstub

DBUtildu=newDBUtilQ;

booleanbool=false;

try{

conn=du.getConnectQ;

sql="deletefrombookorderswhereordid=

pstm=conn.prepareStatement(sql);

pstm.setString(1,temp.getOrdersID());

intflagl=pstm.executeUpdateQ;

sql="deletefromorderdetailwhereordid=?”;

pstm=conn.prepareStatement(sql);

pstm.setString(l,temp.getOrdersID());

intflag2=pstm.executeUpdateQ;

if((flagl!=-1)&&(flag2!=-1)){

bool=true;

)

}catch(ClassNotFoundExceptione){

//TODOAuto-generate

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论