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

付费下载

下载本文档

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

文档简介

1、C+课程设计课程设计报告设计题目 图书管理系统 专 业 计算机科学与技术 班 级 090601 姓 名 祝龙波 学 号 090601120 2010 年8月 25日面向对象技术与C+课程设计任务书课 程面向对象技术与C+ 班级2009级 7-8班指导教师耿军雪题 目图书管理系统完成时间2010年06月21日至2010年06月25日主要内容1问题描述建立一个图书馆管理系统,可以处理以下对象: 图书馆基本信息。 图书馆的书籍。 图书馆管理员 。 读者信息。2程序要求,程序要完成下列功能 查询图书馆的总信息。 查询图书馆管理员的信息。 查询图书馆藏书信息。 存入新书(有管理员加入,需进行身份验证)。

2、 旧书处理。 存入新的管理员的信息。 修改管理员信息(增加工龄,加薪)。 两所图书馆的最大藏书量之和。 根据书名检索书刊信息。 查询读者的借阅信息。 查询读者信息(包括借书情况、到期时间、罚款情况。)。 管理员可以修改用户的欠款和交款的金额。 读者分为学生、研究生和教师。学生的租期为1个月,教师的租期为2个月。3程序设计说明 使用链表实现。 使用文件保存书籍信息。设计报告要求1封面:(格式附后)2课程设计任务书3课程设计报告: 系统总体方案 设计思路和主要步骤 各功能模块和流程图 设计代码 心得体会和参考资料说明:学生完成课程设计后,提交课程设计报告及软件,要求文字通畅、字迹工整(也可用以打印

3、),文字不少于5000 字,并装订成册。目 录1.设计目标2.设计思想3.类及对象设计4.程序源代码5.心得体会6.参考资料图书管理系统1设计目标设计一个小型的图书管理系统,用链表来存储读者的基本信息(包括姓名、读者编号、读者借书情况等),完成借书、还书、图书维护、读者维护、离开等功能。2设计思想(1) 设计class Reader读者信息库,实现对读者信息的描叙; class RDatabase读者类库实现建立读者的个人资料;class magdatabase 管理员库类;class manager 管理员类;class Book图书类,实现对图书的描述,图书的编号,书名,借出,还入等;cl

4、ass BDatabase图书库类,实现对图书的维护,查找,删除等。以下是函数功能表: 函数功能char *getname()获取姓名int gettag()获取删除标记int getno()获取读者编号void setname(char na)设置姓名以及编号void addreader(int n,char *na)增加读者void delbook()设置删除标记void borrowbook(int bookid)借书操作int retbook(int bookid)还书操作void disp()读出读者信息BDatabase()构造函数,将book.txt读到book中int addb

5、ook(int n,char *na)增加图书Book *query(int bookid)查找图书void delbook删除图书void bookdata()图书库维护BDatabase()析构函数,将book写到book.txt文件(2)用类的成员函数对链表的数据进行操作,其功能如上表所列。(3)设计菜单来实现功能设计3设计类及对象(1) 本程序定义了六个类,定义如下:#include<iostream.h>#include "bdatabase.h"#include<iomanip.h>#include<string.h>#inc

6、lude<fstream.h>const int maxr=100;/最多的读者const int maxb=100;/最多的图书const int maxbor=5;/每位读者最多借5本书class reader /读者类int tag; /删除标记 1:已删 0:未删int no; /读者编号char name20; /读者姓名char position20; /职务int borbookmaxbor; /所借图书int zq; /租期public:int t; /交款和欠款标记 1:由管理员设置 2:全设为0char bday10; /所借日期char rday10; /所还

7、日期int jmoney; /欠款int qmoney; /交款reader( ) char *getname( )return name; /获取姓名int gettag( )return tag; /获取删除标记int getno( )return no; /获取读者编号void setname(char na ) /设置姓名strcpy(name,na);void setjmoney(int jm) jmoney=jm;void setqmoney(int qm)qmoney=qm;void sett(int tt) /设置交款和欠款标记t=tt; void setz(int z)zq=

8、z; char * getbday( )return bday;char * getrday( )return rday;void delbook()tag=1;/设置删除标记void addreader(int n,char *na,char *po,int z);/增加读者int retbook(int bookid); /还书操作void borrowbook(int bookid); /借书操作void disp( ); /输出读者信息;class rdatabase /读者库类 int top; /读者记录指针reader readmaxr;public:rdatabase();/构

9、造函数,将reader.txt读到read 中void clear( ) /删除所有读者信息top=-1;int addreader(int n,char *na,char *po,int z); /添加读者时先查找是否存在reader *query(int readerid)for(int i=0;i<=top;i+) if(readi.getno( )=readerid&&readi.gettag()=0) return &readi; return NULL;/按编号查找void disp()for(int i=0;i<=top;i+)readi.di

10、sp( );void readerdata( );/读者维护rdatabase( );/构造函数,将read 写入reader.txt文件中;class book /图书类int tag; /删除标记 1:已删 0:未删int no; /编号char name20; /书名int onshelf; /是否在架 1:在架 0:已借public:book( ) char *getname( )return name; /获取书名int getno( )return no; /获取图书编号int gettag( )return tag; /获取删除标记void setname(char na ) /

11、设置书名strcpy(name,na);void delbook( )tag=1; /删除图书void addbook(int n,char *na); /增加图书int borrowbook( ); /借书void retbook( ); /还书void disp( ); /输出图书;class bdatabase /图书库类int top; /图书记录指针book book1maxb; /图书记录public:bdatabase( ); /将book.txt读到book中void clear( )top=-1; /全删int addbook(int n,char *na); /增加图书 b

12、ook * query(int bookid); /查找图书void bookdata( ); /图书库维护void disp( );bdatabase( );class manager /管理员类 int tag; /删除标记 1:已删 0:未删int no; /管理员工号char name20; /管理员姓名int fee; /工资int age; /工龄int ma; /密码public:manager( ) char *getname ()return name;/获取姓名int gettag( )return tag;/获取删除标记int getno( )return no;/获取管

13、理员工号 int getage()return age;/获取管理员工龄 int getma( )return ma;void setname(char na )/设置姓名 strcpy(name,na); void setfe(int fe)fee=fe; void setage(int ag)age=ag; void delbook()tag=1;/设置删除标记void addmag(int n,char *na,int fe,int a,int m);/增加管理员void disp();/输出管理员信息;class magdatabase /管理员库类int top; /管理员记录指针m

14、anager managemaxm;public:magdatabase( ); /构造函数,将manager.txt读到manager 中void clear( ) /删除所有管理员信息top=-1;int addmag(int n,char *na,int fe,int a,int m); /添加管理员时先查找是否存在manager *query(int managerid)for(int i=0;i<=top;i+)if(managei.getno( )=managerid&&managei.gettag( )=0) return &managei; ret

15、urn NULL;/按编号查找void disp ( )for(int i=0;i<=top;i+)managei.disp( );void managerdata( ); /管理员维护magdatabase( ); /构造函数,将manager写入manager.txt文件中;(2)主函数实现,调用各种函数。4程序源代码#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"book.h"#include&

16、quot;reader.h"class bdatabase /图书库类int top; /图书记录指针book book1maxb; /图书记录public:bdatabase( ); /将book.txt读到book中void clear( )top=-1; /全删int addbook(int n,char *na); /增加图书 book * query(int bookid); /查找图书void bookdata( ); /图书库维护void disp( );bdatabase( );#include<iostream.h>#include<iomanip

17、.h>#include<string.h>#include<fstream.h>#include"reader.h"class book /图书类int tag; /删除标记 1:已删 0:未删int no; /编号char name20; /书名int onshelf; /是否在架 1:在架 0:已借public:book( ) char *getname( )return name; /获取书名int getno( )return no; /获取图书编号int gettag( )return tag; /获取删除标记void setname

18、(char na ) /设置书名strcpy(name,na);void delbook( )tag=1; /删除图书void addbook(int n,char *na); /增加图书int borrowbook( ); /借书void retbook( ); /还书void disp( ); /输出图书;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"manager.h"class magdataba

19、se /管理员库类int top; /管理员记录指针manager managemaxm;public:magdatabase( ); /构造函数,将manager.txt读到manager 中void clear( ) /删除所有管理员信息top=-1;int addmag(int n,char *na,int fe,int a,int m); /添加管理员时先查找是否存在manager *query(int managerid)for(int i=0;i<=top;i+)if(managei.getno( )=managerid&&managei.gettag( )=

20、0) return &managei; return NULL;/按编号查找void disp ( )for(int i=0;i<=top;i+)managei.disp( );void managerdata( ); /管理员维护magdatabase( ); /构造函数,将manager写入manager.txt文件中;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>const int maxm=5;class manager

21、 /管理员类 int tag; /删除标记 1:已删 0:未删int no; /管理员工号char name20; /管理员姓名int fee; /工资int age; /工龄int ma; /密码public:manager( ) char *getname ()return name;/获取姓名int gettag( )return tag;/获取删除标记int getno( )return no;/获取管理员工号 int getage()return age;/获取管理员工龄 int getma( )return ma;void setname(char na )/设置姓名 strcpy

22、(name,na); void setfe(int fe)fee=fe; void setage(int ag)age=ag; void delbook()tag=1;/设置删除标记void addmag(int n,char *na,int fe,int a,int m);/增加管理员void disp();/输出管理员信息;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"reader.h"class r

23、database /读者库类 int top; /读者记录指针reader readmaxr;public:rdatabase();/构造函数,将reader.txt读到read 中void clear( ) /删除所有读者信息top=-1;int addreader(int n,char *na,char *po,int z); /添加读者时先查找是否存在reader *query(int readerid)for(int i=0;i<=top;i+) if(readi.getno( )=readerid&&readi.gettag()=0) return &r

24、eadi; return NULL;/按编号查找void disp()for(int i=0;i<=top;i+)readi.disp( );void readerdata( );/读者维护rdatabase( );/构造函数,将read 写入reader.txt文件中;#include<iostream.h>#include "bdatabase.h"#include<iomanip.h>#include<string.h>#include<fstream.h>const int maxr=100;/最多的读者cons

25、t int maxb=100;/最多的图书const int maxbor=5;/每位读者最多借5本书class reader /读者类int tag; /删除标记 1:已删 0:未删int no; /读者编号char name20; /读者姓名char position20; /职务int borbookmaxbor; /所借图书int zq; /租期public:int t; /交款和欠款标记 1:由管理员设置 2:全设为0char bday10; /所借日期char rday10; /所还日期int jmoney; /欠款int qmoney; /交款reader( ) char *ge

26、tname( )return name; /获取姓名int gettag( )return tag; /获取删除标记int getno( )return no; /获取读者编号void setname(char na ) /设置姓名strcpy(name,na);void setjmoney(int jm) jmoney=jm;void setqmoney(int qm)qmoney=qm;void sett(int tt) /设置交款和欠款标记t=tt; void setz(int z)zq=z; char * getbday( )return bday;char * getrday( )r

27、eturn rday;void delbook()tag=1;/设置删除标记void addreader(int n,char *na,char *po,int z);/增加读者int retbook(int bookid); /还书操作void borrowbook(int bookid); /借书操作void disp( ); /输出读者信息;#include"book.h"bdatabase:bdatabase( ) book b;top=-1;fstream file("book.txt",ios:in);while(1)file.read(ch

28、ar *)&b,sizeof(b);if(!file)break;top+;book1top=b;file.close();int bdatabase:addbook(int n,char *na) book *p=query(n);if(p=NULL)top+;book1top.addbook(n,na);return 1;return 0;book* bdatabase:query(int bookid)for (int i=0;i<=top;i+)if(book1i.getno()=bookid&&book1i.gettag()=0)return &

29、book1i;return NULL;void bdatabase:disp() for(int i=0;i<=top;i+)if(book1i.gettag()=0)book1i.disp();bdatabase:bdatabase() fstream file("book.txt",ios:out);for(int i=0;i<=top;i+)if(book1i.gettag()=0)file.write(char *)&book1i,sizeof(book1i);file.close();void bdatabase:bookdata( ) int

30、 choice=1;char bname40;int bookid;book *b;while(choice!=0)cout<<"图书维护1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>"cin>>choice;switch(choice) case 1:cout<<"输入图书编号:"cin>>bookid;cout<<"输入图书书名:"cin>>bname;addbook(bookid,bname);break;case 2:cou

31、t<<"输入图书编号:"cin>>bookid;b=query(bookid);if(b=NULL) cout<<"该图书不存在"<<endl;break; cout<<" 输入新的书名:"cin>>bname;b->setname(bname);break;case 3:cout<<"输入图书编号:"cin>>bookid;b=query(bookid);if(b=NULL)cout<<"该

32、图书不存在"<<endl;break;b->delbook();break;case 4:cout<<"输入图书编号:"cin>>bookid;b=query(bookid);if(b=NULL)cout<<"该图书不存在"<<endl;break;b->disp();break;case 5:disp();break;case 6:clear();break;#include "book.h"void book:addbook(int n,char *

33、na)/增加图书tag=0;no=n;strcpy(name,na);onshelf=1;int book:borrowbook( )/借书if(onshelf=1)onshelf=0;return 1;return 0;void book: retbook( ) /还书onshelf=1;void book:disp( )/输出图书cout<<setw(5)<<no<<setw(15)<<name;cout<<setw(10)<<(onshelf=1?"在架":"已借")<&

34、lt;endl;#include "magdatabase.h"#include"manager.h"magdatabase:magdatabase( )manager s;top=-1;fstream file("manager.txt",ios:in);while(1)file.read(char *)&s,sizeof(s);if(!file)break;top+;managetop=s;file.close( );int magdatabase:addmag(int n,char *na,int fe,int ag,i

35、nt m)manager *p=query(n);if(p=NULL)top+;managetop.addmag(n,na,fe,ag,m);return 1;return 0;magdatabase:magdatabase( )fstream file("manager.txt",ios:out);for(int i=0;i<=top;i+)if(managei.gettag( )=0)file.write(char *)&managei,sizeof(managei);file.close( );void magdatabase:managerdata()

36、int choice=1;char mname20;int managerid;int fe;int ag;int m;int s;manager *r;while(choice!=0)cout<<"管理员维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>"cin>>choice;switch(choice)case 1:cout<<"输入管理员工号:"cin>> managerid;cout<<"输入管理员姓名:"cin>>mn

37、ame;cout<<"输入管理员工资:"cin>>fe;cout<<"输入管理员工龄:"cin>>ag;cout<<"输入管理员密码:"cin>>m;addmag(managerid,mname,fe,ag,m);break;case 2:cout<<"输入管理员工号:"cin>>managerid;r=query(managerid);if(r=NULL)cout<<"该管理员不存在"&

38、lt;<endl;break; cout<<"输入密码:" cin>>s; if(r->getma( )=s)cout<<"输入新的工资:"cin>>fe;r->setfe(fe); cout<<"输入新的工龄:" cin>>ag; r->setage(ag); if(r->getma()!=s)cout<<"密码错误!"<<endl;break;case 3:cout<<&qu

39、ot; 输入管理员工号:"cin>>managerid;r=query(managerid);if(r=NULL)cout<<"该管理员不存在"<<endl;break;break;case 4:cout<<"输入管理员工号:"cin>>managerid;r=query(managerid);if(r=NULL)cout<<"该管理员不存在"<<endl;break;r->disp( );break;case 5:disp( );br

40、eak;case 6:clear( );break;#include "manager.h"#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>void manager:addmag(int n,char *na,int fe,int ag,int m)tag=0;no=n;fee=fe;age=ag;strcpy(name,na);ma=m;void manager:disp( )cout<<"工号:&q

41、uot;<<no<<setw(15)<<"姓名:"<<name<<setw(15)<<"工资:"cout<<fee<<setw(15)<<"工龄:"<<age<<endl;#include "rdatabase.h"rdatabase:rdatabase( )reader s;top=-1;fstream file("reader.txt",ios:in);whil

42、e(1)file.read(char *)&s,sizeof(s);if(!file)break;top+;readtop=s;file.close ( );int rdatabase:addreader(int n,char *na,char *po,int z)reader *p=query(n);if(p=NULL)top+;readtop.addreader(n,na,po,z);return 1;return 0;rdatabase:rdatabase( )fstream file("reader.txt",ios:out);for(int i=0;i&l

43、t;=top;i+)if(readi.gettag( )=0)file.write(char *)&readi,sizeof(readi);file.close( );void rdatabase:readerdata( )int choice=1;char rname20;char pos20;int readerid;int qmoney1;int jmoney1;int t;int z;reader *r;while(choice!=0)cout<<"读者维护 1:新增 2:更改 3:删除 4:查找 5:显示 6:全删 0:退出=>"cin&

44、gt;>choice;switch(choice)case 1:cout<<"输入读者编号:"cin>>readerid;cout<<"输入读者姓名:"cin>>rname;cout<<"输入职务:"cin>>pos;cout<<"输入租期:"cin>>z;addreader(readerid,rname,pos,z);break;case 2:t=1;r->sett(t);cout<<"

45、;输入读者编号:"cin>>readerid;r=query(readerid);if(r=NULL)cout<<"该读者不存在"<<endl;break;cout<<"输入欠款:"cin>>qmoney1;r->setqmoney(qmoney1);cout<<"输入交款:"cin>>jmoney1;r->setjmoney(jmoney1); break;case 3:cout<<" 输入读者编号:&qu

46、ot;cin>>readerid;r=query(readerid);if(r=NULL)cout<<"该读者不存在"<<endl;break;r->delbook( );break;case 4:cout<<"输入读者编号:"cin>>readerid;r=query(readerid);if(r=NULL)cout<<"该读者不存在"<<endl;break;r->disp( );break;case 5:disp( );break;c

47、ase 6:clear( );break;#include "reader.h"#include "rdatabase.h"#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>void reader:addreader(int n,char *na,char *po,int z)tag=0;no=n;t=0;strcpy(name,na);strcpy(position,po);for(int i=0;i&l

48、t;maxbor;i+) borbooki=0;zq=z;void reader:borrowbook(int bookid)for(int i=0;i<maxbor;i+)if(borbooki=0)borbooki=bookid;return;int reader:retbook(int bookid)for(int i=0;i<maxbor;i+)if(borbooki=bookid)borbooki=0;return 1;return 0;void reader:disp( )cout<<setw(5)<<"编号:"<<

49、;no<<setw(10)<<"姓名:"<<name<<setw(15)<<"职位:"<<position<<setw(15)<<"借书编号:"for(int i=0;i<maxbor;i+)/if(borbooki!=0)cout<<borbooki<<"|"cout<<""<<endl;if(borbooki!=0)cout<<se

50、tw(5)<<" 所借日期:"<<bday<<endl;cout<<setw(5)<<" 所还日期:"<<rday<<endl;cout<<setw(5)<<"租期:"<<zq<<endl;if(t=0)jmoney=0;qmoney=0;cout<<setw(5)<<"交款:"<<jmoney<<endl;cout<<set

51、w(5)<<"欠款:"<<qmoney<<endl;#include<iostream.h>#include<iomanip.h>#include<string.h>#include<fstream.h>#include"bdatabase.h"#include"book.h"#include"reader.h"#include"rdatabase.h"#include"manager.h"#

52、include"magdatabase.h"void main( )int choice=1,bookid,readerid;rdatabase readerdb;reader *r;bdatabase bookdb;magdatabase managerdb;int ma;int n;char bd10;char rd10;book *b;manager *m;while(choice!=0)cout<<">>>>>>图书馆管理系统<<<<<<"<<endl

53、;cout<<"1:借书 2:还书 3:图书维护 4:读者维护 5:管理员维护 0:离开=>"cin>>choice;switch(choice)case 1:cout<<"输入管理员工号:"cin>>n;m=managerdb.query(n);if(m=NULL)cout<<"该管理员不存在!"<<endl;break;cout<<"输入密码:"cin>>ma;if(m->getma()=ma)cout&

54、lt;<"借书读者编号:"cin>>readerid;cout<<" 图书编号:"cin>>bookid;r=readerdb.query(readerid);if(r=NULL)cout<<"该读者不存在,不能借书"<<endl;break;b=bookdb.query(bookid);if(b=NULL)cout<<"不存在该图书,不能借书"<<endl;break;if(b->borrowbook()=0)cout<<"该图书已借出,不能借书"<<endl;

温馨提示

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

最新文档

评论

0/150

提交评论