#include<stdio.h>
#include<string.h>
#include<conio.h> //对屏幕操作的头文件
#include<stdlib.h>
void information(); //输入信息函数声明
void screen(); //主界面函数声明
void add(); //增加函数声明
void secarch(); //查找函数声明
void mccz(); //查找函数中名称查找函数声明
void bhcz(); //查找函数中编号查找函数声明
void jgcz(); //查找函数中价格函数查找声明
void Del(); //删除函数声明
struct goods //定义结构体变量 商品信息
{
char num[100]; //商品编号
char name[100]; //商品名称
float price; //商品价格
int store; //商品库存
int sale; //商品已经销售数量
}A[100];
int n=0;
main()
{
information(); //调用information函数给结构体变量读取值
while(1)
screen();
return 0;
}
void information() //用函数来从文件中读取信息
{
int i=0;
FILE*fp; //定义文件类型指针
if((fp=fopen("information.dat","r"))==NULL) //用只读方式打开文件,如果文件存在就将文件的地址给fp,如果不存在fp为空指针
{
printf("cannot open this file;\n");
exit(0);
}
while(!feof(fp)) //feof函数可以用来检测文件读写位置是否移到文件的末尾,如果是,则函数值为1,否则为0
{
fscanf(fp,"商品编号%s\n",A[i].num);
fscanf(fp,"商品名称%s\n",A[i].name);
fscanf(fp,"商品价格%f\n",&A[i].price);
fscanf(fp,"商品库存%d\n",&A[i].store);
fscanf(fp,"商品已售%d\n",&A[i].sale); //用fscanf函数从文件中读取输入到结构体变量中
i++;
}
n=i;
fclose(fp); //关闭文件以免被误用
}
void screen() //主界面函数
{
void add();
void Del();
// void change();
void search();
// void tj();
void save();
int choice;
// clean();
printf(" ************************************************************** \n ");
printf(" ** Welcome ** \n ");
printf(" ** 超市商品管理系统 ** \n ");
printf(" ** ** \n ");
printf(" ** 1.增加商品 ** \n ");
printf(" ** 2.删除商品 ** \n ");
printf(" ** 3.查找商品 ** \n ");
printf(" ** 4.修改密码 ** \n ");
printf(" ** 5.统计商品总数 ** \n ");
printf(" ** 0.退出 ** \n ");
printf(" ************************************************************** \n "); //主界面
printf("请选择您的操作:"); //提示语句
scanf("%d",&choice);
switch(choice) //用switch语句实现多分支选择结构来调用不同的函数
{
case 1: add(); break;
case 2: Del(); break;
case 3: search();break;
// case 4: change();break;
// case 5: tj();break;
case 0: save();exit(0);
default:printf("操作错误,退出程序!");
exit(0);
}
}
void add() //增加商品函数
{
scanf("%s%s%f%d%d",A[n].num,A[n].name,&A[n].price,&A[n].store,&A[n].sale);
n++;
}
void Del() //删除商品函数
{
}
void search() //查找商品函数
{
int choice;
void mccz();
void bhcz();
void jgcz();
// clean();
printf(" *************************************************************** \n");
printf(" *************************查询商品操作************************** \n");
printf(" \n");
printf(" ** 1.按照商品编号查找 ** \n");
printf(" ** 2.按照商品名称查找 ** \n");
printf(" ** 3.按照价格区间查找 ** \n");
printf(" ** 4.返回主界面 ** \n");
printf(" *************************************************************** \n"); //查找商品操作主界面
printf("请输入您的操作:");
scanf("%d",&choice);
switch(choice) //Switch语句实现函数选择
{
case 1:bhcz();break;
case 2:mccz();break;
case 3:jgcz();break;
case 4:screen();break;
default:printf("操作错误,退出程序!");
exit(0);
}
}
void mccz() //查询商品操作中名称查找函数
{
int i,choice,count=0;
char ming[100];
// clean(); //清屏
printf(" *************************************************************** \n");
printf(" *************************名称查找操作操作*********************** \n");
printf(" 请输入商品名称:");
scanf("%s",ming);
for(i=0;i<10;i++) //for语句来逐个对比输入的商品名称和系统中所储存的商品名称是否相同
{
if(strcmp(ming,A[i].name)==0) //如果相同就输出该商品的所有信息
{
printf(" ------------------------------------------------------------------\n");
printf(" |商品编号 |商品名称|商品价格 |商品库存 |商品已售 |\n");
printf(" |%s |%s |%.2f |%d |%d |\n",A[i].num,A[i].name,A[i].price,A[i].store,A[i].sale);
printf(" ------------------------------------------------------------------");
printf("\n");
count++;
break;}
}
if(count==0)
printf(" 此商品不存在,请重新查找!");
printf(" 输入0返回查找界面,输入1返回主界面:");//查找成功后,提示用户操作
scanf("%d",&choice);
if(choice==0)
search(); //如果choice=0就再次调用名称查找函数
else if(choice==1) //如果choice=1就调用主界面函数
screen();
else
{
printf(" 操作错误退出程序!");
exit(0);
}
}
void bhcz() //查找函数中编号查找函数
{
int i,choice,count=0;
// clean();
char num[100];
printf(" *************************************************************** \n");
printf(" *************************编号查找操作************************** \n");
printf(" 请输入商品编号");
scanf("%s",num);
printf("\n");
for(i=0;i<10;i++)
{
if(strcmp(num,A[i].num)==0) //如果相同就输出该商品的所有信息
{
printf(" ------------------------------------------------------------------\n");
printf(" |商品编号 |商品名称|商品价格 |商品库存 |商品已售 |\n");
printf(" |%s |%s |%.2f |%d |%d |\n",A[i].num,A[i].name,A[i].price,A[i].store,A[i].sale);
printf(" ------------------------------------------------------------------");
printf("\n");
count++;
break;}
}
if(count==0)
printf(" 此商品不存在,请重新查找!");
printf(" 输入0返回查找界面,输入1返回主界面:");//查找成功后,提示用户操作
scanf("%d",&choice);
if(choice==0)
search(); //如果choice=0就再次调用名称查找函数
else if(choice==1) //如果choice=1就调用主界面函数
screen();
else
{
printf(" 操作错误退出程序!");
exit(0);
}
}
void jgcz() //查找函数中价格区间查找函数
{
int i,n,choice,count=0;
float j,k;
// clean();
for(i=0;i<10;i++)
if(A[i].price!=0)
n=i+1; //记录下商品的总数
printf(" *************************************************************** \n");
printf(" ***********************价格区间查找操作************************* \n");
printf(" 请输入价格:");
scanf("%f%f",&j,&k);
for(i=0;i<n;i++)
{
if(j<=A[i].price&&A[i].price<=k) //找出商品价格在区间之内所有商品输出
{
printf(" ------------------------------------------------------------------\n");
printf(" |商品编号 |商品名称|商品价格 |商品库存 |商品已售 |\n");
printf(" |%s |%s |%.2f |%d |%d |\n",A[i].num,A[i].name,A[i].price,A[i].store,A[i].sale);
printf(" ------------------------------------------------------------------");
printf("\n");
count++; //用count区间内上的商品总数
}
}
if(count==0) //如果count=0说明此区间内无任何商品
{
printf(" 此区间不存在任何商品,请重新查找\n"); //如果商品编号不存在就输入提示语句
printf(" 输入0返回查找界面,输入1返回主界面:");
scanf("%d",&choice);
if(choice==0)
search();
else if(choice==1)
screen();
else{
printf(" 操作错误,退出程序!");
exit(0);}
}
else //否则输出提示接下来操作的提示语句
{
printf(" 以上是价格区间内所有商品\n");
printf(" 请选择接下来的的操作,输入0返回查找界面,输入1返回主界面:");
scanf("%d",&choice);
if(choice==0)
search();
else if(choice==1)
screen();
else{
printf(" 操作错误,退出程序!");
exit(0);}
}
}
void save()
{
FILE*fp; //定义文件类型指针
if((fp=fopen("information.dat","wb"))==NULL) //用只读方式打开文件,如果文件存在就将文件的地址给fp,如果不存在fp为空指针
{
printf("cannot open this file;\n");
exit(0);
}
for(int j=0;j<n;j++) //删除文件重新输入数据
{
fprintf(fp,"商品编号%s\n",A[j].num); fread(); fwrite();
fprintf(fp,"商品名称%s\n",A[j].name);
fprintf(fp,"商品价格%f\n",A[j].price);
fprintf(fp,"商品库存%d\n",A[j].store);
fprintf(fp,"商品已售%d\n",A[j].sale);
}
fclose(fp);
}
超市商品管理系统
最新推荐文章于 2025-07-25 11:38:50 发布