订单管理数据库实验报告Word格式.docx
《订单管理数据库实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《订单管理数据库实验报告Word格式.docx(42页珍藏版)》请在冰豆网上搜索。
4.客户管理信息{客户号,商品号,交易量,交易价格}
功能需求类
实时信息展示
系统管理员
数据维护人员
安全管理
用户管理
部门管理
权限管理
系统设置
系统输出格式
数据维护
2.2需求分析
功能性需求分类:
功能类别
子功能
管理员管理
登录
修改权限
注销
订单管理
添加订单
修改订单
删除订单
产品管理
添加产品
产品分组
产品设置
安全性管理
权限设置
用户改密
产品的非功能性需求
1用户界面需求
需求名称
详细要求
表现形式
界面上用表格的形式显示,数据都在表格中显示
风格
进来使界面简洁明了,给人一目了然的清晰感觉
2软硬件环境需求
软件(服务器)
Wampserver服务器
软件(客服端)
只需要普通浏览器即可,无需多余客服端软件
硬件
InterPentium(英特尔奔腾)III800MHZ或AMDAthlon(速龙)800mhz
512MB或更高内存
200MB可用硬盘空间
56K或更高速互联网接入
用例图实现:
用例图:
由参与者(Actor)、用例(UseCase)以及它们之间的关系构成的用于描述系统功能的动态视图。
如图1所示,描述了订单管理功能,展示了用例之间以及同用例参与者之间是怎样相互联系的。
此图主要有三个功能:
1.获取需求;
2.指导测试;
3.在整个过程中的其它工作流起到指导作用。
2.3假设与依赖关系
✓订单管理数据库系统架构以顾客、管理决策者为基础进行建设,所有的用户需求的数据来源都基于以上两个数据库。
所以,订单管理数据库系统依赖于两个数据库现有数据信息。
数据项:
数据项名
含意
数据类型
长度
与其它数据项关系
数据项间联系
商品编号
int
所属类别
商品所属类别
varchar
10
商品名称
商品价格
单位商品售价
money
折扣信息
优惠信息
20
订单编号
订货量
订货日期
datetime
交货日期
订单细节
char
50
完成情况
客户编号
个人资料
客户个人信息
交易日期
某次交易日期
数据结构:
数据名
含意说明
组成
商品描述
有关商品的各种数据
商品编号,所属类别,商品名称,商品价格,折扣信息,商品规格,销售单位
订单详情
订单编号,订货量,订货日期,交货日期,退订提前时间,订单细节,完成情况
销售统计
销售情况统计
商品编号,销售日期,销售量
数据表
实体名:
管理员
字段名
数据长度
说明
允许空
备注
用户名
Int
否
主码
密码
Varchar
是
订单
订单号
发货状态
float
付款状态
客户
姓名
地址
电话
客户备注
产品
产品组
产品名
折扣
单价
2.4概念结构设计E-R图
子系统E-R图:
订单管理子系统:
总体E-R图:
图中的E-R图提供了表示实体类型、属性和联系的方法,客户的属性(姓名,个人资料、交易时间、交易记录等),订单(订单号,订货量,细节、完成情况等),商品(种类、名称、单价、折扣等)
2.5逻辑结构设计,将E-R图转换为关系模型
商品信息{商品编号,所属类别,商品名称,商品价格,折扣信息,商品规格,销售单位}
订单管理{订单编号,订货量,订货日期,交货日期,订单细节,完成情况}
客户信息{客户编号,个人资料,备注要求}
销售统计{商品编号,销售日期,销售量}
客户交易记录{客户编号,交易日期,订单编号}
3、功能说明
对订单管理功能的描述
-总体说明(添加订单、修改订单、删除订单,及时处理订单信息)
1.订单内部管理,进行订单的更新添加;
2.对订单的具体细节进行添加,比如发货状态的修改、收款状态的修改以及订单具体细节的修改;
3.确认订单完成情况,随时可以删除过时的订单,对错误添加的订单。
对产品模块功能描述
总体说明(添加产品,删除产品,对产品具体信息进行设置)
1.添加新的产品,并归类产品组;
2.对产品的具体信息进行管理,例如产品价格,折扣等;
3.删除过期产品信息。
对管理员模块功能描述
总体说明(添加管理员,权限设置,删除管理员)
4.添加管理员,设置密码;
5.对添加的管理员权限进行设置,比如订单管理,产品管理,可以通过授权让客户看到自己的订单,但是不能随意修改;
6.删除错误或者无用的管理员列表。
4、数据库设计
4.1数据库需求分析
数据库的设计在一个系统中的作用十分重要,数据库建立的是否完善直接影响到你个系统的实现。
数据库的设计既要满足用户的需求又要尽最大可能的降低数据的冗余,尽可能降低数据间的依赖,将他们分离。
在各种信息的提供,保存,更新和查询,这就要求数据库结构能充分满足各种信息的输出和输入,收集基本数据,数据结构,以及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础.
4.2数据库设计
使用的表列表:
对核心表进行解释,防止项目过程中,数据库发生故障,准备了代码生成数据库:
管理员创建:
登录日志:
产品组设置:
订单管理:
产品管理:
4.3系统关键代码
后台管理关键代码:
<
?
php
header("
Content-type:
text/html;
charset=utf-8"
);
include('
skin/admin/fckeditor/fckeditor.php'
);
classadminextendsspController
{
functionlogs($dowhat){
$sp=spClass("
logs"
$dotime=date("
Y-m-dH:
i:
s"
$area=spClass('
spIpArea'
)->
get($this->
egetip());
$newarr=array(
'
dowhat'
=>
$dowhat,
dotime'
$dotime,
doip'
$this->
egetip(),
areas'
$area,
username'
$_SESSION[admin_username][username]
);
$sp->
create($newarr);
}
functionindex(){
$this->
display("
admin/login.html"
publicfunctiontop()
{
admin/top.html"
publicfunctionleft()
$sp=spClass("
adminuser"
$tmp=$sp->
find(array('
=>
$_SESSION[admin_username][username]));
$temp=explode("
"
$tmp[qx]);
qx1=in_array("
1"
$temp)?
"
:
0"
;
qx2=in_array("
2"
qx3=in_array("
3"
qx4=in_array("
4"
qx5=in_array("
5"
qx6=in_array("
6"
qx7=in_array("
7"
admin/menu.html"
publicfunctionright()
orders"
$today=date("
Y-m-d"
$yes=date("
strtotime("
-1day"
));
$prefix=$GLOBALS['
G_SP'
]['
db'
prefix'
];
//今日统计
$this->
t1=$sp->
findCount("
DATE_FORMAT(addtime,'
%Y-%m-%d'
)='
$today'
&
&
zt1=1"
t2=$sp->
zt2=2&
zt1=2"
t3=$sp->
"
$re1=$sp->
runSql("
selectsum(totle)from{$prefix}orderswhereDATE_FORMAT(addtime,'
zt2=2"
$totle1=mysql_fetch_row($re1);
zong1=$totle1[0];
$re2=$sp->
zt1=1"
$totle2=mysql_fetch_row($re2);
zong2=$totle2[0];
//昨日统计
y1=$sp->
$yes'
y2=$sp->
y3=$sp->
$re3=$sp->
$totle3=mysql_fetch_row($re3);
zong3=$totle3[0];
$re4=$sp->
$totle4=mysql_fetch_row($re4);
zong4=$totle4[0];
//本月成交额概览
$basedir=dirname(__FILE__);
$basedir=str_replace("
controller"
$basedir);
$year=date("
Y"
$month=date("
m"
$days=$this->
getDaysofMonth($year,$month);
//获取本月天数
//获取每天销售额
$j=0;
for($i=1;
$i<
=$days;
$i++){
if($i=="
){
$yuefen="
\"
1\"
}else{
$yuefen=$yuefen."
."
$i\"
}
if(strlen($i)=="
){$i="
.$i;
}
$dates=$year."
-"
.$month."
$newarr="
$dates'
zt2='
2'
$no1=$sp->
findAll($newarr);
$t=0;
foreach($no1as$v){
$t=$t+$v[price]*$v[nums];
}
if(isset($numlist)){
$numlist=$numlist."
.$t;
$numlist=$t;
$j=$j+$t;
}
$title="
本月("
.$year."
年"
月)成交额概览-总成交额:
.$j."
元-(X轴:
日Y轴:
成交额)"
$bujin=round($j/10);
//生成配置文件
$content=file_get_contents($basedir."
include\old.txt"
$t=preg_replace("
/text\"
.*?
/i"
text\"
.$title."
$content,1);
/values\"
\[.*?
\]/i"
values\"
["
.$numlist."
]"
$t,1);
/labels\"
labels\"
.$yuefen."
/max\"
/i"
max\"
/steps\"
steps\"
.$bujin."
$fo=fopen($basedir."
w"
fwrite($fo,$t);
fclose($fo);
showz="
divid=\"
my_chart\"
style=\"
height:
600px;
color:
#C10C02border:
1pxsolid#CCC\"
>
/div>
script>
swfobject.embedSWF(\"
include/open-flash-chart.swf\"
\"
100%\"
300\"
9.0.0\"
\"
expressInstall.swf\"
{\"
data-file\"
include/old.txt?
r="
.rand(0,99999)."
});
/script>
admin/main.html"
publicfunctioncenter()
admin/index.html"
//获取IP
functionegetip(){
if(getenv('
HTTP_CLIENT_IP'
)&
strcasecmp(getenv('
),'
unknown'
))
{
$ip=getenv('
}
elseif(getenv('
HTTP_X_FORWARDED_FOR'
))
}
REMOTE_ADDR'
elseif(isset($_SERVER['
])&
$_SERVER['
]&
strcasecmp($_SERVER['
],'
$ip=$_SERVER['
returnpreg_replace("
/^([\d\.]+).*/"
"
\\1"
$ip);
//显示验证码
function_vcode(){
$vcode=spClass('
spVerifyCode'
$vcode->
display();
}
//登录
functionlogin(){
$userObj=spClass("
$username=$this->
spArgs("
username"
$password=md5($this->
password"
if(false==$userObj->
userlogin($username,$password)){
//登录失败,提示后跳转回登录页面
$this->
error("
用户名/密码错误,请重新输入!
spUrl("
admin"
index"
}else{
$useracl=spClass("
spAcl"
get();
//通过acl的get可以获取到当前用户的角色标识
$area=spClass('
$logtime=date("
$updateadmin=spClass("
$old=$updateadmin->
$username));
$updateadmin->
update(array('
$username),array('
logtime'
$logtime,'
logip'
$this->
egetip(),'
logarea'
$area));
//写入登录日志
$loghis=spClass("
loginlog"
$loghis->
create(array('
$username,'
$area)