图书管理系统(链表+文件)

简单小型的图书信息管理系统
身为菜狗能写出来也是蛮不容易的

【数据结构】

1、书籍数据文件:每个书籍的信息包含:书名,作者名,类型,出版社,出版时间,销售价格,库存数量;
2、用户数据文件:包含用户名称和密码。

【系统实现功能】

1、用户管理(操作用户数据文件)。
新建用户、修改密码。创建新用户后,将用户信息存储到文件“user.dat”中。
2、新书入库(操作书籍数据文件)。输入你需要添加的书籍信息,根据书名查找相应书籍,如果不存在,执行添加操作,存储到“book.txt”文档。如果存在,系统提示在“此书已存在”。
3、删除书籍(操作书籍数据文件)。根据输入的书名查找相应书籍,如果存在,执行删除操作;如果书籍不存在,系统提示“查无此书”。
4、修改信息(操作书籍数据文件)。根据输入的书名查找相应书籍,如果存在,执行修改操作;如果书籍不存在,系统提示“查无此书”。
5、浏览信息(操作书籍数据文件)。将所含书籍信息的文档“book.txt”经行输出显示。
6、查询书籍
支持以下几种查询方式:
(1)按书名名称查询书籍基本信息(作者名,类型,出版社,出版时间,销售价格,库存数量)
(2)按作者名查询书籍基本信息(书名,类型,出版社,出版时间,销售价格,库存数量)
(3)按类型查询查询书籍基本信息(书名,作者名,出版社,出版时间,销售价格,库存数量)
(4)按出版社查询查询书籍基本信息(书名,作者名,类型,出版时间,销售价格,库存数量)
(5)按出版时间查询查询书籍基本信息(书名,作者名,类型,出版社,销售价格,库存数量)
(6)按销售价格查询查询书籍基本信息(书名,作者名,类型,出版社,出版时间,库存数量)
(7)按库存数量查询查询书籍基本信息(书名,作者名,类型,出版社,出版时间,销售价格)

进入页面进入页面

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define N sizeof(struct BOOK)
#define M sizeof(struct USER)
struct BOOK
{
   
	char name[50];     //书名
	char author[50];    //作者名
	char type[20];      //类型
	char publish[50];  //出版单位
	int time ;        //出版时间
	double price;       //价格
	int num;         //数量
	struct BOOK *next;   //指针域
};
typedef struct BOOK book ,*linklist;
struct USER
{
   
    char id[50];
    char password[20];
    struct USER *next1;
};
typedef struct USER user ,*linklist1;

void add(linklist head);   //添加
void del(linklist head);   //删除
void edit(linklist head);  //修改
void print(linklist head);  //显示
void find(linklist head);   //查找
void NAME1(linklist head);  //按书名查找
void AUTHOR1(linklist head);  //按作者查找
void TYPE1(linklist head);  //按类型查找
void PUBLISH1(linklist head);  //按出版社查找
void TIME1(linklist head);  //按时间查找
void PRICE1(linklist head);  //按价格查找
void NUM1(linklist head);  //按数量查找
void output(linklist head); //将链表储存到文件中
void books();
void login(linklist1 head); //用户登录
void creat(linklist1 head); //创建用户
void change(linklist1 head); //修改密码
void output1(linklist1 head);
int main()
{
   
    int select ;
    FILE *fp ;
    linklist1 head ,p2 ,pre ;
    head = (linklist1)malloc(M);
    head->next1 = NULL;
    pre = (linklist1)malloc(M);
    pre = head ;
    if((fp = fopen("user.txt","r"))==NULL)
    {
   
        printf("打开失败,系统自动退出\n");
        exit(0);
    }
    while(1)
    {
   
        p2 = (linklist1)malloc(M);
        fscanf(fp,"%s %s",p2->id ,p2->password );
        if(feof(fp))
            break;
        pre->next1 = p2;     //尾插法
        pre = p2;
    }
    pre->next1=NULL;
    fclose(fp);
    while(1)
    {
   
        printf("===================================\n");
        printf("        图书管理系统\n");
        printf("       1: 用户登录\n");
        printf("       2: 注册新用户\n");
        printf("       3: 修改密码\n");
        printf("       0: 退出系统\n");
        printf("===================================\n");
        printf("请输入菜单项:\n\n");
        scanf("%d",&select);
        printf("\n");
        switch(select)
        {
   
            case 1:
                login(head);
                break;
           case 2:
                creat(head);
                output1(head);
                break;
           case 3:
               change(head);
               output1(head);
                break;
            case 0:
                exit (0);

        }
    }
    return 0;
}
void change(linklist1 head)
{
   
    linklist1 pre=head,p;
    int flag=0;
    char m[20];
    p=(linklist1)malloc(M);
    printf("请输入修改用户名\n");
    printf("\n");
    scanf("%s",p->id);
    printf("\n");
    while(pre->next1)
    {
   
        if(strcmp(pre->next1->id,p->id)==0)
        {
   
            flag=1;
            break;
        }
        pre=pre->next1;
    }
    if(flag==0)
    {
   
        printf("用户不存在\n");
    }
    else
    {
   
        printf("请输入密码:\n");
        printf("\n");
        scanf("%s",m);
        printf("\n");
        if(strcmp(pre->next1->password,m)==0)
        {
   
             printf("请输入修改密码:\n");
        printf("\n");
        scanf("%s",p->password);
        printf("\n");
        p->next1=pre->next1->next1;
        pre->next1=p;
        printf("修改成功\n");
        }
       else
        printf("密码错误\n");
    }
    printf("\n");
}
void creat(linklist1 head)
{
   
    linklist1 pre = head,p;
    int flag=0;
    p=(linklist1)malloc(M);
    printf("请输入用户名称:\n");
    printf("\n");
    scanf("%s",p->id);<
  • 14
    点赞
  • 87
    收藏
    觉得还不错? 一键收藏
  • 12
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值