、【模拟POS机】
在计算机的应用中,往往需要向LED阵列(一种发光二极管,多个排成二维显示屏幕)输出字符。这种字符是通过点阵一个点一个点描出来的。用0表示暗点,用1表示亮点。通常使用7×8大小的点阵来描绘ASC字符,右图使用*输出一个7×8的王字。
某自选商店需要定购一种POS终端,这个终端使用LED向顾客显示应付金额,已收金额和找零金额。顾客购买商品后,由收银员统计应付金额,并通过你的程序向顾客显示应付款。顾客给足付款后,收银员计算出找零并同时通过你的程序显示已收金额和找零金额。当然顾客也可能因为最后应付金额过大而取消购买,这样就在屏幕上显示CANCEL字样。由于商店规模不是很大,假定顾客购买的所有商品均在999元以内。因此实际一次显示金额最宽不超过7个字符(¥XXX.XX)。
通常POS机需要实现以下功能:
1. POS开机:第一次使用POS机,需要事先清除当日已收款
2. 统计应付金额:收银员输入应付金额,在屏幕上用7×8点阵显示应付金额
3. 收款找零:收银员输入顾客付款,在屏幕上分两行显示已收款和找零款
4. 取消付款:收银员取消本次购买。
5. 日结算:收银员统计当日销售额。
你的任务是:
(1) 流水账文件是一种后缀名为log的文本文件,当日的所有交易保存在这个流水账文件中。一笔交易为单独一行。以(时间 商品ID 品名 数目 单价 交易额)格式保存。例如:
11:20:33 11034 阿司匹林 3 13.3 39.9
程序启动时,应提示用户输入一个流水账文件名称,今日的所有操作将保存在这个流水账文件里面。若所输入的流水账文件已经存在则应跟在这个文件后面记录。
(2) 各种商品的单价保存在名为price.dat的文本文件中,按照(ID 商品名 单价)格式保存:
例如
11034 阿司匹林250mg装 13.3
13045 感冒通冲剂(雷允上) 8.5
。。。。。。
price.dat文件在本项目中无需维护。
(3) 为各项操作功能设计一个菜单。应用程序运行后,先显示这个菜单,然后操作员通过菜单项选择希望进行的操作项目;
(4) 商场老板希望能够提高效率,提高效率的最好办法是减少收银员操作错误。
如果进入用户应付款统计阶段,就只能选择收款或者取消,而不能重复统计应付款,换句话说,上述功能的3,4选项不能出现在初始菜单中,而应该在功能2中出现。而功能2进入后,要么选择收款找零,要么选择取消付款,不能进入日结算界面。
(5) 你的程序要求以大字体点阵方式显示在屏幕上,注意到并不是每次都是显示7个字符的——只有在某些情况下才出现最多7个字符
(6) 最终完成的程序脱离开发环境,在命令提示符下运行。程序名可以叫做POS.exe,程序要求可以带参运行,参数表示所加载的流水账日志文件
POS 20090611.log
则程序自动加载20090611.log流水账日志,并直接进入菜单。
设计提示
为显示出点阵图案,需要在方格纸上描出0~9个数字,以及小数点,和钱币符号,以及CANEL5个字母,描出他们的0,1点阵,存贮在一个15×7×8的数组中(15个字符,每个字符为7×8)然后需要把应付款,已收款和找零款由浮点数转换为长度不超过7的字符串,然后调用字符串显示子程序。在屏幕上显示一个字符容易,但是要并排显示多个字符有点难度,由于有多个地方要使用大字体显示,因此比较好的方法是把大字体显示单独做成一个子程序。
用c语言来编代码!!!