计算机与信息学院数据库课程设计专业班级学生姓名及学号课程教学班号任课教师实验指导教师实验地点第二机房一、需求分析1.1现状分析现如今普遍使用电话订餐,这种方式订餐虽然较为方便,效率也较高,但是由此引发的一些不良现象不得不重视。
例如,定餐后,饭店未能够及时将信息记录存档,由于看不到菜品的图片,顾客不能对菜品有一个直观的感受。
同时,电话预约中的诚信问题也不得不考虑,订餐过程中顾客对信息的不明确会产生一定的误解并由此造成人力资源及时间的浪费。
这样开发出图文并茂,信息能够及时更新和查看的在线网上订餐系统就具有了重要的意义。
1.2客户需求分析客户模块的功能包括:个人信息管理、订餐两大功能。
个人信息部分中,包括个人信息修改以及订餐信息查询;订餐部分为选择菜品、订餐状态、付款方式。
1.3 商店需求分析商店模块功能包括:包括商店信息管理、订餐确认两个部分。
商店信息查询、修改、菜品管理;订餐确认部分为订餐状态、送餐。
1.4 管理员需求分析管理员功能模块包括:人员信息管理及系统维护。
人员信息管理为:客户注册、商店注册、客户及商店记录查寻。
1.5 性能需求分析该系统在性能功能上应达到如下需求:操作简单、界面友好: 完全控件式的页面布局,使得菜品等信息的录入工作更简便,选择菜品是只需点击鼠标即可。
对常见的类似网站的管理的各个方面:基本信息录入、浏览、删除、修改、搜索等方面都大体实现,顾客对菜品的预定及支付方式;即时可见:对客户预定餐饮信息的处理(包括录入、删除)将立即在主页的对应栏目显示出来,达到“即时发布、即时见效”的功能;系统运行应该快速、稳定、高效和可靠;在结构上应具有很好的可扩展性,便于将来的功能扩展和维护。
1.6可行性分析随着经济的快速发展,网上订餐已经如雨后春笋般的出现在了许多地方。
特别在公司,企业内部,团体订餐已经成为了趋势。
同时,随着全国人民的精神、物质和文化生活高度的提高,人们已经不在仅仅停留在吃饱的程度,不但要吃饱,还要吃好,而且口味也越来越挑刺,正因为如此网络订餐业务的出现,正迎合了这些人的口味,他们不但省去了自己做饭的麻烦,而且也能寻找和发现新的菜品,品尝不同风格的菜品,网络订餐业务在中国有着极大的发展空间以及良好的背景。
1.7总体设计原则①.开放性、可扩充性、可靠性原则开放系统是生产各种计算机产品普遍遵循的原则,遵循这种标准的产品都符合一些公共的、可以相互操作的标准,能够融洽的在一起工作。
开放系统使得各种类型的网络和系统互连简单、标准统一,容易扩展升级。
从而适应广大用户需求的多变性和产品的更新换代。
②.良好的用户操作界面用户操作界面美观、方便、实用,使用户能在较短的时间内掌握其使用方法。
③.实用性原则任何系统的设计都要考虑其实用性,系统开发的目的是为了实现业务处理自动化、规范化,提高工作效率,减轻工作人员的劳动强度,减少开支。
④工作平台适用于不同的网络平台。
二、概念设计2.1 系统E-R图2.2数据流图2.3数据字典2.3.1 数据项2.3.2 数据结构2.3.3 处理过程三、逻辑结构设计3.1 E—R图向关系的初步转换客户(编号,昵称,密码,联系方式,状态)管理员(编号,姓名,密码)商家(编号,名称,密码,商家地址,联系方式,信誉,状态,剩余量,总量)菜(编号,名称,价格,折扣,提供商编号,最后修改时间,状态)订单(客户编号,菜编号,提供商编号,订单时间,数量,客户地址,状态)管理客户(管理员编号,客户编号,时间,操作类别)管理商家(管理员编号,商家编号,时间,操作类别)3.2 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 ordo_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表(订单编号采用自增长)并修改菜品的剩余值,提示用户接受订单成功,并关闭与数据库的连接。
五、数据库实现5.1据库的建立启动服务管理器,打开查询分析器,在调试程序窗口输入下列语句:Create database database_zbgOn(name= zbg_data,Filename='E:\dbdesign\ zbg_data.mdf',Size=10mbMaxsize=500mb,Filegrowth=5mb)Log on(name=zbg_log,Filename='E:\dbdesign\ zbg_log.ldf',Size=5mbMaxsize=100mb,Filegrowth=5mb)5.2数据载入1)client表2)managerinsert 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,'营业中'); 大排档中原路89号',4,'打烊');老乡鸡梧桐路13号',4,'营业中'); 4)dishinsert 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 允许注册');允许注册');允许注册');允许注册');允许注册');允许注册');允许注册');六、数据库的运行和维护作为网管员,无论其管理的网络的规模是大还是小,在日常的管理中除了维护网络平稳运行、及时排除网络故障、保护网络安全等工作以外,备份网络中关键数据也是其中的一个非常非常重要的工作环节。