一 概述
本节结合上面的代码示例,使用链表做个一个图书管理系统,实现:
- 重建图书
- 显示图书
- 插入图书
- 删除图书
- 显示图书数目等功能
二 示例功能
2.1 图书的创建功能
2.1.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| int main() { string str; begin: cout<<"1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出)"<<endl; cin>>str; if(str[0]=='1') { ::head=create(); system("cls"); goto begin; } return 0; }
|
2.1.2 输出结果
1 2 3 4 5 6 7 8 9
| 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 1 请输入图书的编号,以0结束 1 请输入图书的价格 11 请输入图书的编号,以0结束 0 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出)
|
2.2 图书的显示功能
2.2.1 代码
1 2 3 4 5 6 7 8 9 10 11 12
| if(str[0]=='2') { if(head==NULL) { cout<<"您的图书现在还是空的,请添加图书"<<endl<<"按回车键返回主程序"<<endl; cin.get(); cin.get(); system("cls"); goto begin; } showbook(head); }
|
2.2.2 输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13
| 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 1 请输入图书的编号,以0结束 1 请输入图书的价格 11 请输入图书的编号,以0结束 0 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 2
图书信息如下: 图书编号:1 图书价格:11
|
2.2.3 错误修改
- 系统菜单中选择1,输入0时,系统出现异常
- 解决办法:create中p2->next去掉
2.3 图书的插入功能
2.3.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| if(str[0]=='3') { if(head==NULL) { cout << "您的图书现在还是空的,请添加图书" << endl << "按回车键返回主程序" << endl; cin.get(); cin.get(); system("cls"); goto begin; } cout << "请输入要插入的图书的编号,按0返回" << endl; string str; cin >> str; int num; float price; while (!check(str)) { cout << "输入的不是数字,请重新输入,按0返回" << endl; cin >> str; } num = atoi(str.c_str()); if (num != 0) { cout << "请输入图书的价格" << endl; cin >> str; while (!check(str)) { cout << "输入的不是数字,请重新输入,按0返回" << endl; cin >> str; } price = atof(str.c_str()); }else { system("cls"); goto begin; } insert(head,num,price); cout<<"操作完毕,按会回车间返回主程序"<<endl; }
|
2.3.2 输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 1 请输入图书的编号,以0结束 1 请输入图书的价格 11 请输入图书的编号,以0结束 2 请输入图书的价格 22 请输入图书的编号,以0结束 0 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 3 请输入要插入的图书的编号,按0返回 4 请输入图书的价格 44 操作完毕,按会回车间返回主程序
|
2.4 图书的删除
2.4.1 代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
| if(str[0]=='4') { if(head==NULL) { cout << "您的图书现在还是空的,请添加图书" << endl << "按回车键返回主程序" << endl; cin.get(); cin.get(); system("cls"); goto begin; } cout << "请输入要删除的图书的编号,按0返回" << endl; string str; cin >> str; int num; while (!check(str)) { cout << "输入的不是数字,请重新输入,按0返回" << endl; cin >> str; } num = atoi(str.c_str()); Delete(head,num); cout<<"操作完毕,按会回车间返回主程序"<<endl; }
|
2.4.2 输出结果
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 4 您的图书现在还是空的,请添加图书 按回车键返回主程序
1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 1 请输入图书的编号,以0结束 1 请输入图书的价格 11 请输入图书的编号,以0结束 0 1->(重建图书)|2->(显示图书)|3->(插入图书)|4->(删除图书)|5->(图书数目)|Q->(退出) 4 请输入要删除的图书的编号,按0返回 1 操作成功 操作完毕,按会回车间返回主程序
|
2.5 查询图书的数量功能
2.5.1 代码
1 2 3 4 5 6 7 8
| if(str[0]=='5') { cout<<"图书的数目是:"<<getBookNum(head)<<endl<<"按回车键返回主程序"<<endl; cin.get(); cin.get(); system("cls"); goto begin; }
|