#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <conio.h>
#define Max 3
typedef struct book
{
char book_num[10];
char book_name[20];
char book_writer[10];
int book_kc;
int book_xy;
struct book *next;
}BK;
typedef struct borrow
{
char borrow_book_num[10];
char huanshu_date[8];
}BW;
typedef struct reader
{
char reader_num[10];
char reader_name[10];
int zuida;
BW borrow[Max];
struct reader *next;
}RD;
BK *h_book;
RD *h_reader;
void login(); /*登陆*/
int zhucaidan(); /*主菜单*/
void Menu_select();
void Init(); /*初始化*/
void Init_reader();
void Init_book();
void Insert_New_Book(); /*新书入库*/
int Find(); /*查找菜单*/
void Find_Select(); /*查找菜单选择函数*/
void Find_Reader();
void Find_Book();
void Print_reader(); /*显示读者信息*/
void Print_book();
void Borrow_Book();
void Return_Book();
void Save(); /*保存信息*/
void Save_Reader();
void Save_Book();
void Load();
void Load_Reader(); /*加载读者信息*/
void Load_Book();
void Login()/*登陆*/
{
system("cls");
printf(" \n\n");
printf(" =================================================\n");
printf(" 欢迎登陆图书馆管理系统\n\n\n");
printf(" 学号:Z08050719 姓名:王义 \n\n\n\n\n\n\n");
printf(" 按 任 意 键 进 入 系 统 ...\n");
printf(" =================================================\n");
getch(); system("cls");
}
int zhucaidan() /*主菜单*/
{ int i;
printf(" 图书管理系统主菜单\n");
printf(" =================================================\n");
printf(" ☆ 0----退出系统 ☆\n\n");
printf(" ☆ 1----新书入库 ☆\n\n");
printf(" ☆ 2----查询信息 ☆\n\n");
printf(" ☆ 3----借书登记 ☆\n\n");
printf(" ☆ 4----还书管理 ☆\n\n");
printf(" =================================================\n");
printf(" 请选择相应代码:");
for(;;)
{ scanf("%d",&i);
fflush(stdin);
if(i<0||i>4)
printf("\n错误!请重新输入:");
else break;
}
return i;
}
void Menu_select()/*主菜单选择函数*/
{
for(;;) /*循环调用模式,保证能进行重复操作*/
{
switch(zhucaidan()) /*功能选择*/
{ case 0:
system("cls");
Save();
printf("\n\n\t文件已经成功保存!\n");
printf("\n\n\t欢迎您下次使用本系统!\n");
getch();
exit(0);
case 1:Insert_New_Book();break;
case 2:Find_Select();break;
case 3:Borrow_Book();break;
case 4:Return_Book();break;
default:printf("\n错误!");exit(0);
}
}
}
void Init() /*初始化*/
{
Init_reader();
Init_book();
}
void Init_reader() /*初始化读者信息*/
{
RD *p0;
int i;
printf("\n读者初始化开始,请输入读者信息..\n包括图书证号.姓名..\n");
p0=(RD*)malloc(sizeof(RD));
h_reader=p0;
printf("\n请输入读者的信息:\n");
printf("读者图书证号:");
scanf("%s",p0->reader_num);
printf("读者姓名:");
scanf("%s",p0->reader_name);
p0->zuida=0;
for(i=0;i<Max;i++)
{
strcpy(p0->borrow[i].borrow_book_num,"0"); /*所借图书直接置为0(即没有借书)*/
strcpy(p0->borrow[i].huanshu_date,"0");
}
p0->next=NULL;
printf("\n读者信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
void Init_book() /*初始化图书信息*/
{
BK *p0;
printf("\n图书初始化开始,请输入图书信息..\n包括编号.书名.数量..\n");
p0=(BK*)malloc(sizeof(BK));
h_book=p0;
printf("\n请输入图书信息:\n");
printf("图书编号:");
scanf("%s",p0->book_num);
printf("图书名称:");
scanf("%s",p0->book_name);
printf("图书作者:");
scanf("%s",p0->book_writer);
printf("图书数量:");
scanf("%d",&p0->book_kc);
p0->book_xy=p0->book_kc; /*开始时图书现有量和库存量相等*/
p0->next=NULL;
printf("\n图书信息初始化完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
void Insert_New_Book()/*新书入库*/
{
BK *p,*p1,*p2;
p=p2=h_book;
printf("\n新书入库模块...\n");
printf("\n请输入新书信息..\n包括书号.书名.数量..\n");
p1=(BK *)malloc(sizeof(BK));
printf("图书编号:");
scanf("%s",p1->book_num);
while(strcmp(p1->book_num,p2->book_num)!=0&&p2->next!=NULL)
p2=p2->next;
if(strcmp(p1->book_num,p2->book_num)==0) /*此处分两种情况,若图书编号存在,则直接入库,只须输入图书的数量*/
{
printf("\n此编号图书已存在!!直接入库!\n");
printf("图书数量:");
scanf("%d",&p1->book_kc);
p2->book_kc+=p1->book_kc;
p2->book_xy+=p1->book_kc; /*开始时图书现有量和库存量相等*/
}
else /*若图书编号不存在,则需要输入图书的所有信息 ,然后再进行插入操作*/
{
printf("图书名称:");
scanf("%s",p1->book_name);
printf("图书作者:");
scanf("%s",p1->book_writer);
printf("图书数量:");
scanf("%d",&p1->book_kc);
while(p->next)
{
p=p->next;
}
if(h_book==NULL) h_book=p1; /*此处分两种情况,链表中没有数据,head头指针直接指向p1处*/
else p->next=p1; /*链表中有数据,链表中最后元素的next指向p1处*/
p1->next=NULL;
p1->book_xy=p1->book_kc;
}
printf("\n新书入库完毕!按任意键继续下一步操作..\n");
getch();
system("cls");
}
int Find() /*查找功能菜单*/
{
int i;
printf(" 信息查询菜单\n");
printf(" =================================================\n");
printf(" ☆ 0----返回上级 ☆ \n\n");
printf(" ☆ 1----查找图书 ☆ \n\n");
printf(" ☆ 2----查找读者 ☆ \n\n");
printf(" ☆ 3----显示图书 ☆ \n\n");
printf(" ☆ 4----显示读者 ☆ \n\n");
printf(" =================================================\n");
printf(" 请选择相应代码:");
for(;;)
{
scanf("%d",&i);
fflush(stdin);
if(i<0||i>4)
printf("\n错误!请重新输入:");
else break;
}
return i;
}
void Find_Select() /*查找菜单选择函数*/
{
system("cls");
for(;;)
{
switch(Find()) /*判断读者做出了什么功能选择*/
{
case 0:system("cls"); Menu_select(); break;
case 1:Find_Book();break;
case 2:Find_Reader();break;
case 3:Print_book();break;
case 4:Print_reader();break;
default:printf("\n错误!");exit(0);
}
}
}
void Find_Reader() /*查找读者信息*/
{
RD *p;
int i;
char find_reader[10];
p=h_reader;
printf("\n读者信息查询模块\n");
printf("\n请输入你要查询读者图书证号:");
scanf("%s",find_reader);
while(strcmp(p->reader_num,find_reader)!=0&&p->next)
p=p->next;
if(strcmp(p->reader_num,find_reader)==0)
{
printf("\n读者编号%s的信息为:\n",find_reader);
printf("读者图书证号:\t读者姓名:");
printf("\n");
printf("\t%s\t\t%s",p->reader_num,p->reader_name);
for(i=0;i<Max;i++)
{
printf("\n");
printf("图书编号:");
printf("\t还书时间:");
printf("\n");
printf("\t%s",p->borrow[i].borrow_book_num);
printf("\t\t%s",p->borrow[i].huanshu_date);
}
printf("\n");
}
else
printf("\n此读者编号不存在,请核对!按任意键返回...");
getch();
system("cls");
}
void Find_Book() /*查找图书信息*/
{
BK *p;
char find_book[10];
p=h_book;
printf("\n图书信息查询模块\n");
printf("\n请输入你要查询图书编号:");
scanf("%s",find_book);
while(strcmp(p->book_num,find_book)!=0&&p->next)
p=p->next;
if(strcmp(p->book_num,find_book)==0)
数据结构 图书管理系统课程设计代码及课设报告
4星 · 超过85%的资源 需积分: 49 13 浏览量
2010-05-11
13:33:09
上传
评论 20
收藏 323KB RAR 举报
tianlongxiaoyi
- 粉丝: 47
- 资源: 26
最新资源
- 直接插入排序,冒泡排序,直接选择排序.zip
- 在排序2的基础上,再次对快排进行优化,其次增加快排非递归,归并排序,归并排序非递归版.zip
- 实现了7种排序算法.三种复杂度排序.三种nlogn复杂度排序(堆排序,归并排序,快速排序)一种线性复杂度的排序.zip
- 冒泡排序 直接选择排序 直接插入排序 随机快速排序 归并排序 堆排序.zip
- 课设-内部排序算法比较 包括冒泡排序、直接插入排序、简单选择排序、快速排序、希尔排序、归并排序和堆排序.zip
- Python排序算法.zip
- C语言实现直接插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序、归并排序、计数排序,并带图详解.zip
- 常用工具集参考用于图像等数据处理
- 音乐展示网页、基于Stenography的图像数字水印添加与提取,以及基于颜色矩和Tamura算法的图像相似度评估算法py源码
- 基于EmguCV(OpenCV .net封装),图像数字水印加解密算法的实现,其中包含最低有效位算法,离散傅里叶变换算法+文档书
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈