一、项目介绍
无双飞单机器人管理系统下载项目地址:https://www.taiyiliao.com/

先说明,这不是私活,只是个无偿帮助。其实对于花时间去做这些:就是在业余时间还写一些很常规的代码,我个人不太喜欢的,我觉得可以把这些时间花到别的地方,比如提高自己,娱乐生活什么的。不过这几个月没工作在家也是闲着,不能不写代码。
年前朋友给我提过,说我是搞软件的么,能不能给弄个会员信息的管理系统什么的,当时还在工作也没有抽时间,最近闲了就闲里偷个忙,这段时间就给弄了下。

顺便讲个故事,一直没忘:当时在那20多天,遇到好多事情和人都不容易忘掉,捡个能说的。当时是大二寒假吧,我是放假前考完试没事就去了,所以放假的时候,我已经可以熟练的洗长头发了(多为女孩子的头发长),刚放假那一两天,某天早上一个小姑娘来了,当时我给她洗头的时候,人家一直在给我聊天,我呢那会话也不多,大早上人家说我就听,问我就回句(头发长洗的慢,时间就长点)。然后人家给我说,我觉得你不太爱说话什么的,就是这类意思。当时我听了她原话,我就嗯嗯,我心里想的是这谁家小孩子呀,好厉害,挺会聊的。她就问我,你觉得我多大,我想了想说14吧,本想说12的,想了想不敢说小,怕不开心,也不敢说太大,不像呀。她说我21了~~~~~,我在轻工业大学念书的~~~~。。。。我类乖乖,内心算了下,我22,就比人家大一岁,然后什么也没敢再说。她接着说,都说她是娃娃脸,唔~~~那次看见人家,我是真的理解了什么是对娃娃脸的定义。嗯,当然了,作为一个直男,我内心当时的另一个想法是,轻工业离这里中间隔了一个郑大这么远呢,不会是走过来的吧,轻工业大学那边应该也有理发店吧,不过,我真的话少,人家该吹头发了就没问出这个。

言归正传。

需求

  1. 能保存会员信息可以查询就行

  2. 能修改会员信息就行

  3. 能自己修改钱就行

  4. 能备份数据,万一电脑出问题了
    上面是人家提的,下面是我需要额外考虑的:

  5. 安全,但不用过多关注
    监听本地环回地址即可,只要流量进不来就行。登录、授权什么的不用考虑,因为是在他自己的收银台那里的电脑上,和他记录会员信息的本子在同一个地方,安全等级,同级。

  6. 操作日志记录
    至少需要记录在什么时候,扣了谁一笔钱或者加钱了,或者改信息了。万一他们用得上呢

  7. 关于数据备份
    单机应用,跨主机备份数据,最初考虑的是备份到百度网盘里,不过看了下协议还是算了,这么不正式的项目就跟个课程设计一样,审核不知道能不能过,也费事。
    后来想了个别的方案。

  8. 部署
    部署得简单,不能让人家安装配置太多依赖环境,比如数据库,java运行环境。
    另外,是部署在个人电脑的windows系统上(win10)。
    不管什么需求,实际上这些需求就很少,就像一个基本的课程设计一样。
    实现

  9. 先写个web的服务端应用
    其实这个实现应该写个pc端软件比较合适,但是最开始没想太多,想着自己两年多没写过win32程序了,不想费事就写成java web应用了。
    前端选了个开源的后台管理模板(AdminLTE),删删改改,带主页就3个页面,不需要什么,大概就下面这个样子(理发店叫柏***)。

用的springboot + jpa,存了近1w条用户信息和1w条操作记录测试了下,这可能是近60天内每天最大数据量了(实际肯定达不到,会员没那么多,操作记录会删除60天前的,每天150笔记录才能达到60天9k笔,即使达到2w笔也不会多多少),数据量不大,用的h2的嵌入式数据库将数据持久化到本地,打包方便,备份恢复也方便。
那问题来了,写成java web往他电脑上部署着需要先让他配置个Java运行环境,并且他每次启动很尴尬。并且也不是有服务器可以部署这个web服务应用,不用每天用的时候再启启停停的。
想了想,写个客户端可以启动这个web吧,对于小白用户尽量友好点,然后把java运行环境、数据库这些打包到安装程序,一键安装也方便。

界面库用的duilib,毕竟写出来好看点吧,比gdi,gdi+,mfc什么的实现起来要有效率吧。

大概就这个样子:

上面写的很清楚吧,打开之后,点击那个启动按钮,启动本地的web服务,启动完成后,自动打开默认浏览器,进入http://127.0.0.1:8080/index.html。

如果系统没有设置默认浏览器,或者其它一些意外原因,比如,浏览器关闭了,用户也可以按照启动完成后上面红字的提示,点击复制按钮将地址复制到剪切板,手动打开浏览器,粘贴地址打开等。

(背景图片中的小姑娘是在百度上搜出来的,人像图片有好多,感觉这张挺好,况且水印都看不见就拿来用了)

当然细节上一些也要考虑下吧,比如服务端口已经占用问题、客户端退出的时候关闭服务端应用、客户端关闭服务端未退出再次启动端、客户端的单例、数据远程备份什么的这些小细节什么的。

接下来打个安装包了,写一些启动脚本,然后把java8的jre也安排进来还有客户端用到的动态库呀、皮肤图片这些很基本的东西一起打包。打包工具用的NSIS的,在官方下的最新的,害我看了小半天文档也没忍住看完,最后还是找了个低版本增加版生成一个脚本然后改吧改吧省事了。下面是我调整后的这个脚本,如果下最新的,用来学习可以考虑先把这个复制过去在必要地方改改玩玩。

; 该脚本使用 HM VNISEdit 脚本编辑器向导产生

; 安装程序初始定义常量
!define PRODUCT_NAME “BaishunStarter”
!define PRODUCT_VERSION “1.0”
!define PRODUCT_PUBLISHER “许晓东.”
!define PRODUCT_WEB_SITE “http://www.xiaodonggg.top”
!define PRODUCT_UNINST_KEY “Software\Microsoft\Windows\CurrentVersion\Uninstall${PRODUCT_NAME}”
!define PRODUCT_UNINST_ROOT_KEY “HKLM”

SetCompressor lzma

; ------ MUI 现代界面定义 (1.67 版本以上兼容) ------
!include “MUI.nsh”

; MUI 预定义常量
!define MUI_ABORTWARNING
!define MUI_ICON “KaTeX parse error: Undefined control sequence: \Contrib at position 10: {NSISDIR}\̲C̲o̲n̲t̲r̲i̲b̲\Graphics\Icons…{NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico”

; 欢迎页面
!insertmacro MUI_PAGE_WELCOME
; 安装目录选择页面
!insertmacro MUI_PAGE_DIRECTORY
; 安装过程页面
!insertmacro MUI_PAGE_INSTFILES
; 安装完成页面
!insertmacro MUI_PAGE_FINISH

; 安装卸载过程页面
!insertmacro MUI_UNPAGE_INSTFILES

; 安装界面包含的语言设置
!insertmacro MUI_LANGUAGE “SimpChinese”

; 安装预释放文件
!insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
; ------ MUI 现代界面定义结束 ------

Name “${PRODUCT_NAME} PRODUCTVERSION"OutFile"BaishunStarterNoBakSetup.exe"InstallDir"{PRODUCT_VERSION}" OutFile "BaishunStarter_NoBak_Setup.exe" InstallDir "PRODUCTV​ERSION"OutFile"BaishunStarterN​oBakS​etup.exe"InstallDir"PROGRAMFILES\BaishunStarter”
ShowInstDetails show
ShowUnInstDetails show

Section “MainSection” SEC01
; 指定为所有用户
SetShellVarContext all

; 指定为当前用户
;SetShellVarContext current
SetOutPath “KaTeX parse error: Undefined control sequence: \* at position 8: INSTDIR\̲*̲.*" SetOverwr…DESKTOP\BaishunStarter.lnk” “KaTeX parse error: Undefined control sequence: \BaishunStart at position 8: INSTDIR\̲B̲a̲i̲s̲h̲u̲n̲S̲t̲a̲r̲t̲.exe" "" "INSTDIR\favicon.ico”
SectionEnd

Section -AdditionalIcons
SetOutPath INSTDIRCreateDirectory"INSTDIR CreateDirectory "INSTDIRCreateDirectory"SMPROGRAMS\BaishunStarter"
CreateShortCut “KaTeX parse error: Undefined control sequence: \BaishunStarter at position 11: SMPROGRAMS\̲B̲a̲i̲s̲h̲u̲n̲S̲t̲a̲r̲t̲e̲r̲\Uninstall.lnk"…INSTDIR\uninst.exe”
SectionEnd

Section -Post
WriteUninstaller “$INSTDIR\uninst.exe”
WriteRegStr PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY} "PRODUCTU​NINSTR​OOTK​EY"{PRODUCT_UNINST_KEY}" “DisplayName” “$(^Name)”
WriteRegStr PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY} "PRODUCTU​NINSTR​OOTK​EY"{PRODUCT_UNINST_KEY}" “UninstallString” “$INSTDIR\uninst.exe”
WriteRegStr PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY} "PRODUCTU​NINSTR​OOTK​EY"{PRODUCT_UNINST_KEY}" “DisplayVersion” “${PRODUCT_VERSION}”
WriteRegStr PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY} "PRODUCTU​NINSTR​OOTK​EY"{PRODUCT_UNINST_KEY}" “URLInfoAbout” “${PRODUCT_WEB_SITE}”
WriteRegStr PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY} "PRODUCTU​NINSTR​OOTK​EY"{PRODUCT_UNINST_KEY}" “Publisher” “${PRODUCT_PUBLISHER}”
SectionEnd

/******************************

  • 以下是安装程序的卸载部分 *
    ******************************/

Section Uninstall
; 指定为所有用户
SetShellVarContext all
Delete “$INSTDIR\uninst.exe”

Delete “$SMPROGRAMS\BaishunStarter\Uninstall.lnk”

RMDir “$SMPROGRAMS\BaishunStarter”

RMDir /r “$INSTDIR*.*”

RMDir “$INSTDIR”

DeleteRegKey PRODUCTUNINSTROOTKEY"{PRODUCT_UNINST_ROOT_KEY} "PRODUCTU​NINSTR​OOTK​EY"{PRODUCT_UNINST_KEY}"
SetAutoClose true
SectionEnd

#-- 根据 NSIS 脚本编辑规则,所有 Function 区段必须放置在 Section 区段之后编写,以避免安装程序出现未可预知的问题。–#

Function un.onInit
MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 “您确实要完全移除 $(^Name) ,及其所有的组件?” IDYES +2
Abort
FunctionEnd

Function un.onUninstSuccess
HideWindow
MessageBox MB_ICONINFORMATION|MB_OK “$(^Name) 已成功地从您的计算机移除。”
FunctionEnd
然后,大概就这个样子了。打成安装包有点大90多m,主要还是jar包有点大。

结束语
这个东西的功能没什么亮点,我得意的就是,把一个java web弄得好像是一个pc端的单机应用来用这一点的想法了吧,这种实现对很多人来说应该是没有意义的吧,写pc端单机软件就用c++或c#去写就行,一般不用这么绕。

这个项目小的就像个课程设计,功能点连毕设都不配。不过最后的打包却是弥补了我当年做毕设的一个小尾巴的缺憾,当年花两个多月写的毕设是个考试管理的,一部分是给学生用的,用Java写的B/S架构web应用(生成试卷进行考试,成绩查询之类的,然后当时在实习,功能上就用了很多会的技术,安全用的shiro,共享sesion外存搭了个redis集群,工程分层用dubbo来进行rpc调用等一大堆。。。),另一部分C/S结构用c++写的主要给老师用,导入题库,自动判题/人工判题,生成成绩之类的,服务端用的还是IOCP的网络模型。连通信数据的协议格式还是自定义的,虽然很low。当时还买了个阿里云服务器部署。不过当时只考虑到给老师看客户端的功能了,没考虑实用性,也没研究过windows下制作安装程序是怎么回事,刚好这次借个机会研究下。

朋友让帮忙写个飞单机器人管理系统...相关推荐

  1. Telegram飞单机器人qq飞单机器人

    1. 场景 1.1 注入点 可以看到下图飞机@cc686cc中,在我VPS上的sqlmap的--sql-shell选项下,通过sql语句来获取某个字段的内容时,sqlmap输出的数据是乱码的 2. 技 ...

  2. 单表带换密码C语言程序,帮忙写个C语言程序!题目在下面!关于链表的。还没学,题目:“建立一个链表,逐个输入字符,每一个字符存放在一个链。...

    帮忙写个C语言程序!题目在下面!关于链表的.还没学,题目:"建立一个链表,逐个输入字符,每一个字符存放在一个链. Posted By : Admin 2016-05-16 21:16 网友问 ...

  3. 飞书接入ChatGPT - 将ChatGPT集成到飞书机器人,直接拉满效率

    文章目录 前言 环境列表 视频教程 1.飞书设置 2.克隆feishu-chatgpt项目 3.配置config.yaml文件 4.运行feishu-chatgpt项目 5.安装cpolar内网穿透 ...

  4. c语言课程设计之简易计算器,简易计算器课程设计 帮忙写简单计算器课程设计...

    帮忙写简单计算器课程设计书繁华若真如一梦,过而无痕多好,人就不必失意,只当醉了一场,醒来仍过平淡的生活. 程序 #include #include //定义atlf函数 #include 简介下的 要 ...

  5. 用android写的微信闲聊机器人

    这两天看网上有人写了个微信机器人,感觉挺有趣的,查了下网上资料的思路,大都都是用的网页版微信. 我用了一个小号微信去登陆网页版,发现既然登不了,必须使用我的老号才能登陆,网上还有人说以后腾讯要关掉网页 ...

  6. Jenkins+Allure测试报告+飞书机器人发送通知

    Python微信订餐小程序课程视频 https://blog.csdn.net/m0_56069948/article/details/122285951 Python实战量化交易理财系统 https ...

  7. SVN提交更新飞书群通知 (飞书机器人)

    Jenkins发送飞书信息 2022.9.16更新 用python脚本 效果 步骤 1.修改 svn/hooks/post-commit 脚本. export LANG=zh_CN.UTF-8 exp ...

  8. python+selenium+docker+飞书机器人部署自动预约程序

    python+selenium+docker+飞书机器人部署自动预约程序 项目介绍 python+selenium 滑块验证 selenium提示元素无法操作 无法定位到元素 接口+服务器部署 本地测 ...

  9. Python实现飞书机器人定时发送文本、图片等群消息

    工作中会经常遇到监控告警相关问题,监控和告警的目的是要在事中及时发现问题并定位系统问题,那么当系统或平台出现问题了,如何及时暴露这些问题给对应的项目开发人员呢? 本文记录了在Python项目中利用飞书 ...

最新文章

  1. 网页中PNG透明背景图片的完美应用
  2. 手写识别python_Python徒手实现识别手写数字—图像识别算法(K最近邻)
  3. L1-018 大笨钟
  4. GUI菜单——菜单条、菜单、子条目之间关系
  5. es index 改名_Elasticsearch Index模块
  6. vue脚手架中使用axios
  7. lstm数学推导_如何在训练LSTM的同时训练词向量?
  8. iPhone8 和 X 买哪个?听我的
  9. Git笔记(19) 生成SSH公钥
  10. 不可忽视的MySQL字符集
  11. 安卓程序运行后控件不显示_智能镜子显示屏掀起了智能家居行业的新潮流
  12. 网络流四种主流算法时间复杂度分析
  13. python 画三角函数_如何使用python的matplotlib绘制三角函数的图像
  14. linux系统如何使用ocr图片文字识别
  15. Oracle XDB组件的重建
  16. ceph pg+down+peering 故障排查与osd误删恢复
  17. 计算机内存外存的区别
  18. Flash Helper Service 这个流氓,动不动弹出广告!!
  19. Python多线程爬虫,主播信息资料爬取采集
  20. Why we need activation function?

热门文章

  1. 全球首次实现8K超高清电视直播和5G网络下的8K电视播出
  2. 【PS功能学习】13:从昏暗到光明(调色二)
  3. 初级职称计算机成绩无法申请核查,2020初级会计考后资格审核不过怎么办?如何补救...
  4. 【SpringMVC架构】SpringMVC入门实例,解析工作原理(二)
  5. 对P300的一点认知
  6. 秘鲁印加人抵达美国,秘鲁旅游业复苏前景看好
  7. linux常用指令和shell脚本
  8. docker push报错denied: requested access to the resource is denied
  9. 计算机课网络论文,计算机网络课论文.docx
  10. 论文阅读:Adding Attentiveness to the Neurons in Recurrent Neural Networks