资源描述
兰州商学院陇桥学院
信息工程系课程设计报告
课 程 名 称: 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
六、附件(代码、部分图表) 28
1、源代码 28
2、图表 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(@"\picture\{0}.jpg", dr["头像.ToString()));
}
catch (Exception ex)
{
memberPirecture.Image = Image.FromFile((dataDir+string.Format(@"\picture\default.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(drs[0]["会员编号"]) + 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(drs[0]["会¨¢员¡À卡¡§编À¨¤号?"]) + 1).ToString();
#endregion
foreach (Control conl in groupControl3.Controls)
{
if (conl is TextBox)
{
(conl as TextBox).Clear();
}
}
txtMemberNo.Enabled = true;
txtMemberCard.En
展开阅读全文