资源描述
书店信息管理系统设计与实现
学生姓名:蒋 斌 指引教师:罗永红
摘 要 本课程设计重要是设计一种书店信息管理系统,实现顾客注册、登录,书店书籍添加、删除、修改、查询及图书购买等功能。程序设计平台为Windows 7,程序设计语言采用JAVA,所连接数据库是oracle 11g。在程序设计中,采用了构造化与面向对象两种解决问题办法。程序通过调试运营,初步实现了目的。
核心词 数据库;oracle 11g;JAVA;书店信息管理系统
The Design and Implementation of Book Store Information Management System
Student Name:JiangBin Advisor:LuoYong-hong
Abstract 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,programming 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引言 1
1.1 课题背景 1
1.2 课程设计目 1
1.3课程设计任务 1
2 系统构造分析 2
2.1 需求分析 2
2.2 功能模块图 3
3 数据库设计 4
3.1 概念构造设计 4
3.2逻辑构造设计 6
3.3数据库表建立 8
4功能实现 10
4.1注册界面 10
4.2 登录界面 11
4.3主界面 12
4.4书籍添加 12
4.5 书籍修改 13
4.6 图书删除 14
4.7 图书删除 14
4.8 订单查询修改 15
5 系统技术实现 16
5.1 JAVA 16
5.2 oracle 16
6 结束语 18
参照文献 19
1引言
1.1 课题背景
随着计算机技术发展以及计算机网络逐渐普及,英特网成为人们查找信息重要场合。21世纪是信息时代,因此信息互换和信息流通显 特别重要。因而网上书店浮现成为必然。
1.2 课程设计目
随着计算机广泛应用,其逐渐成为当代化标志。书店等,在正常运营过程中总是面对大量客户信息,书籍信息以及两者互相作用产生购书信息。因而需要对客户资源、书籍资源、购书信息及书籍信息进行管理,及时理解各个环节中信息变更,要对因而而产生单据进行及时解决,为了书店自动化管理,可以更迅速满足客户规定,提高各种工作效率,现对其设计相应系统,以达到上述目。
网上书店信息管理系统重要功能是实现书籍信息管理及购书自动化。环绕这一重要功能,本系统涉及到如下核心功能:上传管理,修改管理,查询管理。除了这些核心功能外,还涉及某些基本和辅助功能,如:商家和客户注册、登录,客户购书等。
1.3课程设计任务
本课程设计任务是通过开发一种书店信息管理系统,学习数据库系统设计与开发,采用Eclipse和oracle 10g等软件为开发工具。通过对计算机硬件和软件解决方案论证,相应用领域进行调查分析,参照各种资料和进行数据库系统开发实践。在指引教师协助下,已经基本上成功地实现了设计任务书规定,使得设计数据库系统可以实现普通数据库管理。
2 系统构造分析
2.1 需求分析
网上书店信息管理系统是适应计算机时代发展需要,提高管理效率而开发设计。通过对书籍信息管理,使客户能轻松购买书籍。
通过综合分析,拟定了网上书店信息管理系统重要涉及如下功能:
(1)商家:
a、商家注册功能
此模块重要功能是用于商家注册账号;
b、商家登录功能
此模块重要功能是用于拥有商家账号顾客登陆系统对自己书店进行管理;
c、上传书籍功能
此模块重要功能是用于商家发布某些新书共客户查看及购买;
d、书籍修改功能
此模块重要功能是用于商家修改自己书店书籍信息;
e、书籍删除功能
此模块重要功能是用于商家删除某些书籍信息;
f、书籍查询功能
此模块重要功能是用于商家查询自己书店书籍;
g、订单查询功能
此模块重要功能是用于商家查询自己书店卖书记录;
(2)客户:
a、商家注册功能
此模块重要功能是用于商家注册账号;
b、商家登录功能
此模块重要功能是对拥有客户账号顾客登录;
c、商品信息查询功能
此模块重要功能是用于客户查看所有商家书籍信息;
d、书籍购买功能
此模块重要功能用于客户购买书籍
e、订单查询功能
此模块重要功能是用于客户查询自己购书记录;
2.2 功能模块图
依照上述功能,可以设计出系统总体功能模块,如图2.1所示,
网上书店信息管理系统
商家
书籍查询
客户
注册
登录
书籍上传
书籍修改
书籍删除
订单查询
注册
书籍查询
登录
购买书籍
订单查询
图2.1 系统功能模块示意图
3 数据库设计
3.1 概念构造设计
依照需求分析抽象出信息构造,可得该系统E-R图,
(1)商家顾客E-R图,如图3.1所示,
seller
pwd
address
Seller_id
Seller_nameme
图3.1 商家顾客E-R图
(2)客户顾客E-R图,如图3.2所示,
buyer
pwd
address
buyer_id
buyer_nameme
图3.2 客户顾客E-R图
(3) 书籍信息E-R图,如图3.3所示,
goods
price
discount
num
Goods_id
Seller_id
Goods_name
图3.3 书籍信息E-R图
(4)订单E-R图,如图3.4所示,
order
Buyer_id
Goods_id
order_id
Seller_id
num
图3.4 商家顾客E-R图
(5)依照分E-R图和需求分析,可得到总E-R图,如图3.5所示。
图3.5 总E-R图
3.2逻辑构造设计
依照上述概念构造设计出逻辑构造,将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用来保存客户账号、密码等信息,表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)
price
价格
int
discount
折扣
int
num
书籍数量
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
购买数量
int
3.3数据库表建立
在设计数据库表构造之前,一方面要创立一种数据库实例。本系统使用数据库为oracle 10g。数据库表建立语句如下:
--商家
create table seller(
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_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) references 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注册界面
实现注册功能核心代码如下:
//构建客户对象
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 登录界面
程序运营浮现登陆界面,规定顾客输入相应信息,当信息符合规定期,登录成功,如图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所示,
图 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());
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();
//读取相应文本框信息并设立到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书籍删除界面
当商家往文本框里输入书籍编号后,点击删除,则可以对书籍进行删除,当书籍编号输入错误,点击删除时系统会弹出提示信息,实现该模块功能代码如下:
//获取文本框中输入书籍编号
int id = Integer.parseInt(field.getText());
//构建GoodsDao
GoodsDao dao = new GoodsDao();
//调用//调用deleteById办法,删除书籍
dao.deleteById(id)
4.7 图书删除
该模块重要用于客户购买书籍,如图4.7所示,
图 4.7 图书购买
当客户往文本框里面输入书籍标号,选取好商品数量后,点击购买就可以实现客户对书籍购买。如果书籍编号错误或商品数量不够时,系统会弹出提示,实现购书功能核心代码如下:
//构建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.8 订单查询模块
5 系统技术实现
5.1 JAVA
Java 编程语言风格十分接近C、C++语言。Java是一种纯面向对象程序设计语言,它继承了 C++ 语言面向对象技术核心,Java舍弃了C ++语言中容易引起错误指针(以引用取代)、运算符重载(operator overloading)、多重继承(以接口取代)等特性,增长了垃圾回收器功能用于回收不再被引用对象所占据内存空间,使得程序员不用再为内存管理而担忧。在 Java SE 1.5 版本中,Java 又引入了泛型编程(Generic Programming)、类型安全枚举、不定长参数和自动装/拆箱等语言特性。
Java 不同于普通编译执行计算机语言和解释执行计算机语言。它一方面将源代码编译成二进制字节码(bytecode),然后依赖各种不同平台上虚拟机来解释执行字节码,从而实现了“一次编译、处处执行” 跨平台特性[2]。
5.2 oracle
Oracle数据库涉及Oracle数据库服务器和客户端。
Oracle数据库服务器:
Oracle Server是一种对象一关系数据库管理系统。它提供开放、全面、和集成信息管理办法。
每个Server由一种 Oracle DB和一种 Oracle Server实例构成。它具备场地自治性(Site Autonomy)和提供数据存储透明机制,以此可实现数据存储透明性。每个 Oracle数据库相应唯一一种实例名SID,Oracle数据库服务器启动后,普通至少有如下几种顾客:Internal,它不是一种真实顾客名,而是具备SYSDBA优先级Sys顾客别名,它由DBA顾客使用来完毕数据库管理任务,涉及启动和关闭数据库;Sys,它是一种 DBA顾客名,具备最大数据库操作权限;System,它也是一种 DBA顾客名,权限仅次于 Sys顾客。
客户端:
为数据库顾客操作端,由应用、工具、SQL* NET构成,顾客操作数据库时,必要连接到一服务器,该数据库称为本地数据库(Local DB)。在网络环境下其他服务器上 DB称为远程数据库(Remote DB)。顾客要存取远程 DB上数据时,必要建立数据库链。
Oracle数据库体系构造涉及物理存储构造和逻辑存储构造。由于它们是相分离,因此在管理数据物理存储构造时并不会影响对逻辑存储构造存取。
1.逻辑存储构造
它由至少一种表空间和数据库模式对象构成。这里,模式是对象集合,而模式对象是直接引用数据库数据逻辑构造。模式对象涉及这样某些构造:表、视图、序列、存储过程、同一词、索引、簇和数据库链等。逻辑存储构造涉及表空间、段和范畴,用于描述如何使用数据库物理空间。而其中模式对象和关系形成了数据库关系设计。
数据块(Block):是数据库进行UO操作最小单位,它与操作系统块不是一种概念。oracle数据库不是以操作系统块为单位来祈求数据,而是以各种Oracle数据库块为单位。
段(Segment):是表空间中一种指定类型逻辑存储构造,它由一种或各种范畴构成,段将占用并增长存储空间。
其中涉及:
数据段:用来存储表数据;
索引段:用来存储表索引;
暂时段:用来存储中间成果;
回滚段:用于浮现异常时,恢复事务。
范畴(Extent):是数据库存储空间分派逻辑单位,一种范畴由许多持续数据块构成,范畴是由段依此分派,分派第一种范畴称为初始范畴,后来分派范畴称为增量范畴[3]。
6 结束语
通过这两周不断学习和设计开发加上教师同窗协助,终于完毕了本次课程设计。在完毕过程中,我进一步学习了Java基本语法以及熟悉了用Java编写图形顾客界面,同步也规范了许多编写习惯,对数据库某些基本操作也有了进一步理解。在编程过程中遇到许多问题,但通过查资料,以及与同窗讨论,大某些问题得到理解决。但由于时间问题以及某些其她因素,本系统也扔存在许多问题,功能也不是很完善,例如某些输入数据控制,正则表达式匹配这方面做还很不够。但我觉得通过这次课程设计我还是学到了诸多,如果下次再去做类似东西我觉得我一定会做更好。
参照文献
[1] 萨师煊, 王珊.数据库系统概论(第三版)[M].北京:高等教诲出版社. .
[2] Y.Daniel Liang.Java语言程序设计基本篇[M].北京:机械工业出版社..
[3] 夏帮贵,刘凡馨.JDBC AP数据库编程实材作教.北京:北京但愿电子出版社..
[4] 王立福. 软件工程(第二版)[M]. 北京:北京大学出版社..
附录 所有源代码
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:@localhost: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 (ClassNotFoundException 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;
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.docPanel;
}
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
register.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.SQLException;
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 buyer){
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();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.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 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();
statement.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.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("长理专卖");
// buyer.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 com.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 {
statement = 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.setAddress(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 block
e.printStackTrace();
}finally{
try {
resultSet.close();
statement.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
return list;
}
//查询所有商家所有商品.用于顾客搜索商品
public ArrayList getAllSellerGoods(){
ArrayList list = new ArrayLi
展开阅读全文