C语言图书管理系统实验

本文实验为大家分享了C语言图书管理系统的具体代码,供大家参考,具体内容如下

C语言图书管理系统实验_第1张图片

实验要求:

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

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

3、扩展功能(选做):

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

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

#include 
#include 
#include  
   //头文件 
   
#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.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;jL.length){
        return ERROR;
    }
    L.elem[i-1]=e;
    return OK;
}

void sort_ISBN(SqList &L)
{    //对表中所有元素进行排序; 
    int i,j,k;
    ElemType e;
    for(i=0;i0){
                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 
 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

你可能感兴趣的:(C语言图书管理系统实验)