1、(完整word版)网上书店信息管理系统+代码+数据库表书店信息管理系统的设计与实现学生姓名:蒋 斌 指导老师:罗永红摘 要 本课程设计主要是设计一个书店信息管理的系统,实现用户的注册、登录,书店书籍的添加、删除、修改、查询及图书的购买等功能。程序设计平台为Windows 7,程序设计语言采用JAVA,所连接的数据库是oracle 11g。在程序设计中,采用了结构化与面向对象两种解决问题的方法。程序通过调试运行,初步实现了目标。关键词 数据库;oracle 11g;JAVA;书店信息管理系统The Design and Implementation of Book Store Informati
2、on Management SystemStudent Name:JiangBin Advisor:LuoYong-hongAbstract This course design is mainly to make a information management system of a online bookstore, The function of the system include book adding ,deleting and querying and purchase books. Program design platform is Windows XP, programm
3、ing language is JAVA, are the connected database is Oracle 10g. In the program process, I adopted two solution of the structured and object-oriented. Program run through the debugger, achieving the initial goal. Keywords Database; oracle 10g; JAVA; Online Bookstore Information Management System目 录1引
4、言11.1 课题背景11.2 课程设计目的11.3课程设计任务12 系统结构分析22.1 需求分析22.2 功能模块图33 数据库设计43.1 概念结构设计43.2逻辑结构设计63.3数据库表的建立84功能实现104.1注册界面104.2 登录界面114.3主界面124.4书籍添加124.5 书籍修改134.6 图书删除144.7 图书删除144.8 订单查询修改155 系统技术实现165.1 JAVA165.2 oracle166 结束语18参考文献191引言1.1 课题背景随着计算机技术的发展以及计算机网络的逐渐普及,英特网成为人们查找信息的重要场所。二十一世纪是信息的时代,所以信息的交换
5、和信息流通显的特别重要。因此网上书店的出现成为必然。1.2 课程设计目的随着计算机的广泛应用,其逐步成为现代化的标志。书店等,在正常运行过程中总是面对大量的客户信息,书籍信息以及两者相互作用产生的购书信息。因此需要对客户资源、书籍资源、购书信息及书籍信息进行管理,及时了解各个环节中信息的变更,要对因此而产生的单据进行及时的处理,为了书店自动化的管理,能够更快速的满足客户的要求,提高各种工作的效率,现对其设计相应的系统,以达到上述的目的。网上书店信息管理系统的主要功能是实现书籍信息管理及购书的自动化。围绕这一主要功能,本系统涉及到以下核心功能:上传管理,修改管理,查询管理。除了这些核心功能外,还
6、包括一些基本和辅助功能,如:商家和客户的注册、登录,客户的购书等。1.3课程设计任务本课程设计任务是通过开发一个书店信息管理系统,学习数据库系统的设计与开发,采用Eclipse和oracle 10g等软件为开发工具。通过对计算机硬件和软件解决方案的论证,对应用领域进行调查分析,参考各种资料和进行数据库系统开发实践。在指导老师的帮助下,已经基本上成功地实现了设计任务书的要求,使得设计的数据库系统能够实现一般数据库的管理。2 系统结构分析2.1 需求分析网上书店信息管理系统是适应计算机时代发展的需要,提高管理的效率而开发设计的。通过对书籍信息管理,使客户能轻松购买书籍。经过综合分析,确定了网上书店
7、信息管理系统的主要包括以下功能:(1)商家:a、商家注册功能此模块的主要功能是用于商家注册账号;b、商家登录功能此模块的主要功能是用于拥有商家账号的用户登陆系统对自己的书店进行管理;c、上传书籍功能此模块的主要功能是用于商家发布一些新书共客户查看及购买;d、书籍修改功能此模块的主要功能是用于商家修改自己书店书籍的信息;e、书籍删除功能此模块的主要功能是用于商家删除一些书籍信息;f、书籍查询功能 此模块的主要功能是用于商家查询自己书店的书籍;g、订单查询功能此模块的主要功能是用于商家查询自己书店卖书的记录;(2)客户:a、商家注册功能此模块的主要功能是用于商家注册账号;b、商家登录功能此模块的主
8、要功能是对拥有客户账号的用户登录;c、商品信息查询功能此模块的主要功能是用于客户查看所有商家的书籍信息;d、书籍购买功能此模块的主要功能用于客户购买书籍e、订单查询功能此模块的主要功能是用于客户查询自己的购书记录;2.2 功能模块图根据上述的功能,可以设计出系统的总体功能模块,如图2.1所示,网上书店信息管理系统商家书籍查询客户注册登录书籍上传书籍修改书籍删除订单查询注册书籍查询登录购买书籍订单查询图2.1 系统功能模块示意图3 数据库设计3.1 概念结构设计根据需求分析抽象出信息结构,可得该系统的E-R图,(1)商家用户E-R图,如图3.1所示,sellerpwdaddressSeller_
9、idSeller_nameme图3.1 商家用户E-R图(2)客户用户E-R图,如图3.2所示,buyerpwdaddressbuyer_idbuyer_nameme图3.2 客户用户E-R图(3) 书籍信息E-R图,如图3.3所示,goodspricediscountnumGoods_idSeller_idGoods_name图3.3 书籍信息E-R图(4)订单E-R图,如图3.4所示,orderBuyer_idGoods_idorder_idSeller_idnum图3.4 商家用户E-R图(5)根据分E-R图和需求分析,可得到总E-R图,如图3.5所示。图3.5 总E-R图3.2逻辑结构
10、设计根据上述的概念结构设计出逻辑结构,将E-R图转换为关系模型。数据库ORCL包含以下4个表:商家信息表seller、客户信息表buyer、书籍信息表goods、订单信息表order。(1) 商家信息表seller商家信息表seller用来保存商家账号、密码等信息,表seller的结构如表3-1所示,表3-1 表seller的结构字段名说明类型长度及备注seller_id商家编号varchar2(20)主键seller_name书店名称varchar2(20)pwd密码varchar2(20)address书店地址varchar2(200)(2) 客户信息表buyer客户信息表buyer用来保
11、存客户账号、密码等信息,表buyer的结构如表3-2所示,表3-2 表buyer的结构字段名说明类型长度及备注buyer_id客户编号varchar2(20)主键buyer_name客户名字varchar2(20)pwd密码varchar2(20)address客户住址varchar2(200)(3)图书信息表goods书籍信息表goods用来保存书号、书名、作者等信息。表goods的结构如表3-3所示,表3-3 表goods的结构字段名说明类型长度及备注goods_id书籍编号int主键seller_id商家编号varchar(20)外键goods_name书籍名称varchar(50)pr
12、ice价格intdiscount折扣intnum书籍数量int(4)订单信息表order订单信息表order用来保存订单号、书籍编名等信息。表order的结构如表3-4所示,表3-4 表order的结构字段名说明类型长度及备注order_id订单编号int主键goods_id书籍编号varchar(20)外键seller_id商家编号varchar(50)外键buyer_id客户编号int外键num购买数量int3.3数据库表的建立在设计数据库表结构之前,首先要创建一个数据库实例。本系统使用的数据库为oracle 10g。数据库表的建立语句如下:-商家create table seller(
13、seller_id varchar2(20) primary key, seller_name varchar2(20), pwd varchar2(20), address varchar2(200);-客户create table buyer( buyer_id varchar(20) primary key, buyer_name varchar(20), pwd varchar2(20), address varchar(200);-书籍create table goods( goods_id int primary key, seller_id varchar(20), goods_
14、name varchar(50), price int, discount int, num int, constraint fk_seller_id foreign key(seller_id) references seller(seller_id);-订单create table orders( order_id int primary key, goods_id int, seller_id varchar(20), buyer_id varchar(20), num int, constraint fk_goods_id foreign key(goods_id) reference
15、s goods(goods_id), constraint fk_sellers_id foreign key(seller_id) references seller(seller_id), constraint fk_buyer_id foreign key(buyer_id) references buyer(buyer_id);4功能实现该程序实现了网上书店信息管理系统应有的功能,即账号注册、登录功能、书籍查询、书籍添加、书籍删除、书籍修改、书籍购买功能。4.1注册界面程序运行出现注册界面,要求用户输入相应信息,当信息符合要求时,注册成功,如图4.1所示,图 4.1注册界面实现注册功能
16、的核心代码如下:/构建客户对象Buyer buyer = new Buyer();/设置客户的信息buyer.setId(fieldCus0.getText();buyer.setName(fieldCus1.getText();buyer.setPwd(fieldCus2.getText();buyer.setAddress(fieldCus3.getText();/构建BuyerDao对象BuyerDao dao = new BuyerDao();/把该客户插入到数据库中int flag_1 = dao.insertBuyer(buyer);4.2 登录界面程序运行出现登陆界面,要求用户输
17、入相应信息,当信息符合要求时,登录成功,如图4.2所示,图 4.2 登录界面当登录成功时,进入主界面,实现登录功能的核心代码如下:/通过输入姓名和密码获取一个用户对象Seller seller = SellerDao.getSeller(useNameText.getText(), pws.getText();/判断队形是否为空if(seller.getId()!=null)/隐藏当前窗口setVisible(false);/构建用户主窗口,并显示出来new SellerFrame().setVisible(true);4.3主界面登录成功后商家和客户分别进入两个不同的主界面,如图4.3所示,
18、图 4.3主界面图 4.3主界面界面主界面里面商家可以查看到自己的商品信息及商品出售后生成的订单信息,客户则可以浏览所有商家的商品信息和自己的购物记录。4.4书籍添加该模块主要用于商家添加书籍,如图4.4所示,图 4.4书籍添加界面添加成功后该商家及客户均能浏览到该书籍的信息,实现添加书籍功能的核心代码如下:/构建GoodsDao对象GoodsDao dao = new GoodsDao();/设置goods的属性goods.setDiscount(Integer.valueOf(fieldDiscount.getText();goods.setName(fieldName.getText()
19、;goods.setNum(Integer.valueOf(fieldNum.getText();goods.setPrice(Integer.valueOf(fieldPrice.getText();/调用dao.insertGoods()方法,把商品插入到数据库中dao.insertGoods(goods);4.5 书籍修改该模块主要用于商家修改自己的书籍的信息,如图4.5所示,图 4.4书籍修改界面该界面进来后首先会显示出商品的信息,修改好数据后,点击修改按钮则可以对商品进行修改,实现修改功能的核心代码如下:/构建GoodsDao对象GoodsDao dao = new GoodsDao
20、();/读取对应文本框的信息并设置到goods里面goods.setDiscount(Integer.valueOf(fieldDiscount.getText();goods.setName(fieldName.getText();goods.setNum(Integer.valueOf(fieldNum.getText(); goods.setPrice(Integer.valueOf(fieldPrice.getText();/修改goods信息dao.updateGoods(goods);4.6 图书删除该模块主要用于商家对书籍进行删除操作,如图4.6所示,图 4.6书籍删除界面 当商
21、家往文本框里输入书籍编号后,点击删除,则可以对书籍进行删除,当书籍编号输入错误,点击删除时系统会弹出提示信息,实现该模块功能代码如下:/获取文本框中输入的书籍编号int id = Integer.parseInt(field.getText();/构建GoodsDaoGoodsDao dao = new GoodsDao();/调用/调用deleteById方法,删除书籍 dao.deleteById(id)4.7 图书删除 该模块主要用于客户购买书籍,如图4.7所示,图 4.7 图书购买当客户往文本框里面输入书籍标号,选择好商品数量后,点击购买就可以实现客户对书籍的购买。如果书籍编号错误或商
22、品数量不够时,系统会弹出提示,实现购书功能的核心代码如下:/构建GoodsDao对象GoodsDao dao = new GoodsDao();/构建goods对象Goods goods = new Goods();/减少库存数量goods.setNum(goods.getNum()-num);/修改商品信息dao.updateGoods(goods);/构建订单对象OrderDao order = new OrderDao();/插入一条订单数据order.inserOerderByGoods(goods, num);4.8 订单查询修改该模块主要用于客户查看生成的订单,如图4.8所示,图4
23、.8 订单查询模块5 系统技术实现5.1 JAVAJava 编程语言的风格十分接近C、C+语言。Java是一个纯的面向对象的程序设计语言,它继承了 C+ 语言面向对象技术的核心,Java舍弃了C +语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增加了垃圾回收器功能用于回收不再被引用的对象所占据的内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全的枚举、不定长参数和自动装/拆箱等语言特性。Java 不同于一般的
24、编译执行计算机语言和解释执行计算机语言。它首先将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上的虚拟机来解释执行字节码,从而实现了“一次编译、到处执行” 的跨平台特性2。5.2 oracleOracle数据库包括Oracle数据库服务器和客户端。Oracle数据库服务器:Oracle Server是一个对象一关系数据库管理系统。它提供开放的、全面的、和集成的信息管理方法。每个Server由一个 Oracle DB和一个 Oracle Server实例组成。它具有场地自治性(Site Autonomy)和提供数据存储透明机制,以此可实现数据存储透明性。每个 Oracle数据
25、库对应唯一的一个实例名SID,Oracle数据库服务器启动后,一般至少有以下几个用户:Internal,它不是一个真实的用户名,而是具有SYSDBA优先级的Sys用户的别名,它由DBA用户使用来完成数据库的管理任务,包括启动和关闭数据库;Sys,它是一个 DBA用户名,具有最大的数据库操作权限;System,它也是一个 DBA用户名,权限仅次于 Sys用户。客户端:为数据库用户操作端,由应用、工具、SQL* NET组成,用户操作数据库时,必须连接到一服务器,该数据库称为本地数据库(Local DB)。在网络环境下其它服务器上的 DB称为远程数据库(Remote DB)。用户要存取远程 DB上的
26、数据时,必须建立数据库链。Oracle数据库的体系结构包括物理存储结构和逻辑存储结构。由于它们是相分离的,所以在管理数据的物理存储结构时并不会影响对逻辑存储结构的存取。1.逻辑存储结构它由至少一个表空间和数据库模式对象组成。这里,模式是对象的集合,而模式对象是直接引用数据库数据的逻辑结构。模式对象包括这样一些结构:表、视图、序列、存储过程、同一词、索引、簇和数据库链等。逻辑存储结构包括表空间、段和范围,用于描述怎样使用数据库的物理空间。而其中的模式对象和关系形成了数据库的关系设计。数据块(Block):是数据库进行UO操作的最小单位,它与操作系统的块不是一个概念。oracle数据库不是以操作系
27、统的块为单位来请求数据,而是以多个Oracle数据库块为单位。段(Segment):是表空间中一个指定类型的逻辑存储结构,它由一个或多个范围组成,段将占用并增长存储空间。其中包括:数据段:用来存放表数据;索引段:用来存放表索引;临时段:用来存放中间结果;回滚段:用于出现异常时,恢复事务。范围(Extent):是数据库存储空间分配的逻辑单位,一个范围由许多连续的数据块组成,范围是由段依此分配的,分配的第一个范围称为初始范围,以后分配的范围称为增量范围3。6 结束语经过这两周的不断学习和设计开发加上老师同学的帮助,终于完成了本次课程设计。在完成过程中,我进一步学习了Java的基础语法以及熟悉了用J
28、ava编写图形用户界面,同时也规范了许多编写习惯,对数据库的一些基本操作也有了进一步的了解。在编程的过程中遇到许多的问题,但通过查资料,以及与同学讨论,大部分问题得到了解决。但由于时间问题以及一些其他的因素,本系统也扔存在许多问题,功能也不是很完善,比如一些输入数据的控制,正则表达式的匹配这方面做的还很不够。但我觉得通过这次课程设计我还是学到了很多,如果下次再去做类似的东西我觉得我一定会做的更好。参考文献1 萨师煊, 王珊.数据库系统概论(第三版)M.北京:高等教育出版社. 2005.2 Y.Daniel Liang.Java语言程序设计基础篇M.北京:机械工业出版社.2006.3 夏帮贵,刘
29、凡馨.JDBC AP数据库编程实材作教.北京:北京希望电子出版社.2001.4 王立福. 软件工程(第二版)M. 北京:北京大学出版社.2002.附录 全部源代码package com.shoeShop.db;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;public class Connect private static Connection con = null;private static String url=jdbc:oracle:thin:localhos
30、t:1521:ORCL;private static String driver = oracle.jdbc.driver.OracleDriver;private static String user = scott;private static String pwd = tiger;public static Connection getConnection()try Class.forName(driver);con = DriverManager.getConnection(url, user, pwd);System.out.println(数据库连接成功!); catch (Cla
31、ssNotFoundException e) System.out.println(驱动加载失败!); catch (SQLException e) System.out.println(数据库连接失败!);return con;public static void main(String args) Connect.getConnection();package com.shoeShop.action;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JPanel
32、;import com.shoeShop.view.RegisterFrame;public class docMenuAction implements ActionListener RegisterFrame register = null;JPanel cusPanel = null;JPanel docPanel = null;public docMenuAction(RegisterFrame register)this.register = register;this.cusPanel = register.cusPanel;this.docPanel = register.doc
33、Panel;public void actionPerformed(ActionEvent e) / TODO Auto-generated method stubregister.flag = 1;/System.out.println(register.flag);register.remove(cusPanel);register.add(docPanel);docPanel.updateUI();package com.shoeShop.dao;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQ
34、LException;import java.sql.Statement;import com.shoeShop.db.Connect;import com.shoeShop.entity.Buyer;import com.shoeShop.entity.Seller;public class BuyerDao private static Connection conn;private static Statement statement;private static ResultSet resultSet;/插入数据,用于注册public int insertBuyer(Buyer buy
35、er)int flag = 0;conn = Connect.getConnection();try statement = conn.createStatement();String sql = insert into buyer values(+buyer.getId()+,+buyer.getName()+,+buyer.getPwd()+,+buyer.getAddress()+);/System.out.println(buyer+sql);flag = statement.executeUpdate(sql);statement.close();conn.close(); catc
36、h (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();/System.out.println(flag);return flag;/通过用户名和密码查询,用于登录public static Buyer getBuyer(String name,String pwd)conn = Connect.getConnection();Buyer buyer = new Buyer();try statement = conn.createStatement();String sql = select * from
37、 buyer where buyer_id=+name+ and pwd = +pwd+;resultSet = statement.executeQuery(sql);while(resultSet.next()buyer.setId(resultSet.getString(buyer_id);buyer.setName(resultSet.getString(buyer_name);buyer.setPwd(resultSet.getString(pwd);buyer.setAddress(resultSet.getString(address);resultSet.close();sta
38、tement.close();conn.close(); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();return buyer;public static void main(String args) BuyerDao dao = new BuyerDao();System.out.println(dao.getBuyer(zxk, 654321);/Buyer buyer = new Buyer();/buyer.setId(lily);/buyer.setName(长理专卖);/bu
39、yer.setPwd(123456);/buyer.setAddress(湖南长沙);/dao.insertBuyer(buyer);package com.shoeShop.dao;import java.sql.Connection;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import java.util.ArrayList;import com.shoeShop.db.Connect;import com.shoeShop.entity.Goods;import co
40、m.shoeShop.entity.Seller;import com.shoeShop.imp.User;public class GoodsDao private static Connection conn;private static Statement statement;private static ResultSet resultSet;/查询登录商家的所有商品,用于商家管理自己的商品public ArrayList getAllGoods()ArrayList list = new ArrayList();conn = Connect.getConnection();try s
41、tatement = conn.createStatement();String sql = select * from goods a,seller b where a.seller_id=b.seller_id and b.seller_id=+User.getUserName()+;resultSet = statement.executeQuery(sql);while(resultSet.next()Seller seller = new Seller();seller.setName(resultSet.getString(seller_name);seller.setAddres
42、s(resultSet.getString(address);Goods goods = new Goods();goods.setSeller(seller);goods.setId(resultSet.getInt(goods_id);goods.setName(resultSet.getString(goods_name);goods.setSeller_id(resultSet.getString(seller_id);goods.setDiscount(resultSet.getInt(discount);goods.setNum(resultSet.getInt(num);goods.setPrice(resultSet.getInt(price);/System.out.println(goods.toString();list.add(goods); catch (SQLException e) / TODO Auto-generated catch blocke.printStackTrace();finallytry resultSet.close();statement.close();conn.close(); catch (S