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

上传人:b****6 文档编号:7766441 上传时间:2023-01-26 格式:DOCX 页数:53 大小:611.13KB
下载 相关 举报
图书信息管理系统课程设计.docx_第1页
第1页 / 共53页
图书信息管理系统课程设计.docx_第2页
第2页 / 共53页
图书信息管理系统课程设计.docx_第3页
第3页 / 共53页
图书信息管理系统课程设计.docx_第4页
第4页 / 共53页
图书信息管理系统课程设计.docx_第5页
第5页 / 共53页
点击查看更多>>
下载资源
资源描述

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

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

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

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

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

题目:

图书信息管理系统

********

学号:

************

专业班级:

信管10102

同组姓名:

****************************

设计时间:

2011年下学期第17-18周

 

指导老师意见:

 

评定成绩:

签名:

日期:

 

1.需求分析

题目:

图书信息管理系统设计

1)信息包括:

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

系统以菜单方式工作

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

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

查询和排序功能:

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

1.按编号查找

2.按书名查询

3.按作者名查询

4.按出版社查找

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

2)需求说明:

图书信息包括:

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

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

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

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

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

2.概要设计

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

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

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

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

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

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

 

图1.系统功能图

图2.图书维护功能图

读者信息项目

图3.读者维护功能图

 

借书项目

 

图4.借阅图书功能图

 

 

还书项目

 

图5.归还图书功能图

 

3.详细设计

1.头文件:

2.

控制图书、读者和每

位读者的借书数量。

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

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

 

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

 

BDatabase()

 

 

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

用于删除全部图书数据。

 

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

 

 

定义四个指针函数,

用于查找图书:

a.按编号查找

b.按书名查找

c.按作者名查找

d.按出版社查找

 

按编号查找图书

 

按书名查找按作者名查找

 

 

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

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

 

定义一个函数bookdata(),

用于图书数据的处理,

先定义一些数据成员。

 

设立了多个选择语句。

图书信息的选择。

 

新增图书

 

是否保存?

 

修改图书

 

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

查找选项

 

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

 

显示图书全删

 

 

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

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

 

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

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

 

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

删除所有读者信息。

 

intaddreader(intn,char*na)

添加读者

 

利用析构函数~RDatabase(),

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

 

读者信息的选择操作:

 

读者的查找操作

 

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

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

Classbook{

私有成员有:

 

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

一系列的功能。

 

5.定义一个读者类Reader,

实现读者的信息描述。

ClassReader{

私有成员有:

 

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

 

6.定义一个maindesk类,

实现程序的主界面。

Classmaindesk{

私有数据成员有:

 

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

以实现登录操作界面。

 

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

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

 

7.主函数main()

 

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.附录

源代码:

#include

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

#include//文件流

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

#include

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

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

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

 

classBook

{//图书类,实现对图书的描述,图书的编号,书名,借出,还入等功能

private:

inttag;//删除标记1:

已删0:

未删

intno;//图书编号

charname[20];//书名

charauthor[20];//作者

charfenlei[20];//分类号

charcbs[20];//出版社

intcbtime;//出版时间

doublebookprice;//图书价格

intonshelf;//是否再架1:

再架2:

已借

public:

Book(){;}

char*getname()

{//获取书名

returnname;

}

char*getauthorname()

{//获取作者名

returnauthor;

}

char*getfenlei()

{//获取分类号

returnfenlei;

}

char*getcbsname()

{//获取出版社名

returncbs;

}

intgetcbtime()

{//获取出版时间

returncbtime;

}

doublegetbookprice()

{//获取图书价格

returnbookprice;

}

intgetno()

{//获取图书编号

returnno;

}

intgettag()

{//获取删除标记

returntag;

}

voidsetname(charna[])

{//设置书名

strcpy(name,na);

}

voidsetauthorname(charaa[])

{//设置作者名

strcpy(author,aa);

}

voidsetfenlei(charfe[])

{//设置分类号

strcpy(fenlei,fe);

}

voidsetcbs(charca[])

{//设置出版社

strcpy(cbs,ca);

}

voidsetcbtime(inttime)

{//设置时间

cbtime=time;

}

voidsetbookprice(doubleprice)

{//设置图书价格

bookprice=price;

}

voidsetonshelf(intoa)

{

onshelf=oa;

}

voiddelbook()

{//删除图书

chari;

cout<<"确定删除吗?

Y/N?

"<

cin>>i;

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

tag=1;

}

voidaddbook(intn,char*na,char*aa,char*fe,char*ca,inttime,doubleprice,intoa)

{//增加图书

tag=0;

no=n;

strcpy(name,na);

strcpy(author,aa);

strcpy(cbs,ca);

strcpy(fenlei,fe);

cbtime=time;

bookprice=price;

onshelf=oa;

}

intborrowbook()

{//借书操作

if(onshelf>0)

{

onshelf--;

return1;

}

return0;

}

voidretbook()

{//还书操作

onshelf++;

}

voiddisp()

{//输出图书

cout<

}

};

 

classBDatabase

{//图书库类,实现对图书的维护,查找,删除等

private:

inttop;//图书记录指针

Bookbook[Maxb];//图书记录

public:

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();

}

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;

}

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;

}

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*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;

}

voidbookdata();//图书库信息

voiddisp()

{

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

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

book[i].disp();

}

~BDatabase()

{//析构函数,将book[]写到book.txt文件中

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();

}

};

voidBDatabase:

:

bookdata()

{

charchoice3;

charbname[40];//书名

charauname[40];//作者名

charbfenlei[40];//分类号

charcname[40];//出版社

inttime;//出版时间

doubleprice;//价格

charch;

intchoice4;

intbookid;

intbookod;

Book*b;

while(choice3!

='0')

{

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请选择:

";

cin>>choice3;

switch(choice3)

{

case'1':

cout<<"请输入新书编号:

";

cin>>bookid;

b=query1(bookid);

if(b!

=NULL)

{

cout<<"该编号已经存在,不能添加!

"<

break;

}

cout<<"请输入新书书名:

";

cin>>bname;

cout<<"请输入新书作者名:

";

cin>>auname;

cout<<"请输入新书分类号:

";

cin>>bfenlei;

cout<<"请输入新书出版社:

";

cin>>cname;

cout<<"请输入新书出版时间:

";

cin>>time;

cout<<"请输入图书价格:

";

cin>>price;

cout<<"请输入新书数量:

";

cin>>bookod;

addbook(bookid,bname,auname,bfenlei,cname,time,price,bookod);

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;

}

}

getch();

break;

case'2':

cout<<"请输入图书编号:

";

cin>>bookid;

b=query1(bookid);

if(b==NULL)

{

cout<<"该图书不存在!

"<

break;

}

cout<<"该图书的信息是:

"<

cout<

b->disp();

cout<<"是否修改?

(y/n):

";

cin>>ch;

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

{inta;

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

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

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

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

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1