版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据库设计1 系统数据库分析数据库设计是建立数据库及其应用系统的技术,是系统开发和建设中的核心技术。具体说,数据库设计是指对于一个给定的应用环境,构造最优的数据库模式,建立数据库及其应用系统,使之能够有效的存储数据,满足各种用户的应用需求(信息要求和处理要求)。数据库结构设计的好坏直接对应用系统的效率以及实现的效果产生影响。根据超市会员管理系统功能设计的需要,数据库结构设计如下所示:(1). 用户登录信息数据表(login):(用户账号,密码,登录身份);(2). 会员基本信息数据表(member):(用户账号,用户姓名,身份证号,联系方式,联系地址);(3). 职员基本信息数据表(emplo
2、yee):(职员号,职员姓名,职员职位);(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图。
4、会员积分信息*会员账号会员积分会员等级会员折扣图3-15 会员积分信息实体的e-r图实体之间的关系e-r图主要描述实体间的关系。会员基本信息*用户账号用户姓名身份证号联系方式联系地址获得会员积分信息*会员账号会员积分会员等级会员折扣管理职员基本信息*职员号职员姓名职员职位111nn图3-16 各实体之间的关系3.系统数据库的设计根据需求分析与概念结构设计,建立数据库系统支持的数据模型,即数据库的逻辑结构。本系统利用microsoft access 2003创建了名为supermarket的数据库。本系统主要建立了以下四张表:表3.1 用户登录数据表字段名数据类型字段大小是否主键dno(登陆账号
5、)文本6是dcode(密码)文本12否dusersta(登录身份)文本50否表3.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)
6、否mdiscount(用户折扣)数字(double)否4. 表之间的关系表之间存在的关系如下:1在会员基本信息表(member)中添加信息的同时,把信息添加到用户登录信息表(login)中,同时将信息添加到积分信息表(score)中。2在会员基本信息表(member)中删除会员信息的同时,把用户登录信息表(login)和用户积分信息(score)中该会员信息删除。3在职员基本信息表(member)中添加信息的同时,将志愿的基本信息添加到用户登录信息表(login)中。4在职员基本信息表(member)中删除职员信息的同时,把用户登录信息表(login)中该职员信息删除。详细设计与实现1. 系统
7、首页图4-1 超市会员管理系统首页自定义工具栏按钮及鼠标提示信息的设计与实现:图4-2 主页面工具栏在对话框的oninitdialog方法中常见工具栏窗口和图像列表窗口,关联图像列表,设置工具栏按钮文本,启动工具栏的enabletooltip方法激活提示功能。鼠标提示信息的实现,处理ttn_needtext消息的响应函数ontooltiptext(),通过函数的参数获得工具栏按钮的id,从而根据id获取提示信息文本。1. 添加消息映射(最好写在afx_msg_map宏外,否则可能出现编译错误)on_notify_ex_range(ttn_needtextw,0,0xffff,ontooltip
8、text)on_notify_ex_range(ttn_needtexta,0,0xffff,ontooltiptext)2. 添加事件声明(最好写在afx_msg宏外,否则可能出现编译错误)afx_msg bool ontooltiptext(uint nid, nmhdr* pnmhdr, lresult* presult);2 登录页面系统运行后,首先展现给用户的是用户登录界面,用户登录成功后进入到主页面,用户登录界面如下图所示:图4-3 用户登录界面用户登录有三种身份,管理员、普通职员、会员。管理员登录成功后,可以对系统各模块进行操作;普通职员登录成功后,除对职员的添加、删除外,均可实
9、现操作;会员,则只能对自己的一些基本信息进行操作。登录界面由函数void clogindlg:onok()实现处理,具体代码如下:/实现该功能的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 )i
10、f ( m_loginnumadoeof)cstring temp;m_elist.insertitem(1000,);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
11、 cecodemodifydlg:onok()实现,具体代码如下:sql=update login set dcode=+newcode+ where dno=+name+;trytheapp.conn-execute(_bstr_t)sql,null,adcmdtext);catch(_com_error &e)afxmessagebox(e.description();afxmessagebox(修改成功);4. 积分信息模块(1) 积分查询该功能实现界面如下:图4-7 积分查询界面输入会员账号后,点击确定按钮,系统首先检查账号是否存在,若存在则输出该会员积分信息;若不存在,输出提示信息。
12、实现原理如会员信息模块中的会员查询。实现函数为:void cjquerydlg:onok()。在编辑框中的显示实现为:var = 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)-setwindow
13、text(str2);var = m_prs-getcollect(mdiscount);if(var.vt !=vt_null)str3=(lpcstr)_bstr_t(var);getdlgitem(idc_edit_discout)-setwindowtext(str3);(2) 积分兑换积分兑换功能的实现界面如下:图4-8 积分兑换功能实现界面用户输入账号和密码后,点击兑换按钮,该按钮的实现中,首先检查用户合法性。若用户已兑换过积分,则提示及兑换;若积分不够兑换等级,则提示积分不够;若兑换成功后,则显示用户等级和优惠折扣。该模块实现单击事件函数处理为:void cexchangedlg
14、:onok(),具体实现如下:/修改数据库中积分sql=update score set mgrade=1,mdiscount=0.1 where mno=+mzh+;trytheapp.conn-execute(_bstr_t)sql,null,adcmdtext);catch(_com_error &e)afxmessagebox(e.description();afxmessagebox(兑换成功);(3) 消费加分该模块功能将会员的消费金额换为消费积分,如下图:图4-9 消费加分模块界面实现图输入用户账号和消费金额后,首先检查数据库中是否存在该记录,如果存在,则将该用户积分增加其消费金
15、额数目,如不存在,系统弹出提示信息。模块单击事件处理由函数void cxiaofeidlg:onok()实现,具体代码如下:sql=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
16、) .职员信息管理(1). 查询基本信息 该模块功能实现基本与会员基本信息查询相同,在此不再赘述。实现该功能的函数为:void cemployeedlg: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
17、(ezw=管理员) ezw=0;else if(ezw=普通职员) ezw=1;sql=update employee set ename=+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语句实
18、现为:sql=update login set dcode=+newcode+ where dno=+name+;trytheapp.conn-execute(_bstr_t)sql,null,adcmdtext); catch(_com_error &e)afxmessagebox(e.description();(4). 添加职员信息管理员进入系统后可以按照需求添加职员信息,该模块首先检验输入是否为空,若不为空,则可以进行添加,此功能同时将信息添加到login表和employee表中,界面实现如图:图4-10 添加职工信息实现该事件的函数为:void ceaddemplyeedlg:ono
19、k(),下面是添加职员信息的具体实现: sql=insert into employee(eid,ename,estatus) values(+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.d
20、escription();afxmessagebox(添加成功); (5). 删除职员信息该模块只能由管理员进行操作,管理员成功登录后,可以按照职员号删除职员信息,如图所示:图4-11 删除职工信息图在删除前,系统会给出提示,提醒用户是否确定要删除。点击是,则将该记录从数据库中删除;点击否,则撤销删除行为。实现函数为void cdelempdlg:onok(),代码如下:if(messagebox(确定要删除该记录吗?,提示,mb_yesno)=idyes)sql=delete from employee where eid=+empno+;sql=delete from login wher
21、e dno=+empno+;trytheapp.conn-execute(_bstr_t)sql,null,adcmdtext);theapp.conn-execute(_bstr_t)sql,null,adcmdtext);catch(_com_error &e)afxmessagebox(e.description();afxmessagebox(删除成功);2 会员信息管理会员信息管理包括会员信息查询、会员信息修改、会员注册、会员删除四个模块,功能实现同职员信息管理模块中响应功能。实现函数分别为:void cmemberdlg:onok()、void cmodifymemdlg:onbu
22、ttonmodify()、void cmemadddlg:onok()、void cmodifymemdlg:onbuttondel()。此处以会员信息修改和删除为例,其他功能实现略写。图4-12 会员信息修改图中,灰色编辑框表示不可改。如果要修改信息则填入要修改的值,点击“确定修改”,即可修改成功;如果要删除该条记录,则点击“确定删除”,系统会提示,是否真的删除,若是,则从数据库表中将该记录删除,若否,则退出删除。此处实现的相关的sql语句为:/修改sql=update member set mname=+username+,mtel=+usertel+,madd=+useradd+ whe
23、re mno=+userno+;trytheapp.conn-execute(_bstr_t)sql,null,adcmdtext);catch(_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)sq
24、l,null,adcmdtext);theapp.conn-execute(_bstr_t)sql,null,adcmdtext);catch(_com_error &e)afxmessagebox(e.description();afxmessagebox(删除成功);6 统计统计模块是对超市会员积分进行统计,可以统计出各登记人数及所占百分比,并以柱形图的形式显示出来。图4-13 统计分析功能实现图实现该功能的函数为:void cstatdlg:onok()具体实现:(1) 打开记录集,获得各等级人数;(2) 绘制柱形图/获取静态图片空间大小cwnd * pwnd=this-getdlgit
25、em(idc_draw); pwnd-getclientrect(&rectpic);/ 获取设备环境指针cdc *pdc=pwnd-getdc();/ 重新填充静态图片区域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;
26、/ 定义五种颜色,用来填充柱形图colorref rgbarray6=rgb(0,255,0),rgb(128,0,255),rgb(0,0,255), rgb(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 用户帮助功能实现图具体实现为:void ccmarketdlg:onmenuhelp() char bufmax_path;:getcurrentdirectory(max_path,buf); /获取程序根目录路径:shellexecute(nul
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工厂保卫培训课件内容
- 2025~2026学年济南市天桥区七年级第一学期地理期末考试试题以及答案
- 2025-2026学年河北省五个一名校联盟高三(上)期末数学试卷(含答案)
- 钢结构涂装技术方法详解
- 特异体质学生管理制度
- 2026山东事业单位统考威海市荣成市招聘初级综合类岗位84人备考考试试题及答案解析
- 市场营销管理制度
- 2026浙江杭州海康存储科技有限公司招聘考试参考试题及答案解析
- 2026云南中铝数为(成都)科技有限责任公司社会招聘8人参考考试题库及答案解析
- 小区私人财产管理制度内容(3篇)
- 2026广东广州市海珠区住房和建设局招聘雇员7人笔试参考题库及答案解析
- 云南师大附中2026届高三1月高考适应性月考卷英语(六)含答案
- 海南2025年中国热带农业科学院橡胶研究所第一批招聘16人(第1号)笔试历年参考题库附带答案详解
- 【读后续写】2021年11月稽阳联考读后续写讲评:Saving the Daisies 名师课件-陈星可
- 农贸市场突发事件应急预案
- 项目论证制度
- 股东合作协议模板
- Y -S-T 732-2023 一般工业用铝及铝合金挤压型材截面图册 (正式版)
- GB/T 43829-2024农村粪污集中处理设施建设与管理规范
- 万科物业服务指南房屋和设施维修管理
- 高一英语完型填空10篇实战训练及答案
评论
0/150
提交评论