收藏 分销(赏)

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

上传人:仙人****88 文档编号:8784127 上传时间:2025-03-02 格式:DOC 页数:19 大小:331.04KB 下载积分:10 金币
下载 相关 举报
C语言超市收银管理系统实现.doc_第1页
第1页 / 共19页
C语言超市收银管理系统实现.doc_第2页
第2页 / 共19页


点击查看更多>>
资源描述
超市收银管理程序的设计与实现 1摘要和关键字 1.1摘要 该系统主要用于超市商品管理人员对于商品的信息(包括商品号、商品名、单价)进行输入、删除、修改和查询。除此之外,当销售人员输入商品号及销售数量时,系统应计算应收钱数,并根据实际收银计算找零数量。最后,系统能对销售情况进行查询。Abstract The system is mainly used in the supermarket goods management personnel of the product information (including commodity number, name of goods, unit price) input, delete, modify, and query. In addition, when sales staff input article number and sales volume, the system should be calculated according to the actual amount receivable, and cashier calculation quantity change. Finally, the system can inquire the sales situation. 1.2 关键字 登陆系统 操作菜单 建立信息库 查询 付款 Keywords Login system Operation menu Set up information database Inquire Pay 2 正文 2.1 引言 随着经济的发展,人们每天接触并且需要处理的信息越来越多,人们就需要寻求一个工具来实现信息的管理和处理。尤其是超市里,需要管理各种商品的数目及销售情况,而超市收银管理程序则是针对这种问题而产生的,系统能够实现对商品信息的录入、修改、查询、删除操作,并且在销售时能计算出应收钱数,并能根据实际收钱而计算找零,最后能对销售情况进行查询。 2.2 需求分析 (1) 销售人员能对商品信息(商品号、商品名、单价)进行输入,建立商品信息库。 (2) 输出商品信息库中全部商品的信息(商品号、商品名、售价、数量),并且输出所购商品清单。 (3) 销售人员根据顾客需求录入所购商品的商品号及数量,并能实现所购商品的数量修改以及商品删除。 (4) 根据所购商品的数量及单价计算出应付钱数,并根据实际收钱数目计算找零数目,并输出。 (5) 销售人员通过此程序能查询销售情况,输出商品的信息(商品号、商品名、单价、剩余数量),并计算卖出商品的获利情况。 2.3 数据结构设计 struct good goods[N]:总体商品信息数组,全局变量 struct good buy_g[j]:所购商品信息数组,全局变量 Int j:累计所购商品种类 Int select:操作选项 build():建立商品信息库函数 display():输出商品信息库中信息函数 buy():购买商品函数 money():计算应付钱数和找零函数 add():添加所购商品函数(add()函数子函数) check():查看销售情况函数 fp:指向文件的指针 total():应付钱数 pay():实收钱数 2.4 算法设计 该系统主要包括登陆系统、商品信息库建立系统、商品信息库输出系统、购物系统、结账系统以及销售情况查询系统。其中购物系统包括商品添加及显示系统、修改购买商品系统以及删除购买商品系统,逻辑结构清晰,使用方便。 2.4.1 登陆系统 登陆系统由销售人员操作,是系统选择门户,其中选择1则执行商品信息库建立的操作,选择2执行商品信息库输出操作,选择3执行购物操作,选择4执行结账操作,选择5执行销售情况查询操作。 void main() { void build(),display(),buy(),money(); void add(),check(); int select; 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) { case 1:build();continue; case 2:display();continue; case 3:buy();continue; case 4:money(j);continue; case 5:check();continue; case 6:printf("谢谢使用。\n");exit(0); } } } 2.4.2 商品信息库建立系统 由工作人员操作,用于录入超市商品的信息(商品序号、商品名、进价、售价、数量),并建立商品信息库。 void build() { FILE *fp; int i; printf("请依次输入商品信息\n"); for( i=0;i<N;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't open the file\n"); return; } fwrite(goods,sizeof(struct good),N,fp); fclose(fp); printf("***************************\n"); } 2.4.3 商品信息库输出系统 商品信息库输出系统用于输出超市所有商品信息,用于检查商品信息录入是否有误。 void display() { int i; FILE *fp; if((fp=fopen("goods","r"))==NULL) { printf("can't open the file\n"); return; } for(i=0;fread(goods+i,sizeof(struct good),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退出,返回上一层。 void buy() { int menu(); void add(); void revise(); void show(); void del(); while(1) { switch(menu()) { case 1:add();show();break; case 2:revise();break; case 3:del();break; case 4: printf("***************************\n"); printf("1.建立商品信息库\n"); printf("2.输出商品信息\n"); printf("3.购买商品\n"); printf("4.结账\n"); printf("5.查看销售情况\n"); printf("6.退出\n"); printf("***************************\n");return; } } } int menu () { int choose; 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; } else break; } return choose; } 2.4.4.1 商品添加及显示系统 通过输入商品序号并且与商品信息库中数据比较实现查找,并输出所选商品的信息(商品号、商品名、售价、数量),在输入所购数量后,存入buy_g[]数组中存储,并且显示出所购商品的信息以及购买数量。 void add() { int i,m=0; char numb[50]; char choice; do { printf("请输入要选购商品的序号:\n"); scanf("%s",numb); for(i=0;i<N;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'); } void show() { int i; printf("购买的商品\n"); printf("商品序号 商品名 售价 数量\n"); for(i=0;i<j;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[]中查找,并重新输入所要购买数量。 void revise() { char numbe[50]; int i; printf("请输入要修改商品的序号\n"); scanf("%s",numbe); for(i=0;i<j;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的商品实现删除功能。 void del() { int i; char numb[50]; printf("请输入要删除的商品序号\n"); scanf("%s",numb); for(i=0;i<j;i++) { if(strcmp(buy_g[i].num,numb)==0) { buy_g[i].amount=0; break; } } printf("所购买的商品\n"); for(i=0;i<j;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); } else continue; } } 2.4.5 结账系统 通过所购买商品数组buy_g[]中售价与购买数量的乘积的累加求出应付钱数,在输入实际付钱数目后输出找零数目。 void money() { float n=0,total=0,pay; int i=0; for(i=0;i<j;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<total) { printf("金额错误,请重新输入!\n"); } }while(pay<total); 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 销售情况查询系统 通过所买商品与商品信息库中商品信息的比较,求出商品的剩余数量并随商品信息输出,并且根据进价、售价及销售数目粗略求出获利数目。 void check() { int i; int m; float q,n=0; printf("商品销售情况\n"); printf("商品序号 商品名 售价 剩余数量\n"); for(i=0;i<N;i++) { for(m=0;m<j;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<j;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日
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服