C++课程设计论文.docx

上传人:b****6 文档编号:3012866 上传时间:2022-11-17 格式:DOCX 页数:32 大小:210.41KB
下载 相关 举报
C++课程设计论文.docx_第1页
第1页 / 共32页
C++课程设计论文.docx_第2页
第2页 / 共32页
C++课程设计论文.docx_第3页
第3页 / 共32页
C++课程设计论文.docx_第4页
第4页 / 共32页
C++课程设计论文.docx_第5页
第5页 / 共32页
点击查看更多>>
下载资源
资源描述

C++课程设计论文.docx

《C++课程设计论文.docx》由会员分享,可在线阅读,更多相关《C++课程设计论文.docx(32页珍藏版)》请在冰豆网上搜索。

C++课程设计论文.docx

C++课程设计论文

目录

1题目描述2

2功能分析3

3系统设计4

3.1程序总体结构4

3.2主功能模块设计5

3.2.1图书管理功能5

3.2.2读者管理功能5

3.2.3借阅管理功能5

3.3程序设计6

3.4类与函数的设计与实现7

3.4.1读者类7

3.4.2图书类8

3.4.3读者类库9

3.4.4图书库类10

4运行与测试结果12

5小结16

6参考文献17

1题目描述

请设计一个图书登记管理程序。

该程序应该具有下列功能:

(1)通过键盘输入某本图书的信息,并能对图书进行增加、修改、删除和查找;

(2)通过键盘输入读者信息,并可以增加读者、修改读者、删除读者、查找读者和显示读者信息;

(3)实现借阅功能;

(4)实现还书功能。

【题目要求】

(1)按照分析、设计、编码、调试和测试的软件开发过程完成这个应用程序;

(2)图书信息应该包含:

编号、书名、作者姓名、出版社、价格等;

(3)为各项操作功能设计一个菜单。

应用程序运行后,先显示这个菜单,然后用户通过菜单项选择希望进行的操作项目。

【输入要求】

应用程序运行后,在屏幕上显示一个菜单(菜单显示外观见前面的图示)。

用户可以根据需求,选定相应的操作项目。

进入每个操作后,根据应用程序的提示信息,从键盘输入相应的信息。

【输出要求】

(1)应用程序运行后,要在屏幕上显示一个菜单;

(2)要求用户输入数据时,要给出清晰、明确的提示信息,包括输入的数据内容、格式及结束方式等。

2功能分析

根据图书管理的实际要求,结合本系统开发的要求,对与本章所要介绍的“图书管理系统”的需求实现如下功能:

1、书籍管理部分:

书籍信息管理包括书籍信息的添加、书籍信息的修改、书籍信息的查询、书籍信息的删除等。

2、读者管理部分:

读者信息管理包括添加读者信息、修改读者信息、删除读者信息、查询读者信息和读者借阅图书情况等。

3、借阅管理部分:

这一部分包括借书信息管理和还书信息管理两部分。

 

 

图1功能模块图

3系统设计

3.1程序总体结构

 

 

 

图2程序结构图

3.2主功能模块设计

3.2.1图书管理功能

书籍信息管理:

包括书籍信息的添加、书籍信息的修改、书籍信息的查询

、书籍信息的删除、书籍信息的显示和书籍信息的全删等6部分功能。

其中,书籍信息包括图书编号、书名、图书作者、出版社、价格已及是否在架。

3.2.2读者管理功能

读者信息管理:

包括读者信息的添加、读者信息的修改、读者信息的查询和读者信息的删除、读者信息的显示和读者信息的全删等6部分功能。

其中,读者信息包括读者姓名、读者编号和已借书数量及编号。

3.2.3借阅管理功能

借书管理:

借阅信息包括图书编号、读者编号。

还书管理:

还书信息与借阅信息各部分明细相同。

3.3程序设计

//main()函数的实现,程序的主界面的引导

voidmain()

{charchoice;

Book*b;

while(choice!

='0')

{cout<

cout<<"\t\t\t1借书\n\n\t\t\t2还书\n\n\t\t\t3图书维护\n\n\t\t\t4读者维护\n\n\t\t\t0离开"<

cin>>choice;

switch(choice){

case'1':

借书…………

cout<<"不存在该读者,不能借书"<

………

cout<<"不存在该图书,不能借书"<

……….

cout<<"该图书已借出,不能借书"<

break;

case'2':

还书………

cout<<"不存在该读者,不能还书"<

………

cout<<"不存在该图书,不能还书"<

break;

case'3':

图书维护…………break;

case'4':

读者维护…………break;

default:

cout<<"已退出!

";

}

}

}

3.4类与函数的设计与实现

3.4.1读者类

//实现对读者的信息的描述

classReader{

private:

inttag;//删除标记1:

已删0:

未删

intno;//读者编号

charname[10];//读者姓名

intborbook[Maxbor];//所借图书

public:

Reader(){}

char*getname(){returnname;}//获取姓名

intgettag(){returntag;}//获取删除标记

intgetno(){returnno;}//获取读者编号

voidsetname(charna[])//设置姓名

{strcpy(name,na);}

voiddelbook(){tag=1;}//设置删除标记1:

已删0:

未删

voidaddreader(intn,char*na)//增加读者

{tag=0;

no=n;

strcpy(name,na);

for(inti=0;i

borbook[i]=0;}

voidborrowbook(intbookid)//借书操作{

for(inti=0;i

if(borbook[i]==0){

borbook[i]=bookid;

return;}

}

}

intretbook(intbookid)//还书操作{

for(inti=0;i

{if(borbook[i]==bookid)

{borbook[i]=0;

return1;}

}return0;

}

voiddisp()//读出读者信息{

cout<

[";

for(inti=0;i

if(borbook[i]!

=0)

cout<

cout<<"]"<

};

3.4.2图书类

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

classBook{

private:

inttag;//删除标记1:

已删0:

未删

intno;//图书编号

charname[20];//书名

charauthor[100];//作者

charpub[200];//出版社

intprice;//价格

intonshelf;//是否再架1:

再架2:

已借

public:

Book(){}

char*getname(){returnname;}//获取姓名

intgetno(){returnno;}//获取图书编号

intgetprice(){returnprice;}

intgettag(){returntag;}//获取删除标记

voidsetname(charna[])//设置书名{

strcpy(name,na);}

voidsetauthor(charau[])//设置作者{

strcpy(author,au);}

voidsetpub(charpu[])//设置出版社{

strcpy(pub,pu);}

voiddelbook(){tag=1;}//删除图书

voidaddbook(intn,char*na,char*au,char*pu,intt)//增加图书

{tag=0;

no=n;

strcpy(name,na);

strcpy(author,au);

strcpy(pub,pu);

price=t;

onshelf=1;}

intborrowbook()//借书操作{

if(onshelf==1)

{onshelf=0;

return1;}

return0;}

voidretbook()//还书操作{

onshelf=1;}

voiddisp()//输出图书{

cout<

"在架":

"已借")<

};

3.4.3读者类库

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

classRDatabase{

private:

inttop;//读者记录指针

Readerread[Maxr];//读者记录

public:

RDatabase()//构造函数,将reader.txt读到read[]中{

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

voidclear(){//删除所有读者信息

top=-1;}

intaddreader(intn,char*na){//添加读者时先查找是否存在

Reader*p=query(n);

if(p==NULL){

top++;

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

return1;}

return0;}

Reader*query(intreaderid)//按编号查找{

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

if(read[i].getno()==readerid&&read[i].gettag()==0){

return&read[i];}

returnNULL;}

voiddisp()//输出所有读者信息{

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

read[i].disp();}

voidreaderdata();//读者库维护

~RDatabase()//析构函数

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

当前位置:首页 > 法律文书 > 调解书

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

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