图书管理系统
来源:互联网 发布:迅雷看看for mac下载 编辑:程序博客网 时间:2024/04/27 21:24
#include <stdio.h>
#include <stdlib.h>
#include <string.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];
char price[16];
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);
void print_list(n_ptr list);
void print_node(n_ptr node);
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)
break;
node->next=NULL;
list=insert_node(list,node);
}
return list;
}
void save_list(n_ptr list)
{
FILE *fp;
n_ptr pos=list;
fp=fopen(DATA_FILE,"wb");
while(pos!=NULL)
{
fwrite(pos,sizeof(struct bk_node),1,fp);
pos=pos->next;
}
printf("保存成功!/n");
fclose(fp);
}
n_ptr create_node(void)
{
n_ptr node;
node=malloc(sizeof(struct bk_node));
printf("编号:");
gets(node->id);
printf("书名:");
gets(node->name);
printf("作者:");
gets(node->author);
printf("出版日期(YY/MM/DD):");
gets(node->date);
printf("价格:");
gets(node->price);
node->next=NULL;
getchar();
return node;
}
n_ptr insert_node(n_ptr list,n_ptr node)
{
n_ptr pos=list;
if(list==NULL)
{
list=node;
return list;
}
while(pos->next!=NULL)
pos=pos->next;
node->next=pos->next;
pos->next=node;
return list;
}
n_ptr delete_node(n_ptr list,n_ptr node)
{
n_ptr pos=list;
n_ptr tmp;
if(list==NULL)
{
printf("列表为空!/n");
return list;
}
if(pos==node)
{
tmp=pos->next;
free(pos);
printf("删除成功!/n");
return tmp;
}
while(pos->next!=node && pos->next!=NULL)
pos=pos->next;
if(pos->next!=NULL)
{
pos->next=node->next;
free(node);
printf("删除成功 n");
}
else
printf("没有找到记录!/n");
return list;
}
n_ptr query_node(n_ptr list,char *id)
{
n_ptr pos=list;
while(pos!=NULL && strcmp(pos->id,id)!=0)
pos=pos->next;
if(pos==NULL)
printf("列表为空!/n");
return pos;
}
void print_list(n_ptr list)
{
n_ptr pos=list;
if(list==NULL)
{
printf("列表为空!/n");
return;
}
printf("%-10s","编号");
printf("%-30s","书名");
printf("%-15s","作者");
printf("%-10s","出版日期");
printf("%-10s","价格");
printf("/n");
while(pos!=NULL)
{
printf("%-10s",pos->id);
printf("%-30s",pos->name);
printf("%-15s",pos->author);
printf("%-10s",pos->date);
printf("%-10s",pos->price);
printf("/n");
pos=pos->next;
}
}
void print_node(n_ptr node)
{
printf("编号:%s/n",node->id);
printf("书名:%s/n",node->name);
printf("作者:%s/n",node->author);
printf("出版日期:%s/n",node->date);
printf("价格:%s/n",node->price);
}
void print_mune(void)
{
printf("/n");
printf("*************************/n");
printf(" 图书信息管理系统/n");
printf("*************************/n");
printf("1。列出所有图书/n");
printf("2。查询指定图书/n");
printf("3。添加记录/n");
printf("4。删除记录/n");
printf("5。清空图书列表/n");
printf("6。保存修改/n");
printf("0。退出系统/n");
printf("/n");
printf("请选择:");
}
int main()
{
char c;
char id[16];
n_ptr list;
n_ptr node;
list=create_list();
while(1)
{
print_mune();
c=getchar();
switch(c)
{
case '1':
print_list(list);
break;
case '2':
printf("请输入要查询的图书编号:");
scanf("%s",id);
getchar();
node=query_node(list,id);
if(node!=NULL)
print_node(node);
break;
case '3':
node=create_node();
list=insert_node(list,node);
break;
case '4':
printf("请输入要删除的图书编号:");
scanf("%S",id);
getchar();
node=query_node(list,id);
if(node!=NULL)
list=delete_node(list,node);
break;
case '5':
list=clean_list(list);
case '6':
save_list(list);
break;
case '0':
return 0;
default:
printf("输入错误,请重新输入!/n");
}
}
}
- 图书管理系统论文
- 图书管理系统(1)
- 图书管理系统(2)
- 图书管理系统(3)
- java-图书管理系统
- 图书管理系统
- 图书管理系统
- 简单图书管理系统
- 图书管理系统
- 图书管理系统
- 图书仓库管理系统
- 《图书管理系统》毕业论文
- 图书管理系统
- 图书管理系统
- 图书管理系统
- 图书管理系统
- 图书管理系统
- 图书管理系统
- 窗口关闭过程
- 俄要让“包二奶”合法
- TO_CHAR(DATE,FORMAT)
- S3C2450自动升级[原创作品,转载请注明出处]
- VC9 VS2008 IDE 增加自定义Custom Wizard ——自行操作流程(定制用户向导)
- 图书管理系统
- 图书管理系统
- white-space属性
- 对表单和表格的操作
- OPhone开发环境搭建
- 赢在中国评委给80后的30个忠告
- JAVA NIO学习笔记--缓冲区的内部细节
- 细说UI线程和Windows消息队列
- 网络游戏中的数据包设计与定义