C++图书管理系统实验报告Word格式文档下载.docx

上传人:b****4 文档编号:16722551 上传时间:2022-11-25 格式:DOCX 页数:13 大小:72.09KB
下载 相关 举报
C++图书管理系统实验报告Word格式文档下载.docx_第1页
第1页 / 共13页
C++图书管理系统实验报告Word格式文档下载.docx_第2页
第2页 / 共13页
C++图书管理系统实验报告Word格式文档下载.docx_第3页
第3页 / 共13页
C++图书管理系统实验报告Word格式文档下载.docx_第4页
第4页 / 共13页
C++图书管理系统实验报告Word格式文档下载.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C++图书管理系统实验报告Word格式文档下载.docx

《C++图书管理系统实验报告Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统实验报告Word格式文档下载.docx(13页珍藏版)》请在冰豆网上搜索。

C++图书管理系统实验报告Word格式文档下载.docx

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

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++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。

欢迎您的下载,

资料仅供参考!

致力为企业和个人提供合同协议,策划案计划书,学习资料等等

打造全网一站式需求

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

当前位置:首页 > 幼儿教育 > 育儿知识

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

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