图书管理系统(C+).doc
《图书管理系统(C+).doc》由会员分享,可在线阅读,更多相关《图书管理系统(C+).doc(17页珍藏版)》请在咨信网上搜索。
<p>图书管理系统(C++)陈明明 ———————————————————————————————— 作者: ———————————————————————————————— 日期: 17 个人收集整理 勿做商业用途 东华理工大学信息工程学院 《面向对象程序设计》课程设计报告 图书馆管理系统 指导教师: 谢小林 姓名:陈明明 学号:201140030117 班级:1140301 20 13 年 1 月 10 日 一、 需求分析: 建立一个图书馆管理系统,可以处理以下对象 .图书馆基本信息 .图书馆的书籍 .图书馆管理员 .读者信息 二、 程序的主要功能: 1. 查询图书馆的总信息 2. 查询图书馆管理员的信息 3。 查询图书馆藏书信息 4。 存入新书(有管理员加入,需进行身份验证) 5. 旧书处理 6. 存入新的管理员的信息 7。 修改管理员的信息(增加工龄,加薪) 8。 两所图书馆的最大藏书量之和 9. 根据书名检索书刊信息 10. 查询读者的借阅信息 11。 查询读者信息(包括借书情况,到期时间,罚款情况.) 12.管理员可以修改用户的欠款和交款的金额 13。读者氛围学生、研究生和教师。所有学生的租期为1月,所有教师的租期为2月。 三、程序运行平台: 软件环境:w7 编程软件 VC++6。0 运行平台: Win32 硬 件: 普通个人pc机 四、 系统总框架图 五、 程序类的说明: 类的设计 Book类的设计: (1)数据成员 char name[StrNum]; 用来存放书名。 char number[StrNum]; 用来存放图书的编号。 char kind[Type]; 用来存放图书的类型。 int tag; 定义删除标记。 int num; 定义图书编号为整形。 int add; 增加标记。 (2)函数成员 Book(){} 无参构造函数,用于为书名和作者姓名设置默认值。 char getkind() 用于获取图书类型. char getname() 用于获取书名。 int getnum() 用于获取图书编号。 int gettag() 用于获取删除标记。 void setname(char na[]) 用于设置书名。 void setkind(char kin[]) 用于设置类型。 void delbook() 用于删除图书。 void addbook(int n,char *na,char *kin) 用于增加图书。 void disp() 用于输出图书。 六、 模块分析 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() 函数的实现,程序的主界面的引导 七、比较有特色的函数 class BDatabase{} 图书管理类的设置,实现对图书的添加,查找,删除等。 int top; 设置图书记录指针。 Book book[Maxb]; 设置图书记录(Maxb定义为最多可存储的图书数,定义为整形)。 void BDatabase::bookdata() 由此函数开始对图书管理系统的主菜单进行调用与功能的实现。(界面参看执行界面部分) 八、存在的不足与对策 使用多关键字进行查询时,我是使用以下语句:if(bname!=null) {sqlStr+=”and Bname like ' %"+bname+”% ’”; },实现判断是否为空,从而利用给进条件实现查询,粗看之下并没有什么错误,但是在运行是却出现了异常,在找了很久被找出错误之后,我开始考虑是否是语法错误,而是使用MySQL的命令行模式来进行调试,在MySQL命令行中运行时却并没有出现错误,完全正确的查询出我想要的结果,在试了很久之后,终于发现了上面的语句有两个小的细节错误,第一个错误就是"and Bname这里没有空格,正确格式应该是" and Bname,第二个错误是’ %"+bname+”% '”中含有多余的空格,正确答案是'%"+bname+”%'”;两个错误都是由于空格引起的,一个是少了空格,另一个是含有多余的空格。 九、程序源代码 #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<〈 cin="">>choice; switch (choice) { case '1’: cout〈〈"输入图书编号:”〈〈endl; cin>〉bookid; cout〈〈"输入图书类型:”〈</p><endl;>newType; cout〈〈”输入图书书名:"<〈endl;>bname; addbook(bookid,bname,newType); break; case '2': cout〈〈”输入图书编号:”〈〈endl; cin>>bookid; b=query(bookid); if(b==NULL) { cout<〈"该图书不存在"〈〈endl; break; } cout<〈”输入新的书名:”<〈endl;>bname; b—>setname(bname); cout<〈”输入新的类型:”〈〈endl;>bkind; b-〉setkind(bkind); break; case ’3': cout<<”读入图书编号:”〈<endl; cin〉〉bookid; b=query(bookid); if(b==NULL) { cout〈<”该图书不存在”<<endl; break; } char tg1; cout<〈”确定要删除此记录吗?(y>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<<"图书编号 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〈<setw(83)〈<"by (姓名——)\n\n\n\n"; cout<〈” \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〈〈"输入错误,请从新输入:"; } } } <!--<”请选择:”;--></endl;><!--<"图书编号--><!--〈endl;--><!--〈”确定要删除此记录吗?(y--><!--〈”输入新的类型:”〈〈endl;--><!--〈”输入新的书名:”<〈endl;--><!--〈endl;--></endl;><!--〈-->- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书 管理 系统 明明
咨信网温馨提示:
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【精***】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【精***】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。
关于本文