《C语言课程设计---模拟POS(11页).doc》由会员分享,可在线阅读,更多相关《C语言课程设计---模拟POS(11页).doc(10页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、-C语言课程设计-模拟POS-第 10 页【内容提要】在单片机应用中,往往需要向LED阵列(一种发光二极管,多个排成二维显示屏幕)输出字符。这种字符是通过点阵一个点一个点描出来的。用0表示暗点,用1表示亮点。通常使用78大小的点阵来描绘ASC字符,右图使用*输出一个78的王字。某自选商店需要定购一种POS终端,这个终端使用LED向顾客显示应付金额,已收金额和找零金额。顾客购买商品后,由收银员统计应付金额,并通过你的程序向顾客显示应付款。顾客给足付款后,收银员计算出找零并同时通过你的程序显示已收金额和找零金额。当然顾客也可能因为最后应付金额过大而取消购买,这样就在屏幕上显示CANCEL字样。由于
2、商店规模不是很大,假定顾客购买的所有商品均在999元以内。因此实际一次显示金额最宽不超过7个字符(¥XXX.XX)。 本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个模拟单片机上运行的POS系统,并能最终实现本系统的功能要求。目录1. 概述系统的主要功能32. 任务书的基本要求与内容43. 系统的功能结构框图54. C语言程序代码65. 运行结果116. 使用说明127. 设计日志以及心得体会12【系统的主要功能】 本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个模拟单片机上运行的POS系统,并能最终实现本系统的功
3、能要求。 你的程序需要实现以下功能:1 POS开机:第一次使用POS机,需要事先清除当日已收款2 统计应付金额:收银员输入应付金额,在屏幕上用78点阵 显示应付金额3 收款找零:收银员输入顾客付款,在屏幕上分两行显示已收款和找零款4 取消付款:收银员取消本次购买。5. 日结算:收银员统计当日销售额。【任务书的基本要求与内容】【题目要求】1. 商场老板希望能够提高效率,提高效率的最好办法是减少收银员操作错误。如果进入用户应付款统计阶段,就只能选择收款或者取消,而不能重复统计应付款,换句话说,上述功能的3,4选项不能出现在初始菜单中,而应该在功能2中出现。而功能2进入后,要么选择收款找零,要么选择
4、取消付款,不能进入日结算界面。2. 你的程序要求以大字体点阵方式显示在屏幕上,注意到并不是每次都是显示7个字符的只有在某些情况下才出现最多7个字符【程序要求】(1) 程序正确。能够严格实现任务书中描述的功能;(2) 界面友好。尽可能使界面友好、直观、易操作;(3) 风格友好。源程序应有良好的编码风格,使程序容易阅读。【输入/输出要求】 (1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息; (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。【系统的功能结构框图】开机清零选择操作14输入应
5、付款选择操作收款找零取消付款按任意键回主菜单主菜单日结算退出系统选4选2选3选1按任意键【C语言程序代码】#include #includevoid clear(); float check(); void print(float); void print_n(); void sum(float); void exit();static float k=0;void main() int c; float t=0; do system(CLS); printf(tttttttttttt* * * * * * * * * * * * * * * *n); printf(tttttttttttt*
6、 主 菜 单 *n); printf(tttttttttttt* *n); printf(tttttttttttt* 1.清 除 前 一 天 数 据 *n); printf(tttttttttttt* *n); printf(tttttttttttt* 2.账 目 运 算 *n); printf(tttttttttttt* *n); printf(tttttttttttt* 3.合 计 当 天 销 售 总 额 *n); printf(tttttttttttt* *n); printf(tttttttttttt* 4.退 出 系 统 *n); printf(tttttttttttt* * * *
7、 * * * * * * * * * * * *n); printf( n); printf(tttttttttttt 选择数字进行操作 1234: ); scanf(%d,&c); switch(c) case 1: clear();break; case 2: check();break; case 3: sum(k);break; case 4: exit(0);break; printf(按任意键继续。n); system(ClS); while(1);void clear()FILE *fp; k=0; system(CLS); fp=fopen(E:shuju.txt,w); fc
8、lose(fp);float check() FILE *fp; float a,b,left; int c; system(CLS); printf(输入购物总额: ); scanf(%f,&a); system(CLS); print(a); printf(1.确认购物;t2取消购物); printf(n请输入1或2进行操作:); scanf(%d,&c); system(CLS); if(c=1) printf(输入顾客付款总额: n); scanf(%f,&b); left=b-a; printf(付款总额是: %-.2fn,b); print(b); printf(应找零: %-.2
9、fn,left); print(left); k=k+a; fp=fopen(E:shuju.txt,a); fprintf(fp,%.2fn,a); fclose(fp); system(pause); return(k); if(c=2) print_n(); printf(n); system(pause); return(k); system(CLS); /*总额运算函数*/void sum(float d) FILE *fp; system(CLS); printf(今天销售总额是: %-.2fn,d); fp=fopen(E:shuju.txt,a); fprintf(fp,%.2
10、fn,d); print (d); fclose(fp);void print(float n) char a1578; int p7,i,j,k,q; long m; for(i=0;i15;i+) for(j=0;j7;j+) for(k=0;k8;k+) aijk=0; for(j=1;j6;j+) a0j1=*;a0j6=*; for(k=1;k7;k+) a01k=*;a05k=*; for(j=1;j6;j+) a1j6=*; for(k=1;k7;k+) a21k=*;a23k=*;a25k=*; for(j=3;j6;j+) a2j1=*; for(j=1;j4;j+) a2j
11、6=*; for(k=1;k7;k+) a31k=*;a33k=*;a35k=*; for(j=1;j6;j+) a3j6=*; for(k=1;k7;k+) a44k=*;a423=*;a432=*; for(j=1;j6;j+) a4j4=*; for(k=1;k7;k+) a51k=*;a53k=*;a55k=*; for(j=1;j4;j+) a5j1=*; for(j=3;j6;j+) a5j6=*; for(k=1;k7;k+) a61k=*;a63k=*;a65k=*; for(j=1;j6;j+) a6j1=*; for(j=3;j6;j+) a6j6=*; for(k=1;k
12、7;k+) a71k=*; for(j=1;j6;j+) a7j6=*; for(k=1;k7;k+) a81k=*;a83k=*;a85k=*; for(j=1;j6;j+) a8j1=*;a8j6=*; for(k=1;k7;k+) a91k=*;a93k=*;a95k=*; for(j=1;j4;j+) a9j1=*; for(j=1;j6;j+) a9j6=*; for(k=5;k7;k+) a104k=*;a105k=*; for(k=1;k7;k+) a113k=*;a114k=*; for(j=2;j7;j+) a11j3=*;a11j4=*; a1101=*;a1106=*;a
13、1112=*;a1115=*; for(j=0;j7;j+) for(k=0;k8;k+) a12jk=0; m=(long)(100*n+0.1); p6=m%10;p5=(m/10)%10;p4=10;p3=(m/100)%10;p2=(m/1000)%10;p1=(m/10000)%10;p0=11; if(p1=0) p1=12; if(p2=0) p2=12; for(j=0;j7;j+) for(q=0;q7;q+) for(k=0;k8;k+) printf(%c,apqjk); printf(n); else for(j=0;j7;j+) for(q=0;q7;q+) for(
14、k=0;k8;k+) printf(%c,apqjk); printf(n); else for(j=0;j7;j+) for(q=0;q7;q+) for(k=0;k8;k+) printf(%c,apqjk); printf(n);void print_n()char a678;int i,j,k; for(i=0;i6;i+) for(j=0;j7;j+) for(k=0;k8;k+) aijk=0;for(k=3;k7;k+)a01k=*;a05k=*;a022=*;a031=*;a042=*;for(k=1;k7;k+)a13k=*;a113=*;a114=*;a122=*;a125
15、=*;for(j=3;j6;j+)a1j1=*;a1j6=*;a222=*;a233=*;a244=*;for(j=1;j6;j+)a2j1=*;a2j5=*;for(k=3;k7;k+)a31k=*;a35k=*;a322=*;a331=*;a342=*;for(k=1;k7;k+)a41k=*;a43k=*;a45k=*;for(j=1;j6;j+)a4j1=*;for(k=1;k7;k+)a55k=*;for(j=1;j6;j+)a5j1=*;for(j=0;j7;j+) printf(n);for(i=0;i6;i+) for(k=0;k8;k+)printf(%c,aijk);【运行
16、结果】【使用说明】应用程序运行后,会显示一个菜单,用户通过菜单项选择希望进行的操作项目。在第一、二、三、四个功能中,用户输入指令(即根据需要输入1,2,3,4),程序打开源文件,并执行指令,结果放在目标文件中,同时把结果显示在屏幕上。【心得体会】1在程序设计过程中,我认识到函数、指针和文件三个章节比较重要。2通过多个源代码的算法比较发现好的算法可以节省很多篇幅3数字字母的输出,需要先分别设计每个数字的算法,然后分百位和十位为零和不为零讨论输出数字。4要熟悉课本上的基础,同时多看课外书籍,要拓展自己的视野在学好课本理论知识的同时,还要积极思考,开动脑筋,将所学的知识综合起来,将理论应用于实际操作,力求把程序写得完美,在过程中培养兴趣,提升能力。5要耐心分析题目要求过程中丰富了自己的知识,提高了的能力,先有大概思路后再开始写代码,调试在调试运行时,从编译结果出错很多到零错误,从运行结果错误到输出正确的结果,需要耐心的分析语法和逻辑。6在此次设计过程中,不仅用到了书本上的知识,还通过查找资料,请教老师和同学,学到了很多课本以外的知识。