好得很程序员自学网

<tfoot draggable='sEl'></tfoot>

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); ? ? ? ? ? ? ? ? ? ? ? ? //} ? ? ? ? ? ? ? ? ? ? ? ?/* 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(); ? ? ? ? ? ? }

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

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

查看更多关于C#实现简单的点餐系统的详细内容...

  阅读:52次