这个C语言程序错在哪里(模拟超市售货系统)

这个C语言程序错在哪里(模拟超市售货系统),第1张

把下列代码复制编译下即可(测试运行正确),错误主要出在putw getw上,用于int二进制保存会有符号问题,此尺帆二个用于宽字符的输入输消备出是无符号的。其他还有个别{}不对已帮你修改,具体可比较你与下面代码可以看出。忘了改路径,我测试用的h:\,请改为你的d:\

#include "stdio.h"

#include "string.h"

#include "stdlib.h"

#defineN 50

void print()

void check()

void overdue()

int a

struct goods

{

int num

char name[2]

float price

int count

int chuchangriqi

int baozhiqi

int year

int month

int day

}goods[N]

void main()

{

int j

printf("** 超市售货系统 **\n")

printf("** 1. 输入所有商品信息 **\n")

printf("** 2. 查询某商品并显示其信息 **\n")

printf("** 3. 统计已过期商品 **\n")

printf("** 4. 退出 **\拿困毁n")

while(1)

{printf("请选择 *** 作:(1-4)")

scanf ("%d",&j)

switch(j)

{

case 1:print()break

case 2:check()break

case 3:overdue()break

case 4: exit(0)

break

default:printf("无此功能\n")

}

}

}

void read(struct goods * goods,int*n)

{

FILE*fp

int i=0

if((fp=fopen("h:\\goods.txt","rb"))==NULL)

{ printf("文件打开失败!\n")

return

}

else

{

*n==fread(n,sizeof(*n),1,fp)

for(i=0i<*ni++)

fread(&goods[i],sizeof(struct goods),1,fp)

}

fclose(fp)

}

void print()

{

FILE*fp

int i

if((fp=fopen("h:\\goods.txt","wb+"))==NULL)

{

printf("文件打开失败!\n")

return

}

printf("请输入商品的数量\n:")

scanf("%d",&a)

fwrite(&a,sizeof(a),1,fp)

for(i=0i<ai++)

{

printf("\n请输入商品编号:")

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

printf("\n请输入商品名称:")

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

printf("\n请输入商品价格:")

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

printf("\n请输入商品数量:")

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

printf("\n请输入商品出厂日期:")

scanf("%d,%d,%d",&goods[i].year,&goods[i].month,&goods[i].day)

printf("\n请输入商品保质期:")

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

fwrite(&goods[i],sizeof(struct goods),1,fp)

}

fclose(fp)

}

void check()

{

FILE*fp

int i,m,n

int number

read(goods,&n)

printf("请输入编号:")

scanf("%d",&number)

fp=fopen("h:\\goods.txt","r")

for(i=0i<ni++)

{if(number==goods[i].num)

{

printf("商品信息为:\n")

printf(" 编号:%d\n",goods[i].num)

printf(" 名称:%s\n",goods[i].name)

printf(" 价格: %f\n",goods[i].price)

printf(" 数量: %d\n",goods[i].count)

printf("出产日期:%d,%d,%d\n",goods[i].year,goods[i].month,goods[i].day)

printf("保质期:%d\n",goods[i].baozhiqi)

}

}fclose(fp)

}

void overdue()

{

FILE*fp

int i,m=0,n,j,k

read(goods,&n)

fp=fopen("h:\\goods.txt","r")

struct date

{

int year

int month

int day

}today

printf("请输入今天的日期:")

scanf("%d,%d,%d",&today.year,&today.month,&today.day)

for(i=0i<ni++)

{

k=(today.year-goods[i].year)*365+(today.month-goods[i].month)*30+

(today.day-goods[i].day)

if(k>(goods[i].baozhiqi*30))

{

m=m++

printf("过期商品的编号为:%d\n",goods[i].num)

}

}

fwrite(&m,sizeof(m),1,fp)

{

printf(" 过期商品的个数为:%d\n",m)

printf(" 请把以上过期商品返回至厂家处 \n")

}

fclose(fp)

}

给亲些提示帮助吧,商品做一个结构体,包含价格,种类,库存数量,条形码,折扣。

超市的数据是按商品来的,和客人无关喔~超并梁市不需要知道客人的情况,只需要知道商品的情况。

如果非要客人信息,那么可以改成会员制度,那么客人的结构体就是是否会员,购买日期,购买商判蔽局品品种,购买数量,结账价格。

最后还需要一个购买事件结构体,就是购买总额,结账总额,找零总额。

接下来3大主要数据部分准备完毕,接下来就是过程编程了,就需要模拟一下购物过程来 *** 作以上的掘让3大数据结构就行了。

还有不懂请私信我私聊。

超市管理系统

*/

#include<stdio.h>

#include<string.h>

//欢迎界面//

void welcome()

//功能浏览//

void mainMenu()

//购物结算//

void saleCalc()

//进货管理//

void addGoods()

//修改信息

void updateGoods()

//显示商品//

void showGoods()

//删除商品//

void deleteGoods()

//查询商品//

int searchGoods()

//购买结算

void saleCalc()

//更新库存//

void updateGoodsNum(int number,char name[50])

//结构体

struct goods

{

char name[50]//商品名称

int num//商品数量

float price//商品价格

}

int count/雀族袭/商品种类数量

goods list[1000]//声明goods的变量数组

char name[50]

void main()//主函数

{

int num

welcome()

do{

mainMenu()

printf("请选择功能:")

scanf("%d",&num)

switch(num)

{

case 1:

saleCalc()

break

case 2:

addGoods()

break

case 3:

updateGoods()

break

case 4:

showGoods()

break

case 5:

deleteGoods()

break

case 0:

break

}

}while(num!=0)

}

void welcome()//欢迎界面

{

printf("-------------------------------------------------------------------------\n")

printf("****************欢迎使用超市管理系统*******************\n")

printf("-------------------------------------------------------------------------\n")

}

void mainMenu()//功能浏览界面

{

printf("****1.购物结算****\n")

printf("****2.进货管理****\n")

printf("****3.修改商品****\n")

printf("****4.显示商品****\n")

printf("****5.删穗厅除商品****\n")

printf("****0.退出系统****\n")

}

//查询信息

int searchGoods()//查询商品信息

{

printf("请输入您要购买商品的名字:")

scanf("%s",name)

for(int i=0i<counti++)

{

if(stricmp(name,list[i].name)==0)

{

return 1

}

else

{

printf("对不起了,没有找到%c商品\n",name)

return -1

}

}

}

//购物结算

void saleCalc()//购物结算

{

int number,i,s

float priceGoods=0,sum=0,money

char c=' '

s=searchGoods()

do

{

if(s==-1)

{

s=searchGoods()

}else

{

printf("该商品b存在")

for(i=0i<counti++)

{

if(strcmp(name,list[i].name)==0)

{

priceGoods=list[i].price

break

}

}

printf("请顷兄输入您要购买的数量:")

scanf("%d",&number)

sum=priceGoods*number

updateGoodsNum(-number,name)

printf("是否继续购买(y/n)")

fflush(stdin)

c=getchar()

}

}while(c=='y'||c=='Y')

printf("本次消费总金额为:%.2f",sum)

printf("请输入您的实际付款金额:")

scanf("%f",&money)

printf("找零:%.2f\n",money-sum)

}

//进货管理

void addGoods() //商品的录入

{

int i=0

char c=' '

do

{

printf("请输入商品的名称:")

fflush(stdin)

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

printf("请输入商品的数量:")

scanf("%d",&list[i].num)

printf("请输入商品的单价:")

scanf("%f",&list[i].price)

printf("是否继续(y/n)")

fflush(stdin)

c=getchar()

}while(c=='Y'||c=='y')

}

//更新库存

void updateGoodsNum(int number,char name[50])

{

int i

for(i=0i<counti++)

{

list[i].num+=number//list[i].num=list[i].num+number

}

}

//显示货物信息

void showGoods()

{

printf("商品名称\t数量\t单价\n")

for(int i=0i<counti++)

{

printf("%s\t%d\t%.2f\n",list[i].name,list[i].num,list[i].price)

}

}

//修改商品信息

void updateGoods()

{

int i

printf("请输入您要修改商品的名字:")

scanf("%s",&name)

for(i=0i<counti++)

{

if(strcmp(name,list[i].name)==0)

{

printf("请输入新的商品名字:")

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

printf("请输入您要修改商品的数量:")

scanf("%d",list[i].num)

printf("请输入您要修改商品的单价:")

scanf("%f",list[i].price)

}

else

{

printf("对不起,没有找到该商品信息!")

}

}

}

//删除商品信息

void deleteGoods()

{

int index=-1

printf("请输入您要删除的商品名字:")

scanf("%s",name)

for(int i=0i<counti++)

{

if(strcmp(name,list[i].name)==0)

{

index=i

}

}if(index==-1)

{

printf("对不起!没有找到您要删除的商品信息!")

}

else{

for(int i=indexi<counti++)

{

list[i]=list[i+1]

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12421022.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存