C语言课程设计模拟POS.docx
- 文档编号:6408806
- 上传时间:2023-01-06
- 格式:DOCX
- 页数:13
- 大小:114.27KB
C语言课程设计模拟POS.docx
《C语言课程设计模拟POS.docx》由会员分享,可在线阅读,更多相关《C语言课程设计模拟POS.docx(13页珍藏版)》请在冰豆网上搜索。
C语言课程设计模拟POS
【内容提要】
在单片机应用中,往往需要向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)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。
【系统的功能结构框图】
【C语言程序代码】
#include
#include
voidclear();
floatcheck();
voidprint(float);
voidprint_n();
voidsum(float);
voidexit();
staticfloatk=0;
voidmain()
{
intc;
floatt=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)
{
case1:
clear();break;
case2:
check();break;
case3:
sum(k);break;
case4:
exit(0);break;
}
printf("按任意键继续。
\n");
system("ClS");
}while
(1);
}
voidclear()
{
FILE*fp;
k=0;
system("CLS");
fp=fopen("E:
\\shuju.txt","w");
fclose(fp);
}
floatcheck()
{
FILE*fp;
floata,b,left;
intc;
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");
}
/*总额运算函数*/
voidsum(floatd)
{
FILE*fp;
system("CLS");
printf("今天销售总额是:
%-.2f\n",d);
fp=fopen("E:
\\shuju.txt","a");
fprintf(fp,"%.2f\n",d);
print(d);
fclose(fp);
}
voidprint(floatn)
{
chara[15][7][8];
intp[7],i,j,k,q;
longm;
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");
}
}
elsefor(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");
}
}
elsefor(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");
}
}
voidprint_n()
{
chara[6][7][8];
inti,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·在此次设计过程中,不仅用到了书本上的知识,还通过查找资料,请教老师和同学,学到了很多课本以外的知识。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 课程设计 模拟 POS