C语言图书管理系统:操作与链表实现

需积分: 16 4 下载量 131 浏览量 更新于2024-09-09 5 收藏 71KB DOC 举报
本篇文档主要介绍了一个使用C语言编写的图书管理系统,该系统实现了基本的图书信息管理功能,如输入、输出、修改、删除和恢复插入等操作。核心内容围绕着一个自定义的书籍信息结构体`structbook`,它包含了序号(number)、书代号(number1)、书名(name)、作者(writer)、出版时间(pubdate)、单价(price)、库存(storage)、借出(lend)以及总量(total)等字段。结构体中还定义了后向链表指针`next`,用于链式存储。 系统的核心功能通过一系列函数来实现: 1. `structbook* add(structbook* head, structbook* p)`:这是一个输入函数,负责将新输入的图书信息插入到链表的头部。它接收两个参数,一个是链表头指针`head`,另一个是新书信息的结构体指针`p`。这个函数首先动态分配内存,然后读取并存储用户输入的各项信息,并更新总量(total)。 2. `structbook* input(void)`:这是主输入函数,负责循环接收用户输入并调用`add`函数。它创建一个新的结构体实例,然后通过循环直至用户输入序号为0时退出,确保所有信息都被正确记录。 3. 删除操作涉及三个指针变量`del1`, `del2`, `del3`,但具体删除过程未在给出的部分详细描述,可能涉及到链表节点的查找和移除,这需要根据链表的特点进行设计,例如通过遍历查找特定序号或特定位置的节点。 4. 修改功能也基于链表,用户可能通过输入序号找到需要修改的节点,然后更新相应的字段值。 5. 插入和恢复插入操作与添加类似,但可能在特定情况下,比如需要在已排序的链表中按序插入或在删除后恢复数据。 为了实现这些功能,文档中引用了`stdlib.h`库用于内存管理,`stdio.h`库用于标准输入输出,以及`conio.h`库(在早期C语言环境中用于控制台输入输出)。此外,文档还使用了宏定义`NULL`和`LEN`分别表示空指针和结构体大小。 这个C语言图书管理系统提供了一个基础的数据库管理模型,通过链表实现数据结构,用户可以方便地对图书信息进行增删改查操作,适用于教学或小型项目场景。
2015-01-07 上传
#include<stdio.h> #include<malloc.h> #include<stdlib.h> #include<string.h> #define NULL 0 /*------------------------------图书信息的结构体------------------------------------*/ struct tushu //图书信息的结构体 { int num; //编号 char bookname[20]; //书名 char name[30]; //作者名 char fenlei[20]; //分类号 char put_unit[50]; //出版单位 int time; //出版时间 int shuliang; //库存数量 float price; //价格 struct tushu *next; //下一个的的指针 }; /*----------------------------读者信息的结构体---------------------------------------*/ struct duzhe { int num; //编号 int lend; //借阅号 char name[20]; //姓名 int amou; //最大借阅额度 int go_amou; //已借阅数量 struct duzhe *next; //stdudent型的指针 }; /*---------------------------------借书信息的结构体--------------------------------------*/ struct jieshu { int num; //编号 char bookname[20]; //书名 char name[30]; //作者名 char fenlei[20]; //分类号 float price; //价格 int du_id; //借书人编号 struct jieshu *next; //下一个的的指针 }; /*-------------------------------------------------------------------------------------------------------------*/ /*图书方面*/ /*-------------------------------------------------------------------------------------------------------------*/ /*-------------------------------------声明--------------------------------------------------------------*/ void zhuguanli(); void chaxun(); void charu(tushu **head,tushu **end); void guanli(tushu **head,tushu **end); void duxinxi(duzhe **phead,duzhe **end); duzhe *duzhe_flies(); tushu *tushu_flies(); jieshu *jie_flies(); void jie_file(jieshu **tou,jieshu **wei); void duzhe_file(duzhe **phead,duzhe **pend); void tushu_file(tushu **head,tushu **end); void put(tushu **head,tushu **end); void caxun(tushu **head,tushu **end); void xiugai(tushu **head,tushu **end); void get(tushu **head,tushu **end); void charu(tushu **head,tushu **end); void sanchu(tushu **head,tushu **end); void xiugai(tushu **head,tushu **end); void Free(tushu *head);