资讯详情

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

//编写一个简单的水果管理系统 //1.可以查看所有水果 //2.可以添加新水果(添加的时候判断水果是否重名) //3.可以对所有水果排序,价格降序,数量降序 //4.删除指定名称的水果 //5.退出系统 #include<stdio.h> #include<stdlib.h> #include<string.h> 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]={"\0"}; //保存所有水果名、数量、单价 int count1=0; //count1表示水果种类数量 printf("欢迎来到水果管理系统\n"); log_start(stu,&count1); //系统初始化 printf("初始化成功\n"); 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("添加失败,已有此水果\n"); else printf("恭喜您,添加成功\n"); break; case 3://排序 cmp_ctrl(p,count1); break; case 4://删除 if(del(p,count1)==1) printf("删除失败,没有此种类水果\n"); else printf("恭喜您,删除成功\n"); break; case 5://退出 write(p,count1); //保存 printf("信息保存成功\n"); exit(0); break; default: printf("输入错误,请重新输入!\n"); } } } //保存函数 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,排序失败\n"); return; } while(1){ cmp_menu(); printf("请选择:"); scanf("%d",&chose); switch(chose){ case 1: //数量 qsort(p,*count1,sizeof(fruit_t),cmp_count_desc); printf("排序成功\n"); break; case 2: //价格 qsort(p,*count1,sizeof(fruit_t),cmp_price_desc); printf("排序成功\n"); break; case 3: //返回 return; break; default: printf("输入错误,请重新输入\n"); } } } //按价格排序排序函数 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->price<p2->price) 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->count<p2->count) return 1; else return 0; } //排序菜单函数 void cmp_menu(){ printf("1.按数量排序2.按价格排序3.返回\n"); } //删除函数 0-成功 1-失败 int del(fruit_t *p,int *count1){ int i=0,j=0; //j保存要删除的水果下标 char str[30]="\0"; 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<*count1-1;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<*count1;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\n"); return; } printf("水果\t数量\t单价\t\n"); for(i=0;i<*count1;i++) printf("%s\t%d\t%.2lf\t\n",p[i].name,p[i].count,p[i].price); } //菜单函数 void log_menu(){ printf("1.查看2.添加3.排序4.删除5.退出\n"); }

-电子元器件采购网(www.ruidan.com)是本土元器件目录分销商,采用“小批量、现货、样品”销售模式,致力于满足客户多型号、高质量、快速交付的采购需求。 自建高效智能仓储,拥有自营库存超过50,000种,提供一站式正品现货采购、个性化解决方案、选型替代等多元化服务。
锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台