Meu amigo me pediu para ajudar a escrever um sistema de gerenciamento de informações de membros para uma barbearia ...

fundo

Deixe-me explicar primeiro que este não é um trabalho privado, é apenas uma ajuda gratuita. Na verdade, para gastar tempo fazendo isso: Eu escrevo alguns códigos muito convencionais no meu tempo livre. Eu pessoalmente não gosto. Acho que posso passar esse tempo em outros lugares, como me aprimorando e divertindo minha vida. No entanto, fiquei inativo sem trabalhar em casa por vários meses, então tenho que escrever o código.

Um amigo mencionou isso para mim há um ano, dizendo que sou um desenvolvedor de software, posso obter um sistema de gerenciamento de informações de membros ou algo assim. Eu ainda estava trabalhando e não tinha tempo para isso. Estive ocupado recentemente quando estou livre. O tempo acabou.

Conheço a barbearia dele. Eu ficava mais de 20 dias lá para lavar os cabelos dos convidados (o final do ano foi agitado e tinha muita gente, então fiquei um tempo durante as férias de inverno). A barbearia deles é muito pequeno, registrar as informações do membro é para lhe dar um cartão (você pode retirá-lo) e há um livro (salve o cartão secundário, etc.) na loja para registrá-lo lá. Quem corta o cabelo, encontra a informação correspondente no caderno e deduz uma quantia. Provavelmente é isso, é uma operação manual em papel.

Aliás, nunca esqueci uma história: encontrei muitas coisas e pessoas nesses 20 dias e não foi fácil esquecer, então escolhi uma que pudesse contar. Eram as férias de inverno do segundo ano. Fui para lá depois de fazer o exame antes do feriado. Por isso, durante o feriado, eu já podia lavar meu cabelo comprido com eficiência (principalmente para cabelo de meninas). Durante os primeiros dois dias de férias , Certa manhã veio uma menina. Quando eu estava lavando o cabelo dela, as pessoas ficavam conversando comigo. Eu não tinha muitas conversas. De manhã, as pessoas diziam que eu iria ouvir, e quando eu pedisse, eu respondia (cabelo lavagem mais lenta, mais tempo). Aí me falaram: acho que você não gosta de conversar, é isso que significa. Naquela época, eu escutei suas palavras originais, e eu apenas hum, quem é a criança no meu coração, tão incrível, muito boa em conversar. Ela me perguntou quantos anos você acha que eu tenho. Eu pensei sobre isso e queria dizer 14. Eu queria dizer 12. Depois de pensar sobre isso, não me atrevi a dizer pequeno, com medo de ser infeliz, e não disse não se atreva a dizer muito grande, não parecia. Ela disse que tenho 21 anos ~~~~~, estou estudando na University of Light Industry ~~~~. . . . Sou obediente e pensei nisso no fundo do coração, tinha 22 anos, era um ano mais velho que os outros e não me atrevi a dizer nada. Ela passou a dizer que se dizia que ela era um rosto de bebê, bem ~~~ Eu realmente entendi a definição de um rosto de bebê quando vi alguém. Bem, é claro, como um homem hétero, outro pensamento no meu coração na época era que a indústria leve era tão longe daqui que Zheng Da estava tão longe. Não teria vindo aqui, certo? Deveria haver cabeleireira da University of Light Industry. Porém, eu realmente não falo muito. As pessoas não perguntavam sobre isso quando deveriam soprar o cabelo.

Mais perto de casa.

exigem

1. As informações do membro podem ser salvas e você pode consultá-las

2. Apenas ser capaz de modificar as informações do membro

3. Você mesmo pode modificar o dinheiro

4. Capacidade de fazer backup de dados, caso o computador tenha um problema

O acima é mencionado por outras pessoas, e as seguintes são considerações adicionais para mim:

1. Seguro, mas não preste muita atenção

Apenas ouça o endereço de loopback local, desde que o tráfego não possa entrar. Não há necessidade de considerar login ou autorização, pois está no computador de sua própria caixa registradora, e está no mesmo local do livro onde ele registra os dados do associado, e o nível de segurança é o mesmo.

2. Registro de log de operação

Você precisa pelo menos registrar quando, quem deduziu ou adicionou dinheiro ou alterou as informações. Caso eles precisem

3. Sobre o backup de dados

Aplicativo autônomo, dados de backup de host cruzado, a consideração inicial é fazer backup no disco de rede do Baidu, mas depois de ler o contrato, está tudo bem. Esse projeto informal é como um design de curso. Não sei se a revisão pode ser aprovada e é problemática.

Mais tarde, pensei nos planos individuais.

4. Implantação

A implantação é simples e você não pode permitir que as pessoas instalem e configurem muitos ambientes dependentes, como o banco de dados e o ambiente operacional java.

Além disso, é implantado no sistema Windows de um computador pessoal (win10).

Independentemente das necessidades, essas necessidades são realmente muito poucas, assim como o projeto básico de um curso.

alcançar

1. Primeiro escreva um aplicativo de servidor web

Na verdade, essa implementação deve ser escrita como um software do lado do PC é mais apropriado, mas não pensei muito no início, pensando que não tinha escrito um programa win32 por mais de dois anos, e não o fiz deseja se preocupar em escrevê-lo como um aplicativo da web java.

O front end escolheu um modelo de gerenciamento de back-end de código aberto (AdminLTE), excluiu, excluiu e alterou. Existem apenas 3 páginas com a página inicial. Nada é necessário. Ele se parece com o seguinte (a barbearia se chama Bai ** *).

Usei springboot + jpa, armazenei quase 1w peças de informações do usuário e 1w peças de registros de operação para teste. Esta pode ser a quantidade máxima de dados por dia nos últimos 60 dias (na verdade, não deve ser alcançado, não há tantos membros, os registros da operação serão excluídos 60 dias atrás, apenas 150 registros por dia podem chegar a 9k registros em 60 dias, mesmo se atingir 2w registros, não será muito), a quantidade de dados não é grande, e o h2 banco de dados embutido é usado para manter os dados no local, embalagem conveniente, backup e recuperação Também conveniente.

Esse é o problema. Está escrito como java web para implantar em seu computador, e ele precisa configurar um Java Runtime Environment primeiro e fica com vergonha de iniciá-lo todas as vezes. E não há um servidor que possa implantar esse aplicativo de serviço da web, e ele não precisa ser iniciado e interrompido todos os dias.

Depois de pensar sobre isso, escreva um cliente para iniciar esta web, seja o mais amigável possível para os usuários Xiaobai e, em seguida, empacote o ambiente de execução Java e o banco de dados no programa de instalação, que também é conveniente para instalação com um clique.

O duilib usado na biblioteca de interface, afinal, é melhor para escrever, é mais eficiente que gdi, gdi +, mfc e assim por diante.

Se parece com isso:

A descrição acima é muito clara. Após a abertura, clique no botão Iniciar para iniciar o serviço local da Web. Após a inicialização ser concluída, o navegador padrão é aberto automaticamente e digite http://127.0.0.1:8080/index.html.

Se o sistema não definir o navegador padrão, ou algum outro motivo inesperado, por exemplo, o navegador for fechado, o usuário também pode seguir o prompt da letra vermelha após a inicialização ser concluída, clique no botão copiar para copiar o endereço para a área de transferência , abra manualmente o navegador e cole o endereço abre e assim por diante.

(A garotinha na foto de fundo foi pesquisada no Baidu. Existem muitos retratos. Acho que este aqui é muito bom. Além disso, a marca d'água é invisível, então eu usei)

Claro, alguns detalhes devem ser considerados. Por exemplo, a porta de serviço já está ocupada, o aplicativo do servidor é fechado quando o cliente sai, o cliente fecha o servidor sem sair e reinicia o final, o singleton do cliente, backup remoto de dados, etc. Os detalhes ou algo assim.

Em seguida, faça um pacote de instalação, escreva alguns scripts de inicialização e, em seguida, organize o jre do java8 e empacote as coisas mais básicas, como a biblioteca dinâmica usada pelo cliente e a imagem do skin juntos. A ferramenta de empacotamento NSIS utilizada é a mais recente do site oficial, o que me fez ler o documento por muito tempo e não resistir a lê-lo. No final, encontrei uma versão inferior para aumentar a versão para gerar um script e em seguida, altere-o para evitar problemas. A seguir está meu script ajustado. Se você baixar o mais recente, pode considerar copiá-lo e alterá-lo para reproduzir, se necessário.

; 该脚本使用 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 "${NSISDIR}\Contrib\Graphics\Icons\modern-install.ico"
!define MUI_UNICON "${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} ${PRODUCT_VERSION}"
OutFile "BaishunStarter_NoBak_Setup.exe"
InstallDir "$PROGRAMFILES\BaishunStarter"
ShowInstDetails show
ShowUnInstDetails show

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

; 指定为当前用户
;SetShellVarContext current
  SetOutPath "$INSTDIR\*.*"
  SetOverwrite ifnewer
  File /r "baishun_setup\*.*"
  CreateShortCut "$DESKTOP\BaishunStarter.lnk" "$INSTDIR\BaishunStart.exe" "" "$INSTDIR\favicon.ico"
SectionEnd

Section -AdditionalIcons
  SetOutPath $INSTDIR
  CreateDirectory "$SMPROGRAMS\BaishunStarter"
  CreateShortCut "$SMPROGRAMS\BaishunStarter\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${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 ${PRODUCT_UNINST_ROOT_KEY} "${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

Então, provavelmente é assim. O pacote de instalação é um pouco maior que 90 m, principalmente porque o pacote jar é um pouco maior.

Considerações finais

Não há nenhum ponto brilhante na função disso. O que me orgulha é a ideia de fazer uma web java como um aplicativo de PC autônomo para usar essa ideia. Esse tipo de realização não deveria ter significado para muitas pessoas. Gravação O software independente do lado do PC pode ser escrito em c ++ ou c # e geralmente não é necessário seguir este caminho.

Este projeto é pequeno como um design de curso, e os pontos de função nem mesmo são dignos de um design completo. Mas a embalagem final é para compensar as deficiências de um pequeno rabo que eu fiz quando fiz o design. O design que levou mais de dois meses para ser escrito era para gerenciamento de exames, e parte dele era para alunos. Arquitetura B / S escrita em Java. Aplicação Web (geração de papéis de teste para exames, consulta de resultados, etc., e então no estágio naquela época, usei muitas habilidades técnicas, shiro de segurança, armazenamento externo de sessão compartilhada e construí um cluster redis e uso hierárquico de engenharia dubbo Muitas chamadas de rpc e assim por diante ...), outra parte da estrutura C / S é escrita em C ++, principalmente para professores, importando o banco de questões, julgando questões automaticamente / julgando questões manualmente , gerando pontuações, etc., o servidor usa o modelo de rede IOCP. O formato do protocolo dos dados de comunicação ainda é autodefinido, embora seja muito baixo. Naquela época, eu também comprei uma implantação de servidor Alibaba Cloud. Mas naquela época só pensei em mostrar a função do cliente para o professor. Não considerei a praticabilidade. Não estudei como fazer um programa de instalação no windows. Só aproveitei para estudar dessa vez .

Se houver alunos na escola que fazem o design do curso normal e precisam da implementação pronta da web part para referência, você pode confiar em mim em particular.

Acho que você gosta

Origin blog.csdn.net/x763795151/article/details/105441054
Recomendado
Clasificación