项目:点餐系统4数据管理模块设计

二、数据管理模块设计

使用MySQL数据库进行管理

 需要管理的数据:

菜品信息:菜品ID、菜品名称、菜品单价、菜品描述、添加&修改时间

订单信息:订单ID、菜品名称、订单状态,添加时间,修改时间

1.数据库表的设计(2张表)

1.1创建数据库餐厅ct。

create database ct;

primary key:主键约束,约束指定的这一列数据不能为NULL,也不能数据重复,也会创建一个主键索引,为数据构建目录提高查询速率

auto_increment:自增属性,每次插入数据会自动增加1

1.2菜品信息表

create table tb_dish(
id int primary key auto_increment,
name varchar(32), 
price int,
info varchar(255),
ctime datetime);

项目:点餐系统4数据管理模块设计_第1张图片

1.3订单信息表

create table tb_order(
id int primary key auto_increment,
dishes varchar(128), 
status int,
ctime datetime,
mtime datetime);

项目:点餐系统4数据管理模块设计_第2张图片

 订单的菜品信息中,下单菜品是不确定的,因此设计是存储多个菜品ID,组织为json格式的数组“[2,4]”

订单状态:0-未完成        1-完成        2-撤销

2.数据管理模块代码设计

需要封装实现自己的MySQL客户端,完成对数据库中数据的操作

菜品的增删改查:新增菜品、删除菜品、修改菜品名称&单价&描述、查询获取所有菜品信息、查询获取指定菜品信息

订单的增删改查:新增订单、删除订单、修改订单状态&最后一次修改时间、查询所有订单信息、查询指定订单信息

当前项目比较简单,如果指封装一个类,在类中提供各个数据操作的接口,不利于以后扩展

我们可以针对每一个表创建一个操作管理类,这个类实例化的对象就负责指定表数据的操作

class TableDish {
private:
	MYSQL* _mysql;
public:
	bool Insert(const Json::Value& dish);//通过Json::Value对象向函数内传递菜品信息
	bool Update(const int dish_id, const Json::Value& dish);//传入要修改的菜品ID和新的菜品信息
	bool Delete(const int dish_id);//传入菜品ID
	bool SelectAll(Json::Value* dishes);//以输出参数向外传递所有菜品信息
	bool SelectOne(const int dish_id, Json::Value* dish);//传入菜品ID,输出参数返回具体菜品信息
};

class TableOrder {
private:
	MYSQL* _mysql;
public:
	bool Insert(const Json::Value& order);//通过Json::Value对象向函数内传递订单信息
	bool Update(const int order_id, const Json::Value& order);//传入要修改的订单ID和新的订单信息
	bool Delete(const int order_id);//传入订单ID
	bool SelectAll(Json::Value* orders);//以输出参数向外传递所有订单信息
	bool SelectOne(const int order_id, Json::Value* order);//传入订单ID,输出参数返回具体订单信息
};

MYSQL* MysqlInit();//数据库初始化接口
void MysqlDestroy();//数据库句柄销毁接口
bool MysqlQuery(MYSQL* mysql, const std::string& sql);//sql语句执行接口

你可能感兴趣的:(项目,oracle,数据库)