图书管理课程设计_第1页
图书管理课程设计_第2页
图书管理课程设计_第3页
图书管理课程设计_第4页
图书管理课程设计_第5页
已阅读5页,还剩29页未读 继续免费阅读

下载本文档

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

文档简介

1、因近几年学校对大学生的扩招,相应专业种类的增加,学校对相关于专业方面的图书需求量增大。图书馆对图书的库存量也相应增多。由老式的由图书管理员进行人工对图书入库,借出等操作,工作量相当大,就目前情况来看,图书管理员几乎不可能及时完成工作。所以学校决定开发一个图书信息管理系统,协同图书管理员的工作,这样管理员不必花太多时间用于整理图书,而可以集中精力做其他更重要的图书管理工作。减少管理员的工作负担。学校要求本系统具体能实现的功能要求如下: 图书信息的录入、查询、修改、删除、排序、输出。图书信息可写入文件,也可从文件中读取。1.2 模块分析结合本校的实际情况并经认真分析,为此我将其分成两个模块,由两个

2、类实现:1.2.1 book类。主要封装了图书信息。Book类的数据成员有:bookID(string,图书编号),bookName(string,图书名),publish(Publish,出版社),author(string,图书作者),version(int,图书版本),count(int,图书册数)。1.2.2 Publish类。主要封装了出版社信息。Publish类的数据成员:pTime(string(yyyy-mm-rr),出版时间),address(string,出版社地址),pName(string,出版社名称)1.3输入,输出分析:数据存储方式:数组输入:用户根据自己的需要,选

3、择序号进行操作输出:经系统内部的一系列处理,将最终结果显示给用户 。进入图书系统欢迎界面根据界面序号提示,选择相关操作:1:录入相关图书信息 是否继续操作2:查询相关图书信息 是否继续操作3:修改相关图书信息 是否继续操作4:对相关图书排序 是否继续操作 5:输出所有图书信息 是否继续操作6:退出系统 yes/noyesNo退出系统(yes/no) yesNo退出系统YesNo本系统的具体流程图如下:2详细设计及实现2.1 UML类图实现本系统主要抽象乘两个类Book 及 Publish。他们之间的关系如下:2.2 编程思想该应用共有五个文件,两个头文件,三个源文件:对Book的具体实现主函数

4、对Publish的具体实现对Book类的声明对Publish类的声明2.3.1 Book.h 源程序如下#include<iostream>#include<string>#include"publish.h"using namespace std;#ifndef BOOK_H#define BOOK_Hclass Bookprivate:string bookID;/书的编号,不同的书不同的编号string bookName;/书的名称string author;/书的作者string bookType;/书的类型Publish *publish;

5、/声明一个指针类int version;/书的版本号int count ;/该书的册数public:Book();/无参构造函数void set_bookID(string id);/设置书的编号string get_bookID();/获取书的编号void set_bookName(string name);/设置书名string get_bookName();/获取书名void set_author(string author);/设置书作者string get_author();/获取书的作者void set_bookType(string type);/设置书的类型string get

6、_bookType();/获取书的类型void set_publish(Publish &publish);/设置出版社信息Publish get_publish();/获取出版社信息void set_version(int version);/设置书的版本int get_version();/获取书的版本号void set_count(int count);/设置书的册数int get_count();/获取书的册数void addInfo();/录入相关图书信息bool searchInfo(string id);/查找相关图书信息void modifyInfo(string id

7、);/修改相关图书信息 friend void sortInfo(Book book,int n);/对相关图书排序void display();/输出图书信息Book operator =(Book temp);static int bookCount;friend bool isContinue();/声明友原函数,判断是否继续操作;#endif2.3.1 Publish.h 源程序如下#include<string>using namespace std;#ifndef PUBLISH_H#define PUBLISH_Hclass Publishprivate:string

8、 pTime;string address;string name;public:Publish();/无参构造函数Publish(string time,string add,string name);/带参构造函数 void set_pTime(string time);/设置出版时间string get_pTime();/获取出版时间void set_address(string add);/设置出版社地址string get_address();/获取出版社地址void set_name(string name);/设置出版社名称string get_name();/获取出版社名称;#

9、endif 2.3.3 Book.cpp 的源程序如下 #include<iostream>#include<fstream>#include<string>#include"publish.h"#include"book.h"using namespace std;int Book:bookCount=0;/书的总类数,不同编号的书代表一类Book:Book()bookID="1"bookName="C+编程技术"author="郑立"bookType=&q

10、uot;IT类"publish=new Publish();/动态分配,后面一定要用delete,否则容易产生内存泄露version=1;count=1;void Book:set_bookID(string id)bookID=id;string Book:get_bookID()return bookID;void Book:set_bookName(string name)bookName=name;string Book:get_bookName()return bookName;void Book:set_author(string auth) author=auth;st

11、ring Book:get_author()return author;void Book:set_bookType(string type)bookType=type;string Book:get_bookType()return bookType;void Book:set_publish(Publish &pub)publish->set_pTime(pub.get_pTime();publish->set_name(pub.get_name();publish->set_address(pub.get_address();Publish Book:get_p

12、ublish()return *publish;void Book:set_version(int ver)version=ver;int Book:get_version()return version;void Book:set_count(int coun)count=coun;int Book:get_count()return count; void Book:display()cout<<"图书编号:"<<bookID<<""<<"图书姓名:"<<bookName

13、<<" "<<"图书作者:"cout<<author<<" "<<"图书类型:"<<bookType<<" "<<"出版时间:"<<publish->get_pTime();cout<<" "<<"出版社地址:"<<publish->get_address()<<&quo

14、t; "<<"出版社名称:"cout<<publish->get_name()<<" "<<"版本号:"<<version<<" "<<"册数:"<<count<<endl;void Book:addInfo() char choice;cout<<"输入数据按Y,退出按N"<<endl;cin>>choice;if(

15、choice='Y') string id;string name;string author;string type;string ptime;string pname;string address;Publish publish;int version;int count; cout<<"请输入图书编号:"<<endl;cin>>id;set_bookID(id);cout<<"请输入图书名称:"<<endl;cin>>name;set_bookName(name

16、);cout<<"请输入图书作者:"<<endl;cin>>author;set_author(author); cout<<"请输入图书类型:"<<endl;cin>>type;set_bookType(type); cout<<"请输入出版时间:"<<endl;cin>>ptime;publish.set_pTime(ptime);cout<<"请输入出版社地址:"<<endl;c

17、in>>address;publish.set_address(address); cout<<"请输入出版社名称:"<<endl;cin>>pname;publish.set_name(pname); cout<<"请输入版本号:"<<endl;cin>>version;set_version(version); cout<<"请输入册数:"<<endl;cin>>count;set_count(count);co

18、ut<<endl;bookCount+;/总数加1writeFile();readFile();void Book:readFile() ifstream ifile("library.txt",ios_base:in);char line9101;for(int i=0;i<9;i+)i(linei,100);cout<<endl;cout<<linei; string n=line0; cout<<n;i();void Book:writeFile()/创建一个文件输出流对象,采用追加方式ofstream ofile

19、("library.txt",ios_base:app);ofile<<"图书编号:"<<get_bookID()<<endl;ofile<<"图书名称:"<<get_bookName()<<endl;ofile<<"图书作者:"<<get_author()<<endl;ofile<<"图书类型:"<<get_bookType()<<endl;ofile

20、<<"出版时间:"<<publish->get_pTime()<<endl;ofile<<"出版地址:"<<publish->get_address()<<endl;ofile<<"出版社名称:"<<publish->get_name()<<endl;ofile<<"版本号:"<<get_version()<<endl;ofile<<"

21、;图书册数:"<<get_count()<<endl;/注意后面的endl,用于对写完一个book后换行,其他位置不行o();bool Book:searchInfo(string id)bool flag=true;if(get_bookID()=id)flag=true;else flag=false;return flag;void Book:modifyInfo(string id) int choice;/所做的选择 string name,author,type,time,pname,address; int version,count;cout&

22、lt;<"请按序号输入你想修改的项目:"<<endl;cout<<"1:图书姓名 2:图书作者 3:图书类型 4:图书版本 "<<endl;cout<<"5:图书册数 6:出版日期 7:出版社名称 8:出版社地址 "<<endl;cin>>choice; if(choice!=0)/当choice=0时表示退出操作if(choice=1) cout<<"请输入新的名称:"<<endl;cin>>name

23、;set_bookName(name);else if(choice=2) cout<<"请输入新的作者名:"<<endl;cin>>author;set_author(author);else if(choice=3) cout<<"请输入新的图书类型:"<<endl;cin>>type;set_bookType(type); else if(choice=4) cout<<"请输入新的版本号:"<<endl;cin>>ver

24、sion;set_version(version);else if(choice=5) cout<<"请输入新的册数"<<endl;cin>>count;set_count(count);else if(choice=6) cout<<"请输入新的出版时间:"<<endl;cin>>time;publish->set_pTime(time);else if(choice=7)cout<<"请输入新的出版名称:"<<endl;cin&g

25、t;>pname;publish->set_name(pname);elsecout<<"请输入新的出版社地址:"<<endl;cin>>address;publish->set_address(address); void sortInfo(Book book,int n)int flag;Book temp;/临时变量for(int i=0;i<n-1;i+)/如果前一种书的编号比后一种书的编号大,则flag返回正数flag =booki.get_bookID().compare(booki+1.get_boo

26、kID();if(flag)/如果flag为正数,就交换这两种书的位置 temp=booki;booki=booki+1;booki+1=temp;Book Book:operator =(Book temp)/重载=运算符,进行深拷贝set_bookID(temp.get_bookID();set_bookName(temp.get_bookName();set_bookType(temp.get_bookType();set_author(temp.get_author();set_version(temp.get_version();set_count(temp.get_count();

27、set_publish(temp.get_publish();return *this; bool isContinue()char choice;cout<<"是否继续操作(Y/N)?"<<endl;cin>>choice;if(choice='Y')return true;else return false;#include<iostream>#include<string>#include"publish.h"using namespace std;Publish:Publ

28、ish()pTime="2008-12-27"address="北京"name="清华大学出版社"Publish:Publish(string time,string add,string name)pTime=time;address=add;name=name;void Publish:set_pTime(string time)pTime=time;string Publish:get_pTime()return pTime;void Publish:set_address(string add)address=add;stri

29、ng Publish:get_address()return address;void Publish:set_name(string nam)name=nam;string Publish:get_name()return name;2.3.5 主函数源程序#include<iostream>#include<string>#include"book.h"#include"publish.h"using namespace std;void main() int choice; int i; int n;Book *book;/

30、动态创建对象数组cout<<" 欢迎进入图书信息系统! "<<endl; cout<<"请输入你想加入的书的总类数:"cin>>n;cout<<endl;cout<<"="<<endl;cout<<"请根据序号选择相关操作"<<endl; cout<<"="<<endl;cout<<endl;cout<<" 1:录入图书信息!&qu

31、ot;<<endl;cout<<" 2:查询图书信息!"<<endl;cout<<" 3:修改图书信息!"<<endl;cout<<" 4:对图书排序!"<<endl; cout<<" 5:删除图书信息!"<<endl;cout<<" 6:输出图书信息!"<<endl;cout<<" 7:退出系统!"<<endl;cout

32、<<"="<<endl; book=new Bookn;cin>>choice;cout<<endl;while(choice!=0)if(choice=1) for(i=0;i<n;i+)cout<<"第"<<i<<"种书:"<<endl;booki.addInfo();else if(choice=2) string id;cout<<"请输入你想查找的图书编号:"cin>>id;for

33、(i=0;i<n;i+)if(booki.searchInfo(id)booki.display(); elseif(choice=3) string id;cout<<"请输入你想修改的图书编号:"cin>>id;for(i=0;i<n;i+)if(booki.get_bookID()=id)booki.modifyInfo(id); else if(choice=4) sortInfo(book,n); else if(choice=5) string id;cout<<"请输入你想删除的图书编号:"c

34、in>>id; for(i=0;i<n;i+) if(booki.get_bookID()=id) int temp; temp=i; for(int j=i+1;j<n;j+) booktemp=bookj; temp=j; n-;/删除了一种数,就减少了一种。 else if(choice=6)for(i=0;i<n;i+)booki.display(); else exit(1);break; if(isContinue()/选择是否继续操作 cout<<"请根据序号选择操作:"cin>>choice;else b

35、reak;/否则退出系统 return ;运行结果:写入文件如下:在文件夹中多了一个library.txt文件:从文件中读出:当然你可以继续修改,这里就不演示了。分析:我们可以看到,第一个图书编号没有,因为我在前面把它删除了,所有的值设置为空,而编号3,及编号1的图书的位置已经变了,因为我在前面对它们排了序。如果编号2没有删除,应该排在最前面。上面是最终结果,当然在真正的设计过程中是遇到许多问题的,下面我挑几个典型的来分析:刚开始我在主函数中使用了以下代码:else if(choice=5) string id;cout<<"请输入你想删除的图书编号:"cin>>id; for(i=0;i<n;i+) if(booki.get_bookID()=id)booki.deleteInfo();而在book.cpp中的:void Book:deleteInfo()

温馨提示

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

评论

0/150

提交评论