




免费预览已结束,剩余35页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
图书管理系统是典型的信息管理系统(MIS)的实现与开发摘 要图书管理系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。采用C+作为开发工具,通过对C+进行深入的学习和应用,主要完成利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规范化和自动化,为图书管理提供便利。同时是学习完面向对象程序设计课程后进行的一次全面的综合练习。有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。关键字:图书管理系统;C+;信息管理系统 AbstractBooks management system management system is the typical information management system (MIS), its development mainly includes the setting and maintenance of database and the programming of the frontend application. The former required establish data consistency and integrality, data security good storehouse. For the latter requires the application program function complete, easy to use, etc. Using c + + as development tools through in-depth study of c + + and applications, mainly completes use books management system management system of book records, including new unified management, change book record books record, delete, realize functions such as book record books management work of the systematic, standardization and automation, provides the convenience for the books management. Meanwhile is after studying the object-oriented program design course of time after comprehensive practice. Help deepen our understanding of the object-oriented programming basic theory and basic knowledge understanding, cultivate the practice ability, promoting the combination of theory with practice. Key word: books management system management system;c + +; information management system Written by:Li Yudan Supervised by:Miao Xiufen目 录1 需求分析 11.1 程序运用的平台 12 整体设计 22.1 书库管理模块 22.2 获取图书信息22.3 设置图书信息32.4 删除图书42.5 添加图书42.6 借书 42.7 还书 52.8显示图书状态 52.9查找图书 52.10读者管理模块 73 详细设计93.1 程序的主要功能 93.2 程序流程图94 调试与测试 104.1 调试测试结果 104.2 存在的不足与对策、编程体会 145 总结15 6 致谢167 参考文献178 附录181 需求分析一直以来人们使用传统的人工方式管理图书馆的日常工作,对于图书馆的借书和还书过程,想必大家都已很熟悉。在计算机尚未在图书馆广泛使用之前,借书和还书过程主要依靠手工。 以上所描述的手工过程的不足之处显而易见,首先处理借书、还书业务流程的效率很低,其次处理能力比较低,一段时间内,所能服务的读者人数是有限的。利用计算机来处理这些流程无疑会极大程度地提高效率和处理能力。我们将会看到排队等候借书、还书的队伍不再那么长,工作人员出错的概率也小了,读者可以花更多的时间在选择书和看书上。 为方便对图书馆书籍、读者资料、借还书等进行高效的管理,特编写本程序以提高图书馆的管理效率。使用该程序之后,工作人员可以查询某位读者的借阅情况,还可以对当前图书馆内图书进行查看,新书上架,旧书下架,删除所有信息等操作。本次作业设计题目:“图书管理系统”主要目的是利用数据库软件编制一个管理软件,用以实现图书、读者以及日常工作等多项管理。图书管理系统是一种基于集中统一规划的数据库数据管理新模式。在对图书、读者的管理,其实是对图书、读者数据的管理。本系统的建成无疑会为管理者对图书管理系统提供极大的帮助1.1 程序运行平台VC+ 6.0具体操作如下:该程序是用VC+6.0制做的,使用Microsoft Visual C+ 6.0运行该程序,具体操作是:打开Microsoft Visual C+ 6.0,菜单栏里点文件打开工作区找到“学生成绩管理系统.dsw”这个文件打开,或者在资源管理器中双击该文件,此时,VC+6.0会自动打开,并载入该系统相关资源,点击Run命令菜单或者或用快捷键Ctrl+F5运行该程序。另需要在ODBC中增加名为LibraryDB的图书管理系统的数据源。2 整体设计2.1 图书管理模块该模块实现图书信息的管理,如图书上架、旧书下架、图书查找、图书信息更新、删除所有图书信息。2.1.1 图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能private: int tag; /int no; /图书编号char name20; /书名 char author20;/作者char cbs20; /出版社int cbtime;/出版时间double bookprice;/图书价格int onshelf; /是否再架 1:再架 2:已借出 public: Book(); char *getname()2.1.2 图书库类,实现对图书的维护,查找,删除等class BDatabase /图书库类,实现对图书的维护,查找,删除等 private: int top; /图书记录指针Book bookMaxb; /图书记录public: 2.2 获取图书信息char *getname() /获取书名 return name; char *getauthorname()/获取作者名 return author; char *getcbsname()/获取出版社名 return cbs; int getcbtime()/获取出版时间return cbtime;double getbookprice()/获取图书价格return bookprice;int getno()/获取图书编号 return no; int gettag()/获取删除标记 return tag; 2.3 设置图书信息void setname(char na)/设置书名 strcpy(name,na); void setauthorname(char aa)/设置作者名strcpy(author,aa);void setcbs(char ca)/设置出版社strcpy(cbs,ca);void setcbtime(int time) /设置时间 cbtime=time; void setbookprice(double price)/设置图书价格 bookprice=price;void setonshelf(int oa) onshelf=oa; 2.4 删除图书void delbook()/删除图书char i;cout确定删除吗?Y/N ?i;if(i=y|i=Y) tag=1; 2.5 添加图书void addbook(int n,char *na,char *aa,char *ca,int time,double price,int oa) /增加图书 tag=0; no=n; strcpy(name,na); strcpy(author,aa); strcpy(cbs,ca); cbtime=time; bookprice=price; onshelf=oa; 2.6 借书int borrowbook() /借书操作 if (onshelf0) onshelf-; return 1; return 0; 2.7 还书void retbook()/还书操作 onshelf+; 2.8 显示图书状态void disp() /输出图书 coutsetw(6)nosetw(10)namesetw(10)authorsetw(10)cbssetw(15)cbtimesetw(15)bookpricesetw(10)onshelfendl; ; 2.9 查找图书Book *query1(int bookid) /按编号查找图书 for(int i=0;i=top;i+) if(booki.getno()=bookid &booki.gettag()=0) return &booki; return NULL; Book *query2(char a) /按书名查找图书 Book *e; int r=0; for(int i=0;i=top;i+) if(strcmp(booki.getname(),a)=0 &booki.gettag()=0) if(r=0) coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); r+; if(r=0) cout找不到该书!endl; return NULL; Book *query3(char a) /按作者查找图书 Book *e; int r=0; for(int i=0;i=top;i+) if(strcmp(booki.getauthorname(),a)=0 &booki.gettag()=0) if(r=0) coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); r+; if(r=0) cout找不到该书!endl; return NULL; Book *query4(char a) /按出版社查找图书 Book *e; int r=0; for (int i=0;i=top;i+) if (strcmp(booki.getcbsname(),a)=0 &booki.gettag()=0) if(r=0)coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); r+; if(r=0) cout找不到该书!endl; return NULL; 2.10 读者管理模块class Reader/读者的信息描述 private: int tag; /删除标记 1表示已删 0表示未删 int no; /读者编号char name20; /读者姓名 int borbookMaxbor; /所借图书 public: Reader() /构造函数 ; 2.10.1 获取读者信息char *getname() /获取姓名 return name; int gettag() /获取删除标记 return tag; int getno() /获取读者编号 return no; 2.10.2 设置读者信息void setname(char na) /设置姓名 strcpy(name,na); void delbook() /设置删除标记 1:已删 0:未删 char i;cout确定删除吗?Y/N ?i;if(i=y|i=Y) tag=1; 2.10.3 添加读者信息void addreader(int n,char *na) /增加读者 tag=0; no=n; strcpy(name,na); for(int i=0;iMaxbor;i+) borbooki=0; 3 详细设计3.1 程序的主要功能通过一个conio类对图书馆书籍进行管理。通过这个管理功能实现对学校书库中书籍数据的输入输出。比如增添某些书籍,删除某些书籍等操作。通过fstream类对图书数据的读取,写入进行管理。比如读者借书时显示所有图书信息,以及还书时的某些操作。3.2 程序流程图开始菜单管理员菜单读者菜单添 删加 除图 图书 书添 删加 除读 读者 者借 还 查 查 看 看 所 自 有 身 图 信书 书 书 息 读者管理员图书维护读者维护后退后退后退后退后退4 调试与测试4.1 调试测试结果4.1.1 开始运行4.1.2 添加图书4.1.3 更改图书信息4.1.4 删除图书4.1.5 查找图书4.1.6 显示图书状态4.1.7 全部删除4.1.8 返回4.2 存在的不足与对策、编程体会 因为掌握的知识有限没能实现自动读取当前日期为借书日期并进行系统自行累加实现还书日期自动生成功能 通过编写图书管理系统,我体会到了一个系统应该作为一个整体来看待,系统具有牵一发而动全身的特性,某一个模块的一个小小错误都可能导致系统其他模块功能的丧失甚至是崩溃,同时在编程时应该按照模块来编写,一个模块实现一个功能,这样在调试的时候就方便检查,还有一个程序写完了,不是真正的结束,还需要不断地调试不断地修改程序中的错误。在编程中出现了一个致命的错误:我在程序中定义了几个函数但是忘记了使用引用导致了最后编译是出现了重大错误,经过好几个小时的仔细排查终于找到了问题所在。 所以此次编程我最大的一个收获是:仔细研究每一个函数的定义,不要出现定义中形参缺少或者实参形参形式不符出现的错误5 总结本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,而且具有较高的安全性。但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。而且通过这次课程设计,我培养了自己对C+编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。大一的课程即将结束,程序设计课程设计开始了,但是我发现它并没有我想象的那么容易,从一开始刚刚接触程序设计课程设计的时候我都不知道这是干什么的,对着电脑愣了半天不知道要干什么,后来我询问了一下大二计算机专业的学长,他告诉我了一些知识,同时我的老师给了我们一些指导,同学们也是互帮互助,所以我对这门课程有了进一步的了解。我要感谢学校给我提供的良好的环境,让我们可以在机房好好的学习。同时感谢老师对我的指导和帮助,感谢高年级哥哥姐姐给我的鼓励让我逐渐有了信心,也感谢帮助我的同学们。是你们对我的帮助和耐心指导,让我有信心完成这次作业,是你们给了我信心,也给了我无尽的希望。6 致 谢大一的课程即将结束,程序设计课程设计开始了,但是我发现它并没有我想象的那么容易,从一开始刚刚接触程序设计课程设计的时候我都不知道这是干什么的,对着电脑愣了半天不知道要干什么,后来我询问了一下大二计算机专业的学长,他告诉我了一些知识,同时我的老师给了我们一些指导,同学们也是互帮互助,所以我对这门课程有了进一步的了解。我要感谢学校给我提供的良好的环境,让我们可以在机房好好的学习。同时感谢老师对我的指导和帮助,感谢高年级哥哥姐姐给我的鼓励让我逐渐有了信心,也感谢帮助我的同学们。是你们对我的帮助和耐心指导,让我有信心完成这次作业,是你们给了我信心,也给了我无尽的希望。7 参考文献1 谭浩强 C+面向对象程序设计北京:清华大学出版社,20062 谭浩强 C+程序设计实践指导北京:清华大学出版社,20053 刘玉英、张怡芳等C+实验指导与课程设计人民邮电出版社,20078 附录程序源代码#include#include /控制台数据输入输出的函数#include/文件流#include /控制数据输出格式#includeconst int Maxr=100 ;/最多的读者数 const int Maxb=100; /最多的图书数const int Maxbor=5; /每位读者最多借的书class Book /图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能private: int tag; /int no; /图书编号char name20; /书名 char author20;/作者char cbs20; /出版社int cbtime;/出版时间double bookprice;/图书价格int onshelf; /是否再架 1:再架 2:已借出 public: Book(); char *getname()/获取书名 return name; char *getauthorname() /获取作者名 return author; char *getcbsname()/获取出版社名 return cbs; int getcbtime()/获取出版时间return cbtime;double getbookprice()/获取图书价格return bookprice;int getno()/获取图书编号 return no; int gettag()/获取删除标记 return tag; void setname(char na) /设置书名 strcpy(name,na); void setauthorname(char aa)/设置作者名strcpy(author,aa);void setcbs(char ca)/设置出版社strcpy(cbs,ca);void setcbtime(int time) /设置时间 cbtime=time; void setbookprice(double price)/设置图书价格 bookprice=price;void setonshelf(int oa) onshelf=oa; void delbook()/删除图书char i;cout确定删除吗?Y/N ?i;if(i=y|i=Y) tag=1; void addbook(int n,char *na,char *aa,char *ca,int time,double price,int oa) /增加图书 tag=0; no=n; strcpy(name,na); strcpy(author,aa); strcpy(cbs,ca); cbtime=time; bookprice=price; onshelf=oa; int borrowbook() /借书操作 if (onshelf0) onshelf-; return 1; return 0; void retbook()/还书操作 onshelf+; void disp() /输出图书 coutsetw(6)nosetw(10)namesetw(10)authorsetw(10)cbssetw(15)cbtimesetw(15)bookpricesetw(10)onshelfendl; ; class BDatabase /图书库类,实现对图书的维护,查找,删除等 private: 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() /全删 char i;cout确定全部删除吗?Y/N ?i;if(i=y|i=Y) top=-1; int addbook(int n,char *na,char *aa,char *ca,int time, double price,int oa) /增加图书 Book *p=query1(n); if (NULL=p) top+; booktop.addbook(n,na,aa,ca,time,price,oa); return 1; return 0; Book *query1(int bookid) /按编号查找图书 for(int i=0;i=top;i+) if(booki.getno()=bookid &booki.gettag()=0) return &booki; return NULL; Book *query2(char a) /按书名查找图书 Book *e; int r=0; for(int i=0;i=top;i+) if(strcmp(booki.getname(),a)=0 &booki.gettag()=0) if(r=0) coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); r+; if(r=0) cout找不到该书!endl; return NULL; Book *query3(char a) /按作者查找图书 Book *e; int r=0; for(int i=0;i=top;i+) if(strcmp(booki.getauthorname(),a)=0 &booki.gettag()=0) if(r=0) coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); r+; if(r=0) cout找不到该书!endl; return NULL; Book *query4(char a) /按出版社查找图书 Book *e; int r=0; for (int i=0;i=top;i+) if (strcmp(booki.getcbsname(),a)=0 &booki.gettag()=0) if(r=0)coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); r+; if(r=0) cout找不到该书!endl; 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 choice3; char bname40;/书名char auname40;/作者名char cname40;/出版社int time;/出版时间double price;/价格char ch;int choice4;int bookid;int bookod;Book *b; while (choice3!=0) coutnttt* 图 书 信 息 *nendl; coutttt* 1.新增图书 *endl; coutttt* 2.更改图书信息 *endl; coutttt* 3.删除图书 *endl; coutttt* 4.查找图书 *endl; coutttt* 5.显示图书状态 *endl; coutttt* 6.全部删除 *endl; coutttt* 0.返回 *endl; coutchoice3; switch(choice3) case 1: coutbookid; b=query1(bookid); if(b!=NULL) cout该编号已经存在,不能添加!endl; break; coutbname; coutauname; coutcname;couttime;coutprice; coutbookod; addbook(bookid,bname,auname,cname,time,price,bookod); cout添加图书成功!; getch(); break; case 2: coutbookid; b=query1(bookid); if(b=NULL) cout该图书不存在! endl; break; cout该图书的信息是:endl; coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); coutch; if(ch=y|ch=Y) int a;coutnttt* 图 书 修 改 *nendl; coutttt* 1.修改书名 *endl; coutttt* 2.修改作者 *endl; coutttt* 3.修改出版社 *endl; coutttt* 4.修改出版时间*endl; coutttt* 5.修改图书价格*endl; coutttt* 6.修改图书数量*endl; coutttt* 0.返回 *endl; couta; switch(a)case 1: coutbname; b-setname(bname); break;case 2: coutauname; b-setauthorname(auname); break;case 3: coutcname; b-setcbs(cname); break;case 4: couttime;b-setcbtime(time); break;case 5: coutprice; b-setbookprice(price); break;case 6: coutbookod; b-setonshelf(bookod); break;case 0: break; cout修改图书成功!; getch(); break; case 3: coutbookid; b=query1(bookid); if(b=NULL) cout该图书不存在,无法删除!delbook(); cout删除成功!; getch(); break; case 4: coutttt* 1.按图书编号查找 *endl; coutttt* 2.按图书书名查找 *endl; coutttt* 3.按图书作者查找 *endl; coutttt* 4.按图书出版社查找*endl; coutttt* 0. 返 回 *endl; coutchoice4; switch(choice4) case 1: coutbookid; b=query1(bookid); if(b=NULL) cout该图书不存在!; break; coutsetw(6)编号setw(10)书名setw(10)作者setw(10)出版社setw(15)出版时间setw(15)图书价格setw(10)存量disp(); break; case 2: coutbname; b=query2(bname); break; case 3: coutauname; b=query3(auname); break
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 大班幼儿在数学阅读健康情感社交五大领域的发展策略
- 2024年中考押题预测卷02(天津卷)-历史(考试版)A3
- 【高中语文】学校高三三模语文试题
- 2024-2025学年下学期高一生物沪科版期末必刷常考题之基因突变是生物变异的根本来源
- 点、直线和平面的投影
- 2024-2025学年浙江省杭州市部分重点中学高二下学期开学检测语文试题(解析版)
- 2025年秋三年级上册语文同步教案 口语交际:身边的“小事”
- 学校德育工作心得体会
- 高一升高二(英语)
- 治疗室换药室消毒管理制度讲课件
- 信息化项目网络设备、网络安全设备、服务器和存储系统集成项目培训方案
- 汉语语法教学-是……的
- 2009-2022历年河北省公安厅高速交警总队招聘考试真题含答案2022-2023上岸必备带详解版4
- 无犯罪记录无吸毒史证明模板
- 六年级信息技术下册《走进人工智能》优质课获奖课件
- 第18课 现代设计与现代媒体-高中美术鲁美版美术鉴赏
- 国际商务毕业论文范文
- 劳动法课件(完整版)
- GB∕T 37456-2019 海洋平台电驱动齿轮齿条升降装置
- 营运车辆智能视频监控系统管理制度范本及动态监控管理制度
- DB34∕T 3587-2020 城镇排水管道检测与修复技术规程
评论
0/150
提交评论