此系统是面向xxxx大学全体学生,旨在为同学们节省等餐时间,为了让大家把更多的时间能够投入学习之中,因此设计了这个网上订餐的用户登录系统,该系统分为*学生、商家和管理员*三个对象。
根据这三个对象,为了让网上订餐系统更好地服务大家,系统将满足以下需求:
学生需求主要包括:学生用户注册、学生登录、浏览店铺、浏览餐品、加入购物车、如果确定订购则生成订单。
商家需求主要包括:商家注册、商家登录、修改餐品信息、查看订单、确认订单、完成订单。
管理员需求主要包括:管理员注册、管理员登录、核查顾客及商家信息、会员管理。
网上订餐系统包含学生用户模块、商家用户模块和管理员用户模块。如下图所示:
系统主要为了让xxxx大学全体学生更好地解决吃饭问题,为莘莘学子节省更多的时间。因此该系统需要收集对应高校食堂餐品,同时也需要收集选择使用此系统的学生用户信息,这就对数据库要求高,如何使大量的信息不发生紊乱,能够有条不紊地继续进行,这就需要设计能够反映各种信息的表格,再进行对表格的各项内容进行查询。
该网上订餐系统将采用功能强大的Microsoft SQL Server 2016为开发工具。
由于该网上订餐系统主要功能是依靠商家提供餐品来满足学生的订餐需求。所以整个系统分为以下几类:登录管理、商家管理和学生订餐三个部分。从而得出了网上订餐系统的顶层数据流图如下:
*(1)用户登录管理。*用户在登录时,系统会进行判断。用户分为三类:学生、商家、管理员。根据不同的身份,系统将调用不同的数据库,满足对应的要求。在判定时,需要查询用户信息库。用户信息库,包含了学生注册信息、商家注册信息、管理员注册信息等。网上订餐系统一层分解图——登录管理,如下图所示:
*(2)用户操作管理。*在登录管理进行判断后,发送学生管理、商家管理、管理员管理信息其中一种。根据用户身份信息不同,进入不同的界面,界面内容有所不同,如下图所示:
(1)学生用户管理
(2)商家用户管理
(3)管理员用户管理
经需求分析,本次课程设计中包含三个实体,它们分别是:学生用户实体、商家用户实体和管理员用户实体。
(这一部分老师指导的时候说有错误!!!应该不是这样画,要用正规符号)
学生用户实体属性:学生姓名、学生公寓号、学生电话号码、学生订餐信息、学生登录密码、学生会员信息。
如下所示:
*商家用户实体属性:*商家姓名、商家位置信息、商家电话号码、商家订餐信息查看、商家登录密码。如下所示:
*管理员用户实体属性:*管理员姓名、管理员登录密码。如下所示:
一个学生可以订多家商家的多个餐品,而一个商家也可以为多个学生提供餐品。所以学生用户和商家用户是多对多的关系;一个管理员用户可以管理多个学生用户,而一个学生用户只可以被一个管理员管理(本设计如此安排,防止信息紊乱),所以管理员用户和学生用户之间是多对一的关系;同理,商家用户和管理员用户之间也是多对一的关系。
部分E-R图如下:
在经过需求分析和实体属性的分析,以及各实体之间的关系,最终得到概念模型如下:
(这一模块也有大问题!!!因为当时这一张没有怎么学好。)
根据需求分析中的 E-R 图,通过对实体的属性和之间的联系的分析,我们将其由概念模型向关系模型转化,并且根据范式化理论进行优化。
餐品信息查询(餐品名称,价格)
学生登录(姓名,公寓号,电话,订餐信息,登录密码,会员信息,送餐时间)
管理员登录(管理员名字,管理员密码)
商家登录(商家名称,商家位置信息,商家电话号码,查看订单信息,登录密码,配送时间)
订餐信息(学生姓名,学生公寓号,学生电话号码,学生订餐餐品,派送时间,学生会员信息)
根据上述分析所归结出来的数据依赖的种类和在本系统实际的开发过程中,需要涉及多表的查询及表的修改和删除,且存在多值依赖的实际情况下,其关系模式应达到BCNF。
各个关系模式的函数依赖集如下:
学生联系:F={学生姓名→登录密码,学生姓名→学生信息}
商家联系:F={商家姓名→登录密码,商家姓名→店铺信息,订单查看→餐品信息→学生信息}
管理员联系:F={管理人员姓名→登录密码,管理人员编号→登陆密码→餐品信息,管理人员编号→登陆密码→学生信息}
订餐管理联系:F={订餐信息→学生信息,订餐信息→商家信息}
学生登录联系概念模型向关系模型的优化:
学生查找(学生订餐信息、学生信息)
学生信息(姓名,公寓号,电话,订餐信息,登录密码,会员信息,送餐时间)
商家登录联系概念模型向关系模型的优化:
商家查找(订餐信息查找,商家信息,餐品信息)
商家信息(餐品信息,餐品名称,餐品价格,商家位置信息,商家电话号码,查看订单信息,登录密码,配送时间)
管理员登录联系概念模型向关系模型的优化:
管理员信息(管理员名字,管理员,登陆密码,餐品信息,学生信息)
经过规范化处理后的所有关系模式如下:
学生信息(学生个人信息,订餐信息)
商家信息(商家个人信息,餐品信息,订餐信息)
管理员信息(管理员个人信息,餐品信息,学生信息)
餐品信息(商家个人信息,餐品名称,餐品价格)
订餐信息(餐品信息,商家个人信息,学生信息)
create database WebOrdering
/该模块在一开始创建时数据类型发生错误,导致表格内容无法正确插入,在后期均已改正,这里不做修改以便记录自己的错误。/
(a)学生信息表Sinfor
create table Sinfor
(
Sno char(6) not null,
Sflat char(10) not null,
Stel int not null,
Sorder char(10) not null,
Scode int not null,
Svip char(6)
);
create table Minfor
(
Mname char(6) not null,
Mplace char(10) not null,
Mtel int not null,
Mcode int not null
);
(c)管理员信息表Ainfor
create table Ainfor
(
Aname char(6) not null,
Acode int not null,
)
create table Pinfor
(
Pname char(6) not null,
Pprice float not null,
);
(1)创建学生信息查询的视图
create view SSinfor
as
select Sno,Sflat,Stel,Sorder,Scode,Svip
from Sinfor
(2)创建管理员信息的视图
create view SAinfor
as
select Aname,Acode
from Ainfor
(3)创建商家信息查询的视图
create view SMinfor
as
select Mname,Mplace,Mtel,Mcode
from Minfor
(4)创建餐品信息的视图
create view SPinfor
as
select Pname,Pprice
from Pinfor
(1)给table Sinfor创建索引
create index pk_index1 on Sinfor(Sname)
create index pk_index2 on Minfor(Mname)
create index pk_index3 on Ainfor(Aname)
create index pk_index4 on Pinfor(Pname)
(1)table Sinfor实现存储过程
create procedure select_all
as
begin
select * from Sinfor
end
go
(2)table Minfor实现存储过程
create procedure select_Mname
as
begin
select * from Minfor
end
go
(3)table Ainfor实现存储过程
create procedure select_Aname
as
begin
select * from Ainfor
end
go
(1)给table Sinfor创建触发器
create trigger U_Sinfor
on Sinfor
after delete
as
begin
select * from deleted
end
go
create trigger U_Minfor
on Minfor
after delete
as
begin
select * from deleted
end
go
create trigger U_Ainfor
on Ainfor
after delete
as
begin
select * from deleted
end
go
create trigger U_Pinfor
on Pinfor
after delete
as
begin
select * from deleted
end
go