收藏 分销(赏)

C语言课程设计---模拟POS.doc

上传人:Fis****915 文档编号:554090 上传时间:2023-12-07 格式:DOC 页数:15 大小:207.91KB 下载积分:6 金币
下载 相关 举报
C语言课程设计---模拟POS.doc_第1页
第1页 / 共15页
C语言课程设计---模拟POS.doc_第2页
第2页 / 共15页


点击查看更多>>
资源描述
【内容提要】 在单片机应用中,往往需要向LED阵列(一种发光二极管, 多个排成二维显示屏幕)输出字符。这种字符是通过点阵一个点一个点描出来的。用0表示暗点,用1表示亮点。通常使用7×8大小的点阵来描绘ASC字符,右图使用*输出一个7×8的王字。 某自选商店需要定购一种POS终端,这个终端使用LED向顾客显示应付金额,已收金额和找零金额。顾客购买商品后,由收银员统计应付金额,并通过你的程序向顾客显示应付款。顾客给足付款后,收银员计算出找零并同时通过你的程序显示已收金额和找零金额。当然顾客也可能因为最后应付金额过大而取消购买,这样就在屏幕上显示CANCEL字样。由于商店规模不是很大,假定顾客购买的所有商品均在999元以内。因此实际一次显示金额最宽不超过7个字符(¥XXX.XX)。 本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个模拟单片机上运行的POS系统,并能最终实现本系统的功能要求。 目录 1. 概述系统的主要功能···················3 2. 任务书的基本要求与内容···············4 3. 系统的功能结构框图···················5 4. C语言程序代码·······················6 5. 运行结果···························11 6. 使用说明····························12 7. 设计日志以及心得体会················12 【系统的主要功能】 本课程设计任务的目的是要求学生按照分析、设计、编码、调试和测试的软件开发过程独立完成一个模拟单片机上运行的POS系统,并能最终实现本系统的功能要求。 你的程序需要实现以下功能: 1. POS开机:第一次使用POS机,需要事先清除当日已收款 2. 统计应付金额:收银员输入应付金额,在屏幕上用7×8点阵 显示应付金额 3. 收款找零:收银员输入顾客付款,在屏幕上分两行显示已收款和找零款 4. 取消付款:收银员取消本次购买。 5. 日结算:收银员统计当日销售额。 【任务书的基本要求与内容】 【题目要求】 1. 商场老板希望能够提高效率,提高效率的最好办法是减少收银员操作错误。如果进入用户应付款统计阶段,就只能选择收款或者取消,而不能重复统计应付款,换句话说,上述功能的3,4选项不能出现在初始菜单中,而应该在功能2中出现。而功能2进入后,要么选择收款找零,要么选择取消付款,不能进入日结算界面。 2. 你的程序要求以大字体点阵方式显示在屏幕上,注意到并不是每次都是显示7个字符的——只有在某些情况下才出现最多7个字符 【程序要求】 (1) 程序正确。能够严格实现任务书中描述的功能; (2) 界面友好。尽可能使界面友好、直观、易操作; (3) 风格友好。源程序应有良好的编码风格,使程序容易阅读。 【输入/输出要求】 (1)应用程序运行后,先显示一个菜单,然后用户根据需要选择相应的操作项目。进入每个操作后,根据程序的提示输入相应的信息; (2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。 【系统的功能结构框图】 开机 清零 选择操作1~4 输入应付款 选择操作 收款找零 取消付款 按任意键回主菜单 主菜单 日结算 退出系统 选4 选2 选3 选1 按任意键 【C语言程序代码】 #include <stdio.h> #include<stdlib.h> void 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("\t\t\t\t\t\t\t\t\t\t\t\t* * * * * * * * * * * * * * * *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* 主 菜 单 *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* 1.清 除 前 一 天 数 据 *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* 2.账 目 运 算 *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* 3.合 计 当 天 销 售 总 额 *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* 4.退 出 系 统 *\n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t* * * * * * * * * * * * * * * *\n"); printf(" \n"); printf("\t\t\t\t\t\t\t\t\t\t\t\t 选择数字进行操作 [1\\2\\3\\4]: "); 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"); fclose(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("付款总额是: %-.2f\n",b); print(b); printf("应找零: %-.2f\n",left); print(left); k=k+a; fp=fopen("E:\\shuju.txt","a"); fprintf(fp,"%.2f\n",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("今天销售总额是: %-.2f\n",d); fp=fopen("E:\\shuju.txt","a"); fprintf(fp,"%.2f\n",d); print (d); fclose(fp); } void print(float n) { char a[15][7][8]; int p[7],i,j,k,q; long m; for(i=0;i<15;i++) for(j=0;j<7;j++) for(k=0;k<8;k++) a[i][j][k]='\0'; for(j=1;j<6;j++) {a[0][j][1]='*';a[0][j][6]='*';} for(k=1;k<7;k++) {a[0][1][k]='*';a[0][5][k]='*';} for(j=1;j<6;j++) a[1][j][6]='*'; for(k=1;k<7;k++) {a[2][1][k]='*';a[2][3][k]='*';a[2][5][k]='*';} for(j=3;j<6;j++) a[2][j][1]='*'; for(j=1;j<4;j++) a[2][j][6]='*'; for(k=1;k<7;k++) {a[3][1][k]='*';a[3][3][k]='*';a[3][5][k]='*';} for(j=1;j<6;j++) a[3][j][6]='*'; for(k=1;k<7;k++) a[4][4][k]='*';a[4][2][3]='*';a[4][3][2]='*'; for(j=1;j<6;j++) a[4][j][4]='*'; for(k=1;k<7;k++) {a[5][1][k]='*';a[5][3][k]='*';a[5][5][k]='*';} for(j=1;j<4;j++) a[5][j][1]='*'; for(j=3;j<6;j++) a[5][j][6]='*'; for(k=1;k<7;k++) {a[6][1][k]='*';a[6][3][k]='*';a[6][5][k]='*';} for(j=1;j<6;j++) a[6][j][1]='*'; for(j=3;j<6;j++) a[6][j][6]='*'; for(k=1;k<7;k++) a[7][1][k]='*'; for(j=1;j<6;j++) a[7][j][6]='*'; for(k=1;k<7;k++) {a[8][1][k]='*';a[8][3][k]='*';a[8][5][k]='*';} for(j=1;j<6;j++) {a[8][j][1]='*';a[8][j][6]='*';} for(k=1;k<7;k++) {a[9][1][k]='*';a[9][3][k]='*';a[9][5][k]='*';} for(j=1;j<4;j++) a[9][j][1]='*'; for(j=1;j<6;j++) a[9][j][6]='*'; for(k=5;k<7;k++) {a[10][4][k]='*';a[10][5][k]='*';} for(k=1;k<7;k++) {a[11][3][k]='*';a[11][4][k]='*';} for(j=2;j<7;j++) {a[11][j][3]='*';a[11][j][4]='*';} a[11][0][1]='*';a[11][0][6]='*';a[11][1][2]='*';a[11][1][5]='*'; for(j=0;j<7;j++) for(k=0;k<8;k++) a[12][j][k]='\0'; m=(long)(100*n+0.1); p[6]=m%10;p[5]=(m/10)%10;p[4]=10;p[3]=(m/100)%10;p[2]=(m/1000)%10;p[1]=(m/10000)%10;p[0]=11; if(p[1]==0) { p[1]=12; if(p[2]==0) {p[2]=12; for(j=0;j<7;j++) { for(q=0;q<7;q++) for(k=0;k<8;k++) printf("%c",a[p[q]][j][k]); printf("\n"); } } else for(j=0;j<7;j++) {for(q=0;q<7;q++) for(k=0;k<8;k++) printf("%c",a[p[q]][j][k]); printf("\n"); } } else for(j=0;j<7;j++) { for(q=0;q<7;q++) for(k=0;k<8;k++) printf("%c",a[p[q]][j][k]); printf("\n"); } } void print_n() { char a[6][7][8]; int i,j,k; for(i=0;i<6;i++) for(j=0;j<7;j++) for(k=0;k<8;k++) a[i][j][k]='\0'; for(k=3;k<7;k++) {a[0][1][k]='*';a[0][5][k]='*';} a[0][2][2]='*';a[0][3][1]='*';a[0][4][2]='*'; for(k=1;k<7;k++) a[1][3][k]='*'; a[1][1][3]='*';a[1][1][4]='*';a[1][2][2]='*';a[1][2][5]='*'; for(j=3;j<6;j++) {a[1][j][1]='*';a[1][j][6]='*';} a[2][2][2]='*';a[2][3][3]='*';a[2][4][4]='*'; for(j=1;j<6;j++) {a[2][j][1]='*';a[2][j][5]='*';} for(k=3;k<7;k++) {a[3][1][k]='*';a[3][5][k]='*';} a[3][2][2]='*';a[3][3][1]='*';a[3][4][2]='*'; for(k=1;k<7;k++) {a[4][1][k]='*';a[4][3][k]='*';a[4][5][k]='*';} for(j=1;j<6;j++) a[4][j][1]='*'; for(k=1;k<7;k++) a[5][5][k]='*'; for(j=1;j<6;j++) a[5][j][1]='*'; for(j=0;j<7;j++) {printf("\n"); for(i=0;i<6;i++) for(k=0;k<8;k++) printf("%c",a[i][j][k]);} } 【运行结果】 【使用说明】 应用程序运行后,会显示一个菜单,用户通过菜单项选择希望进行的操作项目。在第一、二、三、四个功能中,用户输入指令(即根据需要输入1,2,3,4),程序打开源文件,并执行指令,结果放在目标文件中,同时把结果显示在屏幕上。 【心得体会】 1·在程序设计过程中,我认识到函数、指针和文件三个章节比较重要。 2·通过多个源代码的算法比较发现好的算法可以节省很多篇幅 3·数字字母的输出,需要先分别设计每个数字的算法,然后分百位和十位为零和不为零讨论输出数字。 4·要熟悉课本上的基础,同时多看课外书籍,要拓展自己的视野在学好课本理论知识的同时,还要积极思考,开动脑筋,将所学的知识综合起来,将理论应用于实际操作,力求把程序写得完美,在过程中培养兴趣,提升能力。 5·要耐心分析题目要求过程中丰富了自己的知识,提高了的能力, 先有大概思路后再开始写代码,调试在调试运行时,从编译结果出错很多到零错误,从运行结果错误到输出正确的结果,需要耐心的分析语法和逻辑。 6·在此次设计过程中,不仅用到了书本上的知识,还通过查找资料,请教老师和同学,学到了很多课本以外的知识。 15
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:4009-655-100  投诉/维权电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服