图书管理系统(C)陈明明.doc_第1页
图书管理系统(C)陈明明.doc_第2页
图书管理系统(C)陈明明.doc_第3页
图书管理系统(C)陈明明.doc_第4页
图书管理系统(C)陈明明.doc_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

东华理工大学信息工程学院面向对象程序设计课程设计报告图书馆管理系统指导教师: 谢小林 姓名:陈明明学号:201140030117 班级:1140301 20 13 年 1 月 10 日1、 需求分析:建立一个图书馆管理系统,可以处理以下对象图书馆基本信息图书馆的书籍图书馆管理员 读者信息2、 程序的主要功能:1. 查询图书馆的总信息2. 查询图书馆管理员的信息3. 查询图书馆藏书信息4. 存入新书(有管理员加入,需进行身份验证)5. 旧书处理6. 存入新的管理员的信息7. 修改管理员的信息(增加工龄,加薪)8. 两所图书馆的最大藏书量之和9. 根据书名检索书刊信息10. 查询读者的借阅信息11. 查询读者信息(包括借书情况,到期时间,罚款情况。)12.管理员可以修改用户的欠款和交款的金额13.读者氛围学生、研究生和教师。所有学生的租期为1月,所有教师的租期为2月。 三、程序运行平台:软件环境:w7编程软件 VC+6.0运行平台: Win32 硬 件: 普通个人pc机4、 系统总框架图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 setname(char na) 用于设置书名。void setkind(char kin) 用于设置类型。void delbook() 用于删除图书。void addbook(int n,char *na,char *kin) 用于增加图书。void disp() 用于输出图书。6、 模块分析 class BDatabase 图书管理类的设置,实现对图书的添加,查找,删除等。int top; 设置图书记录指针。Book bookMaxb; 设置图书记录(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 bookMaxb; 设置图书记录(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 #include #include #include /输入/输出文件流类using namespace std;const int Maxb=100; /最多可存储的图书class Bookprivate: int tag; /删除标记int num; /图书编号int add; /增加标记char numberStrNum; /编号char nameStrNum; /书名char kindType; /图书类型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 n,char *na,char *kin) /增加图书tag=0;num=n;strcpy(name,na);strcpy(kind,kin);void disp() /输出图书cout.flags (ios:left); /设置对齐的标志位为左coutsetw(15)numsetw(20)namesetw(15)kindendl;/*/class BDatabaseprivate: int top; /图书记录指针Book bookMaxb; /图书记录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() /全删top=-1; int addbook(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.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(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) coutt*n;cout nn;coutttt图 书 管 理 系 统nn;coutttt1 新增图书记录n; coutttt2 更改图书记录n; coutttt3 删除图书记录n;coutttt4 查找图书记录n;coutttt5 显示图书记录n;coutttt6 清空全部记录(慎用)n;coutttt0 退出系统n;cout nn;coutt*n; coutchoice;switch (choice) case 1:cout输入图书编号:bookid;cout输入图书类型:newType; cout输入图书书名:bname;addbook(bookid,bname,newType);break; case 2:cout输入图书编号:bookid;b=query(bookid);if(b=NULL)cout该图书不存在endl; break;cout输入新的书名:bname;b-setname(bname);cout输入新的类型:bkind;b-setkind(bkind); break; case 3: cout读入图书编号:bookid;b=query(bookid);if(b=NULL) cout该图书不存在endl; break;char tg1;cout确定要删除此记录吗?(Y/N)tg1;if(tg1!=n&tg1!=N)b-delbook();cout已成功删除该书记录!endl;break;case 4:cout读入图书编号:bookid;b=query(bookid);if (b=NULL)cout该图书不存在endl;break;coutdisp();break;case 5:cout图书编号 图书名称 图书类型 n;disp();break;case 6: char tg2;cout确定要清空所有记录吗?(Y/N)tg2;if(tg2!=n&tg2!=N)clear(); cout已成功清空记录!endl;break;case 0:break;default:cout输入错误,请从新输入(数字为06):;/main() 函数的实现,程序的主界面的引导void main() char choice;BDatabase BookDB;while(choice!=0) coutt*n; cout nn; coutnnttt欢迎使用图书

温馨提示

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

评论

0/150

提交评论