这篇文章主要为大家详细介绍了C#实现简单的点餐系统,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文项目为大家分享了C#实现点餐系统,供大家参考,具体内容如下
项目介绍:一家店铺使用的外卖点餐系统
本项目分三大模块:登录注册模块,用户模块,店家模块
1.登录注册模块
登录分为用户登录和管理员登录(店家),管理员有且只有一个账号可以登录。用户登录需要先注册,注册必须用手机号注册。
登录界面效果图
登录主要就是判断,多加些判断就行了
登录代码展示:
#region 窗体效果
public class Win32
{
public const Int32 AW_HOR_POSITIVE = 0x00000001; // 从左到右打开窗口
public const Int32 AW_HOR_NEGATIVE = 0x00000002; // 从右到左打开窗口
public const Int32 AW_VER_POSITIVE = 0x00000004; // 从上到下打开窗口
public const Int32 AW_VER_NEGATIVE = 0x00000008; // 从下到上打开窗口
public const Int32 AW_CENTER = 0x00000010; //若使用了AW_HIDE标志,则使窗口向内重叠;若未使用AW_HIDE标志,则使窗口向外扩展。
public const Int32 AW_HIDE = 0x00010000; //隐藏窗口,缺省则显示窗口。
public const Int32 AW_ACTIVATE = 0x00020000; //激活窗口。在使用了AW_HIDE标志后不要使用这个标志。
public const Int32 AW_SLIDE = 0x00040000; //使用滑动类型。缺省则为滚动动画类型。当使用AW_CENTER标志时,这个标志就被忽略。
public const Int32 AW_BLEND = 0x00080000; //使用淡出效果。只有当hWnd为顶层窗口的时候才可以使用此标志。
[DllImport("user32.dll", CharSet = CharSet.Auto)]
public static extern bool AnimateWindow(
IntPtr hwnd, // handle to window
int dwTime, // duration of animation
int dwFlags // animation type
);
}
#endregion
ValidCode validCode = new ValidCode(5, ValidCode.CodeType.Numbers);//实例化这个对象
//窗体加载
private void Login_Load(object sender, EventArgs e)
{
picValidCode.Image = Bitmap.FromStream(validCode.CreateCheckCodeImage());//点击图片更换验证码
Win32.AnimateWindow(this.Handle,500, Win32.AW_VER_POSITIVE);//窗体出现效果
}
//验证码图片
private void picValidCode_Click(object sender, EventArgs e)
{
picValidCode.Image = Bitmap.FromStream(validCode.CreateCheckCodeImage());//点击图片更换验证码
}
//注册
private void linkLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Enroll EN = new Enroll();
this.Hide();
EN.ShowDialog();
Application.ExitThread();
}
//登录按钮
private void LoginButton_Click(object sender, EventArgs e)
{
Saveusername.name = Username.Text;
string sql = string.Format("select * from UserList where UserID='{0}'and UserPassword='{1} '", Username.Text, password.Text);
SqlDataReader reader = DBHelper.GetDataReader(sql);
if (Username.Text == "")
{
MessageBox.Show("请输入用户名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (password.Text == "")
{
MessageBox.Show("请输入密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else if (!this.txtValidCode.Text.Equals(validCode.CheckCode))//验证是否输入正确
{
MessageBox.Show(" 请输入正确的验证码!", this.Text);
this.txtValidCode.Focus();
this.txtValidCode.Text = "";
reader.Close();
return;
}
else if (reader.Read())
{
Saveusername.ID = reader["ID"].ToString();//获取ID用于个人中心修改信息
reader.Close();
if (Saveusername.name=="Sweet")
{
管理员界面.GLY gLY = new 管理员界面.GLY();
this.Hide();
gLY.ShowDialog();
Application.ExitThread();
}
XMB xMB = new XMB();
this.Hide();
xMB.ShowDialog();
Application.ExitThread();
}
else
{
MessageBox.Show("用户名或密码输入错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
reader.Close();
picValidCode.Image = Bitmap.FromStream(validCode.CreateCheckCodeImage());//点击图片更换验证码
}
//忘记密码
private void linkLabel1_LinkClicked_1(object sender, LinkLabelLinkClickedEventArgs e)
{
ForgetPwd forget = new ForgetPwd();
this.Hide();
forget.ShowDialog();
Application.ExitThread();
}
#region 用于窗体移动
private Point mPoint;//定义一个位置信息Point用于存储鼠标位置
private void Login_MouseDown(object sender, MouseEventArgs e)
{
mPoint = new Point(e.X, e.Y);
}
private void Login_MouseMove(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);
}
}
#endregion
private void Login_FormClosed(object sender, FormClosedEventArgs e)
{
Win32.AnimateWindow(this.Handle, 500, Win32.AW_BLEND|Win32.AW_HIDE);
}
private void pictureBox3_Click(object sender, EventArgs e)
{
this.Close();
}
private void pictureBox4_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;//最小化
}
图片验证码代码展示:
public class ValidCode
{
#region Private Fields
private const double PI = 3.1415926535897932384626433832795;
private const double PI2 = 6.283185307179586476925286766559;
//private readonly int _wordsLen = 4;
private int _len;
private CodeType _codetype;
private readonly Single _jianju = (float)18.0;
private readonly Single _height = (float)24.0;
private string _checkCode;
#endregion
#region Public Property
public string CheckCode
{
get
{
return _checkCode;
}
}
#endregion
#region Constructors
/// <summary>
/// public constructors
/// </summary>
/// <param name="len"> 验证码长度 </param>
/// <param name="ctype"> 验证码类型:字母、数字、字母+ 数字 </param>
public ValidCode(int len, CodeType ctype)
{
this._len = len;
this._codetype = ctype;
}
#endregion
#region Public Field
public enum CodeType { Words, Numbers, Characters, Alphas }
#endregion
#region Private Methods
private string GenerateNumbers()
{
string strOut = "";
System.Random random = new Random();
for (int i = 0; i < _len; i++)
{
string num = Convert.ToString(random.Next(10000) % 10);
strOut += num;
}
return strOut.Trim();
}
private string GenerateCharacters()
{
string strOut = "";
System.Random random = new Random();
for (int i = 0; i < _len; i++)
{
string num = Convert.ToString((char)(65 + random.Next(10000) % 26));
strOut += num;
}
return strOut.Trim();
}
//
private string GenerateAlphas()
{
string strOut = "";
string num = "";
System.Random random = new Random();
for (int i = 0; i < _len; i++)
{
if (random.Next(500) % 2 == 0)
{
num = Convert.ToString(random.Next(10000) % 10);
}
else
{
num = Convert.ToString((char)(65 + random.Next(10000) % 26));
}
strOut += num;
}
return strOut.Trim();
}
private System.Drawing.Bitmap TwistImage(Bitmap srcBmp, bool bXDir, double dMultValue, double dPhase)
{
System.Drawing.Bitmap destBmp = new Bitmap(srcBmp.Width, srcBmp.Height);
// 将位图背景填充为白色
System.Drawing.Graphics graph = System.Drawing.Graphics.FromImage(destBmp);
graph.FillRectangle(new SolidBrush(System.Drawing.Color.White), 0, 0, destBmp.Width, destBmp.Height);
graph.Dispose();
double dBaseAxisLen = bXDir ? (double)destBmp.Height : (double)destBmp.Width;
for (int i = 0; i < destBmp.Width; i++)
{
for (int j = 0; j < destBmp.Height; j++)
{
double dx = 0;
dx = bXDir ? (PI2 * (double)j) / dBaseAxisLen : (PI2 * (double)i) / dBaseAxisLen;
dx += dPhase;
double dy = Math.Sin(dx);
// 取得当前点的颜色
int nOldX = 0, nOldY = 0;
nOldX = bXDir ? i + (int)(dy * dMultValue) : i;
nOldY = bXDir ? j : j + (int)(dy * dMultValue);
System.Drawing.Color color = srcBmp.GetPixel(i, j);
if (nOldX >= 0 && nOldX < destBmp.Width
&& nOldY >= 0 && nOldY < destBmp.Height)
{
destBmp.SetPixel(nOldX, nOldY, color);
}
}
}
return destBmp;
}
#endregion
#region Public Methods
public Stream CreateCheckCodeImage()
{
string checkCode;
switch (_codetype)
{
case CodeType.Alphas:
checkCode = GenerateAlphas();
break;
case CodeType.Numbers:
checkCode = GenerateNumbers();
break;
case CodeType.Characters:
checkCode = GenerateCharacters();
break;
default:
checkCode = GenerateAlphas();
break;
}
this._checkCode = checkCode;
MemoryStream ms = null;
//
if (checkCode == null || checkCode.Trim() == String.Empty)
return null;
Bitmap image = new System.Drawing.Bitmap((int)Math.Ceiling((checkCode.Length * _jianju)), (int)_height);
Graphics g = Graphics.FromImage(image);
try
{
Random random = new Random();
g.Clear(Color.White);
// 画图片的背景噪音线
for (int i = 0; i < 18; i++)
{
int x1 = random.Next(image.Width);
int x2 = random.Next(image.Width);
int y1 = random.Next(image.Height);
int y2 = random.Next(image.Height);
g.DrawLine(new Pen(Color.FromArgb(random.Next()), 1), x1, y1, x2, y2);
}
Font font = new System.Drawing.Font("Times New Roman", 14, System.Drawing.FontStyle.Bold);
LinearGradientBrush brush = new LinearGradientBrush(new Rectangle(0, 0, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2f, true);
if (_codetype != CodeType.Words)
{
for (int i = 0; i < checkCode.Length; i++)
{
g.DrawString(checkCode.Substring(i, 1), font, brush, 2 + i * _jianju, 1);
}
}
else
{
g.DrawString(checkCode, font, brush, 2, 2);
}
// 画图片的前景噪音点
for (int i = 0; i < 150; i++)
{
int x = random.Next(image.Width);
int y = random.Next(image.Height);
image.SetPixel(x, y, Color.FromArgb(random.Next()));
}
// 画图片的波形滤镜效果
if (_codetype != CodeType.Words)
{
image = TwistImage(image, true, 3, 1);
}
// 画图片的边框线
g.DrawRectangle(new Pen(Color.Silver), 0, 0, image.Width - 1, image.Height - 1);
ms = new System.IO.MemoryStream();
image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
}
finally
{
g.Dispose();
image.Dispose();
}
return ms;
}
#endregion
注册界面效果图
注册界面代码展示
短信验证码,用接口就能实现
TimeSpan dtTo = new TimeSpan(0, 0, 60);//设置计时器的开始时间
int value;//用来存储随机数
public Enroll()
{
InitializeComponent();
}
//获取短信验证码
private void CodeButton_Click(object sender, EventArgs e)
{
Regex rx = new Regex(@"^0{0,1}(13[0-9]|15[0-9]|15[0-9]|18[0-9]|17[0-9])[0-9]{8}$");
if (!rx.IsMatch(EnrollTel.Text))
{
EnrollTel.Text = "";
MessageBox.Show("手机号格式不正确,请重新输入", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
}
else
{
Random rad = new Random();//实例化随机数产生器rad;
value = rad.Next(1000, 10000);//用rad生成大于等于1000,小于等于9999的随机数;
Note.NoTe(EnrollTel.Text, value);
timer1.Start();
dtTo = new TimeSpan(0, 0, 60);
}
}
//时间控件用来实现60秒倒计时
private void timer1_Tick_1(object sender, EventArgs e)
{
CodeButton.Enabled = false;
dtTo = dtTo.Subtract(new TimeSpan(0, 0, 1));//每隔一秒减一
CodeButton.Text = "(" + dtTo.Seconds.ToString() + ")" + "重新获取";
if (dtTo.TotalSeconds == 0.0)//当倒计时完毕
{
this.CodeButton.Enabled = true;
CodeButton.Text = "点击获取验证码";
this.timer1.Stop();
timer1.Dispose();
}
}
//注册按钮
private void FinishButton_Click(object sender, EventArgs e)
{
bool Bool = Fac();
if (Bool)
{
string type = "普通用户";
string sex = "";
if (RadioMan.Checked)//判断单选按钮的text
{
sex = RadioMan.Text;
}
else if (RadioWoman.Checked)
{
sex = RadioWoman.Text;
}
string sql = string.Format("insert into UserList values('{0}','{1}','{2}','{3}','{4}','{5}')", EnrollUser.Text, EnrollPwd.Text, sex, EnrollTel.Text, EnrollAddress.Text, type);
bool sqlinsert = DBHelper.ExecuteNonQuery(sql);
if (sqlinsert)
{
DialogResult result = MessageBox.Show("注册成功!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Question);
this.Hide();
Login LG = new Login();
LG.ShowDialog();
}
}
else
{
return;
}
}
/// <summary>
/// 用于注册界面里格式的判断
/// </summary>
/// <returns></returns>
private bool Fac()
{
string sql = string.Format("select * from UserList where UserID='{0}'", EnrollUser.Text);
SqlDataReader reader = DBHelper.GetDataReader(sql);
if (EnrollUser.Text == "")
{
MessageBox.Show("用户名不能为空!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
reader.Close();
return false;
}
else if (EnrollPwd.Text == "")
{
MessageBox.Show("请输入密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
reader.Close();
return false;
}
else if (EnrollPwd.Text != EnrollPwdY.Text)
{
MessageBox.Show("两次密码必须一样!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
reader.Close();
return false;
}
else if (EnrollTel.Text == "")
{
MessageBox.Show("请输入手机号!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
reader.Close();
return false;
}
else if (EtxtValidCode.Text == "")
{
MessageBox.Show("请输入验证码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
reader.Close();
return false;
}
else if (int.Parse(EtxtValidCode.Text) != value)
{
MessageBox.Show("请输入正确的验证码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Asterisk);
reader.Close();
return false;
}
else if (reader.Read())
{
DialogResult result = MessageBox.Show("此用户已存在,是否前往登录?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
if (result == DialogResult.Yes)
{
Login LG = new Login();
LG.ShowDialog();
reader.Close();
this.Close();
return false;
}
else
{
reader.Close();
return false;
}
}
else
{
reader.Close();
return true;
}
}
//窗体加载事件
private void Enroll_Load(object sender, EventArgs e)
{
CodeButton.Text = "点击获取验证码";
timer1.Interval = 1000;//设置每次间隔一秒
}
忘记密码界面效果图
下面为用户界面的展示
简单介绍一下:由于菜品是有很多的而且不确定数量,所以必须动态加载,不能拖图片控件等。
用户功能实现思路:首先要知道每个用户只能看自己的,所以在登录时候就必须用一个东西接收用户输入的名字,以便在主界面显示出与该用户相匹配的数据。
购物车界面
购物车首先要有一个购物车表用来存储用户添加的商品,当用户结账以后,购物车表中该用户的信息就应全部清除。然后为该用户生成订单(存入信息到订单表),并将用户购买的商品存入订单详情表中。
动态加载菜品代码展示
private void XMB_Load(object sender, EventArgs e)
{
/*SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true); // 禁止擦除背景.
SetStyle(ControlStyles.DoubleBuffer, true); // 双缓冲*/
linke_热菜.LinkColor = Color.Gray;
Win32.AnimateWindow(this.Handle, 500, Win32.AW_CENTER);//窗体出现效果
Order_pl.Visible = false;
Or_panel1.Visible = false;//隐藏订单控件
menu_all_全部.AutoScroll = true;//添加滚动条
this.toolStripStatusLabel1.Font = new Font("微软雅黑", 12, FontStyle.Bold);
toolStripStatusLabel1.Text = string.Format("欢迎“{0}”使用Sweet点餐系统! ", Saveusername.name);
this.timer2.Start();
string sql = "select * from Food_table";
DataSet ds = DBHelper.GetDataSet(sql);
int xx = 0;
int yy = 0;
for (int i = 0; i < ds.Tables[0].Rows.Count; i++)
{
Label FoodName = new Label();
Label FoodPrice = new Label();
PictureBox picture = new PictureBox();
Button button = new Button();//创建控件
FoodName.Name = "FoodName_" + i;
FoodPrice.Name = "FoodPrice_" + i;
picture.Name = "picture_" + i;
button.Name = ds.Tables[0].Rows[i]["FoodID"].ToString();//加入购物车按钮命名为菜品表的FoodID
FoodName.Text = ds.Tables[0].Rows[i]["FoodName"].ToString();
FoodPrice.Text = "¥" + ds.Tables[0].Rows[i]["FoodPrice"].ToString() + "/份";//控件text属性赋值
button.Text = "加入购物车";
FoodName.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);
/
本文标题为:C#实现简单的点餐系统
基础教程推荐
- C#类和结构详解 2023-05-30
- C# List实现行转列的通用方案 2022-11-02
- C#控制台实现飞行棋小游戏 2023-04-22
- 一个读写csv文件的C#类 2022-11-06
- C# windows语音识别与朗读实例 2023-04-27
- ZooKeeper的安装及部署教程 2023-01-22
- C# 调用WebService的方法 2023-03-09
- linux – 如何在Debian Jessie中安装dotnet core sdk 2023-09-26
- unity实现动态排行榜 2023-04-27
- winform把Office转成PDF文件 2023-06-14