博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
图书管理系统一
阅读量:5163 次
发布时间:2019-06-13

本文共 2862 字,大约阅读时间需要 9 分钟。

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

编程思路:

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

    代码连接:

    发现自己已经忘记怎么去创建库和连接本地库,赶紧趁着这个时候再次学习。尴尬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

你可能感兴趣的文章
实现字符串反转
查看>>
转载:《TypeScript 中文入门教程》 5、命名空间和模块
查看>>
苹果开发中常用英语单词
查看>>
[USACO 1.4.3]等差数列
查看>>
Shader Overview
查看>>
Reveal 配置与使用
查看>>
Java中反射的学习与理解(一)
查看>>
C语言初学 俩数相除问题
查看>>
B/S和C/S架构的区别
查看>>
[Java] Java record
查看>>
jQuery - 控制元素显示、隐藏、切换、滑动的方法
查看>>
postgresql学习文档
查看>>
Struts2返回JSON数据的具体应用范例
查看>>
js深度克隆对象、数组
查看>>
socket阻塞与非阻塞,同步与异步
查看>>
团队工作第二天
查看>>
System类
查看>>
tableView
查看>>
Happy Great BG-卡精度
查看>>
Xamarin Visual Studio不识别JDK路径
查看>>