栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

网上书店SQL

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

网上书店SQL

1.前言 

随着互联网的快速发展,生活日益快捷方便;随着网店的盛行,不管什么类型的实体店都受到不同程度的冲击。“书中自有黄金屋”,这句谚语不管在什么时候都是真理。为了人们能够更加快捷的购买喜欢的书本,同时也为了保护传统书店的收益,因此我们所研究的网上书店就为此而开展研究。 

2.需求分析 2.1系统综合需求

网上书店需要满足以下功能:第一,对客户信息的查询、修改等;第二,能够方便查看图书的介绍、图书的价格,客户信息和图书的库存量。第三,对图书购买情况进行添加、删除、查找等功能。

2.2系统总体结构

根据用户角色不同,将本系统划分为以下几个子功能模块,具体如图1所示。

用户的E-R图2.1

 

管理员的E-R图2.2

 

                                                                 图书的E-R图2.3

 

                                                                 订单的E-R图2.4

 

                                                         图书类型的E-R图2.5

(1)图书及库存管理

1)添加新进图书

       管理员将新进的图书添加入库,需要按照图书编号、图书姓名、作者、价格、库存等基本图书信息录入数据库。

                                                                         图2.6

2)图书查询:可以根据图书编号、书名等进行查询图书的信息,显示的信息包括图书编号、书名、内容简介、作者和库存量。

图2.7

3)修改图书信息:在图书信息列表中选择一行,对其基本信息进行修改。

                                                                         图2.8

(2)购买管理

添加用户信息:填写用户姓名,性别,电话,即添加信息成功。

                                                                         图2.9

用户信息查询:可以按用户的账号和姓名进行查询,并可以查看所有用户的信息列表。显示的信息包括账号,姓名,性别,电话,已发货数量和未发货数量。

                                                                        图2.10

(3)订单管理

对历史的订单记录进行查看。可以按图书编号,用户账号或日期进行查询,也可以列出所有的图书。显示信息包括图书编号,用户账号 

                                                                         图2.11

(4)管理员信息管理

        增加管理员信息:需要账号、密码、工资等。

                                                                        图2.12

2.3系统数据流程分析

2.3.1数据流图:

                                                       图2-13系统数据流图 3.概要设计

 

                                                                图3-1 4.具体的表

根据系统的总体概念设计模型、E-R图向关系模式的转化规则和数据库的范式理论,得到系统优化后的逻辑模型,如表3-1~表3-7所示。

表3-1 图书信息表(book表)

图书表book

字段名

数据类型及长度

NULL

其他

备注

Bookid

varchar(10)

主键

图书编号

bookname

varchar(10)

书名

price

varchar(20)

价格

writer

varchar(20)

作者

bookamt

varchar(10)

 

 

库存

表3-2客户表(useer表)

客户表useer

字段名

数据类型及长度

NULL

其他

备注

userid

char(30)

主键

用户账号

Username

char(10)

用户名

Passwd

char(20)

密码

Sex

char(2)

性别

phone

char(20)

 

 

电话

                                                          表3-3 订单表(orde表)

订单表orde

字段名

数据类型及长度

NULL

其他

备注

Ordernum

char(50)

主键

订单号

Bookname

char(20)

书号

Userid

char(30)

主键

书号

Poststatus

char(20)

发货状况

orderamt

address

int

char(50)

 

 

订单量

                收货地址

Phone

char(50)

电话

allprice

float

总价

表3-4管理员表(jan表)

管理员表jan

字段名

数据类型及长度

NULL

其他

备注

janid

char(20)

主键

账号

janname

char(10)

姓名

Janpasswwd

char(20)

密码

pay

float

工资

5.物理设计与实施

完成系统逻辑模型设计后,就可以进行数据库的物理设计和实施数据库了,物理设计主要是要确定数据库的存储路径、存储结构以及如何建立索引等,可以采用系统的默认设置;数据库实施主要包括在具体的SSMS中创建数据库、表、索引等的过程,本书所选用的DBMS为Microsoft SQL Server 2012,其中有关创建数据库和关系表的SQL语句如下所示:

//创建数据库
create database CH;
use CH;
//创建表   客户表
create table useer(
userid char(30) primary key,
username char(10) not null,
passwd char(20) default '00000',
sex char(2) default '女',
phone char(20) not null);

//管理员表
create table jan(
janid char(20) primary key,
janname char(10) not null,
janpasswd char(20) not null,
pay float not null);

//图书表
create table book(
bookid char(50) primary key,
bookname char(10) not null,
price float not null,
writer char(50) not null,
bookamt int not null);

//订单表
create table orde(
ordernum char(50) not null,
bookname char(20) not null,
userid char(30) not null,
poststatus char(20) not null default '未发货',
orderamt int not null,
address char(50) not null,
phone char(50) not null,
allprice float not null,
primary key(ordernum,userid));

//图书类型表
create table booktext(
bookid char(50),
bookname char(10),
booktype char(10),
primary key(bookid));

 1.插入数据

insert into useer values
	('20200144070','文超','10001','男','02357359543'),
	('20200144071','明宏','10002','男','02355673593'),
    ('20200144072','易颖','10003','女','02357253553'),
    ('20200144073','清文','10004','女','02357656843');
    
insert into jan values
    ('20200144067','富贵','0607',6000),
    ('20200144079','淑芬','0709',6000);
    
    
insert into book values
    ('6874562','活着',34,'余华',100),
    ('9764853','天黑以后',40,'村上春树',300),    
    ('7346747','天才在左,疯子在右',60,'高铭',70),
    ('8756324','温一壶月光下的酒',55,'林清玄',90),
    ('9739453','飞鸟集',28,'泰戈尔',80), 
    ('8656758','小王子',45,'安东尼',200);
    

insert into orde values
    ('56236874562','活着','20200144073','已发货',20,'重庆人文科技学院','02357656843',680),
    ('12129764853','飞鸟集','20200144070','未发货',10,'清华大学','02357359543',280),    
    ('11007346747','温一壶月光下的酒','20200144073','未发货',22,'重庆人文科技学院','02357656843',1210),
    ('44658756324','小王子','20200144072','已发货',33,'复旦大学','02357253553',1485),
    ('24529739453','天才在左,疯子在右','20200144072','已发货',46,'复旦大学','02357253553',2760), 
    ('56748656758','天黑以后','20200144071','未发货',100,'北京大学','02355673593',4000),   
    ('78663739453','活着','20200144070','已发货',35,'清华大学','02357359543',1190), 
    ('11998656758','飞鸟集','20200144071','已发货',11,'北京大学','02355673593',308); 
    

insert into booktext values
	('6874562','活着','国内'),
    ('9764853','天黑以后','国外'),    
    ('7346747','天才在左,疯子在右','国内'),
    ('8756324','温一壶月光下的酒','国内'),
    ('9739453','飞鸟集','国外'), 
    ('8656758','小王子','国外');

 

 

2.功能 

创建视图,查看书的所有信息

create view bk
as select book.bookid,book.bookname,price,writer,bookamt,booktype
from book,booktext
where book.bookid=booktext.bookid;

  

查询功能

#查询书籍类型为国内的书的编号,书名,价格,库存
select booktext.bookid,booktext.bookname,price,bookamt
from booktext,book
where booktext.bookid=book.bookid and booktype='国外';

#查询未发货的订单号,收货人,书名,发货数量,收货地址,收货人电话
select ordernum,username,bookname,orderamt,address,orde.phone
from orde,useer
where orde.userid=useer.userid and poststatus='未发货';

#查询文超买了什么书,书名,总价,书作者,书类型
select book.bookname,orde.allprice,book.writer,booktext.booktype
from book,booktext,orde,useer
where book.bookid=booktext.bookid and 
  booktext.bookname=orde.bookname and
  useer.userid=orde.userid and
  username='文超';

#查询价格大于30的书
select book.bookname,book.writer,price,booktext.booktype
from book,booktext
where book.bookid=booktext.bookid and
price>=30;

#查询账号为20200144072客户买了几次的书
select count(*)
from orde
where userid='20200144072';

 

 

 

 

 

 

 函数:

#查询已发货的订单数量
use ch;	
delimiter &&
create function det(psts char(10)) returns int
reads sql data
begin
	return (select count(*) from orde where poststatus=psts);
end &&
delimiter ;
select det('未发货');

 

#输入书名,查看某书卖出多少本
use ch;
delimiter &&
create function totalnum(bkname char(20)) returns int
reads sql data
begin
	return (select sum(orderamt) from orde where bookname=bkname);
end &&
delimiter ;
select totalnum('飞鸟集');

 

 存储器:

#输入用户名,查询该客户买了什么书,书的作者,消费多少
use ch;
delimiter &&
create procedure ph(in ur char(30))
reads sql data
begin
   select book.bookname,book.writer,orde.allprice
   from book,orde,useer
   where book.bookname=orde.bookname and
   useer.userid=orde.userid and
   username=ur;
end &&
delimiter ;
call ph('明宏');

#存储过程,查发货状况和客户信息
use CH;
delimiter &&
create procedure oo(in numn char(30))
reads sql data
begin
    select username,sex,useer.phone,poststatus,address from useer,orde where useer.userid=orde.userid and ordernum=numn;
end &&
delimiter ;
call oo('11007346747');

 

#输入客户账号,查看该客户一共消费多少元
use ch;
delimiter &&
create procedure totalprice(in id char(20))
reads sql data
begin
	declare sum float default 0;
	declare a float;
	declare flag int default 0;
	declare s_cur cursor 
	for select allprice from orde where userid=id group by ordernum;
    declare continue handler for not found set flag=1;
    open s_cur;
	ff:loop
		fetch s_cur into a;
        if flag=1 then leave ff;
        else set sum=sum+a;
        end if;
	end loop ff;
    close s_cur;
    select sum;
end &&
delimiter ;
call totalprice('20200144072');

 

触发器:

#触发器,更改book表信息,booktext表随之更改
use ch;
delimiter &&
create trigger scup after update
on book for each row
begin
   update booktext set bookname=new.bookname where bookname =old.bookname;
end &&
delimiter ;
set sql_safe_updates=0;

#试验
update book set bookname='活着' where bookname='我们仨';
#查询验证
select * from book;
select * from booktext;
#恢复安全模式,删除触发器
set sql_safe_updates=1;
drop trigger scup;

 修改后查询结果

#触发器,向book表中插入新书名,书号,booktext表也随之插入,书类型置空
use ch;
delimiter &&
create trigger book_into after insert 
on book for each row
begin
  insert into booktext values(new.bookid,new.bookname,null);
end &&
delimiter ;
set sql_safe_updates=0;

#试验
insert into book(bookid,bookname,price,writer,bookamt)
values('3478351','我们',66,'绛文明',200);

#查询验证
select *
from book;
select *
from booktext;
set sql_safe_updates=1;


#删除该新书,删除该触发器
delete from booktext where bookid='3478351';
delete from book where bookid='3478351';
drop trigger book_into;

 

 

6.总结

     在网上书店系统课程设计的过程中,首先查阅了许多相关资料,对网上书店管理流程建立了初步的了解和认识,对系统进行了简单的需求分析以及明晰此系统所需要具备的功能,对于数据库基础知识的掌握也更加牢固。同时在做这个课程设计的报告中,对整个系统有了更加深刻的了解,但是我所构建的网上书店系统整体来说并不是很完美的,实现部分主要是购物系统,后台管理。还有很多未实现的功能比如用户登录,售后服务等。

     在这次做课程设计的过程中,使我更加了解到自己的不足,有很多的东西还是需要去了解和学习的,在做网上书店系统的过程中,使我受益非浅,学到了新知识的同时也让自己感到了滋生专业知识的匮乏,本次卡法设计的系统只是一个小系统,因为它只是实现了网上书店的一些核心功能,对于其他的功能由于专业知识的不足未能设计出来,比如说用户的登录系统等。但是本系统也基本实现了网上书店的基本功能。

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1009037.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号