超市收银管理程序的设计方案与实现.docx
- 文档编号:4062795
- 上传时间:2022-11-27
- 格式:DOCX
- 页数:22
- 大小:136.95KB
超市收银管理程序的设计方案与实现.docx
《超市收银管理程序的设计方案与实现.docx》由会员分享,可在线阅读,更多相关《超市收银管理程序的设计方案与实现.docx(22页珍藏版)》请在冰豆网上搜索。
超市收银管理程序的设计方案与实现
学号:
10212810114
武汉理工大学华夏学院
数据结构课程设计
题目
超市收银管理程序的设计与实现
院系
信息工程系
专业
软件工程
班级
1101
姓名
指导教师
2018
年
6
月
24
日
课程设计任务书
学生姓名:
熊伟专业班级:
软件1101班
指导教师:
夏红霞工作单位:
信息工程系
题目:
超市收银管理程序的设计与实现
初始条件:
理论:
学习了《数据结构》课程,掌握了基本的数据结构和常用的算法;
实践:
信息工程系实验室提供计算机及软件开发环境。
要求完成的主要任务:
<包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1、系统应具备的功能:
<1)商品管理人员对商品信息<商品号、商品名、单价)进行输入、删除、修改和查询。
<2)收银人员录入商品号及购买数量,计算应付钱数,实收钱数和应找钱数。
<3)对销售情况进行查询。
2、数据结构设计;
3、主要算法设计;
4、编程及上机实现;
5、撰写课程设计报告,包括:
<1)设计题目;
<2)摘要和关键字;
<3)正文,包括引言、需求分析、数据结构设计、算法设计、程序实现及测试等;
<4)结束语;
<5)参考文献。
时间安排:
2018年6月20日-24日<第18周)
星期一查阅资料
星期二系统设计,数据结构设计,算法设计
星期三-星期四编程并上机调试
星期五撰写报告
星期五验收程序,提交设计报告书。
指导教师签名:
2018年6月20日
系主任<或责任教师)签名:
2018年6月20日
超市收银管理程序的设计与实现
摘要:
该程序主要用于实现登陆超市商品管理系统的界面;超市工作人员对商品的管理系统主要包括对商品名,货号及商品库存量的存储修改以及查;。
实现顾客购买商品的系统界面;以及结账系统——主要显示顾客当前购物清单,应付金额,以及实收金额,找零。
本程序将实现不同功能的程序写入具有共同头文件的不同文件中,以便在其他程序中可以直接调用而不要重新声明定义。
关键字:
登陆系统商品统计超市管理查询付款
引言:
随着科技的发展,社会的进步,人们对产品的质量和服务的要求越来越高,市场竞争日趋激烈。
超市需要处理大量的库存信息,还要时刻更新产品的销售信息,不断添加商品信息。
这些对传统的人工记录、操作来说越来越复杂、困难。
因此,面对不同种类的信息,需要合理的数据库结构来保存数据信息,需要有效的程序结构支持各种数据操作的执行。
所以超市收银管理程序是当今社会所必不可少的,它的特点就是能够实时的和准确的控制店内的销售情况。
如果能够实时掌握销售流程及销售情况,则可以有效地加速商品的周转率并提高服务质量,而且可以减少产品售价不符等所产生的问题。
一个好的超市收银管理程序能够给企业带来巨大的便利,以及效益。
1需求分析:
(1)商品管理人员对商品信息<商品号、商品名、单价)进行输入、删除、修改和查询。
(2)收银人员录入商品号及购买数量,计算应付钱数,实收钱数和应找钱数。
(3)对销售情况进行查询。
(4)顾客能看到自己已经购买的商品及价格数量以及找零。
2数据结构设计:
structitem_node:
商品元素;全局变量;
FILE:
存储商品信息的文件;
goods[i]:
文件中存储的商品;
intselect:
操作选项;
fp:
指向文件的指针;
p,p1:
指向商品元素的指针;
storage:
记载商品库存量
amount:
记录顾客购买同样商品的数量;
id:
商品号;
brand:
商品名;
in_price/out_price:
商品进价/售价;
Total:
应付金额;
Pay:
实收金额。
3算法设计:
该程序主要包括登录系统、显示商品清单、购物车、结账系统
3.1登陆系统
用于超市管理人员登录及操作,选择1建立商品数据库、选择2显示商品信息、选择3进入购物车菜单、选4择进入结账目录、选择5退出程序。
voidmain(>
{
printf("********************">。
printf("欢迎进入商品管理系统">。
printf("********************">。
while(1>
{
switch(menu(>>
{
case1:
build(>。
break。
case2:
dis_all(>。
break。
case3:
shop_cart(>。
break。
case4:
account(>。
break。
case5:
printf("谢谢使用,再见">。
exit(0>。
}
}
}
3.1.1登陆系统操作菜单
管理人员登录后显示的界面,选择1.将会建立商品统计信息、选择2.将显式所有商品、选择3.显示购买商品链、选择4.弹出付账选择、选择5.退出
intmenu(>
{
intselect。
charstr[5]。
printf("请选择操作序号">。
printf("\n****************\n">。
printf("1.建立商品统计信息\n">。
printf("2.显式所有商品\n">。
printf("3.购买商品链\n">。
printf("4.付账\n">。
printf("5.退出\n">。
printf("********\n\n">。
printf("请选择序号\n">。
while(1>
{gets(str>。
select=atoi(str>。
if(select>5||select<1>
printf("输入有误请重新选择\n">。
elsebreak。
}
returnselect。
}
3.2显示商品信息
打开保存的文件并在屏幕上显示商品的货号、品名、单价、库存量
voiddis_all(>
{
inti。
FILE*fp。
fp=fopen("goods","r">。
for(i=0。
fread(goods+i,sizeof(structitem>,1,fp>!
=0。
i++>
{printf("************************************\n">。
printf("贷号品名单价库存量\n">。
printf("%10s%20s%7,2f%9d\n",goods[i].id,goods[i].brand,goods[i].out_price,goods[i].storage>。
}
fclose(fp>。
}
3.2.1建立商品信息库
建立商品信息库,首先输入商品名称,接着输入货号,进价以及售价,最后输入商品的库存量
voidbuild(>
{
FILE*fp。
inti。
printf("请依次输入商品信息\n">。
for(i=0。
i i++> { printf("品名: ">。 gets(goods[i].brand>。 printf("货号: ">。 gets(goods[i].id>。 printf("进价: ">。 scanf("%f",&goods[i].in_price>。 printf("售价: ">。 scanf("%f",&goods[i].out_price>。 printf("库存量: ">。 scanf("%d",&goods[i].storage>。 printf("\n">。 if((fp=fopen("goods","w">>==NULL> { printf("falltobuildafile">。 return。 } fwrite(goods,sizeof(structitem>,NUM,fp>。 fclose(fp>。 } } 3.3购物车操作 用于顾客登陆所购买的物品并显示所购买的物品,选择1添加商品、选择2显示清单、选择3返回 voidshop_cart(> { while(1> { switch(cart_menu(>> {case1: add(>。 case2: display(>。 case3: return。 } } } 3.3.1购物车菜单 屏幕显示购物车的界面选1.将会添加到购买商品、选择2.屏幕上会显示当前购物的清单、选择3.将会退出如果选择错误,会提示“输入有误请重新选择” intcart_menu(> { charstr[5]。 intselect。 printf("选择操作序号">。 printf("\n">。 printf("1.添加到购买商品\n">。 printf("2.显式当前购物清单\n">。 printf("3.退出\n">。 while(1> { gets(str>。 select=atoi(str>。 if(select>5||select<1> printf("输入有误请重新选择\n">。 elsebreak。 } returnselect。 } 3.3.2购物清单 显示所购买物品的品名、货号、售价以及库存量 voiddisplay(> { structitem_node*p=cart。 if(p==NULL> { printf("empty">。 return。 } while(p! =NULL> { printf("品名货号售价库存量">。 printf("%12s%20s%8.3f%8d\n",p->wanted.brand,p->wanted.id,p->wanted.out_price,p->wanted.storage>。 p=p->next。 } } 3.3.3添加商品 添加所购买的物品货号以及数量,结束后会提示是否继续添加,如果输入错误将显示“打开文件失败” voidadd(> { FILE*fp。 inti,n。 charstr[20]。 charchoice。 structitem_node*p,*p1。 do { printf("请输入所购商品货号">。 gets(str>。 if((fp=fopen("goods","r">>==NULL> { printf("打开文件失败\n">。 continue。 } for(i=0。 fread(goods+i,sizeof(structitem>,1,fp>! =0。 i++> { if(goods[i].id==str> { printf("********************************\n">。 printf("货号品名售价库存量">。 printf("%10s%20s%7.2f%8d\n",goods[i].id,goods[i].brand,goods[i].out_price,goods[i].storage>。 printf("购买数量">。 scanf("%d",&n>。 p1=(structitem_node*>malloc(sizeof(structitem_node>>。 if(p1==NULL> { printf("fall">。 exit(1>。 } p1->amount=n。 p1->wanted=goods[i]。 p1->next=NULL。 p=cart。 if(cart==NULL> cart=p1。 else { while(p->next! =NULL> p=p->next。 p1->next=p->next。 p->next=p1。 } } break。 } fclose(fp>。 printf("是否继续购买商品? ">。 choice=getchar(>。 } while(choice=='Y'||choice=='y'>。 3.4结账系统 显示购物清单及应找钱数,显示购物清单,然后输入实收的钱数,最后会在屏幕上显示应找的钱数 intaccount(> { floattotal=0,pay。 structitem_node*p。 inti。 FILE*fp。 printf("以下是您的购物清单: \n">。 display(>。 if((fp=fopen("goods","r">>==NULL> { printf("打开文件失败\n">。 return0。 } for(i=0。 (fread(goods+i,sizeof(structitem>,1,fp>>! =0。 i++> 。 fclose(fp>。 p=cart。 while(p! =NULL> { total+=p->wanted.out_price*p->amount。 for(i=0。 goods[i].id! =p->wanted.id。 i++> 。 goods[i].storage-=p->amount。 p=p->next。 } printf("总计%7.2f",total>。 printf("\n输入实付金额: ">。 scanf("%f",&pay>。 printf("实付: %7.2f找零: %7.2f",pay,pay-total>。 if((fp=fopen("goods","w">>==NULL> { printf("打开文件失败\n">。 return0。 } fwrite(goods,sizeof(structitem>,NUM,fp>。 fclose(fp>。 } 4程序实现及测试: 4.1进入商品管理系统并显示相关信息 图4-1 4.2显示商品信息 图4-2 4.3购买商品清单 图4-3 4.4结账界面 图4-4 4.5清屏 图4-5 5不足之处: 本程序设计比较简单、简陋,但便于操作、使用,在一些方面存在不足,例如: 当输入大量数据时,显示会出现错误,我会在以后改进。 该程序可以进行简单的商品信息输入和输出,以及商品信息查询和修改,但是在处理大量数据时会比较麻烦,例如: 结账时只有选择了结账选项才会执行结账操作,而不能自动在输入数据后自动结账,因此,操作起来时间会花费比较多。 而且在输入的时候如果没有注意输入数据的类型,就会导致程序无法执行。 另外,在获取商品号码时,不能够自动获取,人工输入比较麻烦,我会在以后的学习中解决这一问题,完善这个代码。 6设计体会: 通过这次课程设计,我对数据结构有了更深的理解,体会到,看起来复杂的事情只要想好思路,写好算法,再设计代码,问题也就会迎刃而解。 虽然在具体过程中我遇到了很多困难和错误,但经过不断调试后,还是成功做出了这个简陋的程序。 这次的设计,同样也使我对以前不熟悉的指针和结构体有了进一步的理解。 让我相信,只要有耐心,肯努力,一定能将程序做出来! 这次设计中,我查阅了很多资料,因此,我了解到书本上的知识是远远不够的,只有不断的扩充自己的知识,才能保证程序的顺利制作。 参考文献: 1.谭浩强《C语言程序设计》清华大学出版社2005年7月 2.严蔚敏吴伟民编著《数据结构》清华大学出版社2001年1月 本科生课程设计成绩评定表 班级: 软件1101 姓名: 熊伟 学号: 10212810114 序号 评分工程 满分 实得分 1 学习态度认真、遵守纪律 10 2 设计分析合理性 10 3 设计方案正确性、可行性、创造性 20 4 设计结果正确性 40 5 设计报告的规范性 10 6 设计验收 10 总得分/等级 评语: 该生在数据结构课程设计过程中,态度认真,遵守纪律。 数据结构设计合理,算法设计正确,设计结果正确,报告撰写较为规范,通过了设计验收。 注: 最终成绩以五级分制记。 优<90-100分)、良<80-89分)、中<70-79分)、 及格<60-69分)、60分以下为不及格 指导教师签名: 2018年7月2日 附录 #include #include #include voidmain(> { printf("********************">。 printf("欢迎进入商品管理系统">。 printf("********************">。 while(1> { switch(menu(>> { case1: build(>。 break。 case2: dis_all(>。 break。 case3: shop_cart(>。 break。 case4: account(>。 break。 case5: printf("谢谢使用,再见">。 exit(0>。 } } } intmenu(> { intselect。 charstr[5]。 printf("请选择操作序号">。 printf("\n*************\n">。 printf("1.建立商品统计信息\n">。 printf("2.显式所有商品\n">。 printf("3.购买商品链\n">。 printf("4.付账\n">。 printf("5.退出\n">。 printf("*******\n\n">。 printf("请选择序号\n">。 while(1> {gets(str>。 select=atoi(str>。 if(select>5||select<1> printf("输入有误请重新选择\n">。 elsebreak。 } returnselect。 } voiddis_all(> { inti。 FILE*fp。 fp=fopen("goods","r">。 for(i=0。 fread(goods+i,sizeof(structitem>,1,fp>! =0。 i++> {printf("************************************\n">。 printf("贷号品名单价库存量\n">。 printf("%10s%20s%7,2f%9d\n",goods[i].id,goods[i].brand,goods[i].out_price,goods[i].storage>。 } fclose(fp>。 } voidbuild(> { FILE*fp。 inti。 printf("请依次输入商品信息\n">。 for(i=0。 i i++> { printf("品名: ">。 gets(goods[i].brand>。 printf("货号: ">。 gets(goods[i].id>。 printf("进价: ">。 scanf("%f",&goods[i].in_price>。 printf("售价: ">。 scanf("%f",&goods[i].out_price>。 printf("库存量: ">。 scanf("%d",&goods[i].storage>。 printf("\n">。 if((fp=fopen("goods","w">>==NULL> { printf("falltobuildafile">。 return。 } fwrite(goods,sizeof(structitem>,NUM,fp>。 fclose(fp>。 } } voidshop_cart(> { while(1> { switch(cart_menu(>> {case1: add(>。 case2: display(>。 case3: return。 } } } intcart_menu(> { charstr[5]。 intselect。 printf("选择操作序号">。 printf("\n">。 printf("1.添加到购买商品\n">。 printf("2.显式当前购物清单\n">。 printf("3.退出\n">。 while(1> { gets(str>。 select=atoi(str>。 if(select>5||select<1> printf("输入有误请重新选择\n">。 elsebreak。 } returnselect。 } voiddisplay(> { structitem_node*p=cart。 if(p==NULL> { printf("empty">。 return。 } while(p! =NULL> { printf("品名货号售价库存量">。 printf("%12s%20s%8.3f%8d\n",p->wanted.brand,p->wanted.id,p->wanted.out_price,p->wanted.storage>。 p=p->next。 } } voidadd(> { FILE*fp。 inti,n。 charstr[20]。 charchoice。 structitem_node*p,*p1。 do { printf("请输入所购商品货号">。 gets(str>。 if((fp=fopen("goods","r">>==NULL> { printf("打开文件失败\n">。 continue。 } for(i=0。 fread(goods+i,sizeof(structitem>,1,fp>! =0。 i++> { if(goods[i].id==str> { printf("********************************\n">。 printf("货号品名售价库存量">。 printf("%10s%20s%7.2
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 超市 收银 管理程序 设计方案 实现