剑客
关注科技互联网

项目总结:游船管理系统

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

需求

某公园有一个游船码头,负责人希望开发一游船管理系统。要求如下:当游客租船时,管理员输入 S 表示租船周期开始;当游客还船时,管理员输入 E 表示租船周期结束。

  • 一天结束后,要求打印租船次数和平均租船时间
  • 输出一天中的最长租用时间
  • 将报告分上午和下午输出
  • 当通信线路出问题时,删除一切不完整租船信息

只要你学过 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 路径
****************************************************/
varfs =require("fs");
varpath =require("path");
// 获取当前exe文件所在的路径
varexecPath = process.execPath;
// 获取当前exe文件所在的目录
varexecDirPath = path.dirname(execDirPath);

总结

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

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

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

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

分享到:更多 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址