会员管理系统的设计和开发(1)

简介:

我们在很多情况下,可能都是某种组织的会员,如健身、游泳馆、超市、美容店等其他连锁店,这些针对会员的管理和消费管理,从而提供给会员更多的优惠,一般通过积分的方式实现。本文主要从一个开发者的角度,对会员系统进行的设计开发进行剖析,希望能与大家一起探讨,实现更多的思想碰撞。

如果系统是在一个店铺使用的,那么使用单机版本的操作模式即可,如可以使用Winform + SQLite/Access方式,实现数据的访问,并且方便软件复制和备份工作,如果需要性能好一点或者数据更加安全一点,可以采用独立的数据库方式,如采用一个独立的机器部署SqlServer数据库或者Mysql数据库,Oracle数据库就没太大必要了。

如果系统是在一系列连锁店中使用的,那么可以采用Winform+WCF服务方式,实现数据的分布式访问方式,这样数据就不会保存在本地,和B/S通过浏览器的方式很类似,但是Winform客户端能提供更丰富的界面体验效果。当然,我们每一家的连锁店就需要能够上网,随时进行数据的交换处理。

还有一种方式,是离线式的服务,就是弥补第二种方式在断开网络的时候不能工作的缺点,这种方式即使在网络断开,也能照常运营,网络通畅的时候,通过手工进行数据的提交就可以了。由于现在网络一般比较方便,所以这种方式一般采用的不多,只在特殊情况下采用。

1、系统用例的设计

我们知道,会员管理的主要目的就是以会员为中心,实现相关数据的管理。会员管理包括有会员本身的信息管理、会员收费管理、积分管理(积分增减、积分兑换、积分转账)、挂失管理、换卡管理、余额转账、商品管理、消费管理等等,围绕着会员管理展开,通过多个职能操作,实现相关数据的录入和管理。

2、系统数据库设计

数据库的设计,也主要是围绕着会员信息进行的,会员信息是作为所有会员相关记录的外键引用。为了避免数据库表的阅读困难,会员管理的相关表,使用“MS_”前缀声明。

除了以下的表外,还包括了会员的打折设置信息,积分奖励设置,以及用于会员消费的商品信息,及会员消费的记录信息(包括消费主表和明细表记录)。

为了篇幅的介绍,我主要列出会员的主表信息作为讨论参考。

表主要使用字符型的ID作为表的主键,保存的时候,ID自动使用GUID作为数据存储,由于考虑了可能多个连锁店的情况,因此,我们需要增加一个Creator, CreateTime, Editor,EditTime, Dept_ID, Company_ID的通用字段,方便存储用户的相关表记录信息,这样我们在数据过滤以及报表查询的时候,会方便很多。

3、系统模块化设计

当然会员的信息还可以扩展更多,我们一般是以一个通用的会员管理来实现这个模块,从而可以在整个大系统中进行整合和使用。而一般我们都有自己的平台模块积累,在业务层只需要整合现有的一些底层模块作为支持,业务系统我们独立开发即可,大概的构造如下所示。

当然,我们随着系统的开发,我们可能需要整合两个以上的系统(或者底层业务模块)到一个大系统里面,这种要求就需要我们所有的系统模块,都可以通过松耦合、插件化整合的方式实现使用的。

 本文主要介绍一个会员系统开发的整体思路和设计,随着开发的深入,可能会继续分享一些相关的开发心得。

本文转自博客园伍华聪的博客,原文链接:会员管理系统的设计和开发(1),如需转载请自行联系原博主。



目录
相关文章
|
Web App开发 iOS开发
无法安装此app,因为无法验证其完整性 ,解决方案
无法安装此app,因为无法验证其完整性 ,解决方案
|
存储 缓存 Linux
SMB小传 —— SMB网络文件系统协议介绍
SMB网络文件系统协议, 全名服务器消息块(Server Message Block),曾用名CIFS(通用互联网文件系统 Common Internet File System), 公元1983年诞生于IBM[1],幼年得到英特尔和微软的照料,最终在微软的培养下成长为当今世上网络文件系统协议两极之一的存在。
21780 0
|
7月前
|
存储 安全 数据安全/隐私保护
移动硬盘提示“参数错误”?修复方法来了
移动硬盘提示“参数错误”时,多数是文件系统异常或分区问题所致,并非硬盘损坏。本文详解故障原因及修复步骤,强调先恢复数据再修复硬盘,避免数据丢失。提供硬件检查、数据恢复、格式化修复等方法,并解答常见疑问,助你安全解决难题。
|
数据采集 存储 JSON
Python爬虫面试:requests、BeautifulSoup与Scrapy详解
【4月更文挑战第19天】本文聚焦于Python爬虫面试中的核心库——requests、BeautifulSoup和Scrapy。讲解了它们的常见问题、易错点及应对策略。对于requests,强调了异常处理、代理设置和请求重试;BeautifulSoup部分提到选择器使用、动态内容处理和解析效率优化;而Scrapy则关注项目架构、数据存储和分布式爬虫。通过实例代码,帮助读者深化理解并提升面试表现。
798 0
|
前端开发 JavaScript UED
JavaScript 中的函数防抖与节流详解及实用场景
在前端开发中,处理用户频繁触发的事件,如输入框的输入、按钮点击、窗口调整大小等,常常需要优化性能以减少无效操作。为此,函数防抖(debounce)和函数节流(throttle)是两种常见的性能优化手段。本文将详细介绍两者的区别与实现,并探讨它们的应用场景。
745 1
|
安全 JavaScript 前端开发
自动化测试的魔法:如何用Python编写你的第一个测试脚本
【8月更文挑战第31天】 在软件的世界里,质量是王道。而自动化测试,就像是维护这个王国的骑士,确保我们的软件产品坚不可摧。本文将引导你进入自动化测试的奇妙世界,教你如何使用Python这把强大的魔法杖,编写出能够守护你代码安全的第一道防护咒语。让我们一起开启这场魔法之旅吧!
|
安全 关系型数据库 API
Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权
这篇文章介绍了如何在Supabase中使用Github授权登录并实现用户身份验证。文章首先说明了Supabase采用postgresql的Row Level Security(RLS)机制来控制不同用户对数据表访问权限的重要性,然后详细介绍了配置Github OAuth Apps的过程,包括创建新的OAuth应用、填写项目信息、设置回调URL等步骤。接着,文章展示了在Nuxt3中实现登录界面的代码示例,最后总结了通过本教程可以学习到的技能,并预告了下一篇文章将介绍如何在Nuxt3中创建RESTful风格API并结合Supabase数据库完成CURD操作。
572 0
Nuxt3 实战 (九):使用 Supabase 实现 Github 认证鉴权
|
安全 关系型数据库 API
Nuxt3 实战 (七):配置 Supabase 数据库
这篇文章介绍了如何为Nuxt项目集成Supabase数据库。文章首先阐述了选择Supabase作为Nuxt项目的数据库的理由,包括其良好的网络评价、与Nuxt的良好集成以及对用户认证和身份鉴权的支持。接着,文章详细介绍了Supabase的特点,如使用PostgreSQL作为数据库、提供完整的认证系统、支持实时数据同步和提供对象存储服务等。然后,文章指导读者如何在Nuxt项目中安装和配置Supabase,包括设置重定向策略和获取数据库访问密钥。最后,文章强调了在开发环境和生产环境中使用不同密钥的重要性。
791 0
Nuxt3 实战 (七):配置 Supabase 数据库
|
前端开发 UED 开发者
非常好用的组件库【semi.design】
非常好用的组件库【semi.design】
466 0
基于白鲸优化算法BWO的VMD-KELM光伏发电功率预测(matlab代码+可提供讲解)
基于白鲸优化算法BWO的VMD-KELM光伏发电功率预测(matlab代码+可提供讲解)