Linux下,用单链表编写图书管理系统

本文介绍了如何在Linux操作系统中,利用C语言的基本概念和数据结构——单链表,设计并实现一个简单的图书管理系统。通过这个系统,用户可以进行图书的增删查改操作,实现了对图书信息的有效管理。
摘要由CSDN通过智能技术生成
/*****************************************************
copyright (C), Nanjing University of Tecnology
File name:Book_managmentSystem.c
Author: Xiecan  Version:0.2    Date: 2016-04-16 11:44
Description:
Funcion List: 
*****************************************************/

#include <stdio.h>
#include <malloc.h>
#include <stdlib.h>
#include <string.h>

#define M 10
#define N 15

typedef struct book_info
{
    char ISBN[N];//书号
    char name[M];//书名
    char writer[M];//作者
    char time[M];//出版日期
    char publisher[N];//出版社
    char price[M];//价格
}Book;

typedef struct link
{
    Book info;
    struct link * next;

}Node,*Link;

void Add_book(Link *Head,Link *New);//添加图书信息函数原型声明
void Delete_book(Link *Head);       //删除图书信息函数原型声明
void Find_book(Link *Head);         //查找图书信息函数原型声明
void Update_book(Link *Head);       //修改图书信息函数原型声明
void Print_book(Link *Head);        //输出图书信息函数原型声明

/*添加数据子操作*/
void print_info(Link *New,int i);

/*删除子操作*/
void delete_ISBN(Link *Head);
void delete_name(Link *Head);
void delete_writer(Link *Head);
void delete_publisher(Link *Head);

/*查找子操作*/
void search_ISBN(Link *Head);
void search_name(Link *Head);
void search_writer(Link *Head);
void search_publisher(Link *Head);
void search_price(Link *Head);
void search_time(Link *Head);

/*修改子操作*/
void update_ISBN(Link *p);
Link update_name(Link p);
Link update_writer(Link p);
Link update_publisher(Link p);
Link update_price(Link p);
Link update_time(Link p);

void choose_op(Link *Head);

/*输出一本图书的信息*/
void print(Link *Head);

/*图书管理系统菜单*/
void Menus(Link *Head,Link *New);

int main(int argc, char **argv)
{
    FILE * fp;
    int bytes_read,bytes_write;

    Link Head = NULL,p;      //节点声明
    Link New = NULL;
    int c = 1;
    p = Head;

    Head = (Link)malloc(sizeof(Node));//建立头节点
    Head->next = NULL;                //空链表


    while(c)
    {
        Menus(&Head,&New);

        printf("你想继续操作吗?\
              \n1.继续\
              \n2.退出\n");
        scanf("%d",&c);

    }
    return 0;
}

/****************************************************
函数功能:选择菜单
****************************************************/
void Menus(Link *Head,Link *New)
{
    int ch;
    printf("/***************欢迎进入图书管理系统****************/\n");
    printf("1.添加图书信息\
          \n2.删除图书信息\
          \n3.查找图书信息\
          \n4.修改图书信息\
          \n5.输出图书管理系统所有图书信息\
          \n6.退出系统\
          \n/***************************************************/\n");
    scanf("%d",&ch);
    switch(ch)
    {
        case 1:
            Add_book(Head,New);
            Print_book(Head);
            break;
        case 2:
            Delete_book(Head);
            Print_book(Head);
            break;
        case 3:
            Find_book(Head);
            break;
        case 4:
            Update_book(Head);
            break;
        case 5:
            Print_book(Head);
            break;
        case 6:
            exit(0);
        default:
            printf("输入错误,请重新输入!\n");

    }
}
/****************************************************
函数功能:修改指定图书的ISBN
****************************************************/
void update_ISBN(Link *p)
{
    printf("请输入新的ISBN:\n");
    scanf("%s",(*p)->info.ISBN);

}
/****************************************************
函数功能:修改指定图书的书名
****************************************************/
Link update_name(Link p)
{
    printf("请输入新的书名:\n");
    scanf("%s",p->info.name);
    return p;
}
/****************************************************
函数功能:修改指定图书的作者
****************************************************/
Link update_writer(Link p)
{
    printf(&
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值