1,项目介绍:
先对这个练习项目做一个大概的介绍:商店里进行购物结算时会使用收银机(POS)系统,这台收银机会在结算时根据客户的购物车(Cart)中的商品(Item)和商店和正在进行的优惠活动(Promotion)进行结算和打印购物清单。已知该商店正在对部分商品进行"买二赠一"的优惠活动。我们需要实现一个名为printInventory函数,该函数能够将指定格式的数据作为参数输入,然后在浏览器的控制台中输出结算清单的文本。web版具体项目需求请看卡片:
https://trello.com/b/GnmBAyPK/pos.2,时间计划:
内容 | 计划时间(小时) | 实际时间(小时) |
搭建项目框架 | 0.5 | 0.5 |
界面设计 | 0.5 | 0.5 |
逻辑设计 | 2 | 2.5 |
走查 | 1 | 1 |
bug时间 |
由于之前的party_bid练习有用到AngularJs,对它有一定的了解,并且刚刚做了一个jQuery版本的pos机,所以能节省很多时间.我也大致在计划时间内完成了这个练习.
3,用AngularJs编写webpos:
(1,搭建项目框架:
依然使用yeoman创建项目,打开终端在目标文件夹下输入:
yo angular
会提示选择一些包,根据项目我选择了bootstrap.
(2,界面设计:
依然使用的bootstrap的样式.项目生成的时候就生成了bootsrap模块,所以这里就可以直接根据需要直接在标签中使用css选择器引用需要的样式.
我的pos机主要使用了Navbars导航条的样式:
<div class="navbar navbar-inverse"> <div class="container"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target=".navbar-collapse"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand" href="#">Let's Go</a> </div> <div class="navbar-collapse collapse"> <ul class="nav navbar-nav"> <li class="active"><a href="#">Home</a></li> <li ng-click='product()'><a href="">商品列表</a></li> </ul> <ul class="nav navbar-nav navbar-right"> <li ng-click="shopping_cart()"><a ><span class="glyphicon glyphicon-shopping-cart" ></span>购物车({{num}})</a></li> </ul> </div><!--/.nav-collapse --> </div> </div>
导航条中给每个导航绑定了相应的点击事件,购物车的数量通过AngularJs的表达是"{{}}"与控制器中的数据进行绑定.
(3,逻辑设计:
页面跳转:先写app.js,通过路由实现各个页面之间的跳转。
控制器:编写每一个页面的控制器。
模型:编写页面的数据处理函数。
商品列表:
首先定义一个类,有商品的各种属性:
function Item(barcode,sort, name, unit, price) { this.barcode = barcode; this.sort = sort; this.name = name; this.unit = unit; this.price = price || 0.00; }
定义一个方法实现调用上面的类生成一组商品信息:
function loadAllItems() { return [ new Item('coke','饮料', '可口可乐', '瓶', 3.00), new Item('sprite','饮料', '雪碧', '瓶', 3.00), new Item('apple','水果', '苹果', '斤', 5.50), new Item('lychee','水果', '荔枝', '斤', 15.00), new Item('battery','生活用品', '电池', '个', 2.00), new Item('instant_noodles','食品','方便面', '袋', 4.50) ]; }
再定义了一个Product类,并写了一个实例方法list()
function Product (){ }; Product.prototype.list = function(){ return loadAllItems(); }
最后在控制器中new一个Product类,调用它的方法list返回商品的所有信息,并用$scope绑定在到界面上显示。
$scope.products = new Product().list();
购物车:
var bought_list = function(){ var list = JSON.parse(localStorage['list'] || '[]'); var allItems = new Product().list(); allItems = _(allItems).each(function(item){ try{ item.num= _(list).findWhere({'name':item.name}).num }catch(err){ item.num=0; } ; }); allItems = _(allItems).filter(function(num){ return num.num !=0; }); return allItems; };
定义一个bought_list函数,根据localStorage中购买商品的数量,将已经点击了“添加到购物车”的商品找出来,return 这些商品。然后在控制器中调用这个函数,将得到的信息显示到购物车界面上。
购物车中的商品数量加一:
var add = function(name){ var list = JSON.parse(localStorage['list'] || '[]'); list = _(list).each(function(item){ if(item.name == name){ item.num +=1; } }); localStorage['list'] = JSON.stringify(list); }
判断商品是否打折:
<td><span ng-show='{{num >=3 &&check_cut(name)}} ' class="ng-hide">{{(num-filters(num/3))*(price)}}(原价:{{(lnum)*(price)}})</span><span ng-show='{{num <3||!check_cut(lname)}}' class="ng-hide">{{(lnum)*(price)}}</span></td>
使用了AngularJs 的ng-show和ng-hide方法。通过判断当前商品是不是促销商品(check_cut())和并且数量大于二。如果满足二者,二显示打折后的价格和原价,反之只显示原价.
总结:
这个练习巩固了一下之前所学习的AngularJs,我也自我提高了对时间的管理,比上一个jQuery练习好很多,相对与第一个AngularJs 练习项目——party_bid更是有了比较大的进步。
不足之处,界面的样式还不是很会调,有时会因为一个元素的样式而浪费一些时间。接下来会多一点去了解css
项目GitHub地址:
https://github.com/zhangkehbg/web_pos_angularJs
相关推荐
在网页版POS机小票打印中,Socket被用来建立Web服务器和POS机之间的连接。通过这个连接,网页上的指令可以被传输到POS机,控制其进行打印操作。同时,POS机的状态和反馈信息也可以通过Socket返回到网页端,确保整个...
JavaPOS机项目练习是一个非常适合Java初学者的C/S(客户端/服务器)应用程序,它利用了Java的Swing库来构建用户界面,并通过JDBC(Java Database Connectivity)与数据库进行交互。这个项目旨在帮助学习者掌握Java ...
POS机对接SDK是一种软件开发工具包,主要用于帮助开发者在C#环境下实现与POS(销售点)设备的交互。8583是金融行业的标准报文格式,全称为ISO 8583,用于电子支付系统中的数据交换。在这个场景中,8583报文被用来...
POS 机芯片型号整理 POS 机是指点售机,是一种电子支付终端,能够为用户提供便捷的支付服务。随着科技的发展,POS 机的芯片型号也在不断更新换代。下面,我们将对 POS 机的芯片型号进行整理和分析。 1. 主控芯片 ...
总结来说,Web打印POS小票机的核心在于利用LODOP插件,通过JavaScript编写代码,结合HTML和CSS来设计布局,实现对POS小票机的控制。这不仅降低了成本,也提高了效率,是现代零售业中一个实用的技术解决方案。
联迪pos机驱动联迪E550移动pos机 - 移动pos机,银联pos机,
在IT行业中,尤其是在支付系统和零售业,与POS(Point of Sale)机的通信是至关重要的。本项目涉及的是使用Java进行串口通信,以便与银联POS机进行交互。以下将详细介绍这个过程中的关键知识点。 1. **Java串口通信...
本项目聚焦于使用C#编程语言与POS机进行通信,借助posinf.dll动态链接库实现这一功能。下面将详细阐述相关知识点。 1. **C#编程语言**:C#是由微软开发的一种面向对象的编程语言,广泛应用于Windows平台的软件开发...
【Android代码-安卓版本pos机】项目主要涵盖了在Android平台上开发的一款移动支付终端应用,它允许用户通过智能手机或平板电脑进行类似于传统POS机的交易操作。这个项目的核心目标是将传统的零售支付体验移植到移动...
POS机行业2022年发展概况分析及未来十年POS机行业数据趋势预测.docx
在本文中,我们将深入探讨如何使用Java调用DLL库,特别是在银联POS机接口的集成应用上。这个项目是基于JDK1.8开发的,它利用了Maven作为项目管理工具,使得开发者能够更方便地引用和管理DLL库。对于那些在IT行业,...
pos机驱动,万能的POS机驱动,方便好用。
POS机销售网站PHP是一个基于PHP语言开发的网页应用,主要用于在线销售POS(Point of Sale)设备。这个项目设计为宽屏页面,具有高端、大气、上档次的视觉效果,为用户提供了良好的浏览和购物体验。从提供的文件列表...
"POS机UML图实现" 在POS机系统中,UML图是非常重要的一部分,能够帮助开发人员和业务人员更好地理解和描述系统的架构和行为。在本文中,我们将通过对POS机系统的分析,生成相关的知识点,并将其组织成一份详细的UML...
在本文中,我们将深入探讨如何使用从废弃POS机中拆解出的LCD12864液晶屏。LCD12864是一种常见的图形液晶显示器,具有128x64像素的分辨率,广泛应用于各种电子设备中。通过理解其管脚定义、连接方式以及编写合适的...
《PBootCMS响应式刷卡机POS机网站模板与支付设备网站源码详解》 在数字化支付日益普及的今天,POS机作为商家与消费者之间的重要桥梁,其在线展示平台也日益受到重视。PBootCMS响应式刷卡机POS机网站模板正是为满足...
POS机,全称为Point of Sale,即销售点终端,是一种用于商业交易的设备,常见于零售店、餐馆等场所。POS机代码通常指的是用于控制POS机运行的软件程序,包括了处理交易、管理库存、顾客服务等多个方面的功能。在本文...
在本项目中,"C语言简单POS机"是一个用C语言编写的简易销售点(Point of Sale, POS)系统。这个项目旨在帮助学习C语言的初学者理解和实践编程概念,同时也为那些想了解POS系统工作原理的人提供了一个基础的平台。 ...
POS机使用