ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C语言图书管理系统(不是文件)

2022-03-21 21:04:51  阅读:187  来源: 互联网

标签:return 管理系统 int C语言 length Sqlist printf data 图书


#include<stdio.h>
#include<stdlib.h> 
#include<string.h>
#include<malloc.h>
#include<conio.h>
#define MAXSIZE 20
 typedef struct 
 {
     char No_book[100];
     char Name[100];
     float price;
 }Elemtype;
 typedef struct
 {
     Elemtype *data;
     int listsize;
     int length;
 }Sqlist;
 int initSqlist (Sqlist *L,int maxsize);
 int insertSqlist (Sqlist *L,int i,Elemtype x);
 int deleteSqlist (Sqlist *L,int i,Elemtype* x);
 int getSqlist (Sqlist L,int i,Elemtype* x);
 int locationSqlist (Sqlist L,char *NewName);
 int disSqlist (Sqlist L);
 int updateSqlist (Sqlist *L,int i,float x);
 int menu();
 main()
 {
     int n,maxsize;
     maxsize=MAXSIZE;
     int m,i,num;
     float jg;
     char name[10];
     Sqlist L;
     Elemtype x;
     
     while (1)
      {
        n=menu();
        
        switch (n)
        {
            case 1:
            printf("【创建】\n");
            initSqlist(&L,maxsize);
            printf("请输入最初总书籍数目:");
            scanf("%d",&num);        
             for(i=0;i<num;i++)
             {
             printf("请输入第%d本书的序号,书名,价格,用空格隔开:",i+1);
             scanf("%s%s%f",x.No_book,x.Name,&x.price);
             insertSqlist(&L,i+1,x);
            }
            getch();
            break;
            case 2:
            printf("【插入】\n");
            printf("请输入插入的位置(只能比已知位置小):");
            scanf("%d",&m); 
            {printf("请输入需要插入的书本序号,名字,价格,用空格隔开:\n");
            scanf("%s%s%f",x.No_book,x.Name,&x.price);
            insertSqlist (&L,m,x);}
            getch();
            break;
            case 3:
            printf("【删除】\n");
            printf("请输入需要删除的书籍名:");
            scanf("%s",name);
            getchar(); 
            i=locationSqlist(L,name);
            deleteSqlist (&L,i,&x);
            printf("删除书籍数据为:");
            printf("%10s%10s%7.2f\n",x.No_book,x.Name,x.price);
            getch();
            break;
            case 4:
            printf("【按书名查询】\n");
            printf("请输入需要查找的书籍名:");
            scanf("%s",name);
            getchar();
            i=locationSqlist(L,name);
            getSqlist (L,i,&x);
            printf("查找书籍数据为:");
            printf("%10s%10s%7.2f\n",L.data[i-1].No_book,L.data[i-1].Name,L.data[i-1].price);
            getch();
            break;
            case 5:
            printf("【按顺序查询】\n");
            printf("请输入需要查找的第几本书籍:");
            scanf("%d",&i);
            getSqlist (L,i,&x);
            printf("查找书籍数据为:");
            printf("%10s%10s%7.2f\n",x.No_book,x.Name,x.price);
            getch();
            break;
            case 6:
            printf("【修改价格】\n");
            printf("输入需要修改的书籍名:");
            scanf("%s",name);
            printf("输入需要修改的信息:");
            scanf("%f",&jg);
            updateSqlist (&L,i, jg);
            printf("修改书籍数据为:");
            printf("%10s%10s%7.2f\n",L.data[i-1].No_book,L.data[i-1].Name,L.data[i-1].price);
            getch();
            break;
            case 7:
            printf("【显示全部数据】\n");
            disSqlist ( L);
            getch();
            break;
            case 0:
            printf("【退出】\n");
            getch();exit (0); 
            break;
            default :
            printf("【error】\n");
            getch();
            break;
            
        }    
     }
 }
 int menu()
 {
     int n;
     while(1)
     {system("cls"); 
             printf("****************************************\n");
             printf("\t1.创建\t2.插入\n");
            printf("\t3.删除\t4.按书名查询\n");
            printf("\t5.按顺序查询\t6.修改价格\n");
            printf("\t7.显示全部数据\t0.退出\n");
             printf("****************************************\n");
             printf("请选择(0~7):\n");
             scanf("%d",&n);
             if(n<0||n>7)
             {
                 printf("输入有误");
                 getch();
             }
             else return n;
     } 
 }
 int initSqlist (Sqlist *L,int maxsize)
 {
     L->data=(Elemtype*)malloc(maxsize*sizeof(Elemtype));
     if(L->data==NULL)
     {
         printf("初始化空间申请失败!");
         exit (0);
     }
     L->listsize=maxsize;
     L->length=0;
     return 1;
 }
 int insertSqlist (Sqlist *L,int i,Elemtype x)//i是插入位置,对应下标i-1 
 {
     int k;
     if(i<1||i>L->length+1){printf("插入位置异常!\n");return 0;}
     if(L->length>=L->listsize){printf("容量不够!\n");return 0;}
     //将i-1,L->length-1内元素后移
     for(k=L->length-1;k>=i-1;k--)
     L->data[k+1]=L->data[k];
     L->data[i-1]=x;
     L->length=L->length+1; 
     return 1; 
 }
 int deleteSqlist (Sqlist *L,int i,Elemtype *x)
 {
     int k;
     if(L->length==0)
      {
         printf("没有数据,不能删除!\n");
         return 0;
     }
     if(i<=0||i>L->length)
      {
         printf("位置异常!\n");
         return 0;
     }
     *x=L->data[i-1];
     for (k=i;k<L->length;k++)
     L->data[k-1]=L->data[k];
      L->length=L->length-1;
     return 1;
 }
 int getSqlist (Sqlist L,int i,Elemtype *x)
 {
     if(L.length==0)
      {
         printf("没有数据!");return 0; 
     }
    if(i<1||i>L.length)
      {
         printf("位置异常,不能查找!\n");return 0;
     }
      *x=L.data[i-1];               

 }
 int locationSqlist (Sqlist L,char *NewName)
 {
     int i;
     if(L.length==0)
      {
         printf("没有数据!");return 0; 
     }
     for(i=0;i<L.length;i++)
     if(strcmp(L.data[i].Name,NewName)==0)
     {
     return i+1;
     }
      return 0;
 }
 int disSqlist (Sqlist L)
 {
     int i;
     if (L.length==0)
     {
         printf("没有数据!\n");return 0;
     }
     for (i=0;i<L.length;i++)
     printf("%10s%10s%7.2f\n",L.data[i].No_book,L.data[i].Name,L.data[i].price);
     return 1;
 }
 int updateSqlist (Sqlist *L,int i,float x)
 {
     if(L->length==0)
     {
         printf("没有数据,不能更新!\n");return 0;
     }
     if(i<1||i>L->length)
     {
         printf("位置不合理!\n");return 0;
     }
     L->data[i-1].price=x;
     return 1; 
 }

标签:return,管理系统,int,C语言,length,Sqlist,printf,data,图书
来源: https://blog.csdn.net/wmx941/article/details/123645814

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有