图书馆信息管理程序
/*bklist.h*/
#ifndef BKLIST_H
#define BKLIST_H
#define DATA_FILE "data"
struct bk_node;
typedef struct bk_node* n_ptr;
struct bk_node{
char id[16];
char name[32];
char author[16];
char date[16];
float price;
n_ptr next;
};
n_ptr clean_list(n_ptr list); /*清空列表中所有内容*/
n_ptr create_list(void); /*从文件中读取列表*/
n_ptr create_node(void); /*创建一个节点*/
void save_list(n_ptr list); /*保存列表内容到文件*/
n_ptr insert_node(n_ptr list, n_ptr node); /*插入一条新纪录*/
n_ptr delete_node(n_ptr list, n_ptr node); /*删除一条记录,按节点查询*/
n_ptr query_node(n_ptr list,char* id); /*按ID查询,返回一个节点*/
void print_list(n_ptr list); /*打印所有条目*/
void print_node(n_ptr node); /*打印单个条目信息*/
#endif
/*bklist.c*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"bklist.h"
n_ptr clean_list(n_ptr list){
n_ptr pos, tmp;
if(list==NULL){
printf("列表已经为空!\n");
return NULL;
}
pos=list;
while (pos!=NULL){
tmp=pos->next;
free(pos);
pos=tmp;
}
printf("列表已清空!\n");
return NULL;
}
n_ptr create_list(void){
FILE* fp;
n_ptr list = NULL;
n_ptr node;
fp=fopen(DATA_FILE,"rb");
if(fp==NULL)
return list;
while (1){
node=malloc(sizeof(struct bk_node));
if(fread(node,sizeof(struct bk_node),1,fp)==0)
/*bklist.h*/
#ifndef BKLIST_H
#define BKLIST_H
#define DATA_FILE "data"
struct bk_node;
typedef struct bk_node* n_ptr;
struct bk_node{
char id[16];
char name[32];
char author[16];
char date[16];
float price;
n_ptr next;
};
n_ptr clean_list(n_ptr list); /*清空列表中所有内容*/
n_ptr create_list(void); /*从文件中读取列表*/
n_ptr create_node(void); /*创建一个节点*/
void save_list(n_ptr list); /*保存列表内容到文件*/
n_ptr insert_node(n_ptr list, n_ptr node); /*插入一条新纪录*/
n_ptr delete_node(n_ptr list, n_ptr node); /*删除一条记录,按节点查询*/
n_ptr query_node(n_ptr list,char* id); /*按ID查询,返回一个节点*/
void print_list(n_ptr list); /*打印所有条目*/
void print_node(n_ptr node); /*打印单个条目信息*/
#endif
/*bklist.c*/
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include"bklist.h"
n_ptr clean_list(n_ptr list){
n_ptr pos, tmp;
if(list==NULL){
printf("列表已经为空!\n");
return NULL;
}
pos=list;
while (pos!=NULL){
tmp=pos->next;
free(pos);
pos=tmp;
}
printf("列表已清空!\n");
return NULL;
}
n_ptr create_list(void){
FILE* fp;
n_ptr list = NULL;
n_ptr node;
fp=fopen(DATA_FILE,"rb");
if(fp==NULL)
return list;
while (1){
node=malloc(sizeof(struct bk_node));
if(fread(node,sizeof(struct bk_node),1,fp)==0)