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

发布者:EnchantedMelody最新更新时间:2015-05-11 来源: 51hei关键字:C语言  水果管理系统 手机看文章 扫描二维码
随时随地手机看文章
//编写一个简单的水果管理系统
//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<*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 ");
 return;
 }
 printf("水果 数量 单价 ");
 for(i=0;i<*count1;i++)
  printf("%s %d %.2lf ",p[i].name,p[i].count,p[i].price);
}
//菜单函数
void log_menu(){
 printf("1.查看2.添加3.排序4.删除5.退出 ");
}
关键字:C语言  水果管理系统 引用地址:C语言写的简易水果管理系统

上一篇:Keil c 优化选项
下一篇:C语言随机函数

推荐阅读最新更新时间:2024-03-16 14:01

C语言实现FFT算法
/*****************fft programe*********************/ #include "typedef.h" #include "math.h" struct compx EE(struct compx b1,struct compx b2) { struct compx b3 ; b3.real=b1.real*b2.real-b1.imag*b2.imag ; b3.imag=b1.real*b2.imag+b1.imag*b2.real ; return(b3); } void FFT(struct compx*xin,int N) { int f,m,nv2,
[工业控制]
单片机C语言程序与数据存储
一、五大内存分区 内存分成5个区,它们分别是堆、栈、自由存储区、全局/静态存储区和常量存储区。 1、栈区(stack):FIFO就是那些由编译器在需要的时候分配,在不需要的时候自动清除的变量的存储区。里面的变量通常是局部变量、函数参数等。 2、堆区(heap):就是那些由new分配的内存块,它们的释放编译器不去管,由我们的应用程序去控制,一般一个new就要对应一个delete。如果程序员没有释放掉,那么在程序结束后,操作系统会自动回收。 3、自由存储区:就是那些由malloc等分配的内存块,它和堆是十分相似的,不过它是用free来结束自己的生命。 4、全局/静态存储区:全局变量和静态变量被分配到同一块内存中,在
[单片机]
单片机<font color='red'>C语言</font>程序与数据存储
51单片机C语言运算符表
51单片机C语言运算符表: 注意:在逻辑运算中,凡结果为“0”的数值即为真,等于“0”为假。
[单片机]
51单片机<font color='red'>C语言</font>运算符表
想从事单片机工作,C语言要达到什么水平?
今天我来聊聊从事单片机开发工作,C语言要达到什么样的水平。 我用自己从入门到找到工作的经历来说或许更贴切点。 我是2011年毕业,非本专业,读的是电气工程,看到师兄那苦逼样决定转行。 实习期比较自由,我就开始自学,从入门到转行成功,前后花了4个月左右。 刚开始,我也很焦虑…. 自己能不能学得会?学到什么程度能去找工作? 万一花了几个月时间学习,找不到工作怎么办? 过程虽然很曲折,不过最终还是转行成功了,还记录当时学习的一些笔记。 只要你肯坚持下去,有兵来将挡,水来土掩的魄力,结果都不会太差 。 最怕就是你碰到问题就退缩,就质疑,这样还不如别开始。 我是从51单片机开始学习的,在某宝上买了一块51单片机开发板。 开发板一般都有配
[单片机]
如何利用单片机和C语言来设计数字滤波系统
数据采集,又称数据获取,是利用一种装置,从系统外部采集数据并输入到系统内部的一个接口。数据采集技术广泛引用在各个领域。比如摄像头,麦克风,都是数据采集工具。被采集数据是已被转换为电讯号的各种物理量,如温度、水位、风速、压力等,可以是模拟量,也可以是数字量。在互联网行业快速发展的今天,数据采集已经被广泛应用于互联网及分布式领域,数据采集领域已经发生了重要的变化。 而在数据采集中存在着各种噪声。滤除噪声的方法有很多种,既有数字滤波器,也有模拟滤波器。这里我们采用了基于单片机和C语言来设计并开发数字滤波系统。 我们针对于单片机数据采集系统中经常出现的随机干扰,通过手动输入来模拟数据采集过程,验证了几种使用较为普遍的克服随机干扰的
[单片机]
如何利用单片机和<font color='red'>C语言</font>来设计数字滤波系统
单片机c语言教程第十三章--C51循环语句
循环语句是几乎每个程序都会用到的,它的作用就是用来实现需要反复进行多次的操 作。如一个 12M 的 51 芯片应用电路中要求实现 1 毫秒的延时,那么就要执行 1000 次空语句 才能达到延时的目的(当然能使用定时器来做,这里就不讨论),如果是写 1000 条空语 句那是多么麻烦的事情,再者就是要占用很多的存储空间。我们能知道这 1000 条空语句, 无非就是一条空语句重复执行 1000 次,因此我们就能用循环语句去写,这样不但使程序 结构清晰明了,而且使其编译的效率大大的提高。在 C 语言中构成循环控制的语句有 while,do-while,for 和 goto 语句。同样都是起到循环作用,但具体的作用和使用方法又大不一 样
[单片机]
51单片机外中断计数器C语言程序设计
#include REG51.H #define uchar unsigned char #define uint unsigned int unsigned char code tab ={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0xFF,0xBF}; sbit P32=P3^2; sbit P25=P2^5; sbit P26=P2^6; sbit P27=P2^7; uint cnt; void init(void) { EX0=1; IT0=1; EA=1; ET0 = 1; //定时器0中断打开 TMOD = 0x1;
[单片机]
基于C语言STC89C52单片机电子密码锁的设计与仿真
搜索: IC库存 认证库存 PDF 文章 用户名: 密码: 社区 企业 免费注册 iframe marginWidth=0 marginHeight=0 src="http://afp21ic.allyes.com/main/adfshow?user=Afp21ic|MCU|logo_left&db=afp21ic&border=0&local=yes" frameBorder=0 width=758 scrolling=no height=64 /iframe 首页 资讯: 新闻 应用 新品 eBooks 电路图
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved