C++图书管理系统实验报告Word格式文档下载.docx
《C++图书管理系统实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统实验报告Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。
(至少一种查询方式)--算法
6.按书名查询
7.按作者名查询
8.图书信息的删除与修改(可选项)
三.概要设计
1、类的设计
①、Book类的设计(内部函数流程图):
②、BDatabase类的设计:
③、主函数流程图:
4多态的实现
classPeople
{
public:
virtualvoidcard(){cout<
<
"
cardpeople"
endl;
}
};
classStudent:
publicPeople
{
public:
virtualvoidcard(){cout<
cardstudent"
};
四、详细设计:
#defineStrNum20
#defineType20
#include<
iostream>
iomanip>
string>
fstream>
//输入/输出文件流类
usingnamespacestd;
constintMaxb=100;
//最多可存储的图书
classBook
{
private:
intlab;
//删除标记
intnum;
//图书编号
intadd;
//增加标记
charnumber[StrNum];
//编号
charbookname[StrNum];
//书名
charbookkind[Type];
//图书类型
Book(){}
chargetkind()//获取图书类型
returnbookkind[Type];
}
chargetname()//获取书名
{
returnbookname[StrNum];
}
intgetnum()//获取图书编号
returnnum;
intgetlab()//获取删除标记
returnlab;
voidsetname(charna[])//设置书名
strcpy(bookname,na);
voidsetkind(charkin[])//设置类型
strcpy(bookkind,kin);
voiddelbook()//删除图书
lab=1;
voidaddbook(intn,char*na,char*kin)//增加图书
lab=0;
num=n;
voiddisp()//输出图书
cout.flags(ios:
:
left);
//设置对齐的标志位为左
cout<
setw(15)<
num<
setw(20)<
bookname<
bookkind<
}
classBDatabase
inttop;
Bookbook[Maxb];
//图书记录
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()//全删
top=-1;
intaddbook(intn,char*na,char*kin)//增加图书
Book*p=query(n);
if(NULL==p)
{
top++;
book[top].addbook(n,na,kin);
return1;
}
return0;
Book*query(intbookid)//查找图书
for(inti=0;
i<
=top;
i++)
if(book[i].getnum()==bookid&
&
book[i].getlab()==0)
{
return&
book[i];
returnNULL;
voiddisp()//图书库
for(inti=0;
if(book[i].getlab()==0)
book[i].disp();
~BDatabase()//析构函数,将book[]写到book.txt文件中,实现文本的写入
fstreamfile("
out);
if(book[i].getlab()==0)
file.write((char*)&
book[i],sizeof(book[i]));
voidmain()
BDatabaseBookDB;
charchoice;
charbname[40];
charbkind[40];
charnewType[20];
intbookid;
Book*b;
while(choice!
='
0'
)
cout<
\t******************************************************************\n"
;
\n\n"
\t\t\t图书管理系统\n\n"
\t\t\t1新增图书记录\n"
\t\t\t2更改图书记录\n"
\t\t\t3删除图书记录\n"
\t\t\t4查找图书记录\n"
\t\t\t5显示图书记录\n"
\t\t\t6清空全部记录(慎用)\n"
\t\t\t0退出系统\n"
\t\t\t7人员\n"
请选择(1,2,3,4,5,6,0):
cin>
>
choice;
switch(choice)
case'
1'
cout<
输入图书编号:
cin>
bookid;
输入图书类型:
newType;
输入图书书名:
bname;
BookDB.addbook(bookid,bname,newType);
break;
2'
b=BookDB.query(bookid);
if(b==NULL)
{
cout<
该图书不存在"
}
输入新的书名:
b->
setname(bname);
输入新的类型:
bkind;
setkind(bkind);
3'
读入图书编号:
cin>
b=BookDB.query(bookid);
if(b==NULL)
{
break;
}
chartg1;
确定要删除此记录吗?
(Y/N)"
tg1;
if(tg1!
n'
tg1!
N'
b->
delbook();
已成功删除该书记录!
}
case'
4'
if(b==NULL)
}
图书编号图书名称图书类型\n"
disp();
5'
b->
6'
chartg2;
确定要清空所有记录吗?
tg2;
if(tg2!
tg2!
BookDB.clear();
已成功清空记录!
default:
cout<
输入错误,请从新输入(数字为0~6):
case'
7'
Studentstudent;
People*ppeople=&
student;
People&
ref=student;
ppeople->
card();
ref.card();
}
五.用户使用说明
本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用在主函数中实现。
但在记录查询上仍有缺陷,有待于完善。
六、实验心得:
1、通过实验加深了对c++的了解,在程序设计上提高了自己的动手能力,在实践中增强了自己的编程水平。
2、但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。
3、而且通过这次课程设计,我培养了自己对C++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。
欢迎您的下载,
资料仅供参考!
致力为企业和个人提供合同协议,策划案计划书,学习资料等等
打造全网一站式需求