超市收银管理程序的设计方案与实现.docx

上传人:b****1 文档编号:15010588 上传时间:2023-06-29 格式:DOCX 页数:24 大小:135.68KB
下载 相关 举报
超市收银管理程序的设计方案与实现.docx_第1页
第1页 / 共24页
超市收银管理程序的设计方案与实现.docx_第2页
第2页 / 共24页
超市收银管理程序的设计方案与实现.docx_第3页
第3页 / 共24页
超市收银管理程序的设计方案与实现.docx_第4页
第4页 / 共24页
超市收银管理程序的设计方案与实现.docx_第5页
第5页 / 共24页
超市收银管理程序的设计方案与实现.docx_第6页
第6页 / 共24页
超市收银管理程序的设计方案与实现.docx_第7页
第7页 / 共24页
超市收银管理程序的设计方案与实现.docx_第8页
第8页 / 共24页
超市收银管理程序的设计方案与实现.docx_第9页
第9页 / 共24页
超市收银管理程序的设计方案与实现.docx_第10页
第10页 / 共24页
超市收银管理程序的设计方案与实现.docx_第11页
第11页 / 共24页
超市收银管理程序的设计方案与实现.docx_第12页
第12页 / 共24页
超市收银管理程序的设计方案与实现.docx_第13页
第13页 / 共24页
超市收银管理程序的设计方案与实现.docx_第14页
第14页 / 共24页
超市收银管理程序的设计方案与实现.docx_第15页
第15页 / 共24页
超市收银管理程序的设计方案与实现.docx_第16页
第16页 / 共24页
超市收银管理程序的设计方案与实现.docx_第17页
第17页 / 共24页
超市收银管理程序的设计方案与实现.docx_第18页
第18页 / 共24页
超市收银管理程序的设计方案与实现.docx_第19页
第19页 / 共24页
超市收银管理程序的设计方案与实现.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

超市收银管理程序的设计方案与实现.docx

《超市收银管理程序的设计方案与实现.docx》由会员分享,可在线阅读,更多相关《超市收银管理程序的设计方案与实现.docx(24页珍藏版)》请在冰点文库上搜索。

超市收银管理程序的设计方案与实现.docx

超市收银管理程序的设计方案与实现

学号:

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

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2