图书馆管理系统(作业)
来源:互联网 发布:郭靖对杨过的影响知乎 编辑:程序博客网 时间:2024/04/29 20:25
要求:
设计一个程序来管理图书信息,能实现图书相关信息的具备数据的输入、查找、删除等功能,能实现。具体功能细节可以根据自己理解情况进行增加。
【首先说明:部分程序是参考网上的,但总的来说思路还算蛮清晰的!】
主程序设计思路图:
(1)函数的设计:
class BDatabase{} 图书管理类的设置,实现对图书的添加,查找,删除等。
int top; 设置图书记录指针。
Book book[Maxb]; 设置图书记录(Maxb定义为最多可存储的图书数,定义为整形)。
void clear() 清空图书记录。
int addbook(int n,char *na,char *kin) 增加图书记录。
Book *query(int bookid) 查找图书记录。
void bookdata(); 定义图书库。
void disp() 输出。
~BDatabase() 设置析构函数,将book[]写到book.txt文件中
void BDatabase::bookdata() 由此函数开始对图书管理系统的主菜单进行调用与功能的实现。
最后用main() 函数的实现,程序的主界面的引导
数据存放:
char name[StrNum]——用来存放书名
char number[StrNum]——存放图书的编号
char kind[Type]——存放图书类型
int tag——定义删除标记
int num——定义图书标号为整型
int add ——增加标记
Book(){}——无参构造函数,用于为书名和作者姓名设置默认值
char getkind()——用于获取图书类型
char getname()——用于获取书名
intget name()——用于获取图书编号
intgettag()——用于获取删除标志
void setname(char na[])——用于设置书名
void setkind(char kin[])——用于设置类型
void delkind()——用于删除图书
void addbook(int n,char*na,char*kin)——用于增加图书
void disp()——用于输出图书
具体程序如下:/**********图书馆管理系统****************/#define StrNum 20#define Type 20#include <iostream>#include <iomanip>#include <string>#include <fstream> //输入/输出文件流类using namespace std;const int Maxb=100; //最多可存储的图书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[]中{ 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();} void clear() //全删{top=-1;} int 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;}Book *query(int bookid) //查找图书{for (int i=0;i<=top;i++)if (book[i].getnum()==bookid &&book[i].gettag()==0){return &book[i];}return NULL;}void bookdata(); //图书库void disp(){ for (int i=0;i<=top;i++) if (book[i].gettag()==0) book[i].disp();}~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();}};void BDatabase::bookdata(){ char choice;char bname[40];char bkind[40];char newType[20];int bookid;Book *b;while (choice!='0'){ 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<<"请选择(1,2,3,4,5,6,0):";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<<"输入错误,请从新输入(数字为0~6):";}}}//main() 函数的实现,程序的主界面的引导void main(){ char choice;BDatabase BookDB;while(choice!='0'){ 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<<" "<<endl;cout<<" \n\n";cout<<" by: 周武武\n\n\n\n";cout<<"\t******************************************************************\n"; cout<<"\t\t\t1 进 入 系 统\n\n\t\t\t0 离 开"<<endl;cout<<"请选择:";cin>>choice;switch(choice){case '1':BookDB.bookdata();break; case '0': cout<<"\n\n\t\t\t欢迎再次使用图书管理系统\n\n"; break;default:cout<<"输入错误,请从新输入:";}}}
调试运行截图如下:
欢迎界面:
显示所有图书界面:
查找结果:
心得:弄了两三天,上网找资料,找同学讨论,翻看课本相关知识终于在今天调试成功!!但是这只能算作应付之作,我这几天看到有几个同学的作业,感觉自己真的只是学了点皮毛,虽然课程已接近结束,但这C++还得继续学习,勤能补拙!多谢明哥这一学期的辛苦授业!!
- 图书馆管理系统(作业)
- OC作业- 图书馆管理系统
- 图书馆管理系统(初级)
- 图书馆管理系统(文档资料)
- 图书馆管理系统(无界面)
- 图书馆管理系统(C++课程设计)
- 图书馆管理系统
- 图书馆管理系统
- 图书馆管理系统
- 图书馆管理系统
- 图书馆管理系统
- 图书馆管理系统
- 图书馆管理系统
- 图书馆管理系统简介
- 征战图书馆管理系统!
- 小型图书馆管理系统
- 智能图书馆管理系统
- 图书馆管理系统
- #2014 CSDN博文大赛#
- SQL Profiler 使用
- 配置超过254个计算机的局域网
- quick 2.23代码资源加密总结
- [C#]对于INI操作代码
- 图书馆管理系统(作业)
- IOS 关于使用RegexKitLite 的错误 (再之前 CommonUtility.h 需要用到)
- MFC 相关
- Linux 标准目录结构
- PyQt4配置与初学
- 混沌与非线性思维 课程感悟
- linux/进程间通信
- asp.net页面间传值方式
- JAVA线程间的状态转换