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

该博客介绍了使用数据结构实现的图书管理系统,涵盖了图书初始化、新书入库、读者登记、借阅与归还图书等核心功能,并通过冒泡排序进行信息管理。
摘要由CSDN通过智能技术生成

#include"library.h"

/**********************************************************
*功能描述:主菜单
*输入参数:每个数字对应着相应的功能,对数字进行选择
*输出参数:对应函数的实现
*返 回 值:所选择的数字
*其他说明:共包括新书入库、读者登记、借阅图书、归还图书、查询图书、查询读者
            修改图书、删除图书等功能
**********************************************************/
int Menu()
{
    int sz;

    cout<<"                        烟台大学图书管理系统                   \n";
    cout<<"                                                               \n";
    cout<<"        ---------1新书入库----------------2读者登记----------  \n";
    cout<<"        ---------3借阅图书----------------4归还图书----------  \n";
    cout<<"        ---------5查询图书信息------------6查询读者信息------  \n";
    cout<<"        ---------7修改图书信息------------8删除图书信息------  \n";
    cout<<"        ------------------9退出图书管理系统------------------  \n";
    cout<<"请选择菜单的数字:";

    for(;;)
    {
        cin>>sz;           //输入数字
        if(sz<1||sz>9)
            cout<<"输入错误!请重新输入:";
        else
            break;
    }
    return sz;

}
/********************************************************
*功能描述:主菜单选择函数
*输入参数:每个数字对应着相应的功能,对数字进行选择
*输出参数:对应函数的实现
*其他说明:循环调用函数
********************************************************/

void Menu_select(RD *h_reader,BK *h_book)      //主菜单选择函数
{
    for(;;)             //循环调用
    {
        switch(Menu())  //功能选择
        {

        case 1:
            cout<<1<<endl;
            add_book(h_book);             //新书入库
            break;
        case 2:
            cout<<2<<endl;
            add_reader(h_reader);      //读者登记
            break;
        case 3:
            borrow_book(h_book,h_reader);     //借书
            break;
        case 4:
            return_book(h_book,h_reader);     //还书
            break;
        case 5:
            print_book(h_book);      //显示图书信息
            break;
        case 6:
            print_reader(h_reader);    //显示读者信息
            break;
        case 7:
            change_book(h_book);     //修改图书信息
            break;
        case 8:
            dele_book(h_book);      //删除图书
            break;
        case 9:
            printf("\n欢迎使用本系统!再见!\n");
            getch();
            exit(0);
        default:
            printf("错误!");
            exit(0);
        }
    }
}


/********************************************************
*功能描述:初始化函数
*输入参数:输入图书的编号、名称、作者、价格和数量
*输出参数:图书信息的初始化完毕
*其他说明:申请新的空间来保存信息
********************************************************/

void chushihua(BK *&h_book)             //初始化
{
    BK *p0;
    p0=new book;             //申请新空间
    p0=(BK*)malloc(sizeof(BK));  //开辟新的存储空间
    h_book=p0;
    cout<<"   ========================欢迎进入烟台大学图书管理系统!!!========================="<<endl;
    cout<<endl;
    cout<<"请初始化图书信息"<<endl;
    cout<<endl;
    cout<<"图书编号:";         //输入图书信息
    cin>>p0->book_num;
    cout<<"图书名称:";
    cin>>p0->book_name;         //输入名称
    cout<<"图书作者:";
    cin>>p0->book_writer;       //输入作者
    cout<<"图书价格:";
    cin>>p0->book_price;      //输入价格
    cout<<"图书数量:";
    cin>>p0->book_kc;       //输入图书的数量
    p0->book_xy=p0->book_kc;            //图书现有量=库存量
    p0->next=NULL;
    h_book=p0;
    cout<<"图书信息初始化完毕!按任意键继续下一步操作!\n";
    getch();

}


/********************************************************
*功能描述:添加新书
*输入参数:输入图书的编号、名称、作者、价格和数量
*输出参数:添加完毕
*其他说明:若图书编号存在则添加图书数量直接入库。若图书的编号不存在,
           则输入名称、作者、价格和数量。
********************************************************/

void add_book(BK *&h_book)   //新书入库
{
    BK *p,*p0,*p1;
    p=p1=h_book;   //p1和p0指向书籍编号链表的头节点
    cout<<"\n进入图书添加模块...\n";
    cout<<"\n请输入将要添加的新书信息...\n";
    p0=new book;    //p0指针指向新书
    cout<<"图书编号:";
    cin>>p0->book_num;
    while(strcmp(p0->book_num,p1->book_num)!=0&&p1->next!=NULL)   //while遍历图书链表,若不相同指针往下走
          p1=p1->next;
    if(strcmp(p0->book_num,p1->book_num)==0)  //此处分两种情况,若图书编号存在,则直接入库,只须输入书的数量
    {
        cout<<"\n此种图书已存在!!!"<<endl;
        cout<<"直接添加图书数量:";
        cin>>p0->book_kc;
        p1->book_kc+=p0->book_kc;
        p1->book_xy+=p0->book_kc;
    }
    else        //若不存在,则需要输入其他的信息,然后在进行插入操作
    {
        cout<<"图书名称:";
        cin>>p0->book_name;
        cout<&l
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值