C语言超市收银管理系统实现.docx

上传人:b****8 文档编号:9158414 上传时间:2023-02-03 格式:DOCX 页数:21 大小:254.47KB
下载 相关 举报
C语言超市收银管理系统实现.docx_第1页
第1页 / 共21页
C语言超市收银管理系统实现.docx_第2页
第2页 / 共21页
C语言超市收银管理系统实现.docx_第3页
第3页 / 共21页
C语言超市收银管理系统实现.docx_第4页
第4页 / 共21页
C语言超市收银管理系统实现.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

C语言超市收银管理系统实现.docx

《C语言超市收银管理系统实现.docx》由会员分享,可在线阅读,更多相关《C语言超市收银管理系统实现.docx(21页珍藏版)》请在冰豆网上搜索。

C语言超市收银管理系统实现.docx

C语言超市收银管理系统实现

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

 

1摘要和关键字

1.1摘要

该系统主要用于超市商品管理人员对于商品的信息(包括商品号、商品名、单价)进行输入、删除、修改和查询。

除此之外,当销售人员输入商品号及销售数量时,系统应计算应收钱数,并根据实际收银计算找零数量。

最后,系统能对销售情况进行查询。

Abstract

Thesystemismainlyusedinthesupermarketgoodsmanagementpersonneloftheproductinformation(includingcommoditynumber,nameofgoods,unitprice)input,delete,modify,andquery.Inaddition,whensalesstaffinputarticlenumberandsalesvolume,thesystemshouldbecalculatedaccordingtotheactualamountreceivable,andcashiercalculationquantitychange.Finally,thesystemcaninquirethesalessituation.

1.2关键字

登陆系统操作菜单建立信息库查询付款

Keywords

LoginsystemOperationmenuSetupinformationdatabaseInquirePay

2正文

2.1引言

随着经济的发展,人们每天接触并且需要处理的信息越来越多,人们就需要寻求一个工具来实现信息的管理和处理。

尤其是超市里,需要管理各种商品的数目及销售情况,而超市收银管理程序则是针对这种问题而产生的,系统能够实现对商品信息的录入、修改、查询、删除操作,并且在销售时能计算出应收钱数,并能根据实际收钱而计算找零,最后能对销售情况进行查询。

2.2需求分析

(1)销售人员能对商品信息(商品号、商品名、单价)进行输入,建立商品信息库。

(2)输出商品信息库中全部商品的信息(商品号、商品名、售价、数量),并且输出所购商品清单。

(3)销售人员根据顾客需求录入所购商品的商品号及数量,并能实现所购商品的数量修改以及商品删除。

(4)根据所购商品的数量及单价计算出应付钱数,并根据实际收钱数目计算找零数目,并输出。

(5)销售人员通过此程序能查询销售情况,输出商品的信息(商品号、商品名、单价、剩余数量),并计算卖出商品的获利情况。

2.3数据结构设计

structgoodgoods[N]:

总体商品信息数组,全局变量

structgoodbuy_g[j]:

所购商品信息数组,全局变量

Intj:

累计所购商品种类

Intselect:

操作选项

build():

建立商品信息库函数

display():

输出商品信息库中信息函数

buy():

购买商品函数

money():

计算应付钱数和找零函数

add():

添加所购商品函数(add()函数子函数)

check():

查看销售情况函数

fp:

指向文件的指针

total():

应付钱数

pay():

实收钱数

2.4算法设计

该系统主要包括登陆系统、商品信息库建立系统、商品信息库输出系统、购物系统、结账系统以及销售情况查询系统。

其中购物系统包括商品添加及显示系统、修改购买商品系统以及删除购买商品系统,逻辑结构清晰,使用方便。

 

 

2.4.1登陆系统

登陆系统由销售人员操作,是系统选择门户,其中选择1则执行商品信息库建立的操作,选择2执行商品信息库输出操作,选择3执行购物操作,选择4执行结账操作,选择5执行销售情况查询操作。

voidmain()

{

voidbuild(),display(),buy(),money();

voidadd(),check();

intselect;

printf("***************************\n");

printf("1.建立商品信息库\n");

printf("2.输出商品信息\n");

printf("3.购买商品\n");

printf("4.结账\n");

printf("5.查看销售情况\n");

printf("6.退出\n");

printf("***************************\n");

while

(1)

{

printf("请输入选择序号\n");

scanf("%d",&select);

if(select<1||select>6)

{

printf("输入有误,请重新输入\n");

}

else

switch(select)

{

case1:

build();continue;

case2:

display();continue;

case3:

buy();continue;

case4:

money(j);continue;

case5:

check();continue;

case6:

printf("谢谢使用。

\n");exit(0);

}

}

}

2.4.2商品信息库建立系统

由工作人员操作,用于录入超市商品的信息(商品序号、商品名、进价、售价、数量),并建立商品信息库。

voidbuild()

{

FILE*fp;

inti;

printf("请依次输入商品信息\n");

for(i=0;i

{

printf("商品序号:

");

scanf("%s",goods[i].num);

printf("商品名:

");

scanf("%s",goods[i].name);

printf("进价:

");

scanf("%f",&goods[i].in_price);

printf("售价:

");

scanf("%f",&goods[i].out_price);

printf("数量:

");

scanf("%d",&goods[i].amount);

}

if((fp=fopen("goods","w"))==NULL)

{

printf("can'topenthefile\n");

return;

}

fwrite(goods,sizeof(structgood),N,fp);

fclose(fp);

printf("***************************\n");

}

2.4.3商品信息库输出系统

商品信息库输出系统用于输出超市所有商品信息,用于检查商品信息录入是否有误。

voiddisplay()

{

inti;

FILE*fp;

if((fp=fopen("goods","r"))==NULL)

{

printf("can'topenthefile\n");

return;

}

for(i=0;fread(goods+i,sizeof(structgood),1,fp)!

=0;i++)

{

printf("商品序号商品名售价数量\n");

printf("%5s\t%7s\t%8.2f\t%d\n",goods[i].num,goods[i].name,goods[i].out_price,goods[i].amount);

printf("***************************\n");

}

fclose(fp);

}

2.4.4购物系统

用于顾客购买商品时操作,通过录入商品序号实现查找,其中包括购买商品及显示系统、修改系统及删除系统三个子函数。

选择1执行购买商品及显示操作,选择2执行修改商品数量操作,选择3执行删除操作,选择4退出,返回上一层。

voidbuy()

{

intmenu();

voidadd();

voidrevise();

voidshow();

voiddel();

while

(1)

{

switch(menu())

{

case1:

add();show();break;

case2:

revise();break;

case3:

del();break;

case4:

printf("***************************\n");

printf("1.建立商品信息库\n");

printf("2.输出商品信息\n");

printf("3.购买商品\n");

printf("4.结账\n");

printf("5.查看销售情况\n");

printf("6.退出\n");

printf("***************************\n");return;

}

}

}

intmenu()

{

intchoose;

printf("***************************\n");

printf("1.购买商品\n");

printf("2.修改数量\n");

printf("3.删除商品\n");

printf("4.退出\n");

printf("***************************\n");

printf("请选择操作序号\n");

while(scanf("%d",&choose))

{

if(choose<1||choose>5)

{

printf("输入错误,请重新输入!

\n");

continue;

}

elsebreak;

}

returnchoose;

}

2.4.4.1商品添加及显示系统

通过输入商品序号并且与商品信息库中数据比较实现查找,并输出所选商品的信息(商品号、商品名、售价、数量),在输入所购数量后,存入buy_g[]数组中存储,并且显示出所购商品的信息以及购买数量。

voidadd()

{

inti,m=0;

charnumb[50];

charchoice;

do

{

printf("请输入要选购商品的序号:

\n");

scanf("%s",numb);

for(i=0;i

{

if(strcmp(goods[i].num,numb)==0)

{

strcpy(buy_g[j].num,goods[i].num);

strcpy(buy_g[j].name,goods[i].name);

buy_g[j].in_price=goods[i].in_price;

buy_g[j].out_price=goods[i].out_price;

printf("商品序号商品名售价剩余数量\n");

printf("%5s\t%7s\t%8.2f\t%d\n",goods[i].num,goods[i].name,goods[i].out_price,goods[i].amount);break;

}

}

{

if(strcmp(goods[i].num,numb)==0)

{

printf("输入购买数量:

");

scanf("%d",&m);

while(m>goods[i].amount)

{

printf("输入错误,请重新输入\n");

printf("输入购买数量");

scanf("%d",&m);

}

buy_g[j].amount=m;

j++;

}

else

printf("无此商品\n");

}

printf("是否继续购买?

请输入Y或者N\n");

getchar();

scanf("%c",&choice);

}while(choice=='Y');

}

voidshow()

{

inti;

printf("购买的商品\n");

printf("商品序号商品名售价数量\n");

for(i=0;i

{

printf("%5s\t%7s\t%8.2f\t%d\n",buy_g[i].num,buy_g[i].name,buy_g[i].out_price,buy_g[i].amount);

}

}

2.4.4.2修改购买商品系统

通过输入商品序号实现在所购商品数组buy_g[]中查找,并重新输入所要购买数量。

voidrevise()

{

charnumbe[50];

inti;

printf("请输入要修改商品的序号\n");

scanf("%s",numbe);

for(i=0;i

{

if(strcmp(buy_g[i].num,numbe)==0)break;

}

printf("购买的商品\n");

printf("商品序号商品名售价数量\n");

printf("%5s\t%7s\t%8.2f\t%d\n",buy_g[i].num,buy_g[i].name,buy_g[i].out_price,buy_g[i].amount);

printf("请重新输入数量\n");

scanf("%d",&buy_g[i].amount);

}

2.4.4.3删除购买商品系统

通过输入商品序号实现在所购商品数组buy_g[]中查找所要删除的商品,并将其所购买数量重置为0,输出时跳过购买数量为0的商品实现删除功能。

voiddel()

{

inti;

charnumb[50];

printf("请输入要删除的商品序号\n");

scanf("%s",numb);

for(i=0;i

{

if(strcmp(buy_g[i].num,numb)==0)

{

buy_g[i].amount=0;

break;

}

}

printf("所购买的商品\n");

for(i=0;i

{

if(buy_g[i].amount!

=0)

{

printf("商品序号商品名售价数量\n");printf("%5s\t%7s\t%8.2f\t%d\n",buy_g[i].num,buy_g[i].name,buy_g[i].out_price,buy_g[i].amount);

}

elsecontinue;

}

}

2.4.5结账系统

通过所购买商品数组buy_g[]中售价与购买数量的乘积的累加求出应付钱数,在输入实际付钱数目后输出找零数目。

voidmoney()

{

floatn=0,total=0,pay;

inti=0;

for(i=0;i

{

n=buy_g[i].out_price*buy_g[i].amount;

total+=n;

}

printf("总费用:

%8.3f\n",total);

do

{

printf("实际付款:

");

printf("\n");

scanf("%f",&pay);

if(pay

{

printf("金额错误,请重新输入!

\n");

}

}while(pay

printf("找零:

");

printf("%8.3f\n",pay-total);

printf("***************************\n");

printf("1.建立商品信息库\n");

printf("2.输出商品信息\n");

printf("3.购买商品\n");

printf("4.结账\n");

printf("5.查看销售情况\n");

printf("6.退出\n");

printf("***************************\n");

}

2.4.6销售情况查询系统

通过所买商品与商品信息库中商品信息的比较,求出商品的剩余数量并随商品信息输出,并且根据进价、售价及销售数目粗略求出获利数目。

voidcheck()

{

inti;

intm;

floatq,n=0;

printf("商品销售情况\n");

printf("商品序号商品名售价剩余数量\n");

for(i=0;i

{

for(m=0;m

{

if(strcmp(goods[i].num,buy_g[m].num)==0)

{

printf("%5s\t%7s\t%8.2f\t%d\n",goods[i].num,goods[i].name,goods[i].out_price,goods[i].amount-buy_g[m].amount);

break;

}

}

}

printf("总盈利:

\n");

for(i=0;i

{

q=(buy_g[i].out_price-buy_g[i].in_price)*buy_g[i].amount;

n+=q;

}

printf("¥");

printf("%8.2f\n",n);

printf("***************************\n");

printf("1.建立商品信息库\n");

printf("2.输出商品信息\n");

printf("3.购买商品\n");

printf("4.结账\n");

printf("5.查看销售情况\n");

printf("6.退出\n");

printf("***************************\n");

}

2.5程序实现及测试

2.5.1进入系统登录页面及显示的相关信息

 

2.5.2建立商品信息库

 

2.5.3输出商品信息库信息

 

2.5.4购买商品菜单

 

2.5.4.1添加购买商品

 

2.5.4.2修改购买商品数量

 

2.5.4.3删除所购商品

 

2.5.5计算应收钱数及找零

 

2.5.7查询销售情况

 

3不足之处

程序虽然运行无误,但仍有很多不足之处,一是代码用C语音写,较为繁琐,代码冗长,占用空间大,并且所用符号多,不易保证书写正确性;二、代码有需完善之处,主要是建立商品信息系统时数组个数N需要提前已知,并在代码开头处予以说明,否则单凭建立个数多数组则无法正常使用;三:

界面设计有待优化,没有实现清屏功能,在数据较多时不易查看;四、只是实现了根据商品序号查找功能,没有完善其他功能,且输入较为繁琐。

4设计体会

通过本次的课程设计,除了让我对以前学过的C语言重新进行了系统的复习,巩固了所学的知识,而且让我理解到编程的乐趣与艰辛,在编写程序时,最重要的是有系统的构想,能够把所要写的程序的各种功能及逻辑顺序形成思路,再根据实际情况选择语言及所用到的方法。

在第一次编写完时看到密密麻麻的错误提示,但无从下手的感觉十分无奈,只能一点一点的找到错误并且改正,当看到程序的大体功能都实现时感觉十分有成就感,而后就是进一步的完善和修改一些忽略的漏洞,等到全部都改正并且顺利运行的时候才长舒一口气。

虽然本次内容简单,所用语言也很简单,但确实在不断的发现与改正错误中体会到了其中的乐趣与困难。

同时,我也理解到我所学的知识还远远不扎实,不充分,让我有了继续学习的动力,只有掌握更多的知识,才能写出质量更高的程序。

5结束语

通过本次课程设计让我感触很多,而且更加认识到本专业的意义,首先感谢老师能安排这样一次课程设计,让我们对所学东西能有回顾及应用的机会;还要感谢各位同学对我的指导,才使我顺利完成本次实验。

6参考文献

1.谭浩强《C程序设计(第四版)》清华大学出版社2010年6月第四版

2.严蔚敏、吴伟民《数据结构》清华大学出版社2007年

 

本科生课程设计成绩评定表

班级:

       姓名:

       学号:

序号

评分项目

满分

实得分

1

学习态度认真、遵守纪律

10

2

设计分析合理性

10

3

设计方案正确性、可行性、创造性

20

4

设计结果正确性

40

5

设计报告的规范性

10

6

设计验收

10

总得分/等级

评语:

注:

最终成绩以五级分制记。

优(90-100分)、良(80-89分)、中(70-79分)、

及格(60-69分)、60分以下为不及格

 

                 指导教师签名:

                  2013年元月25日

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

当前位置:首页 > 解决方案 > 学习计划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1