项目总结:游船管理系统

这个学期有一门课,叫软件工程。老师说,这个学期有四个项目,可以使用 any language(帅气,正好可以拿来练 js)。这里先亮出第一个项目。

需求

只要你学过 C/C++,看到输入 S 和输入 E,总会情不自禁地想起那个黑黑的窗口,没错,就是控制端程序的那个窗口。

但是老师不是说了,可以使用任何语言嘛!

真巧,最近正好发现了 node-webkit,可以用前端三把斧(HTML、CSS、JavaScript)来开发桌面应用喽,那就来试试呗!

程序语言与环境

  • 语言: HTML、CSS、JavaScript

  • 编辑器: Sublime Text 3

  • 运行环境: node-webkit

  • 打包工具: Inno Setup Compiler

源代码与应用

我已经将源代码寄存到了 GitHub 上面了,链接在这里

应用文件放在了度盘里:点这里

优化

  • 添加身份验证信息(姓名:2到4个汉字;身份证号:18位数字;租船编号:boat+编号)

  • 将主界面与详细租船信息界面分离

  • 打开程序时,检测文件中的有效数据,读取并显示在页面上(使用nodejs的fs模块)

  • 还船时,将完整数据存入文件(租船结束的称之为完整数据)

  • 添加欢迎界面,关闭页面提醒(使用了一个JavaScript库:PleaseWait.js

  • 加入价格,租船结束后显示账单

  • 将船的总量和租船价格只在全局变量中进行定义,方便更改船的数量

  • 管理员可通过更改 config.json 文件,从而更改船的数量以及租船价格(本来准备为应用添加一个设置菜单来实现这个功能,后来为了美观,放弃了这个决定)

  • 表单优化,不再使用alert提示错误信息,使用css伪元素显示错误信息

  • 禁用鼠标右键和 F12

  • 阻止外部文件拖拽进窗口

记录可重用代码

/* 禁用鼠标右键、F12
*************************************************/
document.addEventListener("contextmenu", function(e) {
  e.preventDefault();
});
window.addEventListener("keydown", function(e) {
  if (e.keyCode == 123) {
    e.preventDefault();
  }
});


/* 阻止文件拖拽进窗口
***************************************************/
window.addEventListener('dragover', function(e) {
  e.preventDefault();
  e.dataTransfer.dropEffect = 'none';
});
window.addEventListener("drop", function(e) {
  e.preventDefault();
});


/* 一些 nodejs 路径
****************************************************/
  var fs = require("fs");
  var path = require("path");
  // 获取当前exe文件所在的路径
  var execPath = process.execPath;
  // 获取当前exe文件所在的目录
  var execDirPath = path.dirname(execDirPath);

总结

  • 寻找应用中的相似性,以便重用代码。

  • 不管做什么东西,提前的设计是非常有必要的,不能瞎头瞎脑就开始写代码,不然你的代码的重用性就大打折扣了。

  • 不要惹恼你的用户,这也是我为什么对表单报错进行了优化,要是之前,每次报错都要 alert 一次,好烦的。

最后,引用张鑫旭大神说过的一句话:通过技术弥补设计缺陷是很傻逼的

03-05 22:51