超市会员管理系统详细代码_第1页
超市会员管理系统详细代码_第2页
超市会员管理系统详细代码_第3页
已阅读5页,还剩17页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据库设计1系统数据库分析数据库设计是建立数据库及其应用系统的技术,是系统开发和建设中的核心技术。具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效的存储数据,满足各种用户的应用 需求(信息要求和处理要求)。数据库结构设计的好坏直接对应用系统的效率以及 实现的效果产生影响。根据超市会员管理系统功能设计的需要,数据库结构设计如下所示:(1) .用户登录信息数据表(Login):(用户账号,密码,登录身份);(2) .会员基本信息数据表(Member):(用户账号,用户姓名,身份证号,联 系方式,联系地址);(3) .职员基本信息数据表(Emp

2、loyee):(职员号,职员姓名,职员职位);(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会员积分信息实体的E-R图实体之间的关系E-R图主要描述实体间的关系

4、*用户账号:职员姓名职员基本信息:职员职位*会员账号图3-16各实体之间的关系3.系统数据库的设计根据需求分析与概念结构设计, 的逻辑结构。本系统利用Microsoft 据库。本系统主要建立了以下四张表:用户姓名联系方式身份证号联系地址会员基本信息N1获得管理1N会员积分信息会员等级会员折扣会员积分建立数据库系统支持的数据模型,即数据库Access 2003 创建了名为 SuperMarket 的数表3.1用户登录数据表字段名数据类型字段大小是否主键DNO(登陆账号)文本6是DCode(密码)文本12否DUserSta (登录身份)文本50否表3.2会员基本信息数据表字段名数据类字是否主键型段

5、大小MN(用户账号)文本6是MNam(用户姓名)文本20否MID (身份证号)文本18否MTel(联系电话)文本50否MAd(联系地址)文本50否表3.3职员基本信息数据表字段名数据类型字段大小是否主键EID (职员号)文本6是EName(职员姓名)文本20否EStatus (职员职位)文本50否表3.4会员积分信息数据表字段名数据类型字段大小是否主键MN(会员账号)文本6是MScore (用户积分)数 字(double)否MGrade(用户等级)数 字(long)否MDiscount (用户折扣)数 字(double)否4.表之间的关系表之间存在的关系如下:1. 在会员基本信息表(Membe

6、)中添加信息的同时,把信息添加到用户登录 信息表(Login )中,同时将信息添加到积分信息表(Score)中。2. 在会员基本信息表(Membe)中删除会员信息的同时,把用户登录信息 表(Login )和用户积分信息(Score)中该会员信息删除。3. 在职员基本信息表(Membe)中添加信息的同时,将志愿的基本信息添加 到用户登录信息表(Login )中。4. 在职员基本信息表(Membe)中删除职员信息的同时,把用户登录信息 表(Login )中该职员信息删除。详细设计与实现1. 系统首页图4-1超市会员管理系统首页自定义工具栏按钮及鼠标提示信息的设计与实现:会员信息 积分信息 基本信息

7、管理 蜿计 系蜿信息 退出系统邈%童询积分会员査询退出丟统图4-2主页面工具栏在对话框的OnlnitDialog 方法中常见工具栏窗口和图像列表窗口,关联图像列表,设置工具栏按钮文本,启动工具栏的EnableToolTip方法激活提示功能。鼠标提示信息的实现,处理 TTN_NEEDTEX T息的响应函数On ToolTipText(),通过函数的参数获得工具栏按钮的ID,从而根据ID获取提示信息文本。1. 添加消息映射(最好写在AFX_MSG_MAP外,否则可能出现编译 错误)ON_NOTIFY_EX_RANGE(TTN_NEEDTEXTW,O,OxFFF F,On ToolTipText)O

8、N_NOTIFY_EX_RANGE(TTN_NEEDTEXTA,O,OxFFF F,On ToolTipText)2. 添加事件声明(最好写在AFX_MS宏外,否则可能出现编译错误)afx_msg BOOLOnToolTipText(UINT nID, NMHDRpNMHDR, RESULT* pResult);2登录页面系统运行后,首先展现给用户的是用户登录界面,用户登录成功后进入到主 页面,用户登录界面如下图所示:登录IT'敢潜I图4-3用户登录界面用户登录有三种身份,管理员、普通职员、会员。管理员登录成功后,可以 对系统各模块进行操作;普通职员登录成功后,除对职员的添加、删除外,

9、均可 实现操作;会员,则只能对自己的一些基本信息进行操作。登录界面由函数void CLoginDlg:OnOK()实现处理,具体代码如下:/实现该功能的SQL语句sql="select * from Login where DNO=”'+Name+"' and DCode='"+ECode+"' and DUserSta='"+EStatus+"”'m_pRs->Ope n(_bstr_t)sql,theApp.co nn .Getl nterfacePtr(),adOpe nKe

10、ys et,adLockOptimistic,adCmdText);/登录成功与否、登录次数判断if ( m_pRs->GetRecordCou nt()<=0 )if ( m_LoginNum<=3 ) / 登录次数小于3次MessageBox("用户名或密码、身份错误!","提示",64);if ( m_Logi nNu m=3)/ 3次登录不成功MessageBox("用户登录3次不成功!即将关闭程序","提示",64);CDialog:O nOK();/向应用程序发送WM_QUI消息,请求

11、退出:PostQuitMessage(O);else如果登录成功,则关闭数据库CDialog:O nOK();CCMarketDIg dlg;dlg.m_Logi nSta=EStatus;dlg.DoModal();3会员信息模块(1)会员基本信息查询会员基本信息查询如下图:图4-4会员信息查询界面用户登录成功后,可以根据用户账号或身份证号查询会员的基本信息,还可以进行全表查询。查询前,首先要选择及填写查询条件,若未填写,则出现系统提示。查询条 件填写正确后,点击查询即可会员详细信息。查询和显示全部单击事件实现分别由函数 void CMemberDlg:OnOK(和voidCMemberDl

12、g:OnBUTTONListAII()实现,具体代码如下:记录集打开同上。在列表框中显示的实现:while (!m_pRs->adoEOF)CStri ng temp;m_EList.l nsertltem(1000,"");for(int i=0;i<3;i+)temp=(TCHAR*)(_bstr_t)m_pRs->GetFields()->Getltem(lo ng)i)->ValueJm_EList.SetltemText(row,i,temp);m_pRs->MoveNext();row+=1;会员密码修改此模块用于修改会员的登

13、录密码。图4-5会员密码修改界面填入用户账号和旧密码后,系统检查数据库中是否有该记录,如果存在该记录,则可填写新密码进行修改;若不存在,则系统给出提示信息。如下图:图4-6会员密码修改提示信息界面该模块单击事件由函数 void CECodeModifyDIg:0n0K()实现,具体代码如 下:sql="Update Login set DCode='"+NewCode+"' where DNO=”'+Name+"”'trytheApp.co nn->Execute(_bstr_t)sql,NULL,adCmdText

14、);catch(_com_error &e)AfxMessageBox(e.Descriptio n();AfxMessageBox("修改成功");4.积分信息模块(1)积分查询该功能实现界面如下:图4-7积分查询界面输入会员账号后,点击确定按钮,系统首先检查账号是否存在,若存在则输出该会员积分信息;若不存在,输出提示信息。实现原理如会员信息模块中的会员查询。实现函数为:void CJQueryDlg:OnOK()。在编辑框中的显示实现为:var = m_pRs->GetCollect("MScore");if(var.vt != VT_

15、NULL)str1 = (LPCSTR)_bstr_t(var);GetDlgltem(IDC_EDIT_Jife n)->SetWi ndowText(str1); var = m_pRs->GetCollect("MGrade");if(var.vt !=VT_NULL)str2=(LPCSTR)_bstr_t(var);GetDlgltem(IDC_EDIT_Grade)->SetWi ndowText(str2);var = m_pRs->GetCollect("MDiscou nt");if(var.vt !=VT_NU

16、LL)str3=(LPCSTR)_bstr_t(var);GetDlgltem(IDC_EDIT_Discout)->SetWi ndowText(st (2)积分兑换积分兑换功能的实现界面如下:图4-8积分兑换功能实现界面用户输入账号和密码后,点击兑换按钮,该按钮的实现中,首先检查用户合 法性。若用户已兑换过积分,则提示及兑换;若积分不够兑换等级,则提示积分 不够;若兑换成功后,则显示用户等级和优惠折扣。该模块实现单击事件函数处理为:void CEXchangeDlg:OnOK(),具体实现如下:/修改数据库中积分sql="Update Score set MGrade=1,

17、MDiscou nt=0.1 where MNO=”'+mzh+"”' trytheApp.co nn->Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();AfxMessageBox("兑换成功");(3)消费加分该模块功能将会员的消费金额换为消费积分,如下图:图4-9消费加分模块界面实现图输入用户账号和消费金额后,首先检查数据库中是否存在该记录,如果存在, 则将该用户积分增加其消费金额数目,如不存在,系统弹出提

18、示信息。模块单击事件处理由函数 void CXiaoFeiDIg:OnOK()实现,具体代码如下: sql="Update Score set MScore=MScore+'"+JiE+"' where MNO='"+UserZH+"”'trytheApp.co nn->Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();AfxMessageBox("添加成功"

19、;);(4)优惠讯息该模块为静态功能。点击优惠讯息菜单即出现超市积分的优惠政策及兑换政策的对话框。5基本信息管理模块1).职员信息管理(1) .查询基本信息该模块功能实现基本与会员基本信息查询相同,在此不再赘述。实现该功能的函数为:void CEmployeeDIg:0n0K();实现该功能的 SQL语句为:sql="select * from Employee where EID='"+EmpID+"”'(2) .修改职员信息该模块功能修改超市职员的基本信息。函数实现:void CMIMDlg:OnOK()。其实现如下:GetDlgltem(ID

20、C_EDIT1_EmpName)->GetWi ndowText(EXm);GetDlgltem(IDC_COMBO_EmpSta)->GetWi ndowText(EZw);if(EZw="管理员")EZw="0"else if(EZw=" 普通职员")EZw="1"sql="Update Employee set EName='"+EXm+"',EStatus='"+EZw+"' whereEID='"

21、;+EMId+"'"trytheApp.co nn->Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();AfxMessageBox("修改成功");(3) .修改密码职员修改密码模块与会员密码修改类似,实现函数为:voidCMModifyDlg:OnOK(),此处不再赘述。具体SQL语句实现为:sql="Update Login set DCode='"+NewCode+"

22、' where DNO='"+Name+"”'trytheApp.co nn->Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();(4) .添加职员信息管理员进入系统后可以按照需求添加职员信息,该模块首先检验输入是否为 空,若不为空,则可以进行添加,此功能同时将信息添加到Login表和Employee 表中,界面实现如图:图4-10添加职工信息实现该事件的函数为:void CEAddEmplyeeDlg:OnOK(

23、),下面是添加职员信息的具体实现:sql=" In sertin toEmployee(EID,EName,EStatus)values('"+E no+"T"+E name+"T"+Esta+"')"SQL=" In sertintoLogi n(DNO,DCode,DUserSta)values('"+E no+"T"+Ecode+"T"+Esta+"')"trytheApp.co nn->Ex

24、ecute(_bstr_t)sql,NULL,adCmdText);theApp.co nn->Execute(_bstr_t)SQL,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();AfxMessageBox("添加成功");(5).删除职员信息该模块只能由管理员进行操作,管理员成功登录后,可以按照职员号删除职 员信息,如图所示:琮职l:估忌X职工| 100020肺京甘nni晞诧迩冠也丁碉1匚二澱更工二二1宵图4-11删除职工信息图在删除前,系统会给出提示,提醒用户是否确定

25、要删除。点击是,则将该记 录从数据库中删除;点击否,贝U撤销删除行为。实现函数为void CDelEmpDlg:OnOK(),代码如下:if(MessageBox("确定要删除该记录吗?","提示",MB_YESNO)=IDYES) sql="delete from Employee where EID='"+EmpNO+"”'SQL="delete from Logi n where DNO=”'+EmpNO+"”'trytheApp.co nn->Execute(

26、_bstr_t)sql,NULL,adCmdText);theApp.co nn->Execute(_bstr_t)SQL,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();AfxMessageBox("删除成功");2会员信息管理会员信息管理包括会员信息查询、会员信息修改、会员注册、会员删除四个 模块,功能实现同职员信息管理模块中响应功能。实现函数分别为: void CMemberDlg:OnOK()、 void CModifyMemDlg:OnBUTTONModify()、

27、 void CMemAddDlg:OnOK()、 void CModifyMemDlg:O nBUTTONDel(。此处以会员信息修改和删除为例,其他功能实现略写。图4-12会员信息修改图中,灰色编辑框表示不可改。如果要修改信息则填入要修改的值,点击“确 定修改”,即可修改成功;如果要删除该条记录,则点击“确定删除”,系统会 提示,是否真的删除,若是,则从数据库表中将该记录删除,若否,则退出删除。此处实现的相关的SQL语句为:/修改sql="UpdateMembersetMName=”'+UserName+"',MTel=”'+UserTel+&qu

28、ot;',MAdd=”'+UserAdd+"'whereMNO='"+UserNO+"”'trytheApp.co nn->Execute(_bstr_t)sql,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();AfxMessageBox("修改成功");/删除if(MessageBox("确定要删除该记录吗?","提示",MB_YESNO)=IDYES)sql=&q

29、uot;delete from Member where MNO='"+UserNO+"”'SQL="delete from Log in where DNO='"+UserNO+"”'trytheApp.co nn->Execute(_bstr_t)sql,NULL,adCmdText);theApp.co nn->Execute(_bstr_t)SQL,NULL,adCmdText);catch(_com_error &e)AfxMessageBox(e.Descriptio n();Af

30、xMessageBox("删除成功");6统计统计模块是对超市会员积分进行统计,可以统计出各登记人数及所占百分 比,并以柱形图的形式显示出来。图4-13统计分析功能实现图实现该功能的函数为:void CStatDlg:O nOK()具体实现:(1) 打开记录集,获得各等级人数;(2) 绘制柱形图/获取静态图片空间大小CWnd * pWnd=this->GetDlgltem(IDC_DRAW); pWnd->GetClie ntRect(&rectPic);/获取设备环境指针CDC *pDC=pWnd->GetDC();/重新填充静态图片区域CBru

31、sh NewBrush;NewBrush.CreateSolidBrush(RGB(238,238,237);CBrush * pOldBrush=pDC->SelectObject(&NewBrush); pDC->Recta ngle(&rectPic);pDC->SelectObject(pOldBrush);/确定每个柱形条的宽度int nLen gth=(rectPic.right-rectPic.left)/6;/定义五种颜色,用来填充柱形图COLORREF RGBArray6=RGB(0,255,0),RGB(128,0,255),RGB(0,0

32、,255), RGB(255,255,0), RGB(255,0,0),RGB(0,128,255);/定义一个矩形,表示柱形条CRect rect;for ( int i=0; i<6; i+ )/确定柱形条的位置recteft=rectPic.left+i* nLen gth;rect.top=rectPic.bottom -rectPic.Height() * si/num;rect.right=rectPiceft + (i+1)* nLen gth;rect.bottom=rectPic.bottom;/创建画刷,填充图形CBrush NewBrush;NewBrush.CreateSolidBrush(RGBArrayi);CBrush * pOldBrush=pDC->SelectObject(&NewBrush);pDC->Recta ngle(&rect);pDC->SelectObject(pOldBrush);/释放设备环境this->ReleaseDC(pDC);7系统信息1用户帮助系统调用帮助文件Market-Help.chm,对于不熟悉本系统的用户可以通过阅 读帮助文件了解系统如何使用。点击用户帮助菜单或帮助工具栏按钮后,即打开帮助文件,如图所示:图4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论