收藏 分销(赏)

数据库-超市会员管理系统.docx

上传人:pc****0 文档编号:8957823 上传时间:2025-03-09 格式:DOCX 页数:46 大小:341.89KB
下载 相关 举报
数据库-超市会员管理系统.docx_第1页
第1页 / 共46页
数据库-超市会员管理系统.docx_第2页
第2页 / 共46页
点击查看更多>>
资源描述
设计总说明 本会员超市会员管理系统实际的业务流程为背景而设计的,后台数据库的设计用Mysql 5.0,前台用java来开发。本超市会员信息管理系统以超市会员信息的管理为核心,兼有各种统计、查询、添加、修改和删除等功能,如对货物流量和消费人群的查询,对会员信息的查询等。本系统利用视图、触发器,存储过程可以对数据库中的内容实现各种级联修改与信息的实时更新,可以化繁为简,提高效率,避免大量的重复性的工作。 整个系统由管理员登录模块、会员信息管理模块、会员优惠信息模块、购物信息模块和商品信息模块组成。整个系统能独立运行,实现现实中的功能。 关键字:超市会员管理系统、java、Mysql、图形化用户界面 目录 一.设计目的 1 二.问题描述 1 2.1 问题概述 1 2.2 系统设计目标 1 2.3 系统主要功能 2 三.需求分析 2 3.1 设计思想 2 3.2 可行性分析 2 3.3 功能需求 3 3.4 性能需求 4 3.5 系统设计基础 5 四.概要设计 9 4.1 功能描述 9 4.2 系统模块 10 4.3 系统功能模块图 11 五.数据库设计 11 5.1 数据库简介 11 5.2 概念设计 12 5.3 逻辑结构设计 14 5.4 物理结构设计 15 六.详细设计 16 6.1 基本信息模块 16 6.2 系统模块 31 6.3 数据模块 37 七.使用说明 39 八.设计总结 43 参考文献 44 数据库大作业 —超市会员管理系统 一.设计目的 现代化的超市组织庞大、服务项目多、信息量大,要想提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益,必须借助计算机来进行现代化的信息管理。超市会员管理系统正是为此而设计的。优秀的超市会员管理系统操作方便,灵活性好,系统安全性高,运行稳定。 二.问题描述 2.1 问题概述 该超市会员管理系统是对会员信息的管理,会员优惠管理,超市购物交易记录,商品统计功能,实现超市会员管理的基本功能。 2.2 系统设计目标 超市会员管理系统提高了劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益。该超市会员管理系统是对超市会员信息,会员优惠信息,超市购物交易记录信息,商品统计信息进行管理和维护,实现超市会员管理的基本功能。 2.3 系统主要功能 1.登录系统: 管理员登录,对会员信息进行管理。 2.会员管理:对会员信息的添加、修改、查询、删除。 3.交易管理:对超市会员的购物信息进行统计。 4.商品管理:对货物流量、消费人群及商品实时库存量等信息进行统计。 5.优惠管理:对会员的积分,享受优惠的等级信息管理。 6.密码管理:对管理员密码进行修改。 三.需求分析 3.1 设计思想 超市会员管理系统是超市管理重要的一个环节,会员管理软件有助于减轻管理人员的负担,提高劳动生产、降低成本、提高服务质量和管理水平,进而促进经济效益。该超市会员管理系统是对超市会员信息,会员优惠信息,超市购物交易记录信息,商品统计信息进行管理和维护,实现超市会员管理的基本功能。本系统要求运行稳定,图形界面符合用户的日常使用习惯,数据处理正确无误。 3.2 可行性分析 可行性分析也称为可行性研究,是在系统调查的基础上,针对新系统的开发是否具备必要性和可能性,对新系统的开发从技术、经济、社会的方面进行分析和研究,以避免投资失误,保证新系统的开发成功。可行性研究的目的就是用最小的代价在尽可能短的时间内确定问题是否能够解决。该系统的可行性分析包括以下几个方面的内容。 A.技术可行性:系统要求在windows 7以上环境运行,后台数据库采用Mysql 5.0,使用JAVA编程,采用JDBC方式连接数据库,这些在目前都是容易实现的。程序将部分需要经常调用的数据存入内存,可提高程序运行速度。 B.经济可行性:在经济上,用此系统加强了超市会员的管理效率,可节省人力资源的开支。 C.管理的可行性:在工作上,超市会员管理信息量非常大,开发了此系统,可极大提高超市工作人员的效率。提高决策的管理能力等等,方便数据的储存和修改,及以后随时查询会员信息,购物和商品信息是一个比较人性化的管理系统。 由以上分析得出,本系统可进行开发。 3.3 功能需求 3.3.1 基本功能需求 1.登录系统: 管理员登录,对会员信息进行管理。 2.会员管理:对会员信息的添加、修改、查询、删除。 3.交易管理:对超市会员的购物信息进行统计。 4.商品管理:对货物流量、消费人群及商品实时库存量等信息的统计。 5.优惠管理:对会员的积分的,享受优惠的等级信息管理。 6.密码管理:对管理员密码进行修改。 3.3.2 用户界面需求 界面对于用户来说至关重要,既是用户对软件评价的根据,也是用户最终使用的。所以界面设计的怎么样,对于整个系统的成功与否有着密切联系。当然,也许界面设计的好不会让其性能更好,但是设计的不好只会让它更差。界面设计原则必须是,操作步骤少,随时提示用户系统正在进行哪些操作,减少用户记忆的东西。 3.4 性能需求 1. 硬件环境 处 理 器:CPU 1GHZ 或更高 内 存:256M以上 硬盘空间:120G以上 2. 软件环境 操作系统:Windows 7 数据库:Mysql 5.0 编程软件:MyEclipse 6.5 Enterprise Workbench 3.5 系统设计基础 3.5.1 系统业务流图 查询修改积分 信息反馈 查询政策信息 输出报表 管理会员信息 信息反馈 信息反馈 查询修改信息 超市会员管理系统 商品信息管理 会员优惠政策管理 消费记录管理 管理员信息管理 会员基本信息管理 图3.1系统业务流图 3.5.2 系统数据流图 管理系统 入库出库 会员信息 会员信息 超市会员管理系统 管理员 入库出库 消费记录信息 会员优惠信息 商品信息 入库出库 图3.2顶级数据流图 会员基本信息管理 会员ID 会员地址 会员积分 会员卡号 会员名称等 会员级别 图3.3会员信息数据流图 会员优惠管理 会员级别 级别优惠 级别名称 图3.4会员优惠数据流图 消费记录管理 消费金额 条形码 会员ID 消费ID 图3.5消费记录数据流图 商品信息管理 单价 商品名称 数量 条形码 图3.6商品信息数据流图 管理员信息管理 管理员ID 管理员密码 管理员姓名 图3.7管理员数据流图 四.概要设计 4.1 功能描述 该系统的功能 需求有如下方面 1. 会员信息管理。主要用于会员信息进行维护。功能包括会员信息的添加、修改和删除已有的会员信息,使用各种方式对会员信息进行查询。 2. 管理员管理。主要完成管理员的登录、添加、修改、删除以及密码修改。 3. 优惠管理:对会员的积分的,具体等级享受优惠的信息管理。 4. 交易记录管理:管理维护超市会员的购物信息包括购买商品数量,消费金额,消费时间等信息。 5. 商品管理:对货物流量、消费人群及商品实时库存量等信息的统计。 4.2 系统模块 本系统分为三个模块: 系统模块:管理员的添加修改删除。 资源管理:管理本超市的会员,优惠政策,交易记录,商品等信息。 数据管理:管理本软件的数据库的连接和关闭。 4.3 系统功能模块图 超市会员管理系统 管理员登录 信息管理 数据处理封装 管理员登录 密码修改 退出系统 会员信息 消费记录信息 优惠政策信息 商品信息 连接数据库 关闭数据库 图4.1系统功能模块图 五.数据库设计 5.1 数据库简介 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 根据系统开发的需要,以及考虑到数据库存储量的大小及数据量的多少,我选择了MYSQL数据库。因为开发的时间比较短加上所需要做的事情比较多,只能对数据库进行增、删、改、查等操作的了解与学习。 5.2 概念设计 局部E-R图: 会员 会员ID 姓名 性别 年龄 会员密码 卡号 地址 联系方式 会员级别 图5.1会员信息E-R图 级别 会员级别 级别名称 最小值 最大值 级别优惠 图5.2优惠级别信息E-R图 消费记录 卡号 消费ID 消费金额 购买数量 商品条形码 消费时间 图5.3消费记录E-R图 商品信息 条形码 单价 种类 数量 商品名称 图5.4 商品信息E-R图 管理员信息表 管理员姓名 登录密码 管理员ID 图5.5管理员信息E-R图 各实体之间关系的E-R图: 会员 级别 消费记录 商品信息 拥有 消费 查询 P 1 1 m n 1 图5.6各实体间关系E-R图 5.3 逻辑结构设计 会员(会员ID,姓名,性别,年龄,联系方式,地址,会员级别,卡号)主键会员ID,外键会员级别。 消费记录(消费ID,消费时间,消费金额,条形码,购买数量,会员ID)主键消费ID,外键会员ID、条形码。 优惠级别(会员级别,级别名称,最小值,最大值,级别优惠)主键会员级别。 商品信息(条形码,单价,商品名称,数量,种类)主键条形码。 管理员信息(管理员ID,管理员姓名,管理员密码)主键管理员ID。 5.4 物理结构设计 表5.1 会员信息表 字段名称 字段类型 是否为空 约束 字段说明 memID Number(5) 否 主键 会员ID memName varchar2(10) 否 会员姓名 gender Varchar2(6) 是 Male,fe 性别 Age number(2) 是 年龄 telephone varchar2(20) 是 唯一性 联系方式 address varchar2(30) 是 地址 Memgrade Varchar2(10) 是 外键 会员级别 cardNo number(10) 是 卡号 表5.2 优惠级别表 字段名称 字段类型 是否为空 约束 字段说明 Memgrade Number(2) 否 主键 会员级别 grageName varchar2(10) 否 级别名称 lowLimit Number(14,2) 是 金额下限 upLimit Number(14,2) 是 金额上限 Youhui Number(3,2) 是 会员打折优惠 表5.3 消费记录表 字段名称 字段类型 是否为空 约束 字段说明 expID Number 否 主键 消费ID expPrice Number(14,2) 是 消费金额 expTime DATE 是 消费时间 barCode char(20) 是 外键 条形码 expNum Number(4) 是 购买数量 memID number(10) 是 外键 会员ID 表5.4 商品信息表 字段名称 字段类型 是否为空 约束 字段说明 barCode Varchar2(20) 否 主键 条形码 unitPrice Number(10,4) 是 商品单价 goodName varchar2(20) 是 商品名称 goodNum Number(6) 是 商品数量 goodSort varchar2(10) 是 商品种类 表5.5 管理员信息表 字段名称 字段类型 是否为空 约束 字段说明 LoginId Number(2) 否 主键 管理员ID LoginName varchar2(10) 否 管理员姓名 LoginPass Number(14,2) 否 管理员密码 六.详细设计 6.1 基本信息模块 6.1.1 会员信息 (1)模块功能 此模块用于管理超市会员的信息,包括会员信息的管理与维护。 (2)界面设计 图6.1 会员信息浏览界面 (3)关键代码 public class MemRegister extends JFrame { public MemRegister() { try { jbInit(); } catch (Exception exception) { exception.printStackTrace(); } } private void jbInit() throws Exception { getContentPane().setLayout(null); int x=((1024-480)/2); int y=((768-580)/2); this.setBounds(x, y, 480, 580); jLabel1.setText("会员卡号:"); jLabel1.setBounds(new Rectangle(50, 46, 60, 15)); jLabel11.setText("(YY-MM-DD)"); jLabel11.setBounds(new Rectangle(287, 298, 99, 15)); jLabel10.setText("会员卡充值:"); jLabel10.setBounds(new Rectangle(50, 428, 77, 15)); jLabel9.setText("办卡时间:"); jLabel9.setBounds(new Rectangle(51, 388, 68, 15)); jLabel8.setText("会员住址:"); jLabel8.setBounds(new Rectangle(50, 344, 65, 15)); jLabel7.setText("会员生日:"); jLabel7.setBounds(new Rectangle(51, 297, 64, 15)); jLabel6.setText("会员年龄:"); jLabel6.setBounds(new Rectangle(49, 254, 63, 15)); jLabel5.setText("会员性别:"); jLabel5.setBounds(new Rectangle(50, 223, 66, 15)); jLabel4.setText("确认密码:"); jLabel4.setBounds(new Rectangle(50, 172, 64, 15)); jLabel3.setText("会员密码:"); jLabel3.setBounds(new Rectangle(50, 124, 73, 21)); jPasswordField2.setText("jPasswordField2"); jPasswordField2.setBounds(new Rectangle(128, 166, 153, 25)); jPasswordField1.setText("jPasswordField1"); jPasswordField1.setBounds(new Rectangle(128, 117, 153, 25)); jTextField7.setText("jTextField7"); jTextField7.setBounds(new Rectangle(128, 423, 151, 21)); jTextField6.setText("jTextField6"); jTextField6.setBounds(new Rectangle(129, 379, 148, 21)); jTextField5.setText("jTextField5"); jTextField5.setBounds(new Rectangle(128, 342, 151, 21)); jTextField4.setText("jTextField4"); jTextField4.setBounds(new Rectangle(128, 293, 152, 24)); jTextField3.setText("jTextField3"); jTextField3.setBounds(new Rectangle(128, 253, 153, 23)); jTextField2.setText("jTextField2"); jTextField2.setBounds(new Rectangle(128, 72, 153, 21)); jTextField1.setText("jTextField1"); jTextField1.setBounds(new Rectangle(128, 39, 153, 21)); jButton2.addActionListener(new MemberRegister_jButton2_actionAdapter(this)); jRadioButton1.setText("男"); jRadioButton1.addActionListener(new AbstractAction(){ @Override public void actionPerformed(ActionEvent e) { jdio_actionPerformed( e); } }); jRadioButton1.setBounds(new Rectangle(128, 219, 51, 23)); jRadioButton2.setText("女"); jRadioButton2.setBounds(new Rectangle(186, 219, 48, 23)); jgroup.add(jRadioButton1); jgroup.add(jRadioButton2); this.getContentPane().add(jLabel1); jButton2.setBounds(new Rectangle(240, 490, 83, 25)); jButton2.setText("清空"); jButton1.setBounds(new Rectangle(102, 490, 81, 25)); jButton1.setText("提交"); jButton1.addActionListener(new MemberRegister_jButton1_actionAdapter(this)); this.getContentPane().add(jLabel2); this.getContentPane().add(jLabel3); this.getContentPane().add(jLabel4); this.getContentPane().add(jLabel6); this.getContentPane().add(jLabel7); this.getContentPane().add(jLabel8); this.getContentPane().add(jLabel9); this.getContentPane().add(jLabel10); this.getContentPane().add(jTextField2); this.getContentPane().add(jTextField1); this.getContentPane().add(jPasswordField1); this.getContentPane().add(jPasswordField2); this.getContentPane().add(jTextField3); this.getContentPane().add(jTextField4); this.getContentPane().add(jTextField5); this.getContentPane().add(jTextField6); this.getContentPane().add(jTextField7); this.getContentPane().add(jLabel11); this.getContentPane().add(jLabel5); this.getContentPane().add(jButton1); this.getContentPane().add(jButton2); this.getContentPane().add(jRadioButton1); this.getContentPane().add(jRadioButton2); jLabel2.setText("会员姓名:"); jLabel2.setBounds(new Rectangle(50, 84, 64, 15)); } JLabel jLabel1 = new JLabel(); JLabel jLabel2 = new JLabel(); JLabel jLabel3 = new JLabel(); JLabel jLabel4 = new JLabel(); JLabel jLabel5 = new JLabel(); JLabel jLabel6 = new JLabel(); JLabel jLabel7 = new JLabel(); JLabel jLabel8 = new JLabel(); JLabel jLabel9 = new JLabel(); JLabel jLabel10 = new JLabel(); JLabel jLabel11 = new JLabel(); JTextField jTextField1 = new JTextField(); JTextField jTextField2 = new JTextField(); JTextField jTextField3 = new JTextField(); JTextField jTextField4 = new JTextField(); JTextField jTextField5 = new JTextField(); JTextField jTextField6 = new JTextField(); JTextField jTextField7 = new JTextField(); JPasswordField jPasswordField1 = new JPasswordField(); JPasswordField jPasswordField2 = new JPasswordField(); JButton jButton1 = new JButton(); JButton jButton2 = new JButton(); ButtonGroup buttonGroup1 = new ButtonGroup(); JRadioButton jRadioButton1 = new JRadioButton(); JRadioButton jRadioButton2 = new JRadioButton(); ButtonGroup jgroup=new ButtonGroup(); public void jdio_actionPerformed(ActionEvent e) { String gender=""; if(jRadioButton1.isSelected()) { gender="男"; }else{ gender="女"; } } public void jButton1_actionPerformed(ActionEvent e) { //String ManName= } public void jButton2_actionPerformed(ActionEvent e) { jTextField1.setText(""); jTextField2.setText(""); jTextField3.setText(""); jTextField4.setText(""); jTextField5.setText(""); jTextField6.setText(""); jTextField7.setText(""); jPasswordField1.setText(""); jPasswordField2.setText(""); } } class MemberRegister_jButton2_actionAdapter implements ActionListener { private MemRegister adaptee; MemberRegister_jButton2_actionAdapter(MemRegister adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton2_actionPerformed(e); } } class MemberRegister_jButton1_actionAdapter implements ActionListener { private MemRegister adaptee; MemberRegister_jButton1_actionAdapter(MemRegister adaptee) { this.adaptee = adaptee; } public void actionPerformed(ActionEvent e) { adaptee.jButton1_actionPerformed(e); } } 6.1.2 交易记录信息 (1)模块功能 此模块用于管理维护超市会员的购物信息包括购买商品数量,消费金额,消费时间等信息。 (2)界面设计 图6.2 交易记录界面 (3)关键代码 private void jbInit() throws Exception { this.getContentPane().setLayout(null); jLabel1.setBounds(new Rectangle(39, 62, 79, 15)); jLabel10.setText("(YY-MM-DD)"); jLabel10.setBounds(new Rectangle(284, 211, 88, 24)); jLabel9.setText("消费金额:"); jLabel9.setBounds(new Rectangle(39, 383, 68, 15)); jLabel7.setText("购买数量:"); jLabel7.setBounds(new Rectangle(39, 291, 64, 15)); jLabel6.setText("条形码:"); jLabel6.setBounds(new Rectangle(39, 252, 61, 15)); jLabel8.setText("会员ID:"); jLabel8.setBounds(new Rectangle(39, 339, 60, 15)); jLabel5.setText("消费时间:"); jLabel5.setBounds(new Rectangle(39, 217, 66, 15)); jLabel3.setText("消费ID:"); jLabel3.setBounds(new Rectangle(39, 145, 73, 15)); jButton2.addActionListener(new StafRegister_jButton2_actionAdapter(this)); this.getContentPane().add(jLabel4); jButton2.setBounds(new Rectangle(224, 469, 83, 25)); jButton2.setText("清空"); jButton1.setBounds(new Rectangle(101, 469, 83, 25)); jButton1.setText("提交"); jgroup1.add(jRadioButton1); jgroup1.add(jRadioButton2); jRadioButton1.addActionListener(new AbstractAction(){ @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub jRadioButton1_actionPerformed( e); } }); jRadioButton1.setBounds(new Rectangle(113, 99, 41, 23)); jTextField8.setText("jTextField8"); jTextField8.setBounds(new Rectangle(112, 381, 168, 21)); jTextField7.setText("jTextField7"); jTextField7.setBounds(new Rectangle(111, 332, 168, 21)); jTextField6.setText("jTextField6"); jTextField6.setBounds(new Rectangle(112, 285, 167, 21)); jTextField5.setText("jTextField5"); jTextField5.setBounds(new Rectangle(113, 250, 165, 21)); jTextField4.setText("jTextField4"); jTextField4.setBounds(new Rectangle(112, 212, 167, 21)); jTextField3.setText("jTextField3"); jTextField3.setBounds(new Rectangle(112, 182, 167, 21)); jTextField2.setText("jTextField2"); jTextField2.setBounds(new Rectangle(109, 140, 170, 21)); jTextField1.setText("jTextField1"); jTextF
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传
相似文档                                   自信AI助手自信AI助手

当前位置:首页 > 通信科技 > 数据库/数据算法

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服