1、(至少一种查询方式)算法 6.按书名查询7.按作者名查询8.图书信息的删除与修改(可选项) 三.概要设计1、类的设计、Book类的设计(内部函数流程图):、BDatabase类的设计:、主函数流程图:4多态的实现class People public: virtual void card()coutcard peopleendl; class Student:public People public: virtual void card()coutcard student ;四、详细设计:#define StrNum 20#define Type 20#include iomanipstrin
2、gfstream /输入/输出文件流类using namespace std;const int Maxb=100; /最多可存储的图书class Bookprivate: int lab; /删除标记 int num; /图书编号 int add; /增加标记 char numberStrNum; /编号 char booknameStrNum; /书名 char bookkindType; /图书类型 Book() char getkind() /获取图书类型 return bookkindType; char getname() /获取书名 return booknameStrNum;
3、int getnum() /获取图书编号 return num; int getlab() /获取删除标记 return lab;void setname(char na) /设置书名 strcpy(bookname,na); void setkind(char kin) /设置类型 strcpy(bookkind,kin); void delbook() /删除图书 lab=1; void addbook(int n,char *na,char *kin) /增加图书 lab=0; num=n; void disp() /输出图书 cout.flags (ios:left); /设置对齐的标
4、志位为左 coutsetw(15)numsetw(20)booknamebookkind class BDatabase int top; Book bookMaxb; /图书记录 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() /全删 top=-1; int addbook(
5、int n,char *na,char *kin) /增加图书 Book *p=query(n); if(NULL=p) top+; booktop.addbook(n,na,kin); return 1; return 0; Book *query(int bookid) /查找图书 for (int i=0;i=top;i+) if (booki.getnum()=bookid &booki.getlab()=0) return &booki; return NULL; void disp() /图书库 for (int i=0; if (booki.getlab()=0) booki.d
6、isp(); BDatabase() /析构函数,将book写到book.txt文件中,实现文本的写入 fstream file(out); if (booki.getlab()=0) file.write(char *)&booki,sizeof(booki);void main() BDatabase BookDB; char choice; char bname40; char bkind40; char newType20; int bookid; Book *b; while (choice!=0) coutchoice; switch (choice) case 1 coutboo
7、kid;输入图书类型:newType;输入图书书名:bname; BookDB.addbook(bookid,bname,newType); break;2 b=BookDB.query(bookid); if(b=NULL) coutsetname(bname);输入新的类型:bkind;setkind(bkind);3读入图书编号: cin b=BookDB.query(bookid); if(b=NULL) break; char tg1;确定要删除此记录吗?(Y/N)tg1; if(tg1!ntg1!N b-delbook();已成功删除该书记录! case 4 if (b=NULL)
8、 图书编号 图书名称 图书类型 ndisp();5 b-6 char tg2;确定要清空所有记录吗?tg2; if(tg2!tg2! BookDB.clear();已成功清空记录! default:coutcard(); ref.card(); 五.用户使用说明本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用在主函数中实现。但在记录查询上仍有缺陷,有待于完善。六、实验心得:1、通过实验加深了对c+的了解,在程序设计上提高了自己的动手能力,在实践中增强了自己的编程水平。2、但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。3、而且通过这次课程设计,我培养了自己对C+编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。欢迎您的下载,资料仅供参考!致力为企业和个人提供合同协议,策划案计划书,学习资料等等打造全网一站式需求
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1