图书管理系统(C)1_第1页
图书管理系统(C)1_第2页
图书管理系统(C)1_第3页
图书管理系统(C)1_第4页
图书管理系统(C)1_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、. . . . 一、需求分析图书馆是目前生活中除了网络外的另一个获取知识的重要场所。利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规化和自动化,为图书管理提供便利。同时也为学生借阅和还还图书带来了方便,提高了效率。而且开发此程序并不需要很高的造价,因此有很高的可行性。二、系统主要功能系统主要功能:图书管理(添加 编辑 删除)、追加图书信息、补充 修改相关信息、有良好的人机界面、支持多条件管理 、查询、删除数据方便简单、数据稳定性好;添加删除功能:能根据图书的变动情况,添加删除记录;查询功能:能根据编号和书名进行查询;编辑功

2、能:根据查询对相应的记录进行修改,并存储;保存功能:能对输入的数据进行相应的存储,要求重载插入和提取符以完成数据的保存和打开。系统主要目标:建立图书管理系统,采用计算机对学生图书进行管理,进一步提高办学效益和现代化水平;改善图书查询手段;提高工作效率,减轻劳动强度;提高信息处理速度和准确性;提高系统安全性 、可靠性 、可控性;具有较高的运行性;提供准确的查询信息;具有较强的可维护性;实现图书信息管理工作流程的系统化、规化和自动化。三、流程图主程序设计如图所示:四、数据结构设计这个系统用的数据类型有整型,字符型。主要是运用到类和对象,还有带参数的构造函数以与析构函数以与数组来实现本程序,并在主函

3、数对各个功能模块就行调用。5、 类设计Book类的设计:(1)数据成员char nameStrNum; 用来存放书名。char numberStrNum; 用来存放图书的编号。char kindType; 用来存放图书的类型。int tag; 定义删除标记。int num; 定义图书编号为整形。int add; 增加标记。(2)函数成员Book() 无参构造函数,用于为书名和作者设置默认值。char getkind() 用于获取图书类型。 char getname() 用于获取书名。int getnum() 用于获取图书编号。 int gettag() 用于获取删除标记。void setnam

4、e(char na) 用于设置书名。void setkind(char kin) 用于设置类型。void delbook() 用于删除图书。void addbook(int n,char *na,char *kin) 用于增加图书。void disp() 用于输出图书。六、主要算法设计class BDatabase 图书管理类的设置,实现对图书的添加,查找,删除等。class int top; 设置图书记录指针。Book bookMaxb; 设置图书记录(Maxb定义为最多可存储的图书数,定义为整形)。BDatabaseprivate: int top; /图书记录指针Book bookMax

5、b; /图书记录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+;booktop=b;file.close(); void clear() 清空图书记录。int addbook(int n,char *na,char *kin) 增加图书记录。Book *query(int bookid) 查找图书记录。Book *que

6、ry(int bookid) /查找图书for (int i=0;i<=top;i+)if (booki.getnum()=bookid &&booki.gettag()=0)return &booki;return NULL;void bookdata(); 定义图书库。void disp() 输出。BDatabase() 设置析构函数,将book写到book.txt文件中void BDatabase:bookdata() 由此函数开始对图书管理系统的主菜单进行调用与功能的实现。(界面参看执行界面部分)最后用main() 函数的实现,程序的主界面的引导七、主要代

7、码#define StrNum 20#define Type 20#include <iostream>#include <iomanip>#include <string>#include <fstream> /输入/输出文件流类using namespace std;const int Maxb=100; /最多可存储的图书class Bookprivate: int tag; /删除标记int num; /图书编号int add; /增加标记char numberStrNum; /编号char nameStrNum; /书名char kin

8、dType; /图书类型public:Book()char getkind() /获取图书类型return kindType; char getname() /获取书名 return nameStrNum; 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

9、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 BDatabaseprivate: int top; /图书记录指针Book bookMaxb; /图书记录public:BDataba

10、se() /构造函数,将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+;booktop=b;file.close(); void clear() /全删top=-1; int addbook(int n,char *na,char *kin) /增加图书Book *p=query(n);if(NULL=p)top+;booktop.addbook(n,na,kin);re

11、turn 1;return 0;Book *query(int bookid) /查找图书for (int i=0;i<=top;i+)if (booki.getnum()=bookid &&booki.gettag()=0)return &booki;return NULL;void bookdata(); /图书库void disp() for (int i=0;i<=top;i+) if (booki.gettag()=0) booki.disp();BDatabase() /析构函数,将book写到book.txt文件中fstream file(&q

12、uot;book.txt",ios:out); for (int i=0;i<=top;i+)if (booki.gettag()=0)file.write(char *)&booki,sizeof(booki);file.close();void BDatabase:bookdata() char choice;char bname40;char bkind40;char newType20;int bookid;Book *b;while (choice!='0') cout<<"t*n"cout<<&qu

13、ot; nn"cout<<"ttt图 书 管 理 系 统nn"cout<<"ttt1 新增图书记录n" cout<<"ttt2 更改图书记录n" cout<<"ttt3 删除图书记录n"cout<<"ttt4 查找图书记录n"cout<<"ttt5 显示图书记录n"cout<<"ttt6 清空全部记录(慎用)n"cout<<"ttt0 退出系

14、统n"cout<<" nn"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<<"

15、;输入图书书名:"<<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-&

16、gt;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<<"确定要删除此记录

17、吗?(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<<"该图书不存在"<<

18、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<&l

19、t;"已成功清空记录!"<<endl;break;case '0':break;default:cout<<"输入错误,请从新输入(数字为06):"/main() 函数的实现,程序的主界面的引导void main() char choice;BDatabase BookDB;while(choice!='0') cout<<"t*n" cout<<" nn" cout<<"nnttt欢迎使用图书管理系统nn&quo

20、t;cout<<endl<<endl<<"ttt图 书 管 理 系 统nnnn"cout<<setw(83)<<"by ()nnnn"cout<<" nn"cout<<"t*n"cout<<"ttt1 进 入 系 统nnttt0 离 开"<<endl;cout<<"请选择:"cin>>choice;switch(choice)case '1':BookDB.bookdata();break; case '0': cout<<"nnttt欢迎再次使用图书管理系统nn" break;default:cout<<"输入错误,请从新输入:"八、系统运行结果样例九、结束语 本系统实现了图书管理系统的典型功能,包括查询所有记

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论