C++课程设计论文.docx
《C++课程设计论文.docx》由会员分享,可在线阅读,更多相关《C++课程设计论文.docx(32页珍藏版)》请在冰豆网上搜索。
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;iborbook[i]=0;}
voidborrowbook(intbookid)//借书操作{
for(inti=0;iif(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;iif(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()//析构函数