#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<conio.h>
#define FALSE 0
#define TRUE 1
#define m 4
int totalbooks=0; //所有图书总库存量
char str[]={"china"};
typedef struct // 图书信息结构体
{
int booknum; //图书编号
char bookname[50]; //书名
char writer[20]; //作者
int now; //该书现存量
int total; //该书的总库存量
int flag; //flag的值代表该书的状态.flag=0代表已删除;flag=1代表未删除;
}book;
typedef book KeyType; //定义关键字类型为 srtuct book类型
#include "B_tree.h"
BTree booktree ; //定义树
void insert(); //函数声明
void clear();
void borrow();
void giveback();
void show();
void back();
void menu()
{
printf("\n\n 图书管理系统菜单 \n");
printf("\n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\n ◇ 1 采编入库\n");
printf("\n ◇ 2 清除库存\n");
printf("\n ◇ 3 借阅\n");
printf("\n ◇ 4 归还\n");
printf("\n ◇ 5 显示\n");
printf("\n ◇ 6 退出\n");
printf("\n ☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆\n");
printf("\n\n请选择功能选项(1-6):[ ]\b\b\b");
int p;
scanf("%d",&p);
switch(p)
{
case 1: insert();break;
case 2: clear();break;
case 3: borrow();break;
case 4: giveback();break;
case 5: show();break;
case 6: exit(0);break;
default:printf("\n\n*****输入错误!*****\n");back();
}
}
void insert() //插入函数
{
KeyType a;
printf("\n入库图书编号:");
scanf("%d",&a.booknum);
printf("\n入库图书名称:");
scanf("%s",a.bookname);
printf("\n入库图书作者:");
scanf("%s",a.writer);
printf("\n入库图书数量:");
scanf("%d",&a.total);
a.now=a.total;
a.flag=1;
InsertNode(booktree,a);
totalbooks=totalbooks+a.total;
printf("\n\n★★★★★图书入库成功★★★★★\n");
back();
}
void clear() //删除函数
{
KeyType a;
Result result;
char c;
printf("\n\n请输入要删除的图书编号:");
scanf("%d",&a.booknum);
result=SearchBTree(booktree,a);
if(result.tag==1&&result.pt->key[result.i].flag==1)
{
printf("\n图书信息:\n");
printf("编号 书名 作者 该书库存总量 该书现存量\n");
printf("\n%d %s %s %d %d\n",result.pt->key[result.i].booknum,result.pt->key[result.i].bookname,result.pt->key[result.i].writer,result.pt->key[result.i].total,result.pt->key[result.i].now);
printf("\n确定要删除此书?(1是 2否)[ ]\b\b\b");
c=getch();
if(c==49)
{
result.pt->key[result.i].flag=0;
totalbooks=totalbooks-result.pt->key[result.i].total;
printf("\n\n★★★★★删除成功!★★★★★\n");
}
else printf("\n\n退出删除操作,返回菜单页!\n");
}
else printf("\n\n*****该图书不存在!*****\n");
back();
}
void borrow() //借书函数
{
int b;
KeyType a;
Result result;
printf("\n\n请输入您要借的图书编号:");
scanf("%d",&a.booknum);
result=SearchBTree(booktree,a);
if(result.tag==1&&result.pt->key[result.i].flag==1)
{
printf("\n图书信息:\n");
printf("编号 书名 作者 该书库存总量 该书现存量\n");
printf("\n%d %s %s %d %d\n",result.pt->key[result.i].booknum,result.pt->key[result.i].bookname,result.pt->key[result.i].writer,result.pt->key[result.i].total,result.pt->key[result.i].now);
if(result.pt->key[result.i].now>0)
{
fanhui: printf("\n请输入借此书的数量:");
scanf("%d",&b);
if(b<=result.pt->key[result.i].now)
{
result.pt->key[result.i].now=result.pt->key[result.i].now-b;
printf("\n\n★★★★★借书成功!★★★★★\n\n");
}
else
{
printf("\n*****借书数量大于现存量,借书未成功!*****\n");
printf("\n返回重新输入!\n");
goto fanhui;
}
}
else printf("\n\n*****该书已全部出借!*****\n\n");
}
else printf("\n\n*****该图书不存在!*****\n\n");
back();
}
void giveback() //还书函数
{
KeyType a;
int b;
Result result;
printf("\n\n请输入您要还的图书编号:");
scanf("%d",&a.booknum);
result=SearchBTree(booktree,a);
if(result.tag==1&&result.pt->key[result.i].flag==1)
{
printf("\n图书信息:\n");
printf("编号 书名 作者 该书库存总量 该书现存量\n");
printf("\n%d %s %s %d %d\n",result.pt->key[result.i].booknum,result.pt->key[result.i].bookname,result.pt->key[result.i].writer,result.pt->key[result.i].total,result.pt->key[result.i].now);
if(result.pt->key[result.i].now>=0&&result.pt->key[result.i].now<result.pt->key[result.i].total)
{
fanhui: printf("\n请输入归还此书的数量:");
scanf("%d",&b);
if(b<=result.pt->key[result.i].total-result.pt->key[result.i].now)
{
result.pt->key[result.i].now=result.pt->key[result.i].now+b;
printf("\n\n★★★★★还书成功!★★★★★\n\n");
}
else if(b>result.pt->key[result.i].total-result.pt->key[result.i].now)
{
printf("\n\n*****归还数量大于出借总量,归还未成功!*****\n\n");
printf("\n返回重新输入!\n");
goto fanhui;
}
}
else if(result.pt->key[result.i].now==result.pt->key[result.i].total)
printf("\n\n*****该书没有出借!*****\n\n");
}
else printf("\n\n*****该图书不存在!*****\n\n");
back();
}
void show() //显示函数
{
KeyType a;
Result result;
printf("\n\n请输入您要查看的图书编号:");
scanf("%d",&a.booknum);
result=SearchBTree(booktree,a);
if(result.tag==1&&result.pt->key[result.i].flag==1)
{
printf("\n图书信息:\n");
printf("编号 书名 作者 该书库存总量 该书现存量\n");
printf("\n%d %s %s %d %d\n",result.pt->key[result.i].booknum,result.pt->key[result.i].bookname,result.pt->key[result.i].writer,result.pt->key[result.i].total,result.pt->key[result.i].now);
}
else printf("\n\n*****该图书不存在!*****\n\n");
back();
}
void back()
{
printf("\n\n《《《《《《任意键返回菜单页!》》》》》》\n");
getch();
system("cls");
menu();
}
void main()
{
printf("\n 欢迎进入西文图书管理系统!\n");
menu();
}
没有合适的资源?快使用搜索试试~ 我知道了~
BMS.rar_BMS C_BMS系统_bms
共2个文件
cpp:1个
h:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 77 浏览量
2022-09-20
15:55:23
上传
评论 1
收藏 3KB RAR 举报
温馨提示
西文图书管理系统 图书管理基本业务活动包括:对一本书的采编入库、清除库存、借阅和归还等等。试设计一个图书管理系统,将上述业务活动借助于计算机系统完成。 要求: 1)每种书的登记内容至少包括书号、书名、著者、现存量和总库存量等五项。 2)作为演示系统,不必使用文件,全部数据可以都在内存存放。要用B-树(3-4树)对书号建立索引,以获得高效率。 3)系统应有以下功能: 采编入库、清除库存、借阅、归还、显示(以凹入表的形式显示)等。
资源推荐
资源详情
资源评论
收起资源包目录
BMS.rar (2个子文件)
图书管理系统.cpp 6KB
B_tree.h 4KB
共 2 条
- 1
资源评论
朱moyimi
- 粉丝: 75
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功