图书管理系统
来源:互联网 发布:文华编程简明教程 编辑:程序博客网 时间:2024/06/06 15:50
main.cpp:
#include <iostream>using namespace std;//main() 函数的实现,程序的主界面的引导int main(){char choice;BDatabase BookDB;while(choice!='0'){ jiemian1();cin>>choice;switch(choice){case '1':BookDB.bookdata();break; case '0': cout<<"\n\n\t\t\t欢迎再次使用图书管理系统\n\n"; break;default:cout<<"\n\n\t\t\t输入错误,请从新输入:\n\n";}}return 0;}
book.cpp:
#include "book.h"#include <iostream>using namespace std;int i=0;/********************************************************** 功能描述: 构造函数,将book.txt读到book[]中* 输入参数:* 输出参数:* 返回值 :* 其它说明: BDatabase类中函数************************************************************/BDatabase::BDatabase(){ Book b; top=-1; fstream file("book.txt",ios::in); while (1) { file.read((char *)&b,sizeof(b)); if (!file)break; top++; book[top]=b; } file.close();}/********************************************************** 功能描述: 增加图书* 输入参数:图书编号 类型 书名* 输出参数:* 返回值 :0* 其它说明: BDatabase类中函数************************************************************/int BDatabase::addbook(int n,char *na,char *kin) //增加图书{ Book *p=query(n); if(NULL==p) { top++; book[top].addbook(n,na,kin); return 1; } return 0;}/********************************************************** 功能描述: 查找图书* 输入参数:图书编号* 输出参数:图书名称和图书类型* 返回值 :NULL* 其它说明: BDatabase类中函数************************************************************/Book* BDatabase::query(int bookid) //查找图书{ for (int i=0; i<=top; i++) if (book[i].getnum()==bookid &&book[i].gettag()==0) { return &book[i]; } return NULL;}/********************************************************** 功能描述: 显示函数* 输入参数:* 输出参数:* 返回值 :* 其它说明: BDatabase类中函数************************************************************/void BDatabase:: disp(){ for (int i=0; i<=top; i++) if (book[i].gettag()==0) book[i].disp();}/********************************************************** 功能描述: 析构函数* 输入参数:* 输出参数:* 返回值 :* 其它说明: BDatabase类中函数************************************************************/BDatabase::~BDatabase() //析构函数,将book[]写到book.txt文件中{fstream file("book.txt",ios::out); for (int i=0;i<=top;i++)if (book[i].gettag()==0)file.write((char *)&book[i],sizeof(book[i]));file.close();}/********************************************************** 功能描述: 实现菜单选择功能* 输入参数: 1~6* 输出参数: 各个分块功能函数* 返回值 : 各个分块功能函数结果* 其它说明:************************************************************/void BDatabase::bookdata(){ char choice; char bname[40]; char bkind[40]; char newType[20]; int bookid; Book *b; while (choice!='0') { jiemian2(); cin>>choice; switch (choice) { case '1': cout<<"输入图书编号:"<<endl; cin>>bookid; cout<<"输入图书类型:"<<endl; cin>>newType; cout<<"输入图书书名:"<<endl; cin>>bname; addbook(bookid,bname,newType); break; case '2': cout<<"输入图书编号:"<<endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } cout<<"输入新的书名:"<<endl; cin>>bname; b->setname(bname); cout<<"输入新的类型:"<<endl; cin>>bkind; b->setkind(bkind); break; case '3': cout<<"读入图书编号:"<<endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<<"该图书不存在"<<endl; break; } char tg1; cout<<"确定要删除此记录吗?(Y/N)"<<endl; cin>>tg1; if(tg1!='n'&&tg1!='N') { b->delbook(); cout<<"已成功删除该书记录!"<<endl; break; } case '4': cout<<"读入图书编号:"<<endl; cin>>bookid; b=query(bookid); if (b==NULL) { cout<<"该图书不存在"<<endl; break; } cout<<"图书编号 图书名称 图书类型 \n"; b->disp(); break; case '5': cout<<"图书编号 图书名称 图书类型 \n"; disp(); break; case '6': char tg2; cout<<"确定要清空所有记录吗?(Y/N)"<<endl; cin>>tg2; if(tg2!='n'&&tg2!='N') { clear(); cout<<"已成功清空记录!"<<endl; break; } case '0': break; default: cout<<"\n\n\t\t\t输入错误,请从新输入(数字为0~6):\n\n"; } }}/********************************************************** 功能描述: 开始引导界面* 输入参数: 无* 输出参数: 界面* 返回值 : 无* 其它说明:************************************************************/void jiemian1(){ cout<<"\t******************************************************************\n"; cout<<" \n\n"; cout<<"\n\n\t\t\t欢迎使用图书管理系统\n\n"; cout<<endl<<endl<<"\t\t\t图 书 管 理 系 统\n\n\n\n"; cout<<setw(83)<<"by (姓名——李艺)\n\n\n\n"; cout<<" \n\n"; cout<<"\t******************************************************************\n"; cout<<"\t\t\t1 进 入 系 统\n\n\t\t\t0 离 开"<<endl; if(i==0) { cout<<"请选择: "; i++; } else { cout<<"请从新输入:"; i--; }}/********************************************************** 功能描述: 菜单界面* 输入参数: 无* 输出参数: 界面* 返回值 : 无* 其它说明:************************************************************/void jiemian2(){ cout<<"\t******************************************************************\n"; cout<<" \n\n"; cout<<"\t\t\t图 书 管 理 系 统\n\n"; cout<<"\t\t\t1 新增图书记录\n"; cout<<"\t\t\t2 更改图书记录\n"; cout<<"\t\t\t3 删除图书记录\n"; cout<<"\t\t\t4 查找图书记录\n"; cout<<"\t\t\t5 显示图书记录\n"; cout<<"\t\t\t6 清空全部记录(慎用)\n"; cout<<"\t\t\t0 退出系统\n"; cout<<" \n\n"; cout<<"\t******************************************************************\n"; cout<<"请选择:";}
book.h:
#define StrNum 20#define Type 20#include <iomanip>#include <string.h>#include <fstream> //输入/输出文件流类#include <iostream>using namespace std;const int Maxb=100; //最多可存储的图书void jiemian1();void jiemian2();class Book{private: int tag; //删除标记 int num; //图书编号 int add; //增加标记 char number[StrNum]; //编号 char name[StrNum]; //书名 char kind[Type]; //图书类型public: Book() {} char getkind() //获取图书类型 { return kind[Type]; } char getname() //获取书名 { return name[StrNum]; } int getnum() //获取图书编号 { return num; } int gettag() //获取删除标记 { return tag; } void setname(char na[]) //设置书名 { strcpy(name,na); } void setkind(char kin[]) //设置类型 { strcpy(kind,kin); } void delbook() //删除图书 { tag=1; } void addbook(int n,char *na,char *kin) //增加图书 { tag=0; num=n; strcpy(name,na); strcpy(kind,kin); } void disp() //输出图书 { cout.flags (ios::left); //设置对齐的标志位为左 cout<<setw(15)<<num<<setw(20)<<name<<setw(15)<<kind<<endl; }};/*****************************************************************************************/class BDatabase{private: int top; //图书记录指针 Book book[Maxb]; //图书记录public: BDatabase(); //构造函数,将book.txt读到book[]中 void clear() { top=-1; //全删 } int addbook(int ,char *,char *); //增加图书 Book *query(int ); //查找图书 void bookdata(); //图书库 void disp(); ~BDatabase(); //析构函数,将book[]写到book.txt文件中};
0 0
- 图书管理系统论文
- 图书管理系统(1)
- 图书管理系统(2)
- 图书管理系统(3)
- java-图书管理系统
- 图书管理系统
- 图书管理系统
- 简单图书管理系统
- 图书管理系统
- 图书管理系统
- 图书仓库管理系统
- 《图书管理系统》毕业论文
- 图书管理系统
- 图书管理系统
- 图书管理系统
- 图书管理系统
- 图书管理系统
- 图书管理系统
- D3学习记录之简单动画
- 单例模式(Singleton)
- C# List根据值找到索引值方法
- mybatis 参数
- STL中next_permutation用法小结和小技巧总结与原理。
- 图书管理系统
- JS控制iFrame切换加载不同网页内容
- ArcEngine 无法将类型为"Systerm._ComObject"的对象强制转换为类型******
- stty 命令说明及使用讲解
- Ehcache(01)——简介、基本操作
- php5中public,private,protected 三种类属性的区别
- Mybatis - 查询缓存(一级缓存,二级缓存,与ehcache整合)
- Java基础创建文件及目录
- 快速定位死循环位置