我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C语言实现图书管理系统的示例分析

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C语言实现图书管理系统的示例分析

这篇文章将为大家详细讲解有关C语言实现图书管理系统的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

具体内容如下

C语言实现图书管理系统的示例分析

实验要求:

图书信息:包括ISBN、书名、主编、出版社、定价
2、功能:

(1)插入:若表中不存在新图书信息(ISBN不同),则插入(表尾)新图书信息。
(2)删除:按ISBN删除
(3)查找:按ISBN查找
(4)修改:按ISBN查找,然后修改各个属性
(5)排序:按ISBN排序
(6)计数:输出图书信息的个数
(7)导入:从TXT文件中读取已有图书信息(不同的属性之间用tab键隔开)
(8)保存:将表中现有信息保存到txt文件中
(9)打印:在屏幕上显示所有图书信息

扩展功能(选做):

(1)增加按书名、主编、出版社进行查找
(2)增加按书名、主编、出版社、定价排序

界面要求:简单的人机交互界面
 

#include <stdio.h>#include <stdlib.h>#include <string.h>    //头文件    #define OK 1#define ERROR 0#define OVERFLOW -1#define LIST_INIT_SIZE 50#define LISTINCREMENT 10   //宏定义,即定义常量    typedef int status;typedef struct {    char ISBN[15];    char bookname[30];    char writername[10];    char publisher[20];    float price;} ElemType;typedef struct {    ElemType *elem;    int length;    int listsize;    } SqList;     //定义结构体类型,即  typedef 类型  类型名     status  InitList_Sq(SqList &L)     {   //构造一个空的线性表L。    L.elem=(ElemType *)    malloc(LIST_INIT_SIZE*sizeof(ElemType));    //申请初始化长度的内存     if(!L.elem){    //如果L的序列非空         exit(OVERFLOW);            //说明L被重定义了,抛出溢出     }    L.length=0;    //默认L内有0个元素        L.listsize=LIST_INIT_SIZE;     //默认L的容量为初始化长度     return OK;} int LocateElem_Sq(SqList L,char ISBN[]){    //在顺序表L中遍历查找第1个值与e.ISBN相等的元素的位序,若找到,返回其位序,否则返回0;     for(int i=0;i<L.length;i++){        if(strcmp(ISBN,L.elem[i].ISBN)==0){            return i+1;        }    }    return 0;}status ListInsert_Sq(SqList &L,ElemType e){//元素e插入表尾    ElemType *newbase;    if(LocateElem_Sq(L,e.ISBN)){        return ERROR;    }    if(L.length>=L.listsize) {        newbase =(ElemType*)realloc(L.elem,(L.listsize+LISTINCREMENT)*sizeof(ElemType));        if(!newbase){            exit(OVERFLOW);        }        L.elem=newbase;        L.listsize+=LISTINCREMENT;    }    L.elem[L.length]=e;    L.length++;    return OK;}status ListDelete_Sq(SqList &L,char ISBN[] ,ElemType &e){   //删除L中ISBN的元素,并返回删除元素;     int i,j;    if((i=LocateElem_Sq(L,ISBN))==0){        return ERROR;    }        e=L.elem[i-1];    for(j=i;j<L.length;j++){        L.elem[j-1]=L.elem[j];    }    L.length--;    return OK;}status SetElem_Sq(SqList &L,int i,ElemType e){   //修改在i的位置的元素     if(i<1||i>L.length){        return ERROR;    }    L.elem[i-1]=e;    return OK;}void sort_ISBN(SqList &L){    //对表中所有元素进行排序;     int i,j,k;    ElemType e;    for(i=0;i<L.length-1;i++){        k=i;        for(j=i+1;j<L.length;j++){            if(strcmp(L.elem[k].ISBN,L.elem[j].ISBN)>0){                k=j;            }        }        if(k!=i){            e=L.elem[i];            L.elem[i]=L.elem[k];            L.elem[k]=e;        }        }} void print(SqList L){    //打印出所有元素    int i;    printf("\n图书信息为:\n");    for(i=0;i<L.length;i++){        printf("%-15s%-30s%-10s%-20s%-6.2f\n",L.elem[i].ISBN,L.elem[i].bookname,L.elem[i].writername,L.elem[i].publisher,L.elem[i].price);     }    }void import(SqList &L,char *filename){    //从文件中导入信息     FILE *fp;    int i;    char ISBN[15],bookname[30],writername[10],publisher[20];    float price;    if((fp=fopen(filename,"r"))==NULL){        printf("文件不存在!\n");        return ;    }    i=0;    while(!feof(fp)){        fscanf(fp,"%s%s%s%s%f",ISBN,bookname,writername,publisher,&price);        strcpy(L.elem[i].ISBN,ISBN);        strcpy(L.elem[i].bookname,bookname);        strcpy(L.elem[i].writername,writername);        strcpy(L.elem[i].publisher,publisher);        L.elem[i].price=price;        i++;    }    L.length=i;    fclose(fp);}void save(SqList L,char *filename){      //把信息保存到文件     FILE *fp;    int i;    if((fp=fopen(filename,"w"))==NULL){        printf("文件不存在!\n");        return ;    }     for(i=0;i<L.length;i++){        fprintf(fp,"%-15s\t%-30s\t%-10s\t%-20s\t%-6.2f\n",L.elem[i].ISBN,L.elem[i].bookname,L.elem[i].writername,L.elem[i].publisher,L.elem[i].price);    }    fclose(fp); } int main(){    int ch;    SqList L;    char ISBN[15],filename[30];    int i;    ElemType e;    InitList_Sq(L);    printf("1. 插入   2. 删除   3. 查找   4. 修改元素   5. 按ISBN排序元素   6. 输出   7. 导入   8. 保存   9. 退出\n");    printf("请选择:");    scanf("%d",&ch);    while(ch!=9){        switch(ch){        case 1:    printf("请输入要增加的元素");                scanf("%s%s%s%s%f",e.ISBN,e.bookname,e.writername,e.publisher,&e.price);                 if(ListInsert_Sq(L,e)==OK){                    printf("插入成功!当前信息为:\n");                    print(L);                }                else {                    printf("表中已存在该图书!\n");                }                 break;        case 2:    printf("请输入删除的图书ISBN:");                scanf("%s",ISBN);                if(ListDelete_Sq(L,ISBN,e)==OK)                {                    printf("删除成功!被删图书为%s\t%s\t%s\t%s\t%.2f\n",e.ISBN,e.bookname,e.writername,e.publisher,e.price);                    print(L);                }                else                    printf("该图书不存在!\n");                break;        case 3:    printf("请输入要查找的图书ISBN:");                scanf("%s",&ISBN);                i=LocateElem_Sq(L,ISBN);                if(i!=0)                {                    printf("该图书为%s\t%s\t%s\t%s\t%.2f\n",L.elem[i-1].ISBN,L.elem[i-1].bookname,L.elem[i-1].writername,L.elem[i-1].publisher,L.elem[i-1].price);                }                else                    printf("该图书不存在!\n");                break;        case 4: printf("请输入要修改的图书ISBN:");                scanf("%s",&ISBN);                i=LocateElem_Sq(L,ISBN);                if(i==0){                    printf("该图书不存在!\n");                }                    else{                    printf("请输入图书的ISBN,书名,主编,出版商和定价");                    scanf("%s%s%s%s%f",e.ISBN,e.bookname,e.writername,e.publisher,e.price);                    SetElem_Sq(L,i,e);                    printf("修改成功,图书信息为:");                    print(L);                     }                break;        case 5:    sort_ISBN(L);                printf("按照ISBN排序后\n");                print(L);                break;        case 6: print(L);                break;        case 7: printf("请输入导入文件名:");                scanf("%s",filename);                import(L,filename);                break;        case 8: printf("请输入导出文件名:");                scanf("%s",filename);                save(L,filename);                break;            default: printf("输入错误,请重新选择\n");        }        printf("1. 插入   2. 删除   3. 查找   4. 修改元素   5. 按ISBN排序元素   6. 输出   7. 导入   8. 保存   9. 退出\n");        printf("请选择:");        scanf("%d",&ch);    }}

关于“C语言实现图书管理系统的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C语言实现图书管理系统的示例分析

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C语言实现图书管理系统的示例分析

这篇文章将为大家详细讲解有关C语言实现图书管理系统的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。具体内容如下实验要求:1、图书信息:包括ISBN、书名、主编、出版社、定价2、功能:(1)插入:若
2023-06-29

C语言怎么实现图书管理系统

要实现一个图书管理系统,可以按照以下步骤进行:1. 定义图书结构体:首先要定义一个图书的结构体,包括图书的编号、名称、作者等信息。```ctypedef struct {int id;char title[100];char author[
2023-08-09

C语言如何实现图书管理系统

这篇文章将为大家详细讲解有关C语言如何实现图书管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。主要内容 开发一个图书信息管理系统,图书信息包括:图书编号、书名、作者、出版社、类别、出版
2023-06-28

C语言实现图书管理系统开发

这篇文章主要为大家详细介绍了C语言实现图书管理系统开发,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2022-11-13

C语言如何实现图书馆管理系统

这篇文章主要介绍了C语言如何实现图书馆管理系统,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。全部代码如下:#include #include
2023-06-20

C语言怎么实现简单的图书管理系统

实现一个简单的图书管理系统可以使用C语言来实现,以下是一个简单的示例代码:#include #include // 定义图书结构体struct Book {int id;char title[50
C语言怎么实现简单的图书管理系统
2024-03-08

C语言中单链表如何实现图书管理系统

小编给大家分享一下C语言中单链表如何实现图书管理系统,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!具体内容如下单链表实现的图书管理系统相比于结构体实现的管理系统,
2023-06-29

C++图书管理系统程序的示例代码

这篇文章主要为大家展示了“C++图书管理系统程序的示例代码”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“C++图书管理系统程序的示例代码”这篇文章吧。具体内容如下c++综合实验,功能基本都实现了
2023-06-29

C语言如何实现图书管理系统的文件数据库

本文小编为大家详细介绍“C语言如何实现图书管理系统的文件数据库”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现图书管理系统的文件数据库”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。题目要求简单文件数
2023-06-29

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录