发现自己好久没有写博客了,上次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;}
运行结果:
体会:
我想尝试的像之前的四则运算一样,一步一步迭代,让这个程序越来越完美——虽然四则运算弄成界面形式我还出现许多bug还没有修改,惭愧0.0
不足:
- 添加书籍过程繁琐
- 没有添加输入有误,请重新输入的情况——写的时候发现进入死循环。。。
- 还缺少许多功能 例如 :各书库存量统计、借还系统、等等。
- 没有做到面向对象。
- 目前在思考将链表放到面向对象中,要怎么修改,会不会出错等等情况 (ps:还是一步一步慢慢来吧)