最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

数据库设计网上订餐系统

来源:动视网 责编:小OO 时间:2025-09-26 23:55:54
文档

数据库设计网上订餐系统

计算机与信息学院数据库课程设计专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点第二机房一、需求分析现状分析现如今普遍使用电话订餐,这种方式订餐虽然较为方便,效率也较高,但是由此引发的一些不良现象不得不重视。例如,定餐后,饭店未能够及时将信息记录存档,由于看不到菜品的图片,顾客不能对菜品有一个直观的感受。同时,电话预约中的诚信问题也不得不考虑,订餐过程中顾客对信息的不明确会产生一定的误解并由此造成人力资源及时间的浪费。这样开发出图文并茂,信息能够及时更新和查看的在线网上订餐系统就具
推荐度:
导读计算机与信息学院数据库课程设计专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点第二机房一、需求分析现状分析现如今普遍使用电话订餐,这种方式订餐虽然较为方便,效率也较高,但是由此引发的一些不良现象不得不重视。例如,定餐后,饭店未能够及时将信息记录存档,由于看不到菜品的图片,顾客不能对菜品有一个直观的感受。同时,电话预约中的诚信问题也不得不考虑,订餐过程中顾客对信息的不明确会产生一定的误解并由此造成人力资源及时间的浪费。这样开发出图文并茂,信息能够及时更新和查看的在线网上订餐系统就具
计算机与信息学院

数据库课程设计

专   业  班  级

学生姓名及学号
课程教学班号
任  课  教  师

实验指导教师
实验地点            第二机房                              

一、需求分析

现状分析

现如今普遍使用电话订餐,这种方式订餐虽然较为方便,效率也较高,但是由此引发的一些不良现象不得不重视。例如,定餐后,饭店未能够及时将信息记录存档,由于看不到菜品的图片,顾客不能对菜品有一个直观的感受。同时,电话预约中的诚信问题也不得不考虑,订餐过程中顾客对信息的不明确会产生一定的误解并由此造成人力资源及时间的浪费。

这样开发出图文并茂,信息能够及时更新和查看的在线网上订餐系统就具有了重要的意义。

客户需求分析

客户模块的功能包括:个人信息管理、订餐两大功能。个人信息部分中,包括个人信息修改以及订餐信息查询;订餐部分为选择菜品、订餐状态、付款方式。 商店需求分析

商店模块功能包括:包括商店信息管理、订餐确认两个部分。商店信息查询、修改、菜品管理;订餐确认部分为订餐状态、送餐。

 管理员需求分析

管理员功能模块包括:人员信息管理及系统维护。人员信息管理为:客户注册、商店注册、客户及商店记录查寻。

 性能需求分析

该系统在性能功能上应达到如下需求:

操作简单、界面友好: 完全控件式的页面布局,使得菜品等信息的录入工作更简便,选择菜品是只需点击鼠标即可。对常见的类似网站的管理的各个方面:基本信息录入、浏览、删除、修改、搜索等方面都大体实现,顾客对菜品的预定及支付方式;

即时可见:对客户预定餐饮信息的处理(包括录入、删除)将立即在主页的对应栏目显示出来,达到“即时发布、即时见效”的功能;

系统运行应该快速、稳定、高效和可靠;

在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。

可行性分析

随着经济的快速发展,网上订餐已经如雨后春笋般的出现在了许多地方。特别在公司,企业内部,团体订餐已经成为了趋势。同时,随着全国人民的精神、物质和文化生活高度的提高,人们已经不在仅仅停留在吃饱的程度,不但要吃饱,还要吃好,而且口味也越来越挑刺,正因为如此网络订餐业务的出现,正迎合了这些人的口味,他们不但省去了自己做饭的麻烦,而且也能寻找和发现新的菜品,品尝不同风格的菜品,网络订餐业务在中国有着极大的发展空间以及良好的背景。

总体设计原则

①.开放性、可扩充性、可靠性原则

开放系统是生产各种计算机产品普遍遵循的原则,遵循这种标准的产品都符合一些公共的、可以相互操作的标准,能够融洽的在一起工作。开放系统使得各种类型的网络和系统互连简单、标准统一,容易扩展升级。从而适应广大用户需求的多变性和产品的更新换代。

②.良好的用户操作界面

用户操作界面美观、方便、实用,使用户能在较短的时间内掌握其使用方法。

③.实用性原则

任何系统的设计都要考虑其实用性,系统开发的目的是为了实现业务处理自动化、规范化,提高工作效率,减轻工作人员的劳动强度,减少开支。

④工作平台

适用于不同的网络平台。

二、概念设计

 系统E-R图

数据流图

数据字典

 数据项

数据项名/编号含义说明数据类型长度
c_id/p1

用户唯一性说明varchar9
c_name/p2

用户昵称varchar20
c_tel/p3

用户联系方式varchar11
c_key/p4

用户登陆密码varchar20
d_id/p5

菜的唯一性说明int
d_name/p6

菜的名称varchar30
d_remain/p7

菜的剩余量int
d_discount/p8

打折float2
d_price/p9

菜的单价float2
d_pid/p10

提供商编号int
p_id/p11

商店唯一性说明varchar9
p_add/p12

商店地址varchar30
p_name/p13

商店名称varchar20
p_key/p14

商家登陆密码varchar20
p_tel/p15

商店联系方式varchar11
p_lev/p16

商家信誉int
p_state/p17

商家状态varchar15
m_id/p18

管理员唯一性说明 varchar4
m_name/p19

管理员姓名varchar20
m_key/p20

管理员密码varchar20
o_id/p21

订单标号int
o_cid/p22

订单中客户标识int
o_did/p23

订单中菜标识int
o_pid /p24

订单中商店标识int
o_time /p25

订餐时间smalldatetime
o_num/26

数量int
o_cadd/27

客户地址varchar50
o_state/28

订餐状态varchar15
m_c_mid /p29

管理员编号int
m_c_cid/p30

客户编号int
m_c_time/p31

时间smalldatetime
m_c_operation/p32

操作类别varchar15
m_p_mid/p33

管理员编号int
m_p_pid/p34

商店编号int
m_p_time/p35

操作类别smalldatetime
m_c_operation /p36

时间varchar15
 数据结构

数据结构名称含义说明组成
客户客户信息p1-p4
菜品菜品信息p5-p10
商店商店信息p11-p17
管理员管理员信息p18-p20
订单订单信息p21-p28
管理用户管理用户信息P29-p32

管理商家管理商家信息P33-p36

 处理过程

处理过程名说明输入输出处理
注册所有用户用户详细信息注册结果跳转登陆/重新注册
登陆所有用户编号与密码登陆成功/失败登陆首页/重新登陆
修改用户信息已登录用户相关修改信息修改成功/失败修改存储信息
订餐已登录用户菜品、数量订餐成功/失败加入购物车/重新选择
修改订餐已订餐用户菜品、数量的修改修改成功/失败加入购物车/重新选择
下订单已订餐用户生成订单
查询与确认订单已订餐用户
提交订单已订餐用户
接受订单商店交付相关工作人员
送餐送餐员送餐确认
菜单修改商店新的菜品、菜品价格修改更新菜谱
管理管理员添加或删减用户更新用户信息库
信息更新管理员需要更新的信息信息更新
三、逻辑结构设计

 E—R图向关系的初步转换

客户(编号,昵称,密码,联系方式,状态)

管理员(编号,姓名,密码)

商家(编号,名称,密码,商家地址,联系方式,信誉,状态,剩余量,总量)

菜(编号,名称,价格,折扣,提供商编号,最后修改时间,状态)

订单(客户编号,菜编号,提供商编号,订单时间,数量,客户地址,状态)

管理客户(管理员编号,客户编号,时间,操作类别)

管理商家(管理员编号,商家编号,时间,操作类别)

 E-R具体转换代码

①客户表:

create table  client

(c_id varchar(9)  primary key not null check(c_id like 'c%'),

 c_name varchar(20) not null,

 c_key varchar(20) not null,

 c_tel varchar(11) not null check(c_tel like '1%') unique 

)

②管理员表:

create table  manager

(

 m_id varchar(4)  primary key not null check(m_id like 'm%'),

 m_name varchar(20) not null,

 m_key varchar(20) not null

)

③商家表:

create table provider

(p_id varchar(9) primary key not null check(p_id like 'p%'),

 p_name varchar(20) not null,

 p_key varchar(20) not null,

 p_tel varchar(11) not null unique check(p_tel like '1%'),

 p_add varchar(30) not null unique,

 p_lev int, 

 p_state varchar(15) check (p_state in ('营业中','打烊','歇业'))

)

④菜谱:

create table dish

(d_id int identity(1378001,1) primary key not null,

 d_name varchar(30) not null,

 d_price float(2) not null,

 d_discount float(2),

 d_pid varchar(9) not null ,

 foreign key (d_pid) references provider(p_id),

d_remain int not null check (d_remain>=0),

 d_total int not null, 

)

⑤订单:

create table ord

 o_cid varchar(9),

 foreign key (o_cid) references client (c_id),

 o_did int,

 foreign key (o_did) references dish (d_id),

 o_pid varchar(9),

 foreign key (o_pid) references provider (p_id),

 o_time smalldatetime,

o_num int not null check (o_num>0),

 o_cadd varchar(50) not null,

 o_state varchar(15) check (o_state in('正常','取消'))

)

⑥管理客户:

create table manager_client

(m_c_mid varchar(4),

 foreign key (m_c_mid) references manager (m_id),

 m_c_cid varchar(9),

 foreign key (m_c_cid) references client (c_id),

 m_c_time smalldatetime,

 primary key (m_c_mid,m_c_cid,m_c_time),

 m_c_operation varchar(15) check (m_c_operation in('更新','增加','删除'))

)

⑦管理商店:

create table manager_provider

(m_p_mid varchar(4),

 foreign key (m_p_mid) references manager (m_id),

 m_p_pid varchar(9),

 foreign key (m_p_pid) references provider (p_id),

 m_p_time smalldatetime,

 primary key (m_p_mid,m_p_pid,m_p_time),

 m_c_operation varchar(15) check (m_c_operation in('允许注册','注销账户') )

)

四、外围实现部分 --客户端实现

本次数据库的外围采用C++语言实现的,编程环境使用的是visual studio 2010。数据库连接采用的是ADO(ActiveX Data Objects),主要是因为使用起来十分简便(只需掌握三个智能指针即可完成大多数功能),且不需要下载其他文件(windows自带)。而用户交互界面则使用的是dos窗口。

客户端目前提供两个功能,1是订餐功能,1是注册功能。

首先介绍注册功能,每个注册账户对应一个数据库登陆账户以及该账户下的一个拥有客户角色权限的用户,已注册账户的信息由client表存储。注册过程具体如下: 用户选择注册功能后,程序默认以sa身份登录数据库,用户通过dos窗口输入新的id以及密码,程序在client表中检查id是否被使用,若id已被占用则提示用户输入新的id,否则通过sql语句创建登陆账户以及拥有一定权限的数据库用户并提示用户注册成功。(注册实现代码如下:)

然后介绍订餐功能,选择订餐功能后首先提示用户输入账户(id)以及密码,输入后,程序尝试以此账户连接数据库,以30秒为时限,若超过时限没有连接上数据库则提示用户连接失败,否则从数据库中选择状态为”营业中”的饭店信息显示供用户选择,用户选择饭店编号后,从数据库中读取该饭店提供的剩余量大于0的菜品显示供用户选择,待用户作好选择后,将订单插入数据库中ord表(订单编号采用自增长)并修改菜品的剩余值,提示用户接受订单成功,并关闭与数据库的连接。

五、数据库实现

据库的建立

启动服务管理器,打开查询分析器,在调试程序窗口输入下列语句:

Create database database_zbg

On

(name= zbg_data,

Filename=' E:\\dbdesign\ ',

Size=10mb

Maxsize=500mb,

Filegrowth=5mb)

Log on

(name= zbg_log,

Filename=' E:\\dbdesign\ ',

Size=5mb

Maxsize=100mb,

Filegrowth=5mb)

数据载入

1)client表

2)manager

insert into manager values('m001','刘诗诗','liushish');

insert into manager values('m002','郭晶晶','guojingj');

insert into manager values('m003','杨幂','yangmi12');

3)provider

东北酒家梧桐路12号',4,'营业中');

学惠园梧桐路21号',3,'营业中');

东北酒店翟乃路12号',4,'打烊');

四川酒店淄博路5号',4,'歇业');

状元酒店中原路54号',4,'营业中');

大排档中原路号',4,'打烊');

老乡鸡梧桐路13号',4,'营业中');

4)dish

insert into dish values('大对虾

insert into dish values('大对虾

insert into dish values('大对虾

insert into dish values('彩花迎宾

insert into dish values('彩花迎宾

insert into dish values('鱿鱼汤

insert into dish values('狗全席

insert into dish values('狗全席

insert into dish values('龙门鱼

insert into dish values('龙门鱼

insert into dish values('叫花鸡

insert into dish values('叫花鸡

insert into dish values('叫花鸡

5)ord

梧桐路99号','正常');

梧桐路99号','正常');

梧桐路77号','正常');

梧桐路77号','正常');

梧桐路77号','正常');

梧桐路88号','正常');

梧桐路88号','正常');

梧桐路66号','正常');

梧桐路66号','正常');

6)manager_client

增加');

增加');

增加');

增加');

增加');

增加');

7)manager_provider

允许注册');

允许注册');

允许注册');

允许注册');

允许注册');

允许注册');

允许注册');

六、数据库的运行和维护

作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一个非常非常重要的工作环节。

网络中的各种故障无非就分两种:软件故障和硬件故障。对于“硬件故障”可以通过维修或更换硬件设备得到及时解决;对于“软件故障”则可以通过重新安装或升级软件、重做网络或应用软件系统等方法及时解决,而且用此方法来解决网络故障大多需要一些基础的、关键的数据支持才能得以恢复正常。但是,网络中诸如此类的关键数据(特别是“应用软件系统”中的关键数据)的损坏或丢失,绝大部分是无法恢复和弥补的。

定义并设置备份

启用维护计划任务

运行要求:

操作系统:Windows xp及以上版本,

数据库:SQL server2005,

外围平台:Microsoft Visual studio2010

内存:2G

七、感想及总结:

此次的数据库课程设计中,我通过与小组内的其他两位同学的共同探讨与努力,设计并实现了人生中的第一个数据库,由于刚刚上完数据库的课程,此次的动手实践确实加深了我对数据库这门课程的理解,同时也发现了许多平常忽略的问题。平时看书上的E-R图十分简单,但自己设计的时候却发现需要考虑许多细节,稍有疏忽就会产生许多棘手的问题。E-R图之后还要考虑表,视图,触发器,索引,完整性约束等问题,对于第一次设计数据库的我们来说刚开始的时候确实感觉到无从下手,很难把问题考虑全面,最终我们三人共同讨论并设计出了数据库的雏形,这时的数据库看起来还十分简陋。后来我们的开发方式进行了改变,由我和一个同学分别扮演客户和商家的角色,另一位同学扮演数据库角色。开发过程中,数据库角色的同学主要考虑优化数据库并满足客户角色和商家角色的要求,而客户角色和商家角色在完成自己的应用平台的过程中向数据库提出要求,主要是对权限的申请、对触发器视图等方面的要求。这样我们的数据库就大概成形了,然后我们三人又共同以全面地角度审视了一遍我们的数据库,提出各自的意见,最后提交的数据库则是我们三人共同意志的体现。

八、源码:

.1"<        m_pConnection->ConnectionTimeout=30;

        m_pConnection->Open((_bstr_t)"Provider=SQLOLEDB;Server=(local);Database=database_zbg;uid="+i_user+";pwd="+i_pwd+";","","",adModeUnknown);

        cout<<"...2"<    }

    catch(_com_error e)    

    {

        cout<<"Cannot connect to Database "<        return ;

    }

    cout<<"已°成¨|功|登ì录"<    ("");

    m_pRecordset->Open("select * from provider where p_state='营a业°|ì中D'",(),adOpenDynamic,adLockOptimistic,adCmdText);

    cout<<"*****************************目前营a业°|ì中D的ì商|¨家¨°**************************"<    (ios::left);

    cout<    _variant_t vpid,ame,vpadd,vptel,vplev;

    while(!m_pRecordset->adoEOF)

    {

        vpid=m_pRecordset->GetCollect("p_id");

        ame=m_pRecordset->GetCollect("p_name");

        vpadd=m_pRecordset->GetCollect("p_add");

        vptel=m_pRecordset->GetCollect("p_tel");

        vplev=m_pRecordset->GetCollect("p_lev");

        cout<        m_pRecordset->MoveNext();

    }    

m_pRecordset->Close();

    cout<<"请输o入¨所¨′选商|¨家¨°的ì编ਤ号"<    char pid[15];

cin>>pid;

    m_pRecordset->Open((_variant_t)((_bstr_t)"select * from dish where d_pid='"+pid+"'and d_remain>0"),(),adOpenDynamic,adLockOptimistic,adCmdText);

    cout<<"******************************请选择菜品¤************************"<    cout<    _variant_t vdid[150],vdpid[150],vdname,vdprice,vdremain;

    int cnt=1;

    while(!m_pRecordset->adoEOF)

    {

        vdid[cnt]=m_pRecordset->GetCollect("d_id");

        vdpid[cnt]=m_pRecordset->GetCollect("d_pid");

        vdname=m_pRecordset->GetCollect("d_name");

        vdprice=m_pRecordset->GetCollect("d_price");

        vdremain=m_pRecordset->GetCollect("d_remain");

        cout<        cnt++;

        m_pRecordset->MoveNext();

    }

    char caddr[200],num[15];

    int did;

    cout<<"请输o入¨送¨a菜地ì址¤"< cin>>caddr;

    cout<<"请输o入¨选择的ì菜品¤的ì编ਤ号以°及数oy量¢"<    while(cin>>did)

    {

        if(did==0)

            break;

        cin>>num;

        m_pConnection->Execute((_bstr_t)"insert into ord (o_cid,o_did,o_pid,o_num,o_cadd) values ('"+i_user+"','"+(char*)(_bstr_t)vdid[did]+"','"+(char*)(_bstr_t)vdpid[did]+"','"+num+"','"+caddr+"')",NULL, 1);

订餐¨a"<    cout<<"2. 注áé册¨¢"<修T改信息é"<    int choice;

    char cc;

    while(1)

    {

        cin>>choice;

        switch(choice){

        case 1: work1();break;

        case 2: work2();break;

//    case 3: work3();break;

        default: break;

        }

        cout<<"是o否¤继¨续进行D操¨′作áê(ê§Y/N)ê"<        cin>>cc;

        if(cc=='N')

            break;

        else

            cout<<"请输o入¨选择"<    }

    cout<<"****************************感D谢使o1用合工è大¨订餐¨a系|ì统a3!ê!ê!ê*****************************"<    return 0;

}

文档

数据库设计网上订餐系统

计算机与信息学院数据库课程设计专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点第二机房一、需求分析现状分析现如今普遍使用电话订餐,这种方式订餐虽然较为方便,效率也较高,但是由此引发的一些不良现象不得不重视。例如,定餐后,饭店未能够及时将信息记录存档,由于看不到菜品的图片,顾客不能对菜品有一个直观的感受。同时,电话预约中的诚信问题也不得不考虑,订餐过程中顾客对信息的不明确会产生一定的误解并由此造成人力资源及时间的浪费。这样开发出图文并茂,信息能够及时更新和查看的在线网上订餐系统就具
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top