图书馆管理系统(C语言)

/*    实现的功能
*    @ 1. 录入图书的信息
*    @ 2. 给定图书的编号,显示该图书的详细信息
*    @ 3. 给定作者的姓名,可以显示该作者所有的书
*    @ 4. 给定出版社,可以显示该出版社出版的图书
*    @ 5. 给定图书的编号,可以删除该图书的信息
*    @ 6. 可以提供一些统计图书信息的功能
*/

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

typedef struct _Book
{
    int book_id;            //图书编号
    char book_name[20];        //树名
    char name[20];            //作者姓名
    char press[20];            //出版社
    struct _Book *next;
}book;

book *head = NULL;        //为了方便,本人采用全局变量的形式,但不安全,需要改进
int length;        //链表的长度

//录入图书的信息
void create()
{
    book *p1,*p2;
    length = 0;
    p1 = (book *)malloc(sizeof(book));
    p1->book_id = -1;
    if(head == NULL)
    {
        head = p1;
    }
    printf("请输入需录入图书的编号、名字、作者姓名、出版社:\n");
    while(1)        //当图书的编号为0时,代表录入完成
    {
        p2 = (book *)malloc(sizeof(book));
        scanf("%d %s %s %s",&p2->book_id,p2->book_name,p2->name,p2->press);
        fflush(stdin);        //每次清空缓冲区,以便本次输入对下次输入造成影响

        if(p2->book_id == 0)
        {
            printf("图书信息录入完成!\n");
            break;
        }
        length ++;
        p1->next = p2;
        p2->next = NULL;
        p1 = p1->next;
    }
    return ;
}

//显示图书信息
void display()
{
    book *p1 = head->next;
    printf("所有的图书信息如下:\n");
    while(p1 != NULL)
    {
        printf("%d    %s    %s    %s    %s\n",p1->book_id,p1->book_name,p1->name,p1->press);
        p1 = p1->next;
    }
    return ;
}

//查找
void search()
{
    int num,x,flag1 = 0,flag2 = 0;
    char name[20],press[20];
    book *p = head->next;
    printf("1、根据图书编号进行查找:\n");
    printf("2、根据作者姓名进行查找:\n");
    printf("3、根据出版社进行查找:\n");
    printf("请选择查找的功能:");
    scanf("%d",&x);
    switch(x)
    {
    case 1:
        {
            printf("请输入待查找的图书编号:");
            scanf("%d",&num);

            while(p != NULL)
            {
                if(p->book_id == num)
                {
                    printf("编号为%d的图书信息如下:\n");
                    printf("%d    %s    %s    %s\n",p->book_id,p->book_name,p->name,p->press);
                    return ;
                }
                p = p->next;
            }
            if(p == NULL)
            {
                printf("该图书馆没有该图书的编号!\n");
            }
        }
        break;
    case 2:
        {
            printf("请输入待查找的图书的作者姓名:");
            gets(name);

            while(p != NULL)
            {
                if(strcmp(p->name,name) == 0)
                {
                    flag1++;
                    printf("作者为%s的图书信息如下:\n");
                    printf("%d    %s    %s%是\n",p->book_id,p->book_name,p->name,p->press);
                }
                p = p->next;
            }
            if(flag1 == 0)
            {
                printf("该图书馆没有该作者的图书!\n");
            }
        }
    case 3:
        {
            printf("请输入待查找图书的出版社:");
            gets(press);

            while(p != NULL)
            {
                if(strcmp(p->press,press) == 0)
                {
                    flag2++;
                    printf("出版社为%s的图书如下:\n");
                    printf("%d    %s    %s    %s\n",p->book_id,p->book_name,p->name,p->press);
                }
                p = p->next;
            }
            if(flag2 == 0)
            {
                printf("该图书馆没有该出版社的图书!\n");
            }
        }
    default:
        {
            printf("选择有误!\n");
        }
        break;
    }
    return ;
}
//按编号进行删除
void Delete()
{
    int num;
    book *p,*q;
    q = head;
    p = head->next;
    printf("请输入待删除的图书编号:");
    scanf("%d",&num);

    while(p != NULL)
    {
        if(p->book_id == num)
        {
            q->next = p->next;
            free(p);
            length--;
            printf("删除成功!\n");
            return ;
        }
        p = p->next;
        q = q->next;
    }
    if(p == NULL)
    {
        printf("该图书馆没有该编号的图书!\n");
        return ;
    }
}
//选择的菜单
void menu()
{
    printf("-----------------------------------------\n");
    printf("|\t\t图书馆管理系统\t\t|\n");
    printf("|\t\t0. 退出系统\t\t|\n");
    printf("|\t\t1. 录入图书信息\t\t|\n");
    printf("|\t\t2. 显示图书信息\t\t|\n");
    printf("|\t\t3. 查询图书信息\t\t|\n");
    printf("|\t\t4. 删除图书信息\t\t|\n");
    printf("-----------------------------------------\n");
}

int main(void)
{
    int a;
    menu();
    while(1)
    {
        printf("请输入你选择的功能:");
        scanf("%d",&a);

        switch(a)
        {
        case 0:
            return ;
        case 1:
            {
                create();
                menu();
            }
            break;
        case 2:
            {
                if(head != NULL)
                {
                    display();
                    menu();
                }
                else
                {
                    printf("该图书馆没有录入图书,请先录入!\n");
                    menu();
                }
            }
            break;
        case 3:
            {
                if(head != NULL)
                {
                    search();
                    menu();
                }
                else
                {
                    printf("该图书馆没有录入图书,请先录入!\n");
                    menu();
                }
            }
            break;
        case 4:
            {
                if(head != NULL)
                {
                    Delete();
                    menu();
                }
                else
                {
                    printf("该图书馆没有录入图书,请先录入!\n");
                    menu();
                }
            }
            break;
        default:
            {
                printf("选择有误!\n");
                menu();
            }
            break;
        }
    }

    return 0;
}
时间: 2024-10-29 12:53:36

图书馆管理系统(C语言)的相关文章

图书馆管理系统(C语言实现)

源代码在这里 1   图书馆管理系统(C语言实现). 2  功能相对简单, 增删改查而已. 3  详细的介绍都在链接里了.

图书馆 管理系统--可行性报告

1.引言 1.1编写目的     本需求的编写是为了研究利用大型数据库做基础的图书管理系统软件的开发途径和应用方法.同时它也是进行项目策划.概要设计和详细设计的基础,是维护人员进行内部维护,信息更新,验收和测试的依据. 1.2项目背景 l  开发软件的名称:图书管理系统.  l  图书管理系统这任务提出与开发者为我们小组软件工程的的课程设计,用户是学校图书馆.  l  本产品是针对电脑管理图书的需求设计的,可以完成读者登记.购入新书.读者借还书.图书注销等. 1.3参考资料 <信息系统分析与设计

ASP.NET Core 打造一个简单的图书馆管理系统(五)初始化书籍信息

前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/aspnet/core/getting-started/?view=aspnetcore-2.1&tabs=windows <Pro ASP.NET MVC 5>.<锋利的 jQuery> 此系列皆使用 VS2017+C# 作为开发环境.如果有什么问题或者意见欢迎在留言区进行留言.

图书馆管理系统——模板建立

图书馆管理系统也进行了有一段时日了,前段时间一直在进行画图,直到前天才真正的把图画完,当然后期肯定还有需要完善的地方.现阶段,我们就开始了界面的搭建,这个对于我们来说既是熟悉的,同时也是具有挑战性的.为什么这么说呢? 熟悉的是我们学习BS的第一个项目就是牛腩新闻发布系统,这个项目就是从代码到界面搭建,整合等项目的全套学习,我们的图书馆管理系统基本上都是这里面所讲到过的,对于我们来说都不陌生.但是,对于自己来说,当时学习牛腩视频的时候,基本上都是看着视频进行敲的,有很多地方不太理解,虽然功能或者样

人事管理系统 c语言版

int menu(){ printf("请按提示输入完成操作!\n"); printf("1.查询员工信息\n"); printf("2.统计员工数量\n"); printf("3.录入员工信息\n"); printf("4.删除员工信息\n"); printf("5.按id排序所有员工\n"); printf("6.打印所有员工信息\n"); printf(&quo

JavaWeb学习入门之——图书馆管理系统开发(Hibernate学习1)

最近看了看JavaWeb的书籍,才感觉到大二时候学的JavaWeb才仅仅只是个入门.最尴尬的当初还没咋学一直在看.NET,现在看起来JavaWeb,各种框架各种头疼啊.看了几个例子之后觉得,还是自己动手做个项目试试.边做边学才能学的快一点.做的时候用博客园记录下过程,省得以后忘.之所以选图书馆管理系统呢,是因为做过几个课程设计.对它的需求还是比较了解一点.现在通用的框架模式都是MVC,我在学的时候想先从Model层开始学.于是就先选Hibernate开始. 一.数据库 先简单设计几张表,图书表,

图书馆管理系统 SRS文档

图书馆管理系统 SRS文档 编写人:魏晓 日期:2015年05月27日 1介绍 1.1编写目的 图书管理系统需求规格说明书是为了让系统的涉众就该系统的需求达成一致认可,明确该系统的需求,为后续的开发工作提供依据.通常,该需求规格说明可以作为产品设计的主要依据,并作为工程师编码时了解软件实际需求的主要参考资料.同时,需求规格说明是产品实现后用于检验的主要考察依据,是测试人员编写测试用例时的主要参考文件.另外,本文档还可以为其他需要了解系统需求的人员提供产品需求的详细说明. 1.2背景 软件系统的名

Android应用源码图书馆管理系统带服务端数据库

本项目是一套基于安卓的图书馆管理系统,包括jsp服务端源码,安卓客户端源码和mysql数据库.代码比较简单,供学习anroid与j2ee交互.例如Sqlite的使用.安卓客户端与jsp的web服务端的交互不错的全套完整源码.已包括服务端,搭个Tomcat环境就可以,非常简单. Code.rar

图书馆管理系统

图书馆管理系统,这个小程序是Java基础的应用,比较简单,没有用到太难的东西.同时,受于技术所限,未能连接到数据库.等以后学了,看有机会再加上,现在就这样吧. 代码: User类 package com.Library; public class User { public String username="张三"; public int password=123456; } Book类 package com.Library; public class Book {     int