×
嵌入式 > 技术百科 > 详情

C语言写的简易水果管理系统

发布时间:2020-06-20 发布时间:
|
//编写一个简单的水果管理系统
//1.可以查看所有水果
//2.可以添加新水果(添加的时候判断水果是否重名)
//3.可以对所有水果排序,价格降序,数量降序
//4.删除指定名称的水果
//5.退出系统
#include
#include
#include
typedef struct fruit{
char name[30];   //水果名
int count;       //水果数量
double price;    //水果单价
}fruit_t;
//菜单函数
void log_menu();
//查看函数
void check(fruit_t *p,int *count1);
//添加函数
int  add(fruit_t *p,int *count1);
//功能控制函数
void log_ctrl(fruit_t *p,int *count1);
//删除函数
int del(fruit_t *p,int *count1);
//排序菜单函数
void cmp_menu();
//排序控制函数
void cmp_ctrl(fruit_t *p,int *count1);
//按数量排序函数
int cmp_count_desc(const void *px,const void *py);
//按价格排序排序函数
int cmp_price_desc(const void *px,const void *py);
//系统初始化函数
void log_start(fruit_t *p,int *count1);
//保存函数
void write(fruit_t *p,int *count1);
int main(){
 fruit_t stu[100]={""};    //保存所有水果名、数量、单价
 int count1=0;          //count1表示水果种类数量
 printf("欢迎来到水果管理系统 ");
 log_start(stu,&count1);        //系统初始化
 printf("初始化成功 ");
 log_ctrl(stu,&count1);    // 功能控制函数
 return 0;
}
//系统初始化函数
void log_start(fruit_t *p,int *count1){
 FILE *fp=NULL;
 int i=0;
 fp=fopen("data","a+");
 if(NULL==fp)
  exit(1);
 while(fread(&p[*count1],sizeof(fruit_t),1,fp))
  *count1+=1;
 fclose(fp);
}
//功能控制函数
void log_ctrl(fruit_t *p,int *count1){
 int chose=0;
 
 while(1){
  chose=0;
  log_menu();
  printf("请选择:");
  scanf("%d",&chose);
  switch(chose){
   case 1://查看
    check(p,count1);
    break;
   case 2://添加
    if(add(p,count1)==1)
     printf("添加失败,已有此水果 ");
    else
     printf("恭喜您,添加成功 ");
    break;
   case 3://排序
    cmp_ctrl(p,count1);
    break;
   case 4://删除
    if(del(p,count1)==1)
     printf("删除失败,没有此种类水果 ");
    else
     printf("恭喜您,删除成功 ");
    break;
   case 5://退出
    write(p,count1);    //保存
    printf("信息保存成功 ");
    exit(0);
    break;
   default:
    printf("输入错误,请重新输入! ");
  }
 }
}
//保存函数
void write(fruit_t *p,int *count1){
 FILE *fp=NULL;
 int i=0;
 fp=fopen("data","w");
 if(NULL==fp)
  exit(2);
 fwrite(p,sizeof(fruit_t),*count1,fp);
 fclose;
}
//排序控制函数
void cmp_ctrl(fruit_t *p,int *count1){
 int chose=0;
 
 if(*count1==0){
  printf("水果种类为0,排序失败 ");
  return;
 }
 while(1){
  cmp_menu();
  printf("请选择:");
  scanf("%d",&chose);
  switch(chose){
   case 1:        //数量
    qsort(p,*count1,sizeof(fruit_t),cmp_count_desc);
    printf("排序成功 ");
    break;
   case 2:        //价格
    qsort(p,*count1,sizeof(fruit_t),cmp_price_desc);
    printf("排序成功 ");
    break;
   case 3:        //返回
    return;
    break;
   default:
    printf("输入错误,请重新输入 ");
  }
 }
}
//按价格排序排序函数
int cmp_price_desc(const void *px,const void *py){
 const fruit_t *p1=px;
 const fruit_t *p2=py;
 if(p1->price>p2->price)
  return -1;
 else if(p1->priceprice)
  return 1;
 else
  return 0;
}
//按数量排序函数
int cmp_count_desc(const void *px,const void *py){
 const fruit_t *p1=px;
 const fruit_t *p2=py;
 if(p1->count>p2->count)
  return -1;
 else if(p1->countcount)
  return 1;
 else
  return 0;
}
//排序菜单函数
void cmp_menu(){
  printf("1.按数量排序2.按价格排序3.返回 ");
}
//删除函数 0-成功 1-失败
int del(fruit_t *p,int *count1){
 int i=0,j=0;     //j保存要删除的水果下标
 char str[30]="";
 int flag=0;
 printf("请输入要删除的水果名:");
 scanf("%s",str);
 flag=0;
 for(i=0;i<=*count1;i++){
  if(strcmp(p[i].name,str)==0){
   flag=1;
   j=i;
   break;
  }
 }
 if(flag==0)
  return 1;
 for(i=j;i   strcpy(p[i].name,p[i+1].name);
  p[i].count=p[i+1].count;
  p[i].price=p[i+1].price;
 }
 *count1-=1;
 return 0;
}
//添加函数,1-失败 0-成功
int add(fruit_t *p,int *count1){
 int i=0;
 printf("水果名:");
 scanf("%s",p[*count1].name);
 for(i=0;i   if(strcmp(p[*count1].name,p[i].name)==0)
   return 1;
 printf("数  量:");
 scanf("%d",&p[*count1].count);
 printf("价  格:");
 scanf("%lf",&p[*count1].price);
 *count1+=1; 
 return 0;
}
//查看函数
void check(fruit_t *p,int *count1){
 int i;
 if(*count1==0){
 printf("水果种类为0 ");
 return;
 }
 printf("水果 数量 单价 ");
 for(i=0;i   printf("%s %d %.2lf ",p[i].name,p[i].count,p[i].price);
}
//菜单函数
void log_menu(){
 printf("1.查看2.添加3.排序4.删除5.退出 ");
}
 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
分拣机器人的工作原理是什么