超市会员管理系统课程设计报告.docx
兰州商学院陇桥学院 信息工程系课程设计报告课 程 名 称: C#课程设计 设 计 题 目:超市会员管理系统 系 别:信息工程系 专 业 (方 向):计算机科学与技术(网络工程方向) 年 级、 班:2012级本科班 学 生 姓 名:XXX 学 生 学 号:XXXXXXXX 本 组 组 员:XXXXXXXXXXXXXXXX 指 导 教 师:杨 光 2014 年 12 月 26日目录一、系统开发的背景1二、系统分析与设计1(一)系统功能要求1(二)系统模块结构设计1三、系统的设计与实现2(一)登陆2(二)会员信息5(三)会员管理8(1) 会员管理9(2)购物信息管理17(四)信息统计18(五)系统管理21四、系统测试23(一)测试登陆模块23(二)会员信息模块23(三)会员管理模块24(四)信息统计模块25(五)系统管理模块27五、总结27六、附件(代码、部分图表)281、源代码282、图表47超市会员管理系统一、系统开发的背景社会生活的现代化,使得市场的走向发生巨大变化,由于经济的发展,许多大型的现代化超市应运而生。现在超市吸引顾客最普遍的做法就是实行会员制,超市的会员可以享受不同程度的优惠,从而达到吸引顾客,刺激消费的目的。建立实用的超市会员管理系统对超市的会员管理有很大的帮助,可以协助工作人员进行会员的信息登记、更新。因此,为了优化超市会员制度的计算机管理,编写了此系统。二、系统分析与设计(一) 系统功能要求超市会员管理系统应具备以下功能:1、加入会员的基本信息,包括:成为会员的基本条件、优惠政策、优惠时间等。2、会员的基本信息,包括姓名、性别、年龄、工作单位、联系方式等。3、会员购物信息:购买物品编号、物品名称、所属种类,数量,价格等。4、会员返利信息,包括会员积分的情况,享受优惠的等级等。5、对货物流量及消费人群进行统计输出。(二) 系统模块结构设计通过对系统功能的分析,学生综合测评系统功能如图1所示。图1 超市会员管理系统功能图通过上图的功能分析,把整个系统划分为4个模块:1、会员信息,该模块主要实现:会员基本信息(会员编号、会员卡号、姓名、性别、年龄、会员等级、当前积分、联系方式)的输出;2、会员管理,该模块主要实现:会员管理(会员的查询、删除、修改和添加)信息,购物信息管理(通过输入会员编号来查询会员的购物信息);3、信息统计,该模块主要实现:物品流量统计(通过柱状图来显示物品的消费情况),消费人群统计(通过柱状图来统计人群的消费情况);4、系统管理,该模块主要实现:对用户名和密码的修改,能够更好的管理超市会员管理系统。三、系统的设计与实现(一) 登陆流程图如下图所示:图2登陆界面流程图该模块的具体代码如下所示。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Linq;using System.Windows.Forms;using DevExpress.XtraEditors;namespace 超市会员管理系统 public partial class LoginForm : DevExpress.XtraEditors.XtraForm public LoginForm() InitializeComponent(); bool formMove = false; Point formPoint; #region 登陆按钮实现用户名、密码的验证 private void btnOK_Click(object sender, EventArgs e) if (Login.Login.isEnable(txtUserName.Text.Trim(), txtPassword.Text.Trim() MainForm form = new MainForm(); form.Visible = true; this.Visible = false; else lblShow.Text = "输入有误请重新输入! txtUserName.Clear(); txtPassword.Clear(); txtUserName.Focus(); #endregion #region 退出程序 private void pictureBox2_Click(object sender, EventArgs e) Application.Exit(); #endregion #region 登录界面的移动 private void pictureBox1_MouseMove(object sender, MouseEventArgs e) if (formMove = true) Point mousePos = Control.MousePosition; mousePos.Offset(formPoint.X, formPoint.Y); Location = mousePos; private void pictureBox1_MouseDown(object sender, MouseEventArgs e) formPoint = new Point(); int xOffset; int yOffset; if (e.Button = MouseButtons.Left) xOffset = -e.X - SystemInformation.FrameBorderSize.Width; yOffset = -e.Y - SystemInformation.CaptionHeight - SystemInformation.FrameBorderSize.Height; formPoint = new Point(xOffset, yOffset); formMove = true; private void pictureBox1_MouseUp(object sender, MouseEventArgs e) if (e.Button = MouseButtons.Left) formMove = false; #endregion #region登陆界面加载,连接数据库 private void LoginForm_Load(object sender, EventArgs e) Login.Login.linkDataBase(); #endregion (二) 会员信息该模块的流程图如下图所示:图3会员信息流程图该模块的具体代码如下所示。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System.Text;using System.Linq;using System.Windows.Forms;using DevExpress.XtraEditors;using DBHelper;using System.Data.SqlClient;namespace 超市会员管理系统 public partial class MemberMessageForm : DevExpress.XtraEditors.XtraForm public MemberMessageForm() InitializeComponent(); #region 全局变量 DataSet dataSet = MainForm.dataSet; DBhelper dbHelper = MainForm.dbhelper; String dataDir; String strMemberCardNo; #endregion #region 按会员卡卡号查询信息 private void simpleButton1_Click(object sender, EventArgs e) #region 获取当前项的根目录路径 dataDir = dbHelper.getCurrentDataPath(); #endregion strMemberCardNo = txtMessg.Text.Trim(); if (string.IsNullOrEmpty(strMemberCardNo) MessageBox.Show("请输入会员卡号", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; try #region 定向临时数据库中的表主键 DataTable dt = dbHelper.getDataTable("MemberMssg", "会员卡编号"); #endregion #region指向临时数据库中的指定的值得行 DataRow dr = dbHelper.getDataRow(dt, strMemberCardNo); #endregion #region 将临时数据库中的表的值返回到界面中 updataForm(dr); #endregion catch (Exception ex) MessageBox.Show(ex.StackTrace); #endregion #region更新界面面板信息 private void updataForm(DataRow dr) #region 更新基本信息界面 if (dr = null) MessageBox.Show("无该项数据记录", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; txtMemberAge.Text = dr"年龄".ToString(); txtMemberCard.Text = dr"会员卡编号.ToString(); txtMemberGrade.Text = dr"会员等级.ToString(); txtMemberName.Text = dr"姓名".ToString(); txtMemberNo.Text = dr"会员编号.ToString(); txtMemberSex.Text = dr"性别".ToString(); txtMemberPhone.Text = dr"联系方式".ToString(); txtUnit.Text = dr"工作单位".ToString(); txtCurrentIntegral.Text = dr"现有积分.ToString(); txtEndDate.Text = dr"终止日期.ToString(); try memberPirecture.Image = Image.FromFile(dataDir+string.Format("picture0.jpg", dr"头像.ToString(); catch (Exception ex) memberPirecture.Image = Image.FromFile(dataDir+string.Format("picturedefault.png"); #endregion #region 更新消费界面板 dataSet.Tables"GoodsMssg".DefaultView.RowFilter = String.Format("会员卡编号='0'", strMemberCardNo); dataGridView1.DataSource = dataSet.Tables"GoodsMssg".DefaultView; dataGridView1.AutoSize = true; dataGridView1.Visible = true; #endregion #endregion (三) 会员管理该模块的流程图如下图所示:图4会员管理流程图(1) 会员管理该模块的具体代码如下所示。namespace 超市会员管理系统 public partial class MemberManageForm : DevExpress.XtraEditors.XtraForm public MemberManageForm() InitializeComponent(); #region全局变量 DataSet dataSet = MainForm.dataSet; DBhelper dbHelper = MainForm.dbhelper; SqlDataAdapter sda = null; DataRow dr; DataRow drs; String dataDir; Boolean isDataBindings = false; Boolean changeState = false; Boolean deleteState = false; Boolean addState = false; #endregion #region 显示指定信息到预览界面 private void btnOK_Click(object sender, EventArgs e) sda = dbHelper.getDataAdapter(); String txtMessg = null; String condition = null; #region 获取搜索条件值 try txtMessg = txtMssg.Text.Trim(); condition = comboBox1.SelectedItem.ToString().Trim(); if (string.IsNullOrEmpty(txtMessg) && string.IsNullOrEmpty(condition) throw new Exception(); catch (Exception ex) MessageBox.Show("请输入信息", "", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; dataDir = dbHelper.getCurrentDataPath(); #endregion #region 条件查询 Boolean flag = getDataRow(condition, txtMessg); #endregion #region 界面信息更新 if (flag = true) updataForm(); #endregion #endregion #region 按钮单击操作 private void comboBox1_SelectedValueChanged(object sender, EventArgs e) txtMssg.EditValue = " " private void btnAdd_Click(object sender, EventArgs e) if (btnAdd.Text = "确定") btnChange(); if (addState = true) #region 向DataSet中D的Ì?DataTable追加一行记录 DataRow newDataRow = dataSet.Tables"MemberMssg".NewRow(); try newDataRow"会员编号" = txtMemberNo.Text.ToString(); newDataRow"姓名" = txtMemberName.Text.ToString(); newDataRow"年龄" = Convert.ToInt32(txtMemberAge.Text); newDataRow"性别" = txtMemberSex.Text.ToString(); newDataRow"联系方式" = txtMemberPhone.Text.ToString(); newDataRow"工作单位" = txtUnit.Text.ToString(); newDataRow"起始日期" = DateTime.Now; newDataRow"终止日期" = dateTimePicker1.Text; newDataRow"积分类型" = " " newDataRow"现有积分 = Convert.ToInt32(txtCurrentIntegral.Text); newDataRow"会员卡编号" = txtMemberCard.Text.ToString(); newDataRow"会员等级" = txtMemberGrade.Text.ToString(); dataSet.Tables"MemberMssg".Rows.Add(newDataRow); catch (Exception ex) MessageBox.Show("添加记录失败!n"); return; dataSet.AcceptChanges(); dbHelper.addDataBase(newDataRow); MessageBox.Show("添加纪录成功!"); #endregion else if (changeState = true) #region 对dataset中的表进行修改 dataSet.AcceptChanges(); MessageBox.Show(" 修改记录成功!"); #endregion else if (deleteState = true) #region 删除ydataset中的表的指定记录 String deleteMemNo = txtMemberCard.Text.Trim(); try DataColumn primaryKey = new DataColumn dataSet.Tables"MemberMssg".Columns"会员卡编号" ; dataSet.Tables"MemberMssg".PrimaryKey = primaryKey dataSet.Tables"MemberMssg".Rows.Remove(dataSet.Tables"MemberMssg".Rows.Find(deleteMemNo); catch (Exception ex) MessageBox.Show("数据记录删除失败,无该记录!"); return; try DataColumn primaryKey = new DataColumn dataSet.Tables"GoodsMssg".Columns"购物编号" ; dataSet.Tables"GoodsMssg".PrimaryKey = primaryKey; for (int i = 0; i < dataSet.Tables"GoodsMssg".Rows.Count; i+) dataSet.Tables"GoodsMssg".Rows.Remove(dataSet.Tables"GoodsMssg".Rows.Find(deleteMemNo); catch (Exception ex) ; MessageBox.Show(" 删除记录成功!"); dbHelper.deleteDataBase(deleteMemNo); #endregion addState = false; changeState = false; deleteState = false; removeBindingData(); else btnChange(); addState = true; #region 清空groupbox中DtextBox中的值 foreach (Control conl in groupControl2.Controls) if (conl is TextBox) (conl as TextBox).Clear(); #region 获取主键的最大值并加称为新添加的主键 DataRow drs = null; try / drs = dataSet.Tables"MemberMssg".Select("1=1", dataSet.Tables"MemberMssg".Columns"会员编号".ColumnName + " DESC "); catch (Exception ex) MessageBox.Show(ex.StackTrace); txtMemberNo.Text = (Convert.ToInt32(drs0"会员编号") + 1).ToString(); try drs = dataSet.Tables"MemberMssg".Select("1=1", dataSet.Tables"MemberMssg".Columns"会员卡编号".ColumnName + " DESC "); catch (Exception ex) MessageBox.Show(ex.StackTrace); txtMemberCard.Text = (Convert.ToInt32(drs0"会¨¢员¡À卡¡§编À¨¤号?") + 1).ToString(); #endregion foreach (Control conl in groupControl3.Controls) if (conl is TextBox) (conl as TextBox).Clear(); txtMemberNo.Enabled = true; txtMemberCard.Enable