1、自动售货机管理程序1引言21世纪,我们已经进入了信息时代,计算机的使用大大方便了我们的日常生活,超市和网上购物已经不能满足我们对便利生活的要求,不能随时随地购物的缺点不能克服的。在此情况下,就需要一个程序化的自动售货机来满足人们日常生活的需求。在C语言的平台下实现,用户可以方便的进行各项购物操作。C语言是一种程序设计语言,早在20世纪90年代,C语言表现出了强劲的生命力,C语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试和维护。C语言的表现能力和处理能力极强。它不仅具有丰富的运算符和数据类型,便于实现各类复杂的数据结构。它还可以直接访问内存的物理地址,进行位一级的操作。由于
2、C语言实现了对硬件的编程操作,因此C语言集高级语言和低级语言的功能于一体,既可用于系统软件的开发,也适合于应用软件的开发。此外,C语言还具有效率高,可移植性强等特点。因此可以广泛地移植到了各类型计算机上,从而形成了多种版本的C语言。采用输入函数和输出函数方式,可以完成对待售物品的名称、数量、价格的输出、顾客所选物品的输入、以及其它购物信息显示。2 总体设计在对自动售货机管理程序进行需求分析的过程中,需要确定系统的主要功能,对程序开发的主要目的、程序的使用领域和有关该程序开发的软硬件环境进行详细的分析。下面从系统概述、功能模块描述两个方面进行需求分析。2.1程序概述自动售货机管理程序是运行于Wi
3、ndows系统下的应用软件,主要用于对待售商品的品名、价钱、数量、生产日期、保质期、编号进行输出等操作。2.2功能需求自动售货机管理程序为路边的行人提供了一个随时随地进行购物的平台,给消费者提供了一个简单友好的购物窗口,功能需求如下:(1)输出模块程序在消费者购物前将所售商品的品牌输出以供消费者选择品牌,然后将消费者选择的品牌下的商品信息输出让消费者选择所需的商品,最后输出“请你付款班级”提示消费者完成购物。(2)输入模块让将消费者选定的商品的编码输入程序中然后进行价格的输出,以上述的方式让消费者把购物数量输入进程序中,最后将消费者付款金额输入,进而完成找钱。(3)返回模块如果消费者所输入的商
4、品编码自动售货机上没有,则程序自动跳转到商品品牌的选择,提示消费者输入正确的商品编码。并且如果消费者输入的购买数量大于库存数量,程序将自动返回到商品的数量选择界面下,还有如果消费者的付款金额小于消费金额时,程序将自动返回到付款界面。(4)找钱模块将消费者付款金额进行判断后,进行一定运算后按50元、20元、10元、1元的分类分别找对。程序由上述几个模块组成,能帮助消费者以自助的方式完成所需商品的购买并且有效地减少购物时间。另外还能节省售货者的管理时间,大大的提高管理的效率。3 详细设计3.1 输出模块本模块主要有输出函数printf()构成,printf()函数是C语言系统提供的格式化输出函数,
5、用于向标准输出设备(通常为显示器)按规定格式输出信息,这是程序中使用最多的标准函数之一。它的使用格式如下:printf(“格式化字符串”,表达式表);“表达式表”是要输出的一系列表达式,各表达式之间用“,”分隔。“格式化字符串”用于说明要输出表达式的形式,包括两部分内容:一部分是以“%”开头的格式控制参数,它规定对应表达式的输出格式;另一部分是普通字符或转义字符,对普通字符按原样输出,对转义字符,输出的是其转义后的形式。例如:int a=5,b=10;printf(“Sum = %dn”,a+b);输出结果为:Sum = 15。在自动售货机程序中,其输出模块源代码为:printf( n 欢迎光
6、临 n);printf(请选择:1.百事可乐 2.可口可乐 3.非常可乐n);printf(请选择:1听式百事可乐(3元每听)剩%d听,2.瓶装百事可乐(8元每瓶)剩%d听n,a1 ,a2);printf(数量?);printf(商品数量不足,请重新输入:)printf( 请选择: 1继续购物,2停止购物n);printf(请您结账);printf(金额不够请重新输入:);printf(找您50元1张,20元%d张,10元%d张,1元%d张,m,q,l);printf(找您20元%d张,10元%d张,1元%d张,m,q,l);printf(请您收好!);printf(购物结束,谢谢光临);输出
7、流程图如下;图1 输出流程图其运行时图如下:图2 输出模块运行时截图3.2输入模块本模块主要有输出函数scanf()构成,它是格式化输出函数,即从标准输入设备(键盘)为变量输入数据。它也是程序中使用最多的一个标准函数。其使用格式如下:scanf(“格式化字符串”,变量地址表);“格式化字符串”中控制参数的个数必须与变量地址的个数一致;可以在格式化字符串中的“%”和格式控制符之间加入一个整数,表示任何读操作中的最大位数。例如:Main()Int m,n;Scanf(“%3d%2d”,&m,&n);Printf(“m=%d,n=%dn”,m,n);输入数据流:123456789输出结果为:m=12
8、3,n=45。在自动售货机程序中,输入模块流程图如下:图3 输入模块流程图在自动售货机程序中,其输入模块源代码为:scanf(%d,&a);用于输入选择的购买品牌。scanf(%d,&b);用于输入所选品牌下的商品。scanf(%d,&n);用于输入所选品牌下的商品的数量scanf( %d,&b);用于输入是否继续购物。scanf(%d,&Money);用于输入付款金额。其输入截图如下:图4 输入模块运行时截图3.3返回模块本模块if语句和goto语句构成,if语句简单形式如下:语句结构为:If(表达式)语句组其中的“语句组”是若干个C语句,当它只有一个语句时,花括号可以省略。该if语句的过程
9、是:若表达式的值非0(即真),则执行语句组,然后执行if语句的下一个语句;否则不执行语句组之下的语句,即if语句的下一个语句。简言之该if语句的功能就是根据条件(表达式的值),决定是否执行语句组,如下图所示:图5 if语句逻辑结构示意图goto语句是一种无条件转移语句,主要用于控制程序的执行方向,也可以利用它反复执行同一段程序。它的用法比较简单。一般格式如下:goto语句标号;语句标号是一个标识符,它的语句之间以“:”分隔,可以单独的占一个程序行,也可以和程序语句处于同一行上。执行goto语句后,程序将跳转到该标号处,并执行其后的语句。在自动售货机程序设计时,其流程图如下:图6 返回模块流程图
10、在自动售货机程序中,其源代码如下:loop: i=p=0;printf( n 欢迎光临 n); loop1: i+;m=q=0;printf(请选择:1.百事可乐 2.可口可乐 3.非常可乐n);scanf(%d,&a);if(a!=1&a!=2&a!=3) goto loop;运行时截图如下:图7 返回模块运行时截图3.4找钱模块本模块由if-else if结构构成,它属于if-else结构的嵌套形式,它的一般结构如下:If(表达式1)语句组1else If(表达式2)语句组2从上到下逐个对条件进行判断,一旦发现条件满足就执行与它有关语句组,其下的所有条件都不在判断,当然它们的语句组也不在执
11、行;执行最后一个语句组。最后这个else常起着“默认条件”的作用。在自动售货机程序设计中,找钱模块流程图如下:图 8 找钱模块流程图在自动售货机程序中,起源代码为:if(p=5)k=j-5;if(k/2=1)m=k/2;q=k-2*m;printf(找您50元1张,20元%d张,10元%d张,1元%d张,m,q,l);elsek=j;if(k/2=1) m=k/2;q=k-2*m;printf(找您20元%d张,10元%d张,1元%d张,m,q,l);其运行时截面图如下:图8 找钱模块运行时截图4 结论通过对C程序设计基础的学习,我掌握了一些基本的编程方法和思路,出色的完成了这次自动售货机管理
12、程序课程设计,这次课程设计是对我接触C语言这个新事物以来的第一次比较系统的检验,我很重视,也很刻苦的钻研自己的课题,当然,通过努力完成设计的也不只我一个人,大家都很出色,都很优秀,这次设计对我以后学习编程都有着深远的影响,所以,完成这次课程设计,我很高兴,这也为我以后的学习增加了很多信心,在以后的学习生活中,我一定会努力钻研C语言,为以后的发展铺下宽广的道路.。通过这次实训,增加了我学习软件技术的兴趣,虽然还不明确软件技术包含的具体内容,但从C语言这门课程开始,已发现程序设计的乐趣,在学习C语言的过程中也学到了许多计算机应用基础知识,对计算机的机体也有了一个大体的了解。 这次课设先做简单的输出
13、模块、输入模块,一步步的再做其它功能,如返回模块、找钱模块。在实际操作过程中犯的一些错误还会有意外的收获,感觉课设很有意思。例如在找钱模块中,刚开始程序找钱不对,我便反复的寻找错误的原因,终于发现“p=Money”中的“=”是赋值而非等于的意思,应该用“=”。在具体操作中对这学期所学的C语言的理论知识得到巩固,达到实训的基本目的,也发现自己的不足之出,在以后的上机中应更加注意,同时体会到C语言具有的语句简洁,使用灵活,执行效率高等特点。发现课设的重要作用,对C语言有了更深刻的理解。 在此希望以后应多增加练习,加长时间,培养独立思考问题的能力,提高实际操作水平。 在这次设计中我学到了很多,也发现
14、了自己的不足,也难免有错误之处,敬请老师提出!参考文献1 张磊C语言程序设计M北京:高等教育出版社,20062 吕凤煮C语言基础教程基础理论与案例M北京:清华大学出版社,20053 黄明、梁旭、万洪莉C语言课程设计M北京:电子工业出版社,2006附录:自动售货机管理程序源代码#include void main() int Money;int n,a,b,c,a1,a2,a3,a4,a5,a6,p,q,i,j,k,m,l;int sum4=0,0,0;a1=a2=a3=a4=a5=a6=50;loop: i=p=0;printf( n 欢迎光临 n); loop1: i+;m=q=0;prin
15、tf(请选择:1.百事可乐 2.可口可乐 3.非常可乐n);scanf(%d,&a);if(a!=1&a!=2&a!=3) goto loop;switch(a)case 1: printf(请选择:1听式百事可乐(3元每听)剩%d听,2.瓶装百事可乐(8元每瓶)剩%d听n,a1 ,a2); scanf(%d,&b);loop2: printf(数量?);scanf(%d,&n);if(b=1&n=a1|b=2&n=a2)switch(b)case 1:sumi=3*n;a1=a1-n;break;case 2:sumi=8*n;a2=a2-n;break;else printf(商品数量不足
16、,请重新输入:);goto loop2;break;case 2: printf(请选择:小瓶可口可乐(2元每瓶)剩%d瓶,2.大瓶(7元每瓶)剩%d瓶n,a3,a4); scanf(%d,&b);loop3: printf(数量?);scanf(%d,&n);if(b=1&n=a3|b=2&n=a4)switch(b)case 1:sumi=2*n;a3=a3-n;break;case 2:sumi=3*n;a4=a4-n;break;else printf(商品数量不足,请重新输入:);goto loop3;break;case 3: printf(请选择:1听式非常可乐(3元每听)剩%d
17、听 ,2.小瓶非常可乐(4元每瓶)剩%d听n,a5,a6); scanf(%d,&b);loop4: printf(数量?);scanf(%d,&n);if(b=1&n=a5|b=2&n=a6)switch(b)case 1:sumi=1*n;a5=a5-n;break;case 2:sumi=2*n;a6=a6-n;break;else printf(商品数量不足,请重新输入:);goto loop4;break; if(i10)printf( 请选择: 1继续购物,2停止购物n);scanf( %d,&b);switch(b)case 1:goto loop1;case 2:printf(请您结账);for(i=0;iMoney)printf(金额不够请重新输入:);goto loop5;if(p=Money)printf(购物结束,谢谢光临);if(p=5)k=j-5;if(k/2=1)m=k/2;q=k-2*m;printf(找您50元1张,20元%d张,10元%d张,1元%d张,m,q,l);elsek=j;if(k/2=1) m=k/2;q=k-2*m;printf(找您20元%d张,10元%d张,1元%d张,m,q,l);printf(请您收好!);goto loop;
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1