《超市会员标准管理系统详细代码.doc》由会员分享,可在线阅读,更多相关《超市会员标准管理系统详细代码.doc(23页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据库设计1 系统数据库分析数据库设计是建立数据库及其应用系统技术,是系统开发和建设中核心技术。详细说,数据库设计是指对于一种给定应用环境,构造最优数据库模式,建立数据库及其应用系统,使之可以有效存储数据,满足各种顾客应用需求(信息规定和解决规定)。数据库构造设计好坏直接相应用系统效率以及实现效果产生影响。依照超市会员管理系统功能设计需要,数据库构造设计如下所示:(1). 顾客登录信息数据表(Login):(顾客账号,密码,登录身份);(2). 会员基本信息数据表(Member):(顾客账号,顾客姓名,身份证号,联系方式,联系地址);(3). 职工基本信息数据表(Employee):(职工号,
2、职工姓名,职工职位);(4). 会员积分信息数据表(Score):(会员账号,会员积分,会员级别,会员折扣);2 数据库概念构造设计依照上节数据项和数据构造后来,就可以设计出可以满足顾客需求各种实体,以及它们之间关系,为后来逻辑构造设计打下基本,这些实体涉及各种详细信息,通过互相之间作用形成数据流动。各种实体详细描述E-R图如下。1. 顾客登录信息实体图重要描述了登录顾客基本状况,涉及了顾客顾客账号,密码,登录身份。如图3-11所示,顾客登录信息实体E-R图。顾客登录*顾客账号密码登录身份图3-12 顾客登录实体E-R图2. 会员基本信息实体图重要描述会员基本状况,涉及了会员基本信息顾客账号,
3、顾客姓名,身份证号,联系方式,联系地址,得出如图3-12所示会员基本信息实体E-R图。会员基本信息*顾客账号顾客姓名身份证号联系方式联系地址图3-13 会员基本信息实体E-R图3. 职工基本信息实体图重要描述新生基本状况,涉及了职工基本信息职工号,职工姓名,职工职位,得出如图3-13所示职工基本信息实体E-R图。职工基本信息*职工号职工姓名职工职位图3-14 职工基本信息实体E-R图4. 会员积分信息实体图重要描述会员积分基本状况,涉及了会员积分基本信息会员账号,会员积分,会员级别,会员折扣,得出如图3-14所示会员积分信息实体E-R图。会员积分信息*会员账号会员积分会员级别会员折扣图3-15
4、 会员积分信息实体E-R图实体之间关系E-R图重要描述实体间关系。会员基本信息*顾客账号顾客姓名身份证号联系方式联系地址获得会员积分信息*会员账号会员积分会员级别会员折扣管理职工基本信息*职工号职工姓名职工职位111NN图3-16 各实体之间关系3.系统数据库设计依照需求分析与概念构造设计,建立数据库系统支持数据模型,即数据库逻辑构造。本系统运用Microsoft Access 创立了名为SuperMarket数据库。本系统重要建立了如下四张表:表3.1 顾客登录数据表字段名数据类型字段大小与否主键DNO(登陆账号)文本6是DCode(密码)文本12否DUserSta(登录身份)文本50否表3
5、.2 会员基本信息数据表字段名数据类型字段大小与否主键MNO(顾客账号)文本6是MName(顾客姓名)文本20否MID(身份证号)文本18否MTel(联系电话)文本50否MAdd(联系地址)文本50否表3.3 职工基本信息数据表字段名数据类型字段大小与否主键EID(职工号)文本6是EName(职工姓名)文本20否EStatus(职工职位)文本50否表3.4 会员积分信息数据表字段名数据类型字段大小与否主键MNO(会员账号)文本6是MScore(顾客积分)数字(double)否MGrade(顾客级别)数字(long)否MDiscount(顾客折扣)数字(double)否4. 表之间关系表之间存在
6、关系如下:1在会员基本信息表(Member)中添加信息同步,把信息添加到顾客登录信息表(Login)中,同步将信息添加到积分信息表(Score)中。2在会员基本信息表(Member)中删除会员信息同步,把顾客登录信息表(Login)和顾客积分信息(Score)中该会员信息删除。3在职工基本信息表(Member)中添加信息同步,将志愿基本信息添加到顾客登录信息表(Login)中。4在职工基本信息表(Member)中删除职工信息同步,把顾客登录信息表(Login)中该职工信息删除。详细设计与实现1. 系统首页图4-1 超市会员管理系统首页自定义工具栏按钮及鼠标提示信息设计与实现:图4-2 主页面工
7、具栏在对话框OnInitDialog办法中常用工具栏窗口和图像列表窗口,关联图像列表,设立工具栏按钮文本,启动工具栏EnableToolTip办法激活提示功能。鼠标提示信息实现,解决TTN_NEEDTEXT消息响应函数OnToolTipText(),通过函数参数获得工具栏按钮ID,从而依照ID获取提示信息文本。1. 添加消息映射(最佳写在AFX_MSG_MAP宏外,否则也许浮现编译错误)ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW,0,0xFFFF,OnToolTipText)ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTA,0,0xFFFF,OnToolT
8、ipText)2. 添加事件声明(最佳写在AFX_MSG宏外,否则也许浮现编译错误)afx_msg BOOL OnToolTipText(UINT nID,NMHDR* pNMHDR,LRESULT* pResult);2 登录页面系统运营后,一方面呈现给顾客是顾客登录界面,顾客登录成功后进入到主页面,顾客登录界面如下图所示:图4-3 顾客登录界面顾客登录有三种身份,管理员、普通职工、会员。管理员登录成功后,可以对系统各模块进行操作;普通职工登录成功后,除对职工添加、删除外,均可实现操作;会员,则只能对自己某些基本信息进行操作。登录界面由函数void CLoginDlg:OnOK()实现解决,
9、详细代码如下:/实现该功能SQL语句sql=select * from Login where DNO=+Name+ and DCode=+ECode+ and DUserSta=+EStatus+; m_pRs-Open(_bstr_t)sql,theApp.conn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);/登录成功与否、登录次数判断if ( m_pRs-GetRecordCount()=0 )if ( m_LoginNumadoEOF)CString temp;m_EList.InsertItem(1000,)
10、;for(int i=0;iGetFields()-GetItem(long)i)-Value;m_EList.SetItemText(row,i,temp);m_pRs-MoveNext();row+=1;4.3.2 会员密码修改此模块用于修改会员登录密码。图4-5 会员密码修改界面填入顾客账号和旧密码后,系统检查数据库中与否有该记录,如果存在该记录,则可填写新密码进行修改;若不存在,则系统给出提示信息。如下图:图4-6 会员密码修改提示信息界面该模块单击事件由函数void CECodeModifyDlg:OnOK()实现,详细代码如下:sql=Update Login set DCode=
11、+NewCode+ where DNO=+Name+;trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();AfxMessageBox(修改成功);4. 积分信息模块(1) 积分查询该功能实现界面如下:图4-7 积分查询界面输入会员账号后,点击拟定按钮,系统一方面检查账号与否存在,若存在则输出该会员积分信息;若不存在,输出提示信息。实现原理如会员信息模块中会员查询。实现函数为:void CJQueryDlg:OnOK()。在编辑框中显示实现为:va
12、r = m_pRs-GetCollect(MScore);if(var.vt != VT_NULL)str1 = (LPCSTR)_bstr_t(var);GetDlgItem(IDC_EDIT_Jifen)-SetWindowText(str1);var = m_pRs-GetCollect(MGrade);if(var.vt !=VT_NULL)str2=(LPCSTR)_bstr_t(var);GetDlgItem(IDC_EDIT_Grade)-SetWindowText(str2);var = m_pRs-GetCollect(MDiscount);if(var.vt !=VT_NU
13、LL)str3=(LPCSTR)_bstr_t(var);GetDlgItem(IDC_EDIT_Discout)-SetWindowText(str3);(2) 积分兑换积分兑换功能实现界面如下:图4-8 积分兑换功能实现界面顾客输入账号和密码后,点击兑换按钮,该按钮实现中,一方面检查顾客合法性。若顾客已兑换过积分,则提示及兑换;若积分不够兑换级别,则提示积分不够;若兑换成功后,则显示顾客级别和优惠折扣。该模块实现单击事件函数解决为:void CEXchangeDlg:OnOK(),详细实现如下:/修改数据库中积分sql=Update Score set MGrade=1,MDiscount
14、=0.1 where MNO=+mzh+;trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();AfxMessageBox(兑换成功);(3) 消费加分该模块功能将会员消费金额换为消费积分,如下图:图4-9 消费加分模块界面实现图输入顾客账号和消费金额后,一方面检查数据库中与否存在该记录,如果存在,则将该顾客积分增长其消费金额数目,如不存在,系统弹出提示信息。模块单击事件解决由函数void CXiaoFeiDlg:OnOK()实现,详细代码如下:s
15、ql=Update Score set MScore=MScore+JiE+ where MNO=+UserZH+;trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();AfxMessageBox(添加成功);(4) 优惠讯息该模块为静态功能。点击优惠讯息菜单即浮现超市积分优惠政策及兑换政策对话框。5 基本信息管理模块1) .职工信息管理(1). 查询基本信息 该模块功能实现基本与会员基本信息查询相似,在此不再赘述。实现该功能函数为:void CE
16、mployeeDlg:OnOK();实现该功能SQL语句为:sql=select * from Employee where EID=+EmpID+;(2). 修改职工信息该模块功能修改超市职工基本信息。函数实现:void CMIMDlg:OnOK()。其实现如下:GetDlgItem(IDC_EDIT1_EmpName)-GetWindowText(EXm);GetDlgItem(IDC_COMBO_EmpSta)-GetWindowText(EZw);if(EZw=管理员) EZw=0;else if(EZw=普通职工) EZw=1;sql=Update Employee set ENam
17、e=+EXm+,EStatus=+EZw+ where EID=+EMId+;trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();AfxMessageBox(修改成功);(3). 修改密码职工修改密码模块与会员密码修改类似,实现函数为:void CMModifyDlg:OnOK(),此处不再赘述。详细SQL语句实现为:sql=Update Login set DCode=+NewCode+ where DNO=+Name+;trytheApp.c
18、onn-Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();(4). 添加职工信息管理员进入系统后可以按照需求添加职工信息,该模块一方面检查输入与否为空,若不为空,则可以进行添加,此功能同步将信息添加到Login表和Employee表中,界面实现如图:图4-10 添加职工信息实现该事件函数为:void CEAddEmplyeeDlg:OnOK(),下面是添加职工信息详细实现: sql=Insert into Employee(EID,EName,EStatus) values
19、(+Eno+,+Ename+,+Esta+);SQL=Insert into Login(DNO,DCode,DUserSta) values(+Eno+,+Ecode+,+Esta+);trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);theApp.conn-Execute(_bstr_t)SQL,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();AfxMessageBox(添加成功); (5). 删除职工信息该模块只能由管理员进行操作,管理员成功登录后,可以
20、按照职工号删除职工信息,如图所示:图4-11 删除职工信息图在删除前,系统会给出提示,提示顾客与否拟定要删除。点击是,则将该记录从数据库中删除;点击否,则撤销删除行为。实现函数为void CDelEmpDlg:OnOK(),代码如下:if(MessageBox(拟定要删除该记录吗?,提示,MB_YESNO)=IDYES)sql=delete from Employee where EID=+EmpNO+;SQL=delete from Login where DNO=+EmpNO+;trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);theAp
21、p.conn-Execute(_bstr_t)SQL,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Description();AfxMessageBox(删除成功);2 会员信息管理会员信息管理涉及会员信息查询、会员信息修改、会员注册、会员删除四个模块,功能实现同职工信息管理模块中响应功能。实现函数分别为:void CMemberDlg:OnOK()、void CModifyMemDlg:OnBUTTONModify()、void CMemAddDlg:OnOK()、void CModifyMemDlg:OnBUTTONDel()。此
22、处以会员信息修改和删除为例,其她功能实现略写。图4-12 会员信息修改图中,灰色编辑框表达不可改。如果要修改信息则填入要修改值,点击“拟定修改”,即可修改成功;如果要删除该条记录,则点击“拟定删除”,系统会提示,与否真删除,若是,则从数据库表中将该记录删除,若否,则退出删除。此处实现有关SQL语句为:/修改sql=Update Member set MName=+UserName+,MTel=+UserTel+,MAdd=+UserAdd+ where MNO=+UserNO+;trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);catch(_
23、com_error &e)AfxMessageBox(e.Description();AfxMessageBox(修改成功);/删除if(MessageBox(拟定要删除该记录吗?,提示,MB_YESNO)=IDYES)sql=delete from Member where MNO=+UserNO+;SQL=delete from Login where DNO=+UserNO+;trytheApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);theApp.conn-Execute(_bstr_t)SQL,NULL,adCmdText);catch(_c
24、om_error &e)AfxMessageBox(e.Description();AfxMessageBox(删除成功);6 记录记录模块是对超市会员积分进行记录,可以记录出各登记人数及所占比例,并以柱形图形式显示出来。图4-13 记录分析功能实现图实现该功能函数为:void CStatDlg:OnOK()详细实现:(1) 打开记录集,获得各级别人数;(2) 绘制柱形图/获取静态图片空间大小CWnd * pWnd=this-GetDlgItem(IDC_DRAW); pWnd-GetClientRect(&rectPic);/ 获取设备环境指针CDC *pDC=pWnd-GetDC();/
25、重新填充静态图片区域CBrush NewBrush;NewBrush.CreateSolidBrush(RGB(238,238,237);CBrush * pOldBrush=pDC-SelectObject(&NewBrush);pDC-Rectangle(&rectPic);pDC-SelectObject(pOldBrush);/ 拟定每个柱形条宽度int nLength=(rectPic.right-rectPic.left)/6;/ 定义五种颜色,用来填充柱形图COLORREF RGBArray6=RGB(0,255,0),RGB(128,0,255),RGB(0,0,255),RG
26、B(255,255,0),RGB(255,0,0),RGB(0,128,255);/ 定义一种矩形,表达柱形条CRect rect;for ( int i=0;iSelectObject(&NewBrush);pDC-Rectangle(&rect);pDC-SelectObject(pOldBrush);/ 释放设备环境this-ReleaseDC(pDC);7 系统信息1 顾客协助系统调用协助文献Market-Help.chm,对于不熟悉本系统顾客可以通过阅读协助文献理解系统如何使用。点击顾客协助菜单或协助工具栏按钮后,即打开协助文献,如图所示:图4-14 顾客协助功能实现图详细实现为:v
27、oid CCMarketDlg:OnMENUHelp() char bufMAX_PATH;:GetCurrentDirectory(MAX_PATH,buf);/获取程序根目录途径:ShellExecute(NULL,open,Market-Help.chm,SW_SHOW);2 关于本系统详细实现:void CCMarketDlg:OnMENUAbout() CDialog about(IDD_ABOUTBOX);about.DoModal();8 退出系统详细实现:void CCMarketDlg:OnMENUQuit() theApp.conn-Close();/关闭数据库EndDia
28、log(0);9 数据库连接设计与实现(1)初始化COM库,引入ADO库定义文献 一方面在stdafx.h中用#import指令引入ADO类型库#import c:program filescommon filessystemadomsado15.dllno_namespacerename(EOF,adoEOF)然后使用AfxOleInit()来初始化COM库。(2)用Connection对象连接数据库strConn.Format(_T(Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s),SuperMarket.mdb);/依照参数构造连接字符串c
29、onn-Open(_bstr_t)strConn,adModeUnknown);/打开数据库(3)运用建立好连接,通过Connection、Command对象执行SQL命令,或运用Recordset对象获得成果记录集进行查询、解决。_RecordsetPtr m_pRs;m_pRs.CreateInstance(_uuidof(Recordset);m_pRs-Open(_bstr_t)sql,theApp.conn.GetInterfacePtr(),adOpenKeyset,adLockOptimistic,adCmdText);/打开记录集theApp.conn-Execute(_bstr_t)sql,NULL,adCmdText);/执行sql(4)使用完毕后关闭连接释放对象。m_pRs-Close();/关闭记录集 conn-Close();/关闭连接