,,C#实现简单的点餐系统

,,C#实现简单的点餐系统

这篇文章主要为大家详细介绍了C#实现简单的点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

本文项目为大家分享了C#实现点餐系统,供大家参考,具体内容如下

项目介绍:一家店铺使用的外卖点餐系统

本项目分三大模块:登录注册模块,用户模块,店家模块

1.登录注册模块

登录分为用户登录和管理员登录(店家),管理员有且只有一个账号可以登录。用户登录需要先注册,注册必须用手机号注册。

登录界面效果图

登录主要就是判断,多加些判断就行了

登录代码展示:

#地区窗体效果

公共类Win32

{

public const int 32 AW _ HOR _ POSITIVE=0x 00000001;//从左到右打开窗口

public const int 32 AW _ HOR _ NEGATIVE=0x 00000002;//从右到左打开窗口

public const int 32 AW _ VER _ POSITIVE=0x 00000004;//从上到下打开窗口

public const int 32 AW _ VER _ NEGATIVE=0x 00000008;//从下到上打开窗口

public const int 32 AW _ CENTER=0x 00000010;//若使用了啊_隐藏标志,则使窗口向内重叠;若未使用啊_隐藏标志,则使窗口向外扩展。

public const int 32 AW _ HIDE=0x 00010000;//隐藏窗口,缺省则显示窗口。

public const int 32 AW _ ACTIVATE=0x 00020000;//激活窗口。在使用了啊_隐藏标志后不要使用这个标志。

public const int 32 AW _ SLIDE=0x 00040000;//使用滑动类型。缺省则为滚动动画类型。当使用噢_中心标志时,这个标志就被忽略。

public const int 32 AW _ BLEND=0x 00080000;//使用淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志。

[DllImport('user32.dll ',CharSet=CharSet .自动)]

公共静态外部bool动画窗口(

窗口句柄

int dwTime,//动画的持续时间

int dwFlags //动画类型

);

}

#结束区域

有效代码有效代码=新的有效代码(5,有效代码.代码类型。数字);//实例化这个对象

//窗体加载

私有void登录_加载(对象发送方,EventArgs e)

{

picValidCode .图像=位图FromStream(validCode .CreateCheckCodeImage());//点击图片更换验证码

Win32 .动画窗口(这个。句柄,500,Win32 .VER正);//窗体出现效果

}

//验证码图片

私有void picValidCode_Click(对象发送方,EventArgs e)

{

picValidCode .图像=位图FromStream(validCode .CreateCheckCodeImage());//点击图片更换验证码

}

//注册

私有无效链接标签2 _链接被点击(对象发送方,LinkLabelLinkClickedEventArgs e)

{

Enroll EN=new Enroll();

这个hide();

恩ShowDialog();

申请exit thread();

}

//登录按钮

私有空的登录按钮点击(对象发送方,EventArgs e)

{

Saveusername.name=用户名文本;

字符串sql=字符串。格式('从用户列表中选择*其中UserID=“{ 0 }”和user password=“{ 1 }”),用户名。文本,密码。正文);

SqlDataReader reader=DBHelper .获取datareader(SQL);

如果(用户名. Text==' ')

{

消息框.显示('请输入用户名!', '提示消息框按钮.好了MessageBoxIcon .星号);

}

else if(密码. Text==' ')

{

消息框.显示('请输入密码!', '提示消息框按钮.好了MessageBoxIcon .星号);

}

else if(!这个。txtvalidcode。文字。等于(有效代码.校验码))//验证是否输入正确

{

消息框.显示('请输入正确的验证码!',这个。正文);

这个。txtvalidcode。焦点();

这个。txtvalidcode。text=

读者. close();

返回;

}

else if(读者. Read())

{

保存用户名ID=reader['ID'].ToString();//获取身份证明用于个人中心修改信息

读者. close();

if (Saveusername.name=='Sweet ')

{

管理员界面106 . GLY甘氨酸=新管理员界面GLY();

这个hide();

gLY .ShowDialog();

申请exit thread();

}

XMB xMB=新XMB();

这个hide();

xMB .ShowDialog();

申请exit thread();

}

其他

{

消息框.显示('用户名或密码输入错误!', '提示消息框按钮.好了MessageBoxIcon .错误);

}

读者. close();

picValidCode .图像=位图FromStream(validCode .CreateCheckCodeImage());//点击图片更换验证码

}

//忘记密码

私有无效链接标签1 _ link clicked _ 1(对象发送方,LinkLabelLinkClickedEventArgs e)

{

忘记pwd忘记=新忘记pwd();

这个hide();

忘记吧ShowDialog();

申请exit thread();

}

#地区用于窗体移动

私有点mPoint//定义一个位置信息要点用于存储鼠标位置

私有void Login_MouseDown(对象发送方,MouseEventArgs e)

{

mPoint=新点(e.X,e . Y);

}

私有void Login_MouseMove(对象发送方,MouseEventArgs e)

{

if (e.Button==MouseButtons .左)

{

这个。位置=新点(这个.地点X e X m点. x,这个。位置Y . Y . m点. y);

}

}

#结束区域

私有void Login_FormClosed(对象发送方FormClosedEventArgs e)

{

Win32 .动画窗口(这个。句柄,500,Win32 .AW_BLEND|Win32 .AW _ HIDE);

}

私有void pictureBox3_Click(对象发送方,EventArgs e)

{

这个. close();

}

私有void pictureBox4_Click(对象发送方,EventArgs e)

{

这个WindowState=FormWindowState .最小化;//最小化

}

图片验证码代码展示:

公共类有效代码

{

#区域私有字段

private const double PI=3.1415926535897932384626433832795;

私人常数双PI2=6.283185307179586476925286766559;

//private readonly int _ words len=4;

私有整数长度

私有代码类型_代码类型

private readonly Single _ jianju=(float)18.0;

private readonly Single _ height=(float)24.0;

私有字符串_校验码

#结束区域

#地区公共财产

公共字符串校验码

{

得到

{

返回_校验码

}

}

#结束区域

#区域构造函数

///摘要

///公共构造函数

////摘要

///param name='len '验证码长度/param

///param name='ctype '验证码类型:字母、数字、字母数字/param

public ValidCode(int len,CodeType ctype)

{

这个. len=len

这个. codetype=ctype

}

#结束区域

#区域公共字段

公共枚举代码类型{单词,数字,字符,字母}

#结束区域

#区域私有方法

私有字符串生成器数字()

{

string strOut=

系统Random Random=new Random();

for(int I=0;i _ len我)

{

字符串编号=转换ToString(随机。接下来(10000)% 10);

strOut=num

}

返回斯特劳特.trim();

}

私有字符串GenerateCharacters()

{

string strOut=

系统Random Random=new Random();

for(int I=0;i _ len我)

{

字符串编号=转换ToString((char)(65 random .接下来(10000)% 26));

strOut=num

}

返回斯特劳特.trim();

}

//

私有字符串生成phas()

{

string strOut=

字符串编号="";

系统Random Random=new Random();

for(int I=0;i _ len我)

{

如果(随机。下一步(500) % 2==0)

{

数量=转换ToString(随机。接下来(10000)% 10);

}

其他

{

数量=转换ToString((char)(65 random .接下来(10000)% 26));

}

strOut=num

}

返回斯特劳特.trim();

}

私人系统画画。位图扭曲图像(位图srcBmp,bool bXDir,double dMultValue,double dPhase)

{

系统画画。位图destBmp=新位图(srcBmp .宽度,srcBmp .身高);

//将位图背景填充为白色

系统。绘图。图形图形=系统画画。图形。来自图片(dest BMP);

图表FillRectangle(新的实体画笔(系统。绘图。颜色。白色),0,0,destBmp .宽度,destBmp .身高);

图表dispose();

double dBaseAxisLen=bXDir?(双)destBmp .高度:(double)destBmp .宽度;

for(int I=0;我放弃了。宽度;我)

{

for(int j=0;j destBmp .身高;j)

{

double dx=0;

dx=bXDir?(PI2 *(double)j)/dBaseAxisLen:(PI2 *(double)I)/dBaseAxisLen;

dx=dPhase

双dy=数学sin(dx);

//取得当前点的颜色

int nOldX=0,nOldY=0;

nOldX=bXDir?I(int)(dy * dMultValue):I;

nOldY=bXDir?j:j(int)(dy * dMultValue);

系统画画。Color color=srcBmp .GetPixel(i,j);

if (nOldX=0 nOldX destBmp .宽度

nOldY=0 nOldY destBmp .高度)

{

destBmp .SetPixel(nOldX,nOldY,color);

}

}

}

返回destBmp

}

#结束区域

#区域公共方法

公共流CreateCheckCodeImage()

{

字符串校验码;

开关(_codetype)

{

案例代码类型。阿尔法战士:

校验码=生成alpha s();

打破;

案例代码类型。数字:

校验码=生成数字();

打破;

案例代码类型。字符:

校验码=生成字符();

打破;

默认值:

校验码=生成alpha s();

打破;

}

这个. checkCode=checkCode

MemoryStream ms=null

//

if (checkCode==null || checkCode .Trim()==String .空的)

返回空

位图图像=新系统画画。位图((整数)数学.天花板((校验码. Length * _jianju))、(int)_ height);

图形g=图形FromImage(图像);

尝试

{

Random Random=new Random();

g.透明(彩色。白色);

//画图片的背景噪音线

for(int I=0;i 18我)

{

int x1=random .接下来(图片。宽度);

int x2=随机。接下来(图片。宽度);

int y1=随机。接下来(图片。身高);

int y2=随机。接下来(图片。身高);

g.画线(新钢笔(颜色FromArgb(随机. Next()),1),x1,y1,x2,y2);

}

字体font=新系统。绘图。字体('时代新罗马',14,系统画画。字体样式。粗体);

LinearGradientBrush brush=new LinearGradientBrush(新矩形(0,0,图像.宽度,图像。高度)、颜色。蓝色,彩色。暗红色,1.2f,真);

if (_codetype!=代码类型.单词)

{

for(int I=0;我检查代码。长度;我)

{

g.拉绳(校验码Substring(i,1),font,brush,2 i * _jianju,1);

}

}

其他

{

g.拉绳(校验码,字体,画笔,2,2);

}

//画图片的前景噪音点

for(int I=0;i 150我)

{

int x=random .接下来(图片。宽度);

int y=random .接下来(图片。身高);

形象SetPixel(x,y,Color .FromArgb(随机. next()));

}

//画图片的波形滤镜效果

if (_codetype!=代码类型.单词)

{

image=TwistImage(image,true,3,1);

}

//画图片的边框线

g.绘制矩形(新钢笔(颜色。银色),0,0,图像。宽度- 1,图像。高度-1);

ms=新系统10 . IO。内存流();

形象。保存(毫秒,系统画画。成像。图像格式。gif);

}

最后

{

g . dispose();

形象dispose();

}

返回ms;

}

#结束区域

注册界面效果图

注册界面代码展示

短信验证码,用接口就能实现

TimeSpan dtTo=new TimeSpan(0,0,60);//设置计时器的开始时间

(同Internationalorganizations)国际组织值;//用来存储随机数

公共注册()

{

初始化组件();

}

//获取短信验证码

私有空的代码按钮点击(对象发送方,EventArgs e)

{

正则表达式rx=新regex(@'^0{0,1}(13[0-9]|15[0-9]|15[0-9]|18[0-9]|17[0-9])[0-9]{8}$');

如果(!rx .IsMatch(注册电话。正文))

{

注册电话. text=

消息框.显示('手机号格式不正确,请重新输入', '提示消息框按钮.好了MessageBoxIcon .星号);

}

其他

{

Random rad=new Random();//实例化随机数产生器拉德;

值=弧度。下一个(1000,10000);//用拉德生成大于等于1000,小于等于9999的随机数;

注意。注(报名电话。文字,数值);

定时器1。start();

dtTo=新的时间跨度(0,0,60);

}

}

//时间控件用来实现60秒倒计时

私有空定时器1_Tick_1(对象发送方,EventArgs e)

{

代码按钮启用=假

dtTo=dtTo .Subtract(new TimeSpan(0,0,1));//每隔一秒减一

代码按钮Text='(' dtTo .秒。ToString()')' '重新获取;

if (dtTo .TotalSeconds==0.0)//当倒计时完毕

{

这个code button . com。启用=真

代码按钮. Text='点击获取验证码;

这个。定时器1。stop();

定时器1。dispose();

}

}

//注册按钮

私有void FinishButton_Click(对象发送方,EventArgs e)

{

Bool Bool=Fac();

如果(布尔值)

{

字符串类型='普通用户;

string sex=

如果(无线电人。已检查)//判断单选按钮的文本

{

性=广播员。文本;

}

否则如果(女广播员。已检查)

{

性=女广播员。文本;

}

字符串sql=字符串。格式('插入到用户列表值(“{0}”、“{1}”、“{2}”、“{3}”、“{4}”、“{5}”),注册用户.文本,EnrollPwd .短信,性,注册。文本,注册地址。文字、类型);

bool sqlinsert=DBHelper .ExecuteNonQuery(SQL);

if (sqlinsert)

{

DialogResult结果=消息框.显示('注册成功!', '提示消息框按钮.好了MessageBoxIcon .问题);

这个hide();

log in LG=new log in();

LG .ShowDialog();

}

}

其他

{

返回;

}

}

///摘要

///用于注册界面里格式的判断

////摘要

///返回/返回

私有布尔Fac()

{

字符串sql=字符串格式(' select * from UserList where UserID=' { 0 } '),EnrollUser .正文);

SqlDataReader reader=DBHelper .获取datareader(SQL);

如果(注册用户.Text==' ')

{

消息框.显示('用户名不能为空!', '提示消息框按钮.好了MessageBoxIcon .星号);

读者. close();

返回错误的

}

else if (EnrollPwd .Text==' ')

{

消息框.显示('请输入密码!', '提示消息框按钮.好了MessageBoxIcon .星号);

读者. close();

返回错误的

}

else if (EnrollPwd .文字!=EnrollPwdY .正文)

{

消息框.显示('两次密码必须一样!', '提示消息框按钮.好了MessageBoxIcon .星号);

读者. close();

返回错误的

}

否则如果(注册电话.Text==' ')

{

消息框.显示('请输入手机号!', '提示消息框按钮.好了MessageBoxIcon .星号);

读者. close();

返回错误的

}

else if (EtxtValidCode .Text==' ')

{

消息框.显示('请输入验证码!', '提示消息框按钮.好了MessageBoxIcon .星号);

读者. close();

返回错误的

}

else if (int .解析(EtxtValidCode .正文)!=值)

{

消息框.显示('请输入正确的验证码!', '提示消息框按钮.好了MessageBoxIcon .星号);

读者. close();

返回错误的

}

else if(读者. Read())

{

DialogResult结果=消息框.显示('此用户已存在,是否前往登录?', '提示消息框按钮.是否MessageBoxIcon .问题);

if (result==DialogResult .是)

{

log in LG=new log in();

LG .ShowDialog();

读者. close();

这个. close();

返回错误的

}

其他

{

读者. close();

返回错误的

}

}

其他

{

读者. close();

返回真实的

}

}

//窗体加载事件

私有无效注册_加载(对象发送方,EventArgs e)

{

代码按钮. Text='点击获取验证码;

定时器1。区间=1000;//设置每次间隔一秒

}

忘记密码界面效果图

下面为用户界面的展示

简单介绍一下:由于菜品是有很多的而且不确定数量,所以必须动态加载,不能拖图片控件等。

用户功能实现思路:首先要知道每个用户只能看自己的,所以在登录时候就必须用一个东西接收用户输入的名字,以便在主界面显示出与该用户相匹配的数据。

购物车界面

购物车首先要有一个购物车表用来存储用户添加的商品,当用户结账以后,购物车表中该用户的信息就应全部清除。然后为该用户生成订单(存入信息到订单表),并将用户购买的商品存入订单详情表中。

动态加载菜品代码展示

私有void XMB_Load(对象发送方,事件参数e)

{

/*SetStyle(ControlStyles .UserPaint,true);

SetStyle(ControlStyles .AllPaintingInWmPaint,true);//禁止擦除背景。

SetStyle(ControlStyles .DoubleBuffer,true);//双缓冲*/

克林_热菜LinkColor=Color .灰色;

Win32 .动画窗口(这个。句柄,500,Win32 .AW _ CENTER);//窗体出现效果

订单_pl .可见=假;

Or_panel1 .可见=假;//隐藏订单控件

菜单_全部_全部AutoScroll=true//添加滚动条

这个。toolstrip状态标签1。Font=新字体('微软雅黑,12,字体样式.粗体);

toolStripStatusLabel1 .文本=字符串。格式('欢迎"{0}"使用甜食点餐系统! ',保存用户名。姓名);

这个。定时器2。start();

string SQL=' select * from Food _ table ';

数据集ds=DBHelper .获取数据集(SQL);

int xx=0;

int YY=0;

for(int I=0;我同意表[0]。行。数数;我)

{

Label FoodName=new Label();

标签食品价格=新标签();

图片盒图片=new PictureBox();

Button Button=new Button();//创建控件

食品名称.name=' food name _ ' I;

食品价格. name=' food price _ ' I;

图片. name=' picture _ ' I;

按钮. Name=ds .表格[0]。行[i]['FoodID'].ToString();//加入购物车按钮命名为菜品表的FoodID

食品名称.Text=ds .表格[0]。行[i]['FoodName'].ToString();

食品价格Text=' ' ds .表格[0]。Rows[i]['FoodPrice'].ToString() '/份;//控件文本属性赋值

按钮. Text='加入购物车;

食品名称.AutoSize=true

? FoodPrice.AutoSize = true; ? ? ? ? ? ? ? ? button.AutoSize = true; ? ? ? ? ? ? ? ? FoodName.Font = new Font("微软雅黑", 11); ? ? ? ? ? ? ? ? FoodPrice.Font = new Font("微软雅黑", 11); ? ? ? ? ? ? ? ? button.Font = new Font("微软雅黑", 6); ? ? ? ? ? ? ? ? button.BackColor = Color.Gray; ? ? ? ? ? ? ? ? button.ForeColor = Color.Transparent; ? ? ? ? ? ? ? ? button.FlatStyle = FlatStyle.Flat; ? ? ? ? ? ? ? ? button.Size = new Size(60, 10); ? ? ? ? ? ? ? ? picture.Location = new Point(100 * xx, 20 + yy); ? ? ? ? ? ? ? ? FoodName.Location = new Point(100 * xx, 100 + yy); ? ? ? ? ? ? ? ? FoodPrice.Location = new Point(100 * xx, 120 + yy); ? ? ? ? ? ? ? ? button.Location = new Point(100 * xx, 140 + yy);//控件定位 ? ? ? ? ? ? ? ? picture.Image = Image.FromFile(Application.StartupPath + @"\FoodPhoto" + ds.Tables[0].Rows[i]["PhotoName"].ToString());//显示图片,路径为可执行文件所在文件夹的FoodPhoto文件夹内的图片 ? ? ? ? ? ? ? ? picture.SizeMode = PictureBoxSizeMode.StretchImage; ? ? ? ? ? ? ? ? picture.Size = new Size(150, 80); ? ? ? ? ? ? ? ? picture.BorderStyle = BorderStyle.FixedSingle; ? ? ? ? ? ? ? ? button.Cursor = Cursors.Hand; ? ? ? ? ? ? ? ? button.Click += new EventHandler(this.Button_Click); ? ? ? ? ? ? ? ? menu_all_全部.Controls.Add(FoodName); ? ? ? ? ? ? ? ? menu_all_全部.Controls.Add(FoodPrice); ? ? ? ? ? ? ? ? menu_all_全部.Controls.Add(picture); ? ? ? ? ? ? ? ? menu_all_全部.Controls.Add(button);//把控件绑定到panel中 ? ? ? ? ? ? ? ? xx++; ? ? ? ? ? ? ? ? if (xx++ >= 4) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? xx = 0; ? ? ? ? ? ? ? ? ? ? yy += 180; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }

动态加载菜品解决窗体控件闪烁问题代码展示

protected override CreateParams CreateParams//解决窗体控件闪烁问题 ? ? ? ? { ? ? ? ? ? ? get ? ? ? ? ? ? { ? ? ? ? ? ? ? ? CreateParams cp = base.CreateParams; ? ? ? ? ? ? ? ? cp.ExStyle |= 0x02000000; ? ? ? ? ? ? ? ? return cp; ? ? ? ? ? ? } }

加入购物车按钮代码展示

?#region 购物车 ? ? ? ? private void 购物车_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) ? ? ? ? { ? ? ? ? ? ? ?// 禁止用户改变DataGridView1的所有列的列宽 ? ? ? ? ? ? dataGridView1.AllowUserToResizeColumns = false; ? ? ? ? ? ? //禁止用户改变DataGridView1所有行的行高 ? ? ? ? ? ? dataGridView1.AllowUserToResizeRows = false; ? ? ? ? ? ? dataGridView1.Columns[0].ReadOnly = true; //禁止用户编辑第一列 ? ? ? ? ? ? dataGridView1.Columns[1].ReadOnly = true; //禁止用户编辑第二列 ? ? ? ? ? ? dataGridView1.Columns[2].ReadOnly = true;//禁止用户编辑第三列 ? ? ? ? ? ? this.dataGridView1.AllowUserToResizeColumns = false; //禁止用户拖动标题宽度 ? ? ? ? ? ? dataGridView1.AutoGenerateColumns = false;//取消自动生成列 ? ? ? ? ? ? dataGridView1.RowHeadersVisible = false; //隐藏前面空白选择部分 ? ?? ? ? ? ? ? ? string sql = string.Format("select FoodName,ShoppingCount,ShoppingPrice,ShoppingID from Food_table join Shopping_table on Food_table.FoodID=Shopping_table.FoodID join UserList on '{0}'=Shopping_table.UserID where UserList.UserID='{1}'", Saveusername.name,Saveusername.name);//三表查询 ? ? ? ? ? ? dataGridView1.DataSource = DBHelper.GetDataSet(sql).Tables[0]; ? ? ? ? ? ? double SumPrice = 0;//用来存储总金额 ? ? ? ? ? ? if (DBHelper.GetDataSet(sql).Tables[0].Rows.Count > 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? for (int i = 0; i < DBHelper.GetDataSet(sql).Tables[0].Rows.Count; i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? SumPrice += double.Parse(DBHelper.GetDataSet(sql).Tables[0].Rows[i][2].ToString()); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? Money_label.Text = "¥" + SumPrice.ToString() + "元"; ? ? ? ? ? ? } ? ? ? ? ? ? dataGridView1.ClearSelection(); //取消默认选中 ? ? ? ? ? ? if (show_shopping_pl.Visible == true) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? show_shopping_pl.Visible = false; ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? { ? ? ? ? ? ? ? ? show_shopping_pl.Visible = true; ? ? ? ? ? ? } ? ? ? ? ? ? if (Or_panel1.Visible == true) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? Or_panel1.Visible = false; ? ? ? ? ? ? } ? ? ? ? ? ? if (Order_pl.Visible == true) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? Order_pl.Visible = false; ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? //清空购物车 ? ? ? ? private void delete_label_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e) ? ? ? ? { ? ? ? ? ? ? DialogResult result = MessageBox.Show("是否清空购物车", "提示信息", MessageBoxButtons.OKCancel, MessageBoxIcon.Asterisk); ? ? ? ? ? ? if (result == DialogResult.OK) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? string sql = string.Format("delete from Shopping_table where UserID='{0}'", Saveusername.name); ? ? ? ? ? ? ? ? if (DBHelper.ExecuteNonQuery(sql)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? sql = string.Format("select FoodName,ShoppingCount,ShoppingPrice,ShoppingID from Food_table join Shopping_table on Food_table.FoodID=Shopping_table.FoodID join UserList on '{0}'=Shopping_table.UserID ", Saveusername.name); ? ? ? ? ? ? ? ? ? ? dataGridView1.DataSource = DBHelper.GetDataSet(sql); ? ? ? ? ? ? ? ? ? ? dataGridView1.AllowUserToAddRows = false; ? ? ? ? ? ? ? ? ? ? Money_label.Text = "¥0元"; ? ? ? ? ? ? ? ? ? ? MessageBox.Show("成功清空购物车!", "提示", MessageBoxButtons.OK); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? } ? ? ? ?? ? ? ? ? #endregion

主界面结账功能界面

结账部分代码展示

?private void Yes_Order_Load(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? Or_label1.Text = "["+Saveusername.name+"]" + ">确认购买"; ? ? ? ? ? ? dataGridView1.RowHeadersVisible = false; //隐藏前面空白选择部分 ? ? ? ? ? ? // ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? // 禁止用户改变DataGridView1的所有列的列宽 ? ? ? ? ? ? //dataGridView1.AllowUserToResizeColumns = false; ? ? ? ? ? ? 禁止用户改变DataGridView1所有行的行高 ? ? ? ? ? ? //dataGridView1.AllowUserToResizeRows = false; ? ? ? ? ? ? dataGridView1.Columns[0].ReadOnly = true; //禁止用户编辑第一列 ? ? ? ? ? ? dataGridView1.Columns[1].ReadOnly = true; //禁止用户编辑第二列 ? ? ? ? ? ? dataGridView1.Columns[2].ReadOnly = true;//禁止用户编辑第三列 ? ? ? ? ? ? this.dataGridView1.AllowUserToResizeColumns = false; //禁止用户拖动标题宽度 ? ? ? ? ? ? dataGridView1.AutoGenerateColumns = false;//取消自动生成列 ? ? ? ? ? ? dataGridView1.RowHeadersVisible = false; //隐藏前面空白选择部分 ? ?? ? ? ? ? ? ? string sql = string.Format("select FoodName,ShoppingCount,ShoppingPrice,ShoppingID from Food_table join Shopping_table on Food_table.FoodID=Shopping_table.FoodID join UserList on '{0}'=Shopping_table.UserID where UserList.UserID='{1}'", Saveusername.name,Saveusername.name);//三表查询 ? ? ? ? ? ? dataGridView1.DataSource = DBHelper.GetDataSet(sql).Tables[0]; ? ? ? ? ? ? ?SumPrice = 0;//用来存储总金额 ? ? ? ? ? ? if (DBHelper.GetDataSet(sql).Tables[0].Rows.Count > 0) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? for (int i = 0; i < DBHelper.GetDataSet(sql).Tables[0].Rows.Count; i++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? SumPrice += double.Parse(DBHelper.GetDataSet(sql).Tables[0].Rows[i][2].ToString()); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? Money_label.Text = "¥" + SumPrice.ToString() + "元"; ? ? ? ? ? ? } ? ? ? ? ? ? dataGridView1.ClearSelection(); //取消默认选中 ? ? ? ? ? ? string sql_1 = string.Format("select * from UserList where UserID='{0}'",Saveusername.name); ? ? ? ? ? ? DataSet ds = DBHelper.GetDataSet(sql_1); ? ? ? ? ? ? Name_label.Text = ds.Tables[0].Rows[0]["UserID"].ToString()+":"; ? ? ? ? ? ? Tel_label.Text = ds.Tables[0].Rows[0]["UserTel"].ToString(); ? ? ? ? ? ? Address_label.Text = ds.Tables[0].Rows[0]["UserAddress"].ToString(); ? ? ? ? ? ? Yes_Money_label.Text = Money_label.Text; ? ? ? ? } ? ? ? ? private void Yes_pay_btn_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? if (Address_label.Text=="") ? ? ? ? ? ? { ? ? ? ? ? ? ? ? MessageBox.Show("地址信息不完整,请填写完整!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? } ? ? ? ? ? ? string Order_Data = DateTime.Now.ToString("yyyy-MM-dd hh:mm:ss"); //下单日期 ? ? ? ? ? ? string OrderNumber = DateTime.Now.ToString("yyyyMMddhhmmss");//订单编号 ? ? ? ? ? ? string sql = string.Format("select * from Shopping_table where UserID='{0}'",Saveusername.name);//查询购物车表 ? ? ? ? ? ? DataTable table_shopping = DBHelper.GetDataSet(sql).Tables[0]; ? ? ? ? ? ? if (table_shopping.Rows.Count>0)//购物车有数据就创建订单 ? ? ? ? ? ? { ? ? ? ? ? ? ? ?string sql_order = string.Format("insert into Order_table values('{0}','{1}','{2}','{3}','{4}','{5}')",OrderNumber,Saveusername.name,SumPrice,Address_label.Text,Order_Data,Tel_label.Text);//创建订单 ? ? ? ? ? ? ? ?string sql_state = string.Format("insert into OrderState_table values('{0}','{1}')",OrderNumber,"等待确认");//订单状态 ? ? ? ? ? ? ? ? if (DBHelper.ExecuteNonQuery(sql_order)&&DBHelper.ExecuteNonQuery(sql_state)) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? sql_order = string.Format("select top 1 * from Order_table where UserID='{0}' order by OrderID desc",Saveusername.name); ? ? ? ? ? ? ? ? ? ? DataTable table_order = DBHelper.GetDataTable(sql_order); ? ? ? ? ? ? ? ? ? ? for (int i = 0; i < table_shopping.Rows.Count; i++)//把数据逐条插入订单详情表 ? ? ? ? ? ? ? ? ? ? { string sql_datailde = string.Format("insert into Datailedorder_table values('{0}','{1}','{2}','{3}')", int.Parse(table_shopping.Rows[i]["FoodID"].ToString()),int.Parse(table_shopping.Rows[i]["ShoppingCount"].ToString()),double.Parse(table_shopping.Rows[i]["ShoppingPrice"].ToString()),int.Parse(table_order.Rows[0]["OrderID"].ToString())); ? ? ? ? ? ? ? ? ? ? ? ? //try ? ? ? ? ? ? ? ? ? ? ? ? //{ DBHelper.ExecuteNonQuery(sql_datailde); ? ? ? ? ? ? ? ? ? ? ? ? //} ? ? ? ? ? ? ? ? ? ? ? ?/* catch (Exception) ? ? ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? ? ? ? ? MessageBox.Show("异常"); ? ? ? ? ? ? ? ? ? ? ? ? ? ? return ? ? ? ? ? ? ? ? ? ? ? ? }*/ ? ? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? ? ? string sql_delete = string.Format("delete from Shopping_table where UserID='{0}'",Saveusername.name); ? ? ? ? ? ? ? ? ? ? DBHelper.ExecuteNonQuery(sql_delete);//创建订单后清空购物车 ? ? ? ? ? ? ? ? ? ?DialogResult result= MessageBox.Show("支付成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ? ? ? ? ? ? ? ? ? ? if (result==DialogResult.OK) ? ? ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ?string sql_select = string.Format("select * from Shopping_table where UserID='{0}'",Saveusername.name); ? ? ? ? ? ? ? ? ? ? dataGridView1.DataSource = DBHelper.GetDataSet(sql_select).Tables[0]; ? ? ? ? ? ? ? ? ? ? ? ? Money_label.Text = "¥0元"; ? ? ? ? ? ? ? ? ? ? ? ? Yes_Money_label.Text = "¥0元"; ? ? ? ? ? ? ? ? ? ? ? ? XMB.GetXMB.Money_label.Text = "¥0元"; ? ? ? ? ? ? ? ? ? ? Order_Form order_ = new Order_Form(); ? ? ? ? ? ? ? ? ? ? XMB.GetXMB.Or_from(order_); ? ? ? ? ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? { ? ? ? ? ? ? ? ? MessageBox.Show("未选择菜品", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk); ? ? ? ? ? ? } ? ? ? ? }

订单功能界面

点击订单,出现订单详情

订单功能部分代码

private void Order_Form_Load(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? OR_panel.AutoScroll = true;//添加滚动条 ? ? ? ? ? ? int xx = 0; ? ? ? ? ? ? int yy = 0; ? ? ? ? ? ? string sql = string.Format("select * from Order_table where UserID='{0}'",Saveusername.name); ? ? ? ? ? ? DataTable Or_table = DBHelper.GetDataTable(sql); DataTable State = DBHelper.GetDataTable(string.Format("select OrderState from OrderState_table join Order_table on Order_table.OrderNumber=OrderState_table.OrderNumber where Order_table.UserID='{0}'",Saveusername.name)); ? ? ? ? ? ? for (int i = 0; i < Or_table.Rows.Count; i++) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? Label OrderNumber = new Label();//编号 ? ? ? ? ? ? ? ? Label ShoppingPrice = new Label();//价格 ? ? ? ? ? ? ? ? Label SaleDate = new Label();//时间 ? ? ? ? ? ? ? ? Label OrderState = new Label();//状态 ? ? ? ? ? ? ? ? Label sweet = new Label(); ? ? ? ? ? ? ? ? Panel panel = new Panel(); ? ? ? ? ? ? ? ? PictureBox Db = new PictureBox(); //实例化一个控件 ? ? ? ? ? ? ? ? Db.Name = "Db_PictureBox" + i;//设定名称 ? ? ? ? ? ? ? ? OrderNumber.Name = "Label" + i; ? ? ? ? ? ? ? ? ShoppingPrice.Name = "Label" + i; ? ? ? ? ? ? ? ? SaleDate.Name = "Label" + i; ? ? ? ? ? ? ? ? OrderState.Name = "Label" + i; ? ? ? ? ? ? ? ? sweet.Name = "Label" + i; ? ? ? ? ? ? ? ? panel.Name = "Panel" + i;//设定名称 ? ? ? ? ? ? ? ? panel.Text = Or_table.Rows[i]["OrderID"].ToString();//把订单ID赋给控件的Text,以便取消订单 ? ? ? ? ? ? ? ? SaleDate.Text = Or_table.Rows[i]["SaleDate"].ToString(); ? ? ? ? ? ? ? ? ShoppingPrice.Text = " ¥ " + ?Or_table.Rows[i]["ShoppingPrice"].ToString(); ? ? ? ? ? ? ? ? OrderNumber.Text = "订单编号: " + Or_table.Rows[i]["OrderNumber"].ToString(); ? ? ? ? ? ? ? ? sweet.Text = "Sweet点餐"; ? ? ? ? ? ? ? ? OrderState.Text = State.Rows[i]["OrderState"].ToString(); ? ? ? ? ? ? ? ? sweet.Location = new Point(150,30); ? ? ? ? ? ? ? ? ShoppingPrice.Location = new Point(480,30); ? ? ? ? ? ? ? ? OrderState.Location = new Point(595,30); ? ? ? ? ? ? ? ? SaleDate.Location = new Point(150,70); ? ? ? ? ? ? ? ? OrderNumber.Location = new Point(450,70); ? ? ? ? ? ? ? ? Db.Location = new Point(15, 10 + yy);//设定位置 ? ? ? ? ? ? ? ? panel.Location = new Point(5, 0 + yy);//设定位置 ? ? ? ? ? ? ? ? sweet.AutoSize = true; ? ? ? ? ? ? ? ? OrderState.AutoSize = true; ? ? ? ? ? ? ? ? ShoppingPrice.AutoSize = true; ? ? ? ? ? ? ? ? SaleDate.AutoSize = true; ? ? ? ? ? ? ? ? OrderNumber.AutoSize = true; ? ? ? ? ? ? ? ? Db.Image = Image.FromFile(Application.StartupPath + @"\FoodPhoto" + "sezhi.png"); ? ? ? ? ? ? ? ? Db.SizeMode = PictureBoxSizeMode.StretchImage; //设定图像如何显示 ? ? ? ? ? ? ? ? sweet.Font = new Font("微软雅黑", 11); ? ? ? ? ? ? ? ? OrderNumber.Font = new Font("微软雅黑", 11); ? ? ? ? ? ? ? ? OrderState.Font = new Font("微软雅黑", 11); ? ? ? ? ? ? ? ? ShoppingPrice.Font = new Font("微软雅黑", 11); ? ? ? ? ? ? ? ? SaleDate.Font = new Font("微软雅黑", 11); ? ? ? ? ? ? ? ? Db.Size = new Size(80, 80); ? ? ? ? ? ? ? ? panel.Size = new Size(683, 100); ? ? ? ? ? ? ? ? Db.BorderStyle = BorderStyle.FixedSingle; //设置边框样式 ? ? ? ? ? ? ? ? panel.BorderStyle = BorderStyle.FixedSingle; //设置边框样式 ? ? ? ? ? ? ? ? panel.BackColor = Color.White; ? ? ? ? ? ? ? ? SaleDate.ForeColor = Color.Red; ? ? ? ? ? ? ? ? ShoppingPrice.ForeColor = Color.Red; ? ? ? ? ? ? ? ? OrderNumber.ForeColor = Color.Green; ? ? ? ? ? ? ? ? OrderState.ForeColor = Color.Green; ? ? ? ? ? ? ? ? panel.Cursor = Cursors.Hand; ? ? ? ? ? ? ? ? OR_panel.Controls.Add(Db); ? ? ? ? ? ? ? ? OR_panel.Controls.Add(panel); ? ? ? ? ? ? ? ? panel.Controls.Add(OrderState); ? ? ? ? ? ? ? ? panel.Controls.Add(sweet); ? ? ? ? ? ? ? ? panel.Controls.Add(OrderNumber); ? ? ? ? ? ? ? ? panel.Controls.Add(SaleDate); ? ? ? ? ? ? ? ? panel.Controls.Add(ShoppingPrice); ? ? ? ? ? ? ? ? panel.Click += new EventHandler(this.panel1_MouseClick); //添加单击事件 ? ? ? ? ? ? ? ? panel.MouseEnter += new EventHandler(this.panel1_MouseEnter); //添加单击事件 ? ? ? ? ? ? ? ? panel.MouseLeave += new EventHandler(this.panel1_MouseLeave); //添加单击事件 ? ? ? ? ? ? ? ? xx++; ? ? ? ? ? ? ? ? if (xx++ >= 1) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? yy += 110; ? ? ? ? ? ? ? ? ? ? //aa += 10; ? ? ? ? ? ? ? ? } ? ? ? ? ? ? } ? ? ? ? }

接下来是管理员界面展示

1.菜品管理界面

菜品管理添加菜品关键代码

private void Food_in_tbn_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? if (Fag() == false) ? ? ? ? ? ? ? ? return; ? ? ? ? ? ? string FilePath = Application.StartupPath + @"\FoodPhoto";//获取可执行文件所在位置的FoodPhoto文件夹路径 ? ? ? ? ? ? if (Directory.Exists(FilePath) == false) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //判断文件夹是否存在如果不存在创建文件夹 ? ? ? ? ? ? ? ? Directory.CreateDirectory(FilePath);//创建文件夹 ? ? ? ? ? ? } ? ? ? ? ? ? string FileName = DateTime.Now.ToString("yyyyMMddhhmmss") + new Random().Next(1000, 9999); ? ? ? ? ? ? //以当前时间和1000到9999的随机数合起来作为文件的名字 ? ? ? ? ? ? FileName += nj.Substring(nj.LastIndexOf("."));//截取图片的后缀名 ? ? ? ? ? ? File.Copy(nj, FilePath + @"" + FileName);//把图片复制到FoodPhoto文件夹 ? ? ? ? ? ? string SQLst = string.Format("insert into Food_table values('{0}','{1}','{2}','{3}')", Add_Food_tb.Text,Add_money_tb.Text,Add_type_ctb.Text, FileName); ? ? ? ? ? ? if (DBHelper.ExecuteNonQuery(SQLst)) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? MessageBox.Show("菜品添加成功", "提示", MessageBoxButtons.OK, MessageBoxIcon.Information); ? ? ? ? ? ? } ? ? ? ? ? ? else ? ? ? ? ? ? { ? ? ? ? ? ? ? ? MessageBox.Show("保存失败", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error); ? ? ? ? ? ? } ? ? ? ? } ? ? ? ? public static string nj; ? ? ? ? public static string name; ? ? ? ? private void pictureBox1_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? //打开资源管理器选择图片 ? ? ? ? ? ? OpenFileDialog openFileDialog1 = new OpenFileDialog(); ? ? ? ? ? ? nj = ""; ? ? ? ? ? ? name = ""; ? ? ? ? ? ? if (openFileDialog1.ShowDialog() == DialogResult.OK) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? nj = openFileDialog1.FileName; ? ? ? ? ? ? ? ? pictureBox1.Image = Image.FromFile(nj); ? ? ?} }

2.订单管理界面

主要实现思路:动态加载控件,控件定位,查询数据库,修改表信息

3.销售统计界面

点击确认订单后会生成一个订单,效果图如下:

代码展示

?private void Button_Click(object sender, EventArgs e) ? ? ? ? { ? ? ? ? ? ? Button button = (Button)sender;//将触发此事件的对象转换为该对象 ? ? ? ? ? ? OrderID = int.Parse(button.Name.ToString()); ? ? ? ? ? ? string FilePath = @"D:\订单票据";//获取可执行文件所在位置的FoodPhoto文件夹路径 ? ? ? ? ? ? if (Directory.Exists(FilePath) == false) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? //判断文件夹是否存在如果不存在创建文件夹 ? ? ? ? ? ? ? ? Directory.CreateDirectory(FilePath);//创建文件夹 ? ? ? ? ? ? } ? ? ? ? ? ? string sql_12 = string.Format("select * from Order_table where OrderID='{0}'", OrderID); ? ? ? ? ? ? DataTable piao = DBHelper.GetDataTable(sql_12); ? ? ? ? ? ? for (int i = 0; i < piao.Rows.Count; i++) ? ? ? ? ? ? { ? ? ? ? ? ? ? ? StreamWriter sw = new StreamWriter(@"D:\订单票据\Sweet点餐"+piao.Rows[0]["OrderNumber"].ToString()+".txt"); ? ? ? ? ? ? ? ? string a = "订单编号:"+piao.Rows[i]["OrderNumber"].ToString(); ? ? ? ? ? ? ? ? string b = "订单内容:"; ? ? ? ? ? ? ? ? sw.WriteLine(a); ? ? ? ? ? ? ? ? sw.WriteLine("-------------------------------------------"); ? ? ? ? ? ? ? ? sw.WriteLine(b); ? ? ? ? ? ? ? ? string sql_13 = "select Food_table.FoodName,Datailedorder_table.ShoppingCount,Datailedorder_table.ShoppingPrice from Order_table join Datailedorder_table on Datailedorder_table.OrderID=Order_table.OrderID join Food_table on Food_table.FoodID=Datailedorder_table.FoodID where Order_table.OrderNumber='" + piao.Rows[i]["OrderNumber"] + "'";//查找需要的菜品名称,菜品购买的数量,每一种菜品购买的总金额 ? ? ? ? ? ? ? ? DataTable table = DBHelper.GetDataTable(sql_13); ? ? ? ? ? ? ? ? for (int j = 0; j < table.Rows.Count; j++) ? ? ? ? ? ? ? ? { ? ? ? ? ? ? ? ? ? ? string FoodName = table.Rows[i]["FoodName"].ToString(); ? ? ? ? ? ? ? ? ? ? string FoodCount = table.Rows[i]["ShoppingCount"].ToString(); ? ? ? ? ? ? ? ? ? ? string ShoppingPrice = table.Rows[i]["ShoppingPrice"].ToString(); ? ? ? ? ? ? ? ? ? ? sw.Write(" {0}",FoodName); ? ? ? ? ? ? ? ? ? ? sw.Write(" ? ? ? ? ?x{0}", FoodCount); ? ? ? ? ? ? ? ? ? ? sw.WriteLine(" ? ? ? ? ? ? ? ? ? ? ? ? ? ?{0}",ShoppingPrice); ? ? ? ? ? ? ? ? } ? ? ? ? ? ? ? ? sw.WriteLine("-------------------------------------------"); ? ? ? ? ? ? ? ? string sum = "总计:"+piao.Rows[i]["ShoppingPrice"].ToString(); ? ? ? ? ? ? ? ? string c = "联系地址:"; ? ? ? ? ? ? ? ? string Address = "联系地址:"+piao.Rows[i]["Address"].ToString(); ? ? ? ? ? ? ? ? string User = "联系人:"+piao.Rows[i]["UserID"].ToString(); ? ? ? ? ? ? ? ? string tel = "联系电话:"+piao.Rows[i]["UserTel"].ToString(); ? ? ? ? ? ? ? ? sw.WriteLine(sum); ? ? ? ? ? ? ? ? sw.WriteLine(); ? ? ? ? ? ? ? ? sw.WriteLine(c); ? ? ? ? ? ? ? ? sw.WriteLine("-------------------------------------------"); ? ? ? ? ? ? ? ? sw.WriteLine(User); ? ? ? ? ? ? ? ? sw.WriteLine(tel); ? ? ? ? ? ? ? ? sw.WriteLine(Address); ? ? ? ? ? ? ? ? sw.Close(); ? ? ? ? ? ? }

我们的项目大概就这么多了,还有一些小功能没有详细介绍了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 设计一个简单的C#控制台应用程序,C#控制台程序,C# 创建控制台应用程序
  • 深入解析windows第8版,深入解析C#(第4版)
  • 数组代码,c# 数组操作,C# 数组实例介绍(图文)
  • 学会C#要多久,学会c#要多久,c#学习之30分钟学会XAML
  • 回溯法01背包问题c,回溯法求解01背包问题伪代码,C#使用回溯法解决背包问题实例分析
  • xml文件转义字符,xml转意字符,C# XML中的转义字符操作
  • winform 进度条控件,c# 进度条使用
  • winform 进度条控件,c# 进度条使用,C#使用winform实现进度条效果
  • winform backgroundworker,c# isbackground
  • winform backgroundworker,c# isbackground,C# BackgroundWorker用法详解
  • lua与c#交互,lua c#
  • lua与c#交互,lua c#,ToLua框架下C#与Lua代码的互调操作
  • linq c#,linq原理 c#
  • linq c#,linq原理 c#,c#中LINQ的基本用法实例
  • java decimal保留两位小数,sql中decimal函数保留2位小数,C#中decimal保留2位有效小数的实现方法
  • 留言与评论(共有 条评论)
       
    验证码: