书香雅阁论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 896|回复: 1

【店铺会员系统设计】

[复制链接]

416

主题

439

帖子

158万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
1581489
发表于 2023-4-14 00:47:09|字数:3,752 | 显示全部楼层 |阅读模式
LV10 站长

我们本节来设计一个店铺会员系统设计,相当于对前面所学知识的一次总结复习,本节考察了除网络方面外的其他的几乎所有的知识点,也算是一个课程设计,大家学习的时候要照着源码去看去调试

源码下载: 店铺会员系统.e (939.22 KB, 下载次数: 220)


主界面的图:

1.png
创建界面的窗口:
2.png
编辑界面的图:
如上图,这里就先不放了

实现功能:
对顾客进行消费反馈积分,积分可以兑换商品
比如到店消费100,我们就给他100积分
首次需要创建账号,账号名可以写手机号,密码是为了防止他人兑换物品时报人家手机(手机号容易泄露)
后面每次消费了我们使用编辑功能修改积分即可

————————————————————————————————————————————————

好的,接下来大家一边调试一边看代码,我们首先讲解的是_启动窗口的代码

  
子程序名返回值类型公开备 注
__启动窗口_创建完毕  
数据目录 = 取运行目录 ()“\data\”
目录_创建 (数据目录)  ' 窗口启动后自动创建目录,此代码是为了保证该目录一定存在
线程_启动 (&刷新数据)    ’这句代码来源于精易模块,相当于启动线程命令,只是更加稳定


&刷新数据这是一个子程序指针,你不明白没关系,简单来讲就是要载入一个名为刷新数据()的子程序了,这个子程序非常重要,几乎每一个操作都会用到,功能就是将当前的所有数据重新加载一次(比如我创建了新用户,编辑用户积分都需要使用)


  
子程序名返回值类型公开备 注
刷新数据  
变量名类 型静态数组备 注
数据文件文本型 0
数据数整数型  
i整数型  
索引整数型  
会员会员  
超级列表框1.全部删除 ()  ' 这句代码很重要,因为我们的软件加载的数据存在一个刷新的问题,不把前面的数据清空就会存在一个数据重复的问题,大家啊可以屏蔽代码测试
数据数 = 文件_枚举 (数据目录, “*.ini”, 数据文件, )
计次循环首 (数据数, i)
索引 = 超级列表框1.插入表项 (, , , , , )
超级列表框1.置标题 (索引, 0, 到文本 (索引 + 1))
会员.用户名 = 读配置项 (数据文件 , “data”, “用户名”, )
会员.密码 = 读配置项 (数据文件 , “data”, “密码”, )
会员.积分 = 读配置项 (数据文件 , “data”, “积分”, )
超级列表框1.置标题 (索引, 1, 会员.用户名)
超级列表框1.置标题 (索引, 2, 会员.密码)
超级列表框1.置标题 (索引, 3, 会员.积分)
计次循环尾 ()


i支持库列表   支持库注释   
iext扩展界面支持库一

这里涉及的技术就比较多了,我们对于这些疑难点一个个讲解
①:数据数 = 文件_枚举 (数据目录, “*.ini”, 数据文件, 真)
文件_枚举这是精易模块的命令,整句代码的意思就是,读取数据目录这个文件夹的后缀为ini的文件(数据目录是一个全局变量,在子程序 __启动窗口_创建完毕中我们对其进行了赋值,数据目录 = 取运行目录 () + “\data\”),最后的结果是1个数组,使用数据文件这个数组去接收

②:这里的计次循环结构使得超级列表框可以将数据文件这个数组的成员全部添加到表格里面,这个技术大家应该是比较熟悉了,比如前面的课程040:【超级列表框读取数据】就已经讲过这个技术了

③:会员.用户名这种格式叫自定义数据,我们在021:【自定义数据类型】也是讲过的,同时这个会员是一个全局变量,我们在上一课讲过了,所以这也是一个难点

接下来的代码应该没啥难度,就是鼠标右键单击表项的的时候,需要弹出菜单,这个菜单的相关应用我们前面也是讲过的,022: 【菜单的设计】

  
子程序名返回值类型公开备 注
_超级列表框1_右键单击表项  
选中会员.用户名 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
选中会员.密码 = 超级列表框1.取标题 (超级列表框1.现行选中项, 2)
选中会员.积分 = 超级列表框1.取标题 (超级列表框1.现行选中项, 3)
弹出菜单 (功能, , )


i支持库列表   支持库注释   
iext扩展界面支持库一

这里有2个技术点要讲一下
①:
3.png
这张图想表达的意思就是,可视属性决定是否在窗口可以直接查看到
②:
选中会员.用户名 = 超级列表框1.取标题 (超级列表框1.现行选中项, 1)
超级列表框1.现行选中项就是我们鼠标右键选中的项的索引值(第几行然后再减去1),这里将所在行的信息存储起来,在接下来的编辑窗口中会发挥出作用

————————————————————————————————————————

接下来的代码就越来越简单了
先来看下创建窗口的代码
  
窗口程序集名保 留  保 留备 注
窗口程序集_窗口_创建   
子程序名返回值类型公开备 注
_按钮_创建_被单击  
变量名类 型静态数组备 注
记录路径文本型  
记录路径 = 数据目录 + 编辑框_密码.内容 + “.ini”
写配置项 (记录路径, “data”, “用户名”, 编辑框_账号.内容)
写配置项 (记录路径, “data”, “密码”, 编辑框_密码.内容)
写配置项 (记录路径, “data”, “积分”, 编辑框_积分.内容)
刷新数据 ()
窗口_创建.销毁 ()

这里使用的是一个写配置项的代码,没影响就看下:012:【配置的读写】
但是有2句代码值得讲一下,刷新数据 ()相当于让_启动窗口显示的数据重新刷新一次,不过我们这里没有使用多线程,为什么不使用?因为我们在设计时要等待他执行完再关闭当前窗口,也就是窗口_创建.销毁 ()
(不等待的话,窗口关闭了_启动窗口还在刷新感觉怪怪的)



最后,我们再看一下编辑窗口的代码
  
窗口程序集名保 留  保 留备 注
窗口程序集_窗口_编辑   
子程序名返回值类型公开备 注
_窗口_编辑_创建完毕  
编辑框_账号.内容 = 选中会员.用户名
编辑框_密码.内容 = 选中会员.密码
编辑框_积分.内容 = 选中会员.积分
子程序名返回值类型公开备 注
_按钮_修改_被单击  
变量名类 型静态数组备 注
记录路径文本型  
记录路径 = 数据目录 + 编辑框_密码.内容 + “.ini”
写配置项 (记录路径, “data”, “用户名”, 编辑框_账号.内容)
写配置项 (记录路径, “data”, “密码”, 编辑框_密码.内容)
写配置项 (记录路径, “data”, “积分”, 编辑框_积分.内容)
刷新数据 ()
窗口_编辑.销毁 ()

修改操作没啥好讲的,和创建一样,就是一个数据的覆盖过程,我们讲一下_窗口_编辑_创建完毕这个子程序,这里将前面右键单击超级列表框时存储的数据读取出来了
(大家在调试的时候可能发现编辑窗口的用户名修改不了,因为我对这个编辑框的禁止属性设置为真)


(点击返回课程目录https://shuxiangyage.net/forum.php?mod=viewthread&tid=1134
回复

使用道具 举报

0

主题

1

帖子

124

积分

注册会员

Rank: 2

积分
124
发表于 2023-4-17 23:52:47 | 显示全部楼层
大哥牛逼
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|小黑屋|书香雅阁论坛 ( 湘ICP备17011672号-3 )

GMT+8, 2024-5-17 18:10 , Processed in 0.137476 second(s), 27 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表