图书馆管理系统(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[]; //树名
char name[]; //作者姓名
char press[]; //出版社
struct _Book *next;
}book; book *head = NULL; //为了方便,本人采用全局变量的形式,但不安全,需要改进
int length; //链表的长度 //录入图书的信息
void create()
{
book *p1,*p2;
length = ;
p1 = (book *)malloc(sizeof(book));
p1->book_id = -;
if(head == NULL)
{
head = p1;
}
printf("请输入需录入图书的编号、名字、作者姓名、出版社:\n");
while() //当图书的编号为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 == )
{
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 = ,flag2 = ;
char name[],press[];
book *p = head->next;
printf("1、根据图书编号进行查找:\n");
printf("2、根据作者姓名进行查找:\n");
printf("3、根据出版社进行查找:\n");
printf("请选择查找的功能:");
scanf("%d",&x);
switch(x)
{
case :
{
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 :
{
printf("请输入待查找的图书的作者姓名:");
gets(name); while(p != NULL)
{
if(strcmp(p->name,name) == )
{
flag1++;
printf("作者为%s的图书信息如下:\n");
printf("%d %s %s%是\n",p->book_id,p->book_name,p->name,p->press);
}
p = p->next;
}
if(flag1 == )
{
printf("该图书馆没有该作者的图书!\n");
}
}
case :
{
printf("请输入待查找图书的出版社:");
gets(press); while(p != NULL)
{
if(strcmp(p->press,press) == )
{
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 == )
{
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()
{
printf("请输入你选择的功能:");
scanf("%d",&a); switch(a)
{
case :
return ;
case :
{
create();
menu();
}
break;
case :
{
if(head != NULL)
{
display();
menu();
}
else
{
printf("该图书馆没有录入图书,请先录入!\n");
menu();
}
}
break;
case :
{
if(head != NULL)
{
search();
menu();
}
else
{
printf("该图书馆没有录入图书,请先录入!\n");
menu();
}
}
break;
case :
{
if(head != NULL)
{
Delete();
menu();
}
else
{
printf("该图书馆没有录入图书,请先录入!\n");
menu();
}
}
break;
default:
{
printf("选择有误!\n");
menu();
}
break;
}
} return ;
}
图书馆管理系统(C语言)的更多相关文章
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(二)数据库初始化、基本登录页面以及授权逻辑的建立
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- 图书馆管理系统 SRS文档
图书馆管理系统 SRS文档 编写人:魏晓 日期:2015年05月27日 1介绍 1.1编写目的 图书管理系统需求规格说明书是为了让系统的涉众就该系统的需求达成一致认可,明确该系统的需求,为后续的开发工 ...
- 图书馆管理系统SRS
1.任务概述 1.1目标 主要提供图书信息和读者基本信息的维护以及借阅等功能.本系统是提高图书管理工作的效率,减少相关人员的工作量,使学校的图书管理工作真正做到科学.合理的规划,系统.高效的实施. 1 ...
- Microsoft-pubs(图书馆管理系统)-数据库设计
ylbtech-DatabaseDesgin:微软提供-pubs(图书馆管理系统)-数据库设计 1.A,数据库关系图 1.B,数据库设计脚本 -- ======================== ...
- Android应用源码图书馆管理系统带服务端数据库
本项目是一套基于安卓的图书馆管理系统,包括jsp服务端源码,安卓客户端源码和mysql数据库.代码比较简单,供学习anroid与j2ee交互.例如Sqlite的使用.安卓客户端与jsp的web服务端的 ...
- MDA系统分析实战--图书馆管理系统
MDA系统分析实战--图书馆管理系统 本文通过MDA系统分析方法,对图书馆管理系统进行分析,简要叙述系统分析的一般过程.首先,简要介绍什么是MDA:MDA(Model-Driven Architect ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(七) 学生信息增删
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(六)学生借阅/预约/查询书籍事务
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
- ASP.NET Core MVC 打造一个简单的图书馆管理系统 (修正版)(五)外借/阅览图书信息的增删改查
前言: 本系列文章主要为我之前所学知识的一次微小的实践,以我学校图书馆管理系统为雏形所作. 本系列文章主要参考资料: 微软文档:https://docs.microsoft.com/zh-cn/asp ...
随机推荐
- Gitlab定义安全变量遇到无法转义的字符——感叹号
我在安全变量(Secret variables)中定义了一个变量,变量值中含有特殊字符感叹号 ! . 然后我在批处理中,引用了该变量,惊奇地发现,变量值中的 ! 丢失了. 我以为是Windows CM ...
- zigbee组网函数的一些用法
1.NLME_PermitJoiningRequest(0) :(1)值0x00:表示禁止加入网络 (2)值0x01-0xFE:表示允许链接的秒数 (3) 值0xff:表示启用网络 同时此函数:是 ...
- 用vue脚手架创建bootstrap-vue项目
用vue脚手架创建bootstrap-vue项目 框架的地址:https://bootstrap-vue.js.org/docs/ 第一步 vue init webpack demo第二步 cd de ...
- java导出csv格式文件
导出csv格式文件的本质是导出以逗号为分隔的文本数据 import java.io.BufferedWriter; import java.io.File; import java.io.FileIn ...
- Mapped Statements collection already contains value for ***.***的问题
情景,在我们配置项目或者开发的过程中,可能由于项目工程量大或误操作等原因,造成Map映射文件的ID重复,造成项目启动报以下错误, org.springframework.beans.factory.B ...
- HBase API 基础操作
对于数据操作,HBase支持四类主要的数据操作,分别是: Put :增加一行,修改一行 Delete :删除一行,删除指定列族,删除指定column的多个版本,删除指定column的制定版本等 Get ...
- BZOJ-3208|记忆化搜索-花神的秒题计划Ⅰ
背景[backboard]: Memphis等一群蒟蒻出题中,花神凑过来秒题-- 描述[discribe]: 花花山峰峦起伏,峰顶常年被雪,Memphis打算帮花花山风景区的人员开发一个滑雪项目. 我 ...
- 【配置】MongoDB配置文件详细配置
# 数据文件位置 dbpath = /opt/module/mongoData # 日志文件位置 logpath = /opt/module/mongoLog/mongodb.log # 以追加方式写 ...
- MyBatis进阶(四)
mapper.xml文件的编写 mapper.xml映射文件实现数据库和实体类之间的映射关系,定义操作数据库的sql语句. 主体部分 文件头部 <?xml version="1.0&q ...
- [亲测有效] - Linux安装PostgreSQL
本文章来为各位介绍一篇关于postgresql 9.4 在linux环境的安装步骤详解,希望文章能够对各位新手朋友带来帮助的哦. 环境说明系统:centos 6.4 64位软件:postgresq ...