图书管理系统一

发现自己好久没有写博客了,上次C++考试发现自己考试时并没有涉及到链表的编程,于是,想通过自己编写图书管理系统来强化自己的链表(这项目看好多人都有做过就自己也试做一下了)

编程思路:

  • 先使用面向过程的方法编写程序
  • 创建图书馆结构体包含了 id book_name author 变量
  • 目前编写四个函数实现:添加书籍add()、查找目录print()、查找书籍find_menu()find_b()
  • 利用链表的基本作用实现

    代码连接:github

    发现自己已经忘记怎么去创建库和连接本地库,赶紧趁着这个时候再次学习。尴尬0.0

代码:

struct Libary {
    string id;
    string book_name;
    string author;
    //int count;
    struct Libary * next;
};   

void add(L * head)//添加书籍
{
    L * p=new L;
    string i, bn, au;
    cout << "请依次输入书籍编号,书名,作者" << endl;
    cin >> i >> bn >> au;
    p->author = au;
    p->book_name = bn;
    p->id = i;
    p->next = NULL;
    if (head->next == NULL)
    {
        head->next = p;
    }
    else
    {
        L * pre = head;
        while (pre->next!=NULL)
        {
            pre = pre->next;
        }
        pre->next = p;
    }
    cout << "已添加书籍" << endl;
}
void print(L * head)//输出书库目录
{
    cout << "目录:" << endl;
    L * p = head;
    if (head->next == NULL)
    {
        cout << "无书籍" << endl;
        return;
    }
    else
    {
        for (p = head->next; p != NULL; p = p->next)
        {
            cout <<"书籍编号:"<< p->id << " 书名:《" << p->book_name << "》 作者:" << p->author << endl;
        }
    }
    cout << endl;
}
void find_menu(L * head,string fk)//查找方式菜单
{
    
    //string fk;
    string kinds;
    int flag = 0;
    //cin >> fk;
    if (head->next == NULL)
    {
        cout << "书库为空" << endl;
        return;
    }
    if (fk == "id")
    {
        cin >> kinds;
        flag = find_b(head, kinds,fk);
        if (flag == 0) cout << "查无此编号" << endl;
    }
    if (fk == "bn")
    {
        cin >> kinds;
        flag = find_b(head, kinds,fk);
        if (flag == 0) cout << "查无此书名" << endl;
    }
    if (fk == "au")
    {
        cin >> kinds;
        flag = find_b(head, kinds,fk);
        if (flag == 0) cout << "查无此作者" << endl;
    }
}

int find_b(L * head,string kinds,string k)//查找书籍
{
    L * p = head;
    int flag = 0;
    for (p = head->next; p != NULL; p = p->next)
    {
        if (k == "id")
        {
            if (p->id == kinds)
            {
            flag = 1;
            cout << "书籍编号:" << p->id << " 书名:《" << p->book_name << "》 作者:" << p->author << endl;
            }
        }
        
        if (k == "bn")
        {
            if (p->book_name == kinds)
            {
                flag = 1;
                cout << "书籍编号:" << p->id << " 书名:《" << p->book_name << "》 作者:" << p->author << endl;
            }
        }
        if (k == "au")
        {
            if (p->author == kinds)
            {
                flag = 1;
                cout << "书籍编号:" << p->id << " 书名:《" << p->book_name << "》 作者:" << p->author << endl;
            }
        }
    }
    return flag;
}

运行结果:

1092267-20170702003157618-43100665.png

1092267-20170702003207774-2043407907.png

1092267-20170702003213961-1874109972.png

体会:

我想尝试的像之前的四则运算一样,一步一步迭代,让这个程序越来越完美——虽然四则运算弄成界面形式我还出现许多bug还没有修改,惭愧0.0

不足:

  • 添加书籍过程繁琐
  • 没有添加输入有误,请重新输入的情况——写的时候发现进入死循环。。。
  • 还缺少许多功能 例如 :各书库存量统计、借还系统、等等。
  • 没有做到面向对象。
  • 目前在思考将链表放到面向对象中,要怎么修改,会不会出错等等情况
    (ps:还是一步一步慢慢来吧)

转载于:https://www.cnblogs.com/q1076452761/p/7104187.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值