图书信息管理系统课程设计.docx

上传人:b****6 文档编号:8900959 上传时间:2023-05-15 格式:DOCX 页数:62 大小:125.70KB
下载 相关 举报
图书信息管理系统课程设计.docx_第1页
第1页 / 共62页
图书信息管理系统课程设计.docx_第2页
第2页 / 共62页
图书信息管理系统课程设计.docx_第3页
第3页 / 共62页
图书信息管理系统课程设计.docx_第4页
第4页 / 共62页
图书信息管理系统课程设计.docx_第5页
第5页 / 共62页
图书信息管理系统课程设计.docx_第6页
第6页 / 共62页
图书信息管理系统课程设计.docx_第7页
第7页 / 共62页
图书信息管理系统课程设计.docx_第8页
第8页 / 共62页
图书信息管理系统课程设计.docx_第9页
第9页 / 共62页
图书信息管理系统课程设计.docx_第10页
第10页 / 共62页
图书信息管理系统课程设计.docx_第11页
第11页 / 共62页
图书信息管理系统课程设计.docx_第12页
第12页 / 共62页
图书信息管理系统课程设计.docx_第13页
第13页 / 共62页
图书信息管理系统课程设计.docx_第14页
第14页 / 共62页
图书信息管理系统课程设计.docx_第15页
第15页 / 共62页
图书信息管理系统课程设计.docx_第16页
第16页 / 共62页
图书信息管理系统课程设计.docx_第17页
第17页 / 共62页
图书信息管理系统课程设计.docx_第18页
第18页 / 共62页
图书信息管理系统课程设计.docx_第19页
第19页 / 共62页
图书信息管理系统课程设计.docx_第20页
第20页 / 共62页
亲,该文档总共62页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

图书信息管理系统课程设计.docx

《图书信息管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《图书信息管理系统课程设计.docx(62页珍藏版)》请在冰点文库上搜索。

图书信息管理系统课程设计.docx

图书信息管理系统课程设计

《C++语言》课程设计报告

题目:

图书信息管理系统

学生姓名:

彭刚

学号:

201017020213

专业班级:

信管10102

同组姓名:

指导教师:

徐晓蓉

设计时间:

2011年下学期第17-18周

 

指导老师意见:

 

评定成绩:

签名:

日期:

 

 

1.需求分析

题目:

图书信息管理系统设计

1)信息包括:

登录号、书名、作者名、分类号、出版单位、出版时间、价格,试设计一图书信息管理系统,使之能提供以下功能:

系统以菜单方式工作

图书信息录入功能(图书信息用文件保存)--输入

图书信息浏览功能--输出

查询和排序功能:

(至少一种查询方式)--算法

1.按编号查找

2.按书名查询

3.按作者名查询

4.按出版社查找

图书信息的删除与修改(可选项)

2)需求说明:

图书信息包括:

编号、书名、作者名、分类号、出版单位、出版时间、价格等,并且要求编号不重复;

录入的图书信息要求用文件形式保存,并可以对其进行浏览、查询、修改、删除等基本操作;

对图书信息查询应能够分别按书名及作者名两种方式进行,要求能返回所有符合条件的读者的信息;

对读者信息的修改应逐个地进行,一个读者信息的更改不应影响其他的读者记录;

系统应以菜单方式工作,应为用户提供清晰的使用提示,依据用户的选择来进行各种处理。

2.概要设计

要进入图书信息管理系统,就要先登录,每个用户都有三次登录机会,若登录失败三次,系统就自动退出,登录成功后方可进行操作。

登录后你可以有选择性的操作,可以进行图书的维护、读者的维护、借书操作、还书操作或是退出系统。

进入图书信息后,可以选择新增图书、更改图书、删除图书、查找图书、显示图书、全部删除或者是返回。

进入读者信息后也是一样,可进行新增、更改、删除、查找、显示、全部删除或者是返回。

进入借书操作后,要借书的话就输入读者编号加想要借的图书编号就可完成借书。

还书操作也一样,输入还书读者编号加图书编号即可完成还书操作。

图书信息

管理系统

先登录才能进行操作!

2

读者信息

3

借阅图书

4

归还图书

0

退出

1

图书信息

登录:

1

退出:

0

图1.系统功能图

图书信息

2

更改

3

删除

4

查找

5

显示

6

0

返回

1

新增

图2.图书维护功能图

读者信息项目

2

更改

3

删除

4

查找

5

显示

6

0

返回

1

新增

读者信息

图3.读者维护功能图

 

借书项目

借阅图书

 

输入图书编号:

输入读者编号:

 

借书成功

 

图4.借阅图书功能图

 

 

还书项目

 

归还图书

输入读者编号:

输入图书编号:

 

还书成功

 

图5.归还图书功能图

 

3.详细设计

#include

#include//控制台数据输入输出的函数

#include//文件流

#include//控制数据输出格式

#include

1.头文件:

2.

constintMaxr=100;//最多的读者数

constintMaxb=100;//最多的图书数

constintMaxbor=5;//每位读者最多借的书

控制图书、读者和每

位读者的借书数量。

classBDatabase

3.定义一个BDatabase(图书库)类,

实现对图书的维护,查找,删除等功能。

 

定义一个构造函数BDatabase(),将写入到book.txt的数据读到book[]中。

 

{

Bookb;

top=-1;

fstreamfile("book.txt",ios:

:

in);

while

(1)

{

file.read((char*)&b,sizeof(b));

if(!

file)

break;

top++;

book[top]=b;

}

file.close();

}

BDatabase()

 

 

定义一个void类型的clear()函数,voidclear()

{

chari;

cout<<"确定全部删除吗?

Y/N?

"<

cin>>i;

if(i=='y'||i=='Y')

top=-1;

}

用于删除全部图书数据。

 

定义一个intaddbook(intn,char*na,char*aa,char*fe,char*ca,inttime,doubleprice,intoa)函数,来增加图书。

 

{

Book*p=query1(n);

if(NULL==p)

{

top++;

book[top].addbook(n,na,aa,fe,ca,time,price,oa);

return1;

}

return0;

}

 

Book*query1(intbookid)

{

for(inti=0;i<=top;i++)

if(book[i].getno()==bookid&&book[i].gettag()==0)

{

return&book[i];

}

returnNULL;

}

r++;

}

if(r==0)

cout<<"找不到该书!

"<

returnNULL;

}

 

 

定义四个指针函数,

用于查找图书:

a.按编号查找

b.按书名查找

c.按作者名查找

d.按出版社查找

 

按编号查找图书

 

Book*query4(chara[])

{

Book*e;

intr=0;

for(inti=0;i<=top;i++)

if(strcmp(book[i].getcbsname(),a)==0&&book[i].gettag()==0)

{

if(r==0)cout<

e=&book[i];

e->disp();

r++;

}

if(r==0)

cout<<"找不到该书!

"<

returnNULL;

}

Book*query3(chara[])

{

Book*e;

intr=0;

for(inti=0;i<=top;i++)

if(strcmp(book[i].getauthorname(),a)==0&&book[i].gettag()==0)

{

if(r==0)

cout<

e=&book[i];

e->disp();

r++;

}

if(r==0)

cout<<"找不到该书!

"<

returnNULL;

}

Book*query2(chara[])

{

Book*e;

intr=0;

for(inti=0;i<=top;i++)

if(strcmp(book[i].getname(),a)==0&&book[i].gettag()==0)

{

if(r==0)

cout<

e=&book[i];

e->disp();

r++;

}

if(r==0)

cout<<"找不到该书!

"<

returnNULL;

}

按书名查找按作者名查找

 

 

{

fstreamfile("book.txt",ios:

:

out);

for(inti=0;i<=top;i++)

if(book[i].gettag()==0)

file.write((char*)&book[i],sizeof(book[i]));

file.close();

}

定义一个析构函数~BDatabase(),

将book[]写到book.txt文件中。

 

charchoice3;

charbname[40];//书名

charauname[40];//作者名

charbfenlei[40];//分类号

charcname[40];//出版社

inttime;//出版时间

doubleprice;//价格

charch;

intchoice4;

intbookid;

intbookod;

Book*b;

定义一个函数bookdata(),

用于图书数据的处理,

先定义一些数据成员。

 

设立了多个选择语句。

图书信息的选择。

 

cout<<"\n\t\t\t**图书信息**\n"<

cout<<"\t\t\t**1.新增**"<

cout<<"\t\t\t**2.更改**"<

cout<<"\t\t\t**3.删除**"<

cout<<"\t\t\t**4.查找**"<

cout<<"\t\t\t**5.显示**"<

cout<<"\t\t\t**6.全删**"<

cout<<"\t\t\t**0.返回**"<

cout<<"\t\t\t请选择:

";

 

charchoice2;

{

cout<<"\n\t\t\t**是否保存Y/N?

**\n"<

cout<<"\t\t\t**1.Y保存**"<

cout<<"\t\t\t**0.N不保存**"<

cout<<"\t\t\t请选择:

";

cin>>choice2;

switch(choice2)

{

case'1':

cout<<"添加图书成功!

";

break;

case'0':

break;

}

}

新增图书

 

输入:

1编号

2书名

3作者名

4分类号

5出版社

6出版时间

7价格

8存量

 

是否保存?

 

cout<<"\n\t\t\t**图书修改**\n"<

cout<<"\t\t\t**1.修改书名**"<

cout<<"\t\t\t**2.修改作者**"<

cout<<"\t\t\t**3.修改分类号**"<

cout<<"\t\t\t**4.修改出版社**"<

cout<<"\t\t\t**5.修改出版时间**"<

cout<<"\t\t\t**6.修改图书价格**"<

cout<<"\t\t\t**7.修改图书数量**"<

cout<<"\t\t\t**0.返回**"<

cout<<"\t\t\t请选择:

";

修改图书

 

图书修改模块,主要功能如上。

查找选项

cout<<"\t\t\t**1.按图书编号查找**"<

cout<<"\t\t\t**2.按图书书名查找**"<

cout<<"\t\t\t**3.按图书作者查找**"<

cout<<"\t\t\t**4.按图书出版社查找**"<

cout<<"\t\t\t**0.返回**"<

cout<<"\t\t\t请选择:

";

 

图书查找,可按编号查找,书名查找,作者名查找,出版社查找。

 

删除

所有

图书

信息

显示图书全删

 

1编号

2书名

3作者名

4分类号

5出版社

6出版时间

7价格

8存量

 

 

ClassRdatabase{

4.定义一个读者库类Rdatabase,

实现建立读者的个人资料。

 

定义一个构造函数RDatabase(),

{

Readers;

top=-1;

fstreamfile("reader.txt",ios:

:

in);//打开一个输入文件

while

(1)

{

file.read((char*)&s,sizeof(s));

if(!

file)

break;

top++;

read[top]=s;

}

file.close();//关闭reader.txt文件

}

将reader.txt中数据读到read[]中。

 

定义一个void型的clear()函数,

{

chari;

cout<<"确定全部删除吗?

Y/N?

"<

cin>>i;

if(i=='y'||i=='Y')

top=-1;

}

删除所有读者信息。

 

intaddreader(intn,char*na)

{

//添加读者时先查找是否存在

Reader*p=queryid(n);

if(p==NULL)

{

top++;

read[top].addreader(n,na);

return1;

}

else

cout<<"该编号已经存在!

";

return0;

}

添加读者

 

利用析构函数~RDatabase(),

将read[]写到reader.txt文件中。

{

fstreamfile("reader.txt",ios:

:

out);

for(inti=0;i<=top;i++)

if(read[i].gettag()==0)

file.write((char*)&read[i],sizeof(read[i]));

file.close();

}

 

读者信息的选择操作:

cout<<"\n\t\t\t**读者信息**\n"<

cout<<"\t\t\t**1.新增**"<

cout<<"\t\t\t**2.更改**"<

cout<<"\t\t\t**3.删除**"<

cout<<"\t\t\t**4.查找**"<

cout<<"\t\t\t**5.显示**"<

cout<<"\t\t\t**6.全删**"<

cout<<"\t\t\t**0.返回**"<

cout<<"\t\t\t请选择:

";

 

读者的查找操作

cout<<"\t\t\t**1.按读者编号查找**"<

cout<<"\t\t\t**2.按读者姓名查找**"<

cout<<"\t\t\t**0.返回**"<

cout<<"\t\t\t请选择:

";

 

定义一个book类,实现对图书的描述,

图书的编号,书名,借出,还入等功能。

Classbook{

私有成员有:

inttag;//删除标记1:

已删0:

未删

intno;//图书编号

charname[20];//书名

charauthor[20];//作者

charfenlei[20];//分类号

charcbs[20];//出版社

intcbtime;//出版时间

doublebookprice;//图书价格

intonshelf;//是否再架1:

再架2:

已借

 

定义了一系列的公有成员函数来实现

char*getname()//获取书名

char*getauthorname()//获取作者名

char*getfenlei()//获取分类号

char*getcbsname()//获取出版社名

intgetcbtime()//获取出版时间

doublegetbookprice()//获取图书价格

intgetno()//获取图书编号

intgettag()//获取删除标记

一系列的功能。

 

5.定义一个读者类Reader,

实现读者的信息描述。

ClassReader{

私有成员有:

inttag;//删除标记1表示已删0表示未删

intno;//读者编号

charname[20];//读者姓名

intborbook[Maxbor];//所借图书

 

还设置了一些成员函数,来获取一些数据。

char*getname()//获取姓名

intgettag()//获取删除标记

intgetno()//获取读者编号

 

6.定义一个maindesk类,

实现程序的主界面。

Classmaindesk{

私有数据成员有:

charchoice5;

charchoice2;

doublexh,mm;

intbookid,readerid;

RDatabaseReaderDB;

Reader*r;

BDatabaseBookDB;

Book*b;

 

设置了一个登录函数denglu(),

以实现登录操作界面。

cout<<"\n\t\t\t欢迎光临图书馆管理系统!

"<

cout<<"\t\t\t您共有3次登陆机会"<

cout<<"\t\t\t**1.登录**"<

cout<<"\t\t\t**0.退出**"<

cout<<"\t\t\t请选择:

";

 

设置了一个void型enterdesk()函数,

以实现图书管理系统的界面。

cout<<"\n\t\t\t****图书管理系统****\n\n";

cout<<"\t\t\t**1.图书信息**"<

cout<<"\t\t\t**2.读者信息**"<

cout<<"\t\t\t**3.借阅图书**"<

cout<<"\t\t\t**4.归还图书**"<

cout<<"\t\t\t**0.退出**"<

cout<<"\t\t\t请选择:

";

 

7.主函数main()

maindeskyourDesk;

if(yourDesk.denglu())

cout<<"\t\t谢谢使用,再见!

"<

 

4.调试分析

1.实现程序,首先进入如下界面:

 

2.按1键进行登录,按0键退出。

按1键登录后进入如下界面:

A.按1键进入图书信息,可对图书进行新增、更改、删除、查找、显示、全删。

还有个返回选项。

界面如下:

按1键进行图书新增,需要键入新书编号、书名、作者名、分类号、出版社、出版时间、价格和存量。

键入信息后会弹出一条对话,问是否保存:

按1则保存,按0则不保存。

B.按2键进入读者信息,同样可对读者进行新增、更改、删除、查找、显示、全删,也有个返回选项。

界面如下:

按1进入新增读者,需要输入的有读者编号和姓名两个选项,如下:

C.借书和还书只需输入读者编号和想借图书编号即可。

进入读者查找后,有三个选项,按书名查找和按作者名查找,还有返回。

在图书管理下,按0键退出,界面如下:

5.总结

本次课程设计是我入学以来写的第一个大程序,通过本次课程设计,我彻底认识到了自己的不足,充分感觉到了要自己写一个程序是多么的艰难,才发现自己连基础都还没打牢,所以这次课程设计做得很吃力。

虽然做得很吃力,但是却激发了我学习的动力,让我充分认识到学习的重要性。

在本次课程设计的过程中,我遇到了很多的困难,一个一个的错误,一条一条的警告,但是我并不畏惧,依然大步迈着前进的步伐。

终于,经过了一个星期的努力,课程设计取得了成功,心里有那么一点点小高兴,但是,更懂得了自己以后的任务有重,成功不能蒙蔽我们前进的双眼,失败也并不会阻挡我们前进的步伐。

我这次做的这个课题需要我们掌握如下几点:

1.只有上机实践才能检验自己写的程序,光看是看不出来的;

2.要懂得调试、书写规范和检错;

3.要懂得函数的调用;

4.要掌握文件函数的输入和输出,文件的定位。

5.更重要的是要细心。

 

6.参考文献

1.谭浩强,C++程序设计,清华大学出版社,2004

2.陈维兴,C++面向对象程序设计第三版,清华大学出版社,2010

3.陈维兴,C++面向对象程序设计第二版,清华大学出版社,2004

4.裘宗燕著,从问题到程序科学出版社,北京大学出版社,1999

5.刘瑞挺主编,计算机二级教程,南开大学出版社,1996

6.陈朔鹰等编著,C语言程序设计基础教程,兵器工业出版社,1994

7.姜仲秋等主编,C语言程序设计,南京大学出版社,1998

8.陈维兴,C++面向对象程序设计习题解答与实验指导,清华大学出版社,2005

9.钱能,C++程序设计教程,清华大学出版社,2005

10.谭浩强,C语言程序设计第二版,清华大学出版社,2008

7.致谢

经过两周的时间,我的课程设计顺利完成,我也发现我对专业课的兴趣大大的增加了,自身的技术也得到了很大的提高。

我能完成本次课程设计,主要是因为有一位水平高超的徐晓蓉老师和老师的悉心教导。

在这里,我衷心的感谢我们的指导老师徐晓蓉老师。

当然,也要感谢同学们的热心帮助。

8.附录

源代码:

#in

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2