c#(winform)/javaswing外卖订单管理系统源码 此系统同时支持mysql,sqlserver,sqlite三种数据库,有javaswing窗体和C#窗体两套代码
数据库文件说明
数据库设计
关系模型
管理员(主键,用户名,密码,创建时间,姓名)
用户(主键,用户名,密码,名称,性别,电话,创建时间,身份证,地点)
菜单(主键,名称,价格,类型,描述)
订单(主键,用户,外卖名,订单创建时间,配送员,订单状态)
数据字典
增删改查sql语句示范
-- ----------------------------
-- TODO1 创建Mysql数据库和表,只需执行一次
-- ----------------------------
Create Database If Not Exists cy21123490eleme Character Set UTF8;
use cy21123490eleme;
-- ----------------------------
-- 创建表:管理员
-- ----------------------------
create table tb_admin (
id varchar(40) , -- 主键
username varchar(20) , -- 用户名
password varchar(20) , -- 密码
createtime datetime , -- 创建时间
name varchar(12) , -- 姓名
PRIMARY KEY (`id`)
);
-- 默认插入一条管理员 数据
insert into tb_admin (id,username,password) values('1234567890','1','1');
-- ----------------------------
-- 创建表:用户
-- ----------------------------
create table tb_user (
id varchar(40) , -- 主键
username varchar(20) , -- 用户名
password varchar(20) , -- 密码
name varchar(18) , -- 名称
gender varchar(10) , -- 性别
tele varchar(11) , -- 电话
createtime datetime , -- 创建时间
idnum varchar(18) , -- 身份证
place varchar(255) , -- 地点
PRIMARY KEY (`id`)
);
-- ----------------------------
-- 创建表:菜单
-- ----------------------------
create table tb_menu (
id varchar(40) , -- 主键
name varchar(18) , -- 名称
price double , -- 价格
type varchar(255) , -- 类型
description varchar(255) , -- 描述
PRIMARY KEY (`id`)
);
-- ----------------------------
-- 创建表:订单
-- ----------------------------
create table tb_order (
id varchar(40) , -- 主键
userid varchar(255) , -- 用户
menuid varchar(255) , -- 外卖名
createtime datetime , -- 订单创建时间
peisong varchar(255) , -- 配送员
status varchar(255) , -- 订单状态
PRIMARY KEY (`id`)
);
-- 创建 用户名 唯一索引
ALTER TABLE tb_admin ADD UNIQUE INDEX index_tb_admin_username(username);
-- 创建 用户名 唯一索引
ALTER TABLE tb_user ADD UNIQUE INDEX index_tb_user_username(username);
-- 创建 性别 字段限制
alter table tb_user add constraint check_tb_user_gender check(gender in('男','女'));
-- 创建 用户 外键约束,创建后,删除已经绑定了外键的用户 会报错
-- alter table tb_order add CONSTRAINT frn_order_user FOREIGN KEY(userid) REFERENCES tb_user (id);
-- 创建 外卖名 外键约束,创建后,删除已经绑定了外键的菜单 会报错
-- alter table tb_order add CONSTRAINT frn_order_menu FOREIGN KEY(menuid) REFERENCES tb_menu (id);
-- 创建 订单状态 字段限制
alter table tb_order add constraint check_tb_order_status check(status in('已接单','已发出','已收货'));
-- ----------------------------
-- TODO2 创建 视图和存储过程等
-- ----------------------------
-- ----------------------------
-- 创建视图:订单 表 和对应外键信息的视图
-- ----------------------------
create view view_order as
select t.id as 主键 ,userid.name as 用户,menuid.name as 外卖名,t.createtime as 订单创建时间,t.peisong as 配送员,t.status as 订单状态
from tb_order as t ,tb_user userid,tb_menu menuid
where 1=1 and t.userid=userid.id and t.menuid=menuid.id ;
-- -------------------
-- PROCEDURE:login
-- 返回结果success和message:1表成功 0 表失败,message是提示消息
-- -------------------
-- 执行下句测试,会显示1,login success。
-- call proc_login ('1','1');
-- -------------------
create PROCEDURE proc_login(in usernameP varchar(20),passwordP varchar(20))
begin
if exists(select * from tb_admin where usernameP=username) THEN-- 判断用户是否存在
begin
if exists(select * from tb_admin where usernameP=username and passwordP=password)THEN-- 判断密码正确
select 1 as success,'login success' as message;
else
select 0 as success,'login fail' as message;
END IF;
end;
else
begin
select 0 as success,'user_does_not_exist' as message;
end;
END IF;
end;
-- -------------------
-- PROCEDURE:register
-- 返回结果success和message:1表成功 0 表失败,message是提示消息
-- ------------------
-- 执行以下测试,会显示0,username_already_exists。
-- call proc_register( '1','1');
-- -------------------
create PROCEDURE proc_register(in usernameP varchar(20),passwordP varchar(20))
begin
if exists(select * from tb_admin where usernameP=username) then
select 0 as success,'username_already_exists' as message;
else
begin
insert into tb_admin (id,username,password) values(Replace(UUID(),'-',''),usernameP,passwordP);
select 1 as success,'registration_success' as message;
end;
end if;
end;
-- --------------------------------------
-- 存储过程:添加或者修改菜单
-- --------------------------------------
create PROCEDURE proc_menu (in idP varchar(255) ,nameP varchar(18),priceP double,typeP varchar(255),descriptionP varchar(255))
begin
if exists(select id from tb_Menu where idP=id) then -- update
begin
update tb_Menu set name=nameP,price=priceP,type=typeP,description=descriptionP where id=idP;
select 1 as success,'update-successfully' as message;
end;
else -- add
begin
insert into tb_Menu values(Replace(UUID(),'-','') ,nameP,priceP,typeP,descriptionP );
select 1 as success,'added-successfully' as message;
end;
end if;
end;
-- --------------------------------------
-- 存储过程:添加或者修改订单
-- --------------------------------------
create PROCEDURE proc_order (in idP varchar(255) ,useridP varchar(255),menuidP varchar(255),createtimeP datetime,peisongP varchar(255),statusP varchar(255))
begin
if exists(select id from tb_Order where idP=id) then -- update
begin
update tb_Order set userid=useridP,menuid=menuidP,createtime=createtimeP,peisong=peisongP,status=statusP where id=idP;
select 1 as success,'update-successfully' as message;
end;
else -- add
begin
insert into tb_Order values(Replace(UUID(),'-','') ,useridP,menuidP,createtimeP,peisongP,statusP );
select 1 as success,'added-successfully' as message;
end;
end if;
end;
-- ----------------------------------------------
-- trigger
-- ----------------------------------------------
CREATE TRIGGER trigger_insert_admin
BEFORE INSERT ON tb_admin FOR EACH ROW
BEGIN
if LENGTH(new.password)<1 then
set new.password = '123456';
end if;
END;
CREATE TRIGGER trigger_insert_user
BEFORE INSERT ON tb_user FOR EACH ROW
BEGIN
if LENGTH(new.password)<1 then
set new.password = '123456';
end if;
END;
-- -----------------
-- TODO3 创建用户并授权
-- -----------------
CREATE USER 'cy21123490eleme'@'%' IDENTIFIED BY 'cy21123490eleme';
GRANT ALL ON cy21123490eleme.* TO 'cy21123490eleme'@'%';