数据结构课程设计--图书管理系统

本次课程设计中,我构建了一个图书管理系统,利用数据结构的知识实现高效检索和管理图书信息。系统包括增删改查功能,实现了二分查找、哈希映射等算法,提升了操作效率。
摘要由CSDN通过智能技术生成
/***********************************************************   
* 版权所有 (C)2016,ChenDi   
*   
* 文件名称: cd.cpp  
* 文件标识:无   
* 内容摘要:函数文件   
* 其它说明:各个模块函数   
* 当前版本: V1.0   
* 作 者:陈迪   
* 完成日期: 20161229   
*   
* 修改记录1:   
* 修改日期 :20161229  
* 版本号: V1.0   
* 修改人: 陈迪   
* 修改内容:创建 
#include<stdio.h>  //调用函数
#include <string.h>  //字符串处理
#include <stdlib.h> //定义杂项函数及内存分配函数 
#include<conio.h> //包含一些常用函数
#define Max 4   //每人最多借4本书   
typedef struct book  //顺序链表结构 存放书的链表的节点类型
{  
    char book_num[10];  //书的数量
    char book_name[20];  //存储书的名字
    char book_writer[10];  //存储书的读者
    int book_xy;  //书的现有量  
    int book_kc; //书的库存  
    struct book *next;  //一个指向book类型对象的指针  * next是个数据成员, 这个数据成员用来记录别人的地址, 
	//每个结构体对象(或结构体变量)都有这么一个成员来记录(或指向)别人的地址。指向后继节点。
}BK;  
typedef struct borrow  //借书 
{  
    char borrow_book_num[10];  
    char limit_date[8];  
}BO;  
typedef struct reader  //读者
{  
    char reader_num[10];  //读者的数目  
    char reader_name[10];  //读者的姓名
    int right;  
    BO borrow[Max];  //借的书赋值为最大数量  
    struct reader *next; //指向下一个节点 
}RD;  
  
BK *h_book;  
RD *h_reader;  
void Login(); //进入               
int Menu(); //主菜单  
void Init();   //先初始化图书信息
void Init2();  //再初始化读者信息
void Init_book();        //初始化书的这一线性表,构造一个空的书的线性表()       
void Menu_select();     //主菜单函数选择
void Insert_New_Book();  //插入新的书                 
void Find_Book();    //找书的信息
void add_reader();  //增加读者
void Print_reader(); //查询读者信息
void Print_book();  //查询书的信息
void Borrow_Book(); //借书         
void Return_Book();  //还书
void Save();    //保存信息
void Save_Book();   //保存书的信息
void Save_Reader();   //保存读者信息
void Load();  //加载信息
void Load_Reader(); //加载读者信息   
void Load_Book();   //加载书的信息
/****************************
功能描述:进入
输入参数:任意键进入
输出参数:出现主菜单
其他说明:无
*****************************/
void Login()  
{  
    system("cls");  //清屏函数
    printf("\n\n\n\t\t********************************************\n");  
    printf("\n\n\n\t\t\t\t\t\t\t\t\t\t\t\t\t欢迎使用图书管理系统\n");  
    printf("\n\n\n\t\t********************************************\n");  
    printf("\n\n\n\t\t 请按任意键进入系统...");  
    getch(); //按下任意键而不需要回车就可以接受到用户的输入
	system("cls");  
}  
/************************ 
功能描述:主菜单 
输入参数:要选择的功能前的数字 
输出参数:所输入数字对应的功能 
其他说明:无 
*************************/  
int Menu()   //主菜单进入
{ int dm;  
printf("\n\t\t图书管理系统主菜单\n");  
printf("=================================================\n");  
printf("*\t1----采编入库          \n");  
printf("*\t2----登记读者          \n");   
printf("*\t3----借阅登记          \n");  
printf("*\t4----还书管理          \n");  
printf("*\t5----查询图书信息      \n");  
printf("*\t6----查询读者信息      \n");  
printf("*\t0----退出系统          \n");  
printf("=================================================\n");  
printf("请选择相应的代码:");   
for(;;)
{ 
	scanf("%d",&dm); //dm输入的数字  
if(dm<0||dm>6)  //只能输入0-6
printf("\n输入错误  请重新输入:");  
else break;  
}  
return dm;   
}  
/************************ 
功能描述:主菜单选择函数 
输入参数:无 
输出参数:无 
其他说明:无 
*************************/  
void Menu_select()  //主菜单函数选择 
{  
    for(;;)   
    {  
        switch(Menu()) //功能选择  
        { 
		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:     //加入读者
			add_reader();
			break;  
        case 3:    //借书
			Borrow_Book();
			break;  
        case 4:    //还书
			Return_Book();
			break;  
        case 5:   //查询书的信息
			Print_book();
			break;  
        case 6:   //查询读者的信息
			Print_reader();
			break;  
        default:
			printf("\n错误!");  
            exit(0);
		}  
    }  
}  
  
/************************ 
功能描述:初始化 
输入参数:编号.书名. 作者.数量 
输出参数:无 
其他说明: 

*************************/  
void Init()   
{  
      
      
    BK *p0;  
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值