课程设计.图书信息管理系统
2015-07-07 08:10
447 查看
/****************库函数的调用************************************/ #include<string> #include<iostream> #include<fstream> #include<iomanip> using namespace std; /**********************定义全局变量****************************/ #define N 100 //宏替换 void menu();//显示菜单 string p;//p作为接收菜单选项的字符串 void domain(); /********************自定义结构体图书管理**************************/ class book { private: string name, date,author,address;//名字、出版日期、作者、存放地址 public: book(){} ~book(){} friend class Information; }; /******************覆盖*******************************************/ class Information { private: book book1 ; int NUM;//用来计算图书数目 public: Information() { NUM = 0; } void search(); //查找图书信息 void write(); //录入图书信息 void delet(); //删除图书信息 void show(); //显示图书信息 void save();//图书信息以文件形式保存 }; /*****************************菜单函数*******************************/ void menu() { system("cls"); cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"; cout << "┃**************** ☆ 图 书 信 息 管 理 系 统 ☆ ****************** ┃"; cout << "┃********** ★★★★★ ★★★★★★★ ★★★★★ *********** ┃"; cout << "┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫"; cout << "┃****************★ ☆ 1.录入图书信息 ☆ ★****************┃"; cout << "┃****************★ ☆ 2.删除图书信息 ☆ ★****************┃"; cout << "┃****************★ ☆ 3.查找图书信息 ☆ ★****************┃"; cout << "┃****************★ ☆ 4.显示图书信息 ☆ ★****************┃"; cout << "┃****************★ ☆ 5.文件保存信息 ☆ ★****************┃"; cout << "┃****************★ ☆ 0.安全退出系统 ☆ ★****************┃"; cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"; cout << " 请输入您的选择(0--5):"; cout << endl; } void Information::write()//图书信息录入函数实现 { char a; do { NUM++; cout << "\n请输入第" << NUM << "个图书信息:\n"; cout << "\t名字:"; cin >> book1[NUM].name; cout << "\t出版日期:"; cin >> book1[NUM].date; cout << "\t作者:"; cin >> book1[NUM].author; cout << "\t存放地址:"; cin >> book1[NUM].address; cout << "是否要继续录入图书信息(Y/N):"; cin >> a; } while (a == 'Y' || a == 'y'); } void Information::show()//图书信息显示函数实现 { if (NUM <= 0) { cout << "没有图书信息存入,系统将返回主菜单" << endl; menu(); } else cout << "已保存的图书信息如下:" << endl; cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl; for (int i = 1; i <= NUM; i++) cout << setw(10) << book1[i].name << setw(10) << book1[i].date << setw(10) << book1[i].author << setw(10) << book1[i].address << endl; } void Information::delet()//图书信息删除函数实现 { char a; string b; do { cout << "请你输入要删除信息的图书名字: "; cin >> b; int n = 1, m; int flag = 1; while (flag) { for (; n <= NUM; n++) { if (b == book1 .name) { flag = 0; m = n; break; } } if (flag) { cout << "不存在此图书,请重新输入:"; n = 0; cin >> b; } } cout << "图书信息如下:" << endl; cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl; cout << setw(10) << book1[m].name << setw(10) << book1[m].date << setw(10) << book1[m].author << setw(10) << book1[m].address << endl; cout << endl; cout << "是否确认删除该图书信息(Y/N):"; cin >> a; if (a == 'Y' || a == 'y') { cout << "删除成功!" << endl; for (int j = m; j < NUM; j++) book1[j] = book1[j + 1]; NUM--; break; } else break; } while (a == 'n' || a == 'N'); } void Information::search() { int y; cout << "┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓"; cout << "┃****************★ ☆ 1.作者查找信息 ☆ ★****************┃"; cout << "┃****************★ ☆ 2.姓名查找信息 ☆ ★****************┃"; cout << "┃****************★ ☆ 0.立即返回菜单 ☆ ★****************┃"; cout << "┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛"; cout << "输选择(0-2):"; cin >> y; while (y<0 || y>2) { cout << "输入有误,请重新输入:"; cin >> y; } if (y == 1) { string num2; cout << "请输入要查询的图书的作者:"; cin >> num2; int j = 1, k; int flag = 1; while (flag) { for (; j <= NUM; j++) { if (num2 == book1[j].author) { flag = 0; k = j; cout << "图书信息如下:" << endl; cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl; cout << setw(10) << book1[k].name << setw(10) << book1[k].date << setw(10) << book1[k].author << setw(10) << book1[k].address << endl; break; } } if (flag) { flag = 0; cout << "不存在此图书\n返回主菜单" << endl; break; } } } else if (y == 2) { string name2; cout << "请输入要查询的图书的名字:"; cin >> name2; int j2 = 1, k2; int flag2 = 1; while (flag2) { for (; j2 <= NUM; j2++) { if (name2 == book1[j2].name) { flag2 = 0; k2 = j2; cout << "图书信息如下:" << endl; cout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl; cout << setw(10) << book1[k2].name << setw(10) << book1[k2].date << setw(10) << book1[k2].author << setw(10) << book1[k2].address << endl; break; } } if (flag2) { flag2 = 0; cout << "不存在此图书!!\n返回主菜单" << endl; break; } } } else if (y == 0) { }; } void Information::save()//图书信息文件保存函数实现 { if (NUM <= 0) { cout << "没有图书信息存入,系统将返回主菜单" << endl; menu(); } else { ofstream fout; fout.open("D:\\Book.txt", ios::out); cout << "文件正在保存......请稍候!!" << endl; cout << "数据保存成功!!!" << endl; fout << "已保存图书信息如下:" << endl; fout << setw(10) << "名字" << setw(10) << "出版日期" << setw(10) << "作者" << setw(10) << "存放地址" << endl; for (int i = 1; i <= NUM; i++) fout << setw(10) << book1[i].name << setw(10) << book1[i].date << setw(10) << book1[i].author << setw(10) << book1[i].address << endl; fout.close(); } } void domain()//主菜单函数实现 { Information w; while (1) { system("cls"); menu(); int i; cin >> i; while (!(i >= 0 && i <= 5)) { cout << "输入有误,请重新输入:" << endl; cin >> i; } switch (i) { case 1: w.write(); break; case 2: w.delet(); break; case 3: w.search(); break; case 4: w.show(); break; case 5: w.save(); break; case 0: cout << "系统退出!!" << endl; exit(0); default: break; } cout << "是否返回主菜单? Y/N" << endl; cin >> p; if (p == "n" || p == "N") { cout << "系统退出!!" << endl; exit(0); } } } int main() { domain(); return 0; }
相关文章推荐
- Use appropriate component from RM component palette
- [游戏安全] Unity3D游戏无意中的发现
- linux实训
- poj 1941 The Sierpinski Fractal 递归
- 小暑7/7食谱
- SQL Server 2014如何提升非在线的在线操作
- c++ 简单的异常
- C++中各种<string,T>关联方式的速度对比
- github常用操作
- Django模块笔记【六】
- tomcat7.0账号密码配置教程
- 14.5粒子系统的实战
- 安装 gevent linux
- Oracle数据库中的分页--rownum
- 操作系统中栈和堆的区别
- C语言实现单链表相关操作
- 创建自定义的Middleware中间件
- 百度图片搜索开放广告 不用研究百度收录规则了
- ajax核心技术1---XMLHttpRequset对象的使用
- ERP导入已成服装企业必然趋势