使用结构体实现简易版图书管理系统


#include<stdio.h>
#include<stdlib.h>
#include<string.h>
struct node {//定义结构体存储图书信息
 //成员列表
 int isexsit;//数量
 char name[20];//书名
 int no;//编号
 char author[20];//作者
 float price;//价格
}book[5];//结构体数组
//创建函数
void creat()//信息录入五本书
{
 printf("please input five books' isexsie,name,no,author and price\n");
 for (int i = 0; i < 5; i++)
  scanf("%d %s %d %s %f", &book[i].isexsit, book[i].name, &book[i].no, book[i].author, &book[i].price);
}
//查询函数
void search1(struct node book[])//按编号查询
{
 int i;
 int no1;//定义查询编号
 printf("please input a number you want to search:");
 scanf("%d", &no1);//输入查询编号
       //查找
 for ( i = 0; i < 5; i++)//遍历结构体数组
  if (no1 == book[i].no)//编号相同
  {//输出
   printf("the book's message\n");
   printf("数量\t书名\t编号\t作者\t价格\n");
   printf("%d\t%s\t%d\t%s\t%.2f\n", book[i].isexsit, book[i].name, book[i].no, book[i].author, book[i].price);
   break;
  }
 if (i == 5)
  printf("no found\n");
}
void search2(struct node book[])//按书名查询
{
 int i;
 char name1[20];//定义查询书名
 printf("please input a name you want to search:");
 scanf("%s", name1);//输入查询书名
 for (i = 0; i<5; i++)//遍历结构体数组
  if (strcmp(name1, book[i].name) == 0)//书名相同
  {//输出
   printf("the books's message\n");
   printf("数量\t书名\t编号\t作者\t价格\n");
   printf("%d\t%s\t%d\t%s\t%.2f\n", book[i].isexsit, book[i].name, book[i].no, book[i].author, book[i].price);
   break;
  }
 if (i == 5)
  printf("no found\n");
}
void maxprice(struct node book[])
{
 int max = 0;//记录下表,初始为0
 for (int i = 0; i < 5; i++)//遍历结构体
 {
  if (book[i].price > book[max].price)//
   max = i;//更换下标
 }
 //打印最贵的数
 printf("最贵的书的信息\n");
 printf("数量\t书名\t编号\t作者\t价格\n");
 printf("%d\t%s\t%d\t%s\t%.2f\n", book[max].isexsit, book[max].name, book[max].no, book[max].author, book[max].price);
}
void mod(struct node book[])
{
 int i;
 int id;
 int no1;//定义查询编号
 int isexsit1;//数量
 char name1[20];//书名
 int no2;//编号
 char author1[20];//作者
 float price1;//价格
 printf("please input a number you want to mod:");
 scanf("%d", &no1);//输入修改编号
       //查找
 for (i = 0; i < 5; i++)//遍历结构体数组
  if (no1 == book[i].no)//编号相同
  {
   printf("please input the book's isexsie,name,no,author and price again\n");
    scanf("%d %s %d %s %f", &isexsit1, name1, &no2, author1, &price1);
    //信息修改
   book[i].isexsit = isexsit1;
   strcpy(book[i].name, name1);
   book[i].no = no2;
   strcpy(book[i].author, author1);
   book[i].price = price1;
  }
}
//输出函数
void print()
{
 printf("all books' message\n");
 printf("数量\t书名\t编号\t作者\t价格\n");
 for (int i = 0; i < 5; i++)
  printf("%d\t%s\t%d\t%s\t%.2f\n", book[i].isexsit, book[i].name, book[i].no, book[i].author, book[i].price);
}
int main()
{
 int n;//操作数
 creat();//信息录入
 print();//信息输出
 printf("please choose\n1.number search\n2.name search\n3.output maxprice\n4.mod\n");
 while (1)
 {
  scanf("%d", &n);//输入操作数
  if (n == 1)//编号查找
   search1(book);
  else if (n == 2)//书名查找
   search2(book);
  else if (n == 3)//输出最贵的
   maxprice(book);
  else if (n == 4)//修改
  {
   mod(book);
   printf("修改后图书信息为\n");
   print();
  }
  else
   printf("error input,please input again!\n");
 }
}


  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值