C语言程序设计——校园超市销售管理系统
#include #include #include #include #define N 100 void LoginIF(); void LoginTitle(); void ShoppingSettlement(); void stock(); void Manage(); void AddGoods(); void FindGoods(); void UpdateGoods(); void DeleteGoods(); int read_Message(); /***********************************************************/ /*结构体区*/ struct date{ //时间结构体 int year; int month; int day; }; struct goods{ //商品结构体 char name[20]; //名称 int number; //编号 struct date scdate; //生产日期 int OriginalCost; //原价 int UnitPrice; //单价 int inventory; //库存量 int sell; //出售量 }goods[1000]; //结构体数组,最多存入1000个商品信息 /***********************************************************/ int total; /***********************************************************/ /*文件夹写入区*/ int read_Message(){ FILE *fp; int i=0; if((fp=fopen("goods.dat","rb"))==NULL){ //rb为了输入数据,打开一个二进制文件 printf("n********暂无任何可读信息,按任意键继续*****"); getch(); return 0; } while(feof(fp)!=1){ fread(&goods[i],sizeof(struct goods),1,fp); //从goods文件中读取1个元素 if(goods[i].number==0){ break; }else{ i++; } } fclose(fp); return i; } void saveall(){ FILE *fp; int i; if((fp=fopen("goods.dat","wb"))==NULL){ //wb为了输出输出,打开一个二进制文件 printf("nttt无法打开文件n"); return; } for(i=0;i fwrite(&goods[i],fp); //以二进制形式对文件进行操作,不局限于文本文件 } fclose(fp); //关闭文件 } /***********************************************************/ int main(){ LoginIF(); } /*登录验证*/ void LoginIF(){ int i=0; char username[20]; char password[20]; printf("tt******************************************n"); printf("ttt登录超市销量管理系统n"); printf("tt******************************************n"); do{ printf("nttt请输入用户名:"); gets(username); //输入用户名 fflush(stdin); //清空输入缓冲区中的内容 printf("ttt请输入密码:"); gets(password); //输入密码 /*判断用户名和密码是否正确*/ if((strcmp(username,"chaoshi")==0) && (strcmp(password,"123456")==0)){ printf("ttt欢迎使用n"); LoginTitle(); //若用户名密码正确,则跳转至登录首页 break; }else{ i++; if(i==3){ printf("ttt您已错误三次,退出系统"); break; } printf("ttt登录失败,请重新登录"); } }while(1); } /*登录首页*/ void LoginTitle(){ int choice; int flag=1; do{ system("cls"); printf("n"); printf("tt******************************************n"); printf("ttt欢迎使用超市销售管理系统n"); printf("tt******************************************n"); printf("ttt1.购物结算n"); printf("ttt2.查看商品库存n"); printf("ttt3.商品管理n"); printf("ttt4.退出系统n"); printf("ttt请选择你想要进行的操作n"); scanf("%d",&choice); switch(choice){ case 1: ShoppingSettlement(); //选择1,跳转购物结算界面 break; case 2: stock(); //选择2,跳转查看商品库存界面 break; case 3: Manage(); //选择3,跳转商品管理界面 break; case 4: exit(0); //选择4,跳转退出系统界面 flag=0; break; default: //输入1~4之外的数,弹出错误提示 printf("n输入序号错误,请重新输入:n"); break; } if(flag==0){ break; } }while(flag); } /*购物结算界面*/ void ShoppingSettlement(){ int m[1000],quality[1000],x,n=0; double y,money=0; int i,j,a[10],b[10],c=0; int id; struct goods shopping; id=read_Message(); system("cls"); printf("ntt**************商品交易信息**************n"); for(j=0;j<1000;j++){ printf("nttt请您输入顾客需要购买的商品编号:"); scanf("%d",m+j); n++; for(i=0;i if(m[j]==goods[i].number){ break; } } if(i==id){ printf("nttt没有找到您想购买的商品n"); printf("nttt按任意键继续n"); getch(); return; } shopping=goods[i]; //让shopping等于第i个结构体 if(shopping.inventory==0){ //判定想购买的商品是否卖完 printf("nttt对不起,您需要的商品已卖完,请重新购买nn"); }else{ printf("ntt编号t名称t生产期tt单价"); printf("ntt%dt%st%d-%d-%dt%d",shopping.number,shopping.name,shopping.scdate.year,shopping.scdate.month,shopping.scdate.day,shopping.UnitPrice); printf("nttt请输入您需要购买的商品数量: "); scanf("t%d",quality+j); money=money+shopping.UnitPrice*quality[j]; //收款=单*数量 shopping.inventory-=quality[j]; //库存减少 shopping.sell+=quality[j]; //销售量增加 goods[i]=shopping; saveall(); //保存数据 a[j-c]=m[j]; b[j-c]=quality[j]; a[j-c+1]=0; printf("nttt您是否购买其他产品?(y/n):"); if(getch()=='n'){ printf("nttt按任意键继续"); getch(); }else{ continue; } system("cls"); printf("ntt******************************************n"); //购物清单 printf("ntt编号t名称tt数量"); for(i=0;i<10;i++){ if(a[i]==0){ break; } printf("ntt%d",a[i]); //输出用户买的第i件商品的编号 switch(a[i]){ case 1: //如果编号是1,输出编号为1的商品名称 shopping=goods[0]; printf("t%s",shopping.name); break; case 2: //如果编号是2,输出编号为1的商品名称 shopping=goods[1]; printf("t%s",shopping.name); break; case 3: //如果编号是3,输出编号为1的商品名称 shopping=goods[2]; printf("t%s",shopping.name); break; case 4: //如果编号是4,输出编号为1的商品名称 shopping=goods[3]; printf("t%s",shopping.name); break; case 5: //如果编号是5,输出编号为1的商品名称 shopping=goods[4]; printf("t%s",shopping.name); //输出用户买的第i件商品的数量 break; } printf("tt%d",b[i]); } printf("ntt******************************************n"); printf("nttt您应收现金¥:%f元",money); printf("nttt实收现金:"); scanf("%d",&x); y=x-money; printf("nttt找回现金:%fn",y); printf("ttt是否继续使用购物结算(y/n)"); if(getch()=='y'){ money=0; system("cls"); c=j+1; }else{ break; } } } system("cls"); printf("nntt**************本日的销售清单**************n"); for(j=0;j printf("nttt商品编号:%d",m[j]); switch(m[j]){ case 1: //如果编号是1,输出编号为1的商品名称 shopping=goods[0]; printf("t商品名称:%s",shopping.name); break; case 2: //如果编号是2,输出编号为1的商品名称 shopping=goods[1]; printf("t商品名称:%s",shopping.name); break; case 3: //如果编号是3,输出编号为1的商品名称 shopping=goods[2]; printf("t商品名称:%s",shopping.name); break; case 4: //如果编号是4,输出编号为1的商品名称 shopping=goods[3]; printf("t商品名称:%s",shopping.name); break; case 5: //如果编号是5,输出编号为1的商品名称 shopping=goods[4]; printf("t商品名称:%s",shopping.name); break; } printf("t卖出数量:%d",quality[j]); } getch(); LoginTitle(); } void stock(){ int i; struct goods a; //创建一个新的结构体 total=read_Message(); //打开goods.dat文件 system("cls"); printf("ntt********************商品库存********************n"); if(total>0){ printf("ntt编号t名称t库存量n"); for(i=0;i a=goods[i]; printf("ntt%dt%st%dn",a.number,a.name,a.inventory); } printf("ntt******************************************n"); }else{ printf("ntt********************系统暂无任何商品信息********************n"); } printf("ttt按任意键继续"); getch(); LoginTitle(); } /*商品管理界面*/ void Manage(){ int choice; do{ printf("n"); printf("tt******************************************n"); printf("tttt商品管理菜单n"); printf("tt******************************************n"); printf("ttt1.添加商品n"); printf("ttt2.查询商品n"); printf("ttt3.更新商品n"); printf("ttt4.删除商品n"); printf("ttt5.返回上一级n"); printf("ttt请选择你想要进行的操作n"); scanf("%d",&choice); switch(choice){ case 1: AddGoods(); break; case 2: FindGoods(); break; case 3: UpdateGoods(); break; case 4: DeleteGoods(); break; case 5: LoginTitle(); break; default: //输入1~5之外的数,弹出错误提示 printf("n输入序号错误,请重新输入:n"); break; } }while(1); } /***********************************************************/ /*添加商品*/ void AddGoods(){ struct goods newgoods; char choice='y'; FILE *fp; int i=0; do{ system("cls"); printf("ntt************添加商品信息*************n"); printf("ttt请输入商品名称:"); scanf("%s",&newgoods.name); printf("n"); printf("ttt请输入商品编码:"); scanf("%d",&newgoods.number); printf("ntt******************************************n"); printf("ttt请输入商品生产日期:"); scanf("%d-%d-%d",&newgoods.scdate.year,&newgoods.scdate.month,&newgoods.scdate.day); printf("n"); printf("ttt请输入商品原价:"); scanf("%d",&newgoods.OriginalCost); printf("n"); printf("ttt请输入商品单价:"); scanf("%d",&newgoods.UnitPrice); printf("n"); printf("ttt请输入商品库存量:"); scanf("%d",&newgoods.inventory); printf("n"); if((fp=fopen("goods.dat","ab"))==NULL){ //将输入的商品信息写入good.dat文件中 printf("无法打开文件"); return ; } fwrite(&newgoods,fp); //以二进制形式对文件进行操作,不局限于文本文件 fclose(fp); //重新确认是否继续录入 printf("n还要继续;录入商品信息吗?(y/n)"); choice=getch(); }while(choice=='y'); } /*查询商品*/ void FindGoods(){ int i; struct goods c; //加入一个新的结构体数组 total=read_Message(); //阅读文件goods.dat system("cls"); printf("nttt********************商品信息********************n"); printf("nttt商品总数:%d",total); if(total>0){ printf("ntt********************显示所有商品信息********************n"); printf("ntt编号t名称t生产期tt原价t单价t库存量n"); for(i=0;i c=goods[i]; printf("ntt%dt%st%d-%d-%dt%dt%dt%dn",c.number,c.name,c.scdate.year,c.scdate.month,c.scdate.day,c.OriginalCost,c.UnitPrice,c.inventory); } printf("ntt******************************************n"); }else{ printf("n**********系统中暂无任何商品信息*******n"); } printf("n按任意键继续n"); getch(); } /*更新商品*/ void UpdateGoods(){ int i; int id; struct goods gx; //加入一个新的结构体数组 char choice='n'; system("cls"); total=read_Message(); printf("nttt请输入你要更新的商品的编号:"); scanf("%d",&id); for(i=0;i if(id==goods[i].number){ break; } } //如果,没有找到要更新的商品 if(i==total){ printf("nttt没有找到您想更新的商品n"); printf("按任意键继续"); getch(); return; } printf("ntt****************更新商品信息****************n"); printf("nttt请输入商品名称:"); scanf("%s",&gx.name); //为什么取地址 因为它是一个基本类型的数据 printf("nttt请输入商品编码:"); scanf("%d",&gx.number); printf("nttt请输入商品生产期:"); scanf("%d-%d-%d",&gx.scdate.year,&gx.scdate.month,&gx.scdate.day); printf("nttt请输入商品原价:"); scanf("%d",&gx.OriginalCost); printf("nttt请输入商品单价:"); scanf("%d",&gx.UnitPrice); printf("nttt请输入商品库存量:"); scanf("%d",&gx.inventory); printf("ntt******************************************n"); printf("ttt您确定要修改吗?(y/n)"); choice=getch(); if(choice=='n'){ printf("nttt放弃修改,返回上一级n"); printf("nttt按任意键继续n"); getch(); return; } goods[i]=gx; total-=1; saveall(); printf("nttt修改商品数据成功n"); printf("ttt按任意键继续"); getch(); } /*删除商品*/ void DeleteGoods(){ int i,j; int id; char choice='n'; system("cls"); total=read_Message(); printf("nttt请输入你要删除的商品的编码:"); scanf("%d",&id); for(i=0;i if(id==goods[i].number){ break; } } //如果,没有找到要删除的商品 if(i==total){ printf("nttt没有找到您想删除的商品n"); printf("nttt按任意键继续n"); getch(); return; } printf("ttt删除后无法恢复,您确定要删除吗?(y/n)"); choice=getch(); if(choice=='n'){ printf("nttt放弃删除,返回上一级n"); printf("nttt按任意键继续n"); getch(); return; } for(j=i;j goods[j]=goods[j+1] ; } total-=1; saveall(); printf("nttt删除商品数据成功n"); printf("ttt按任意键继续"); getch(); } 大一练手作品,参考网上的其他作品,自己加了点东西改了点东西 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |