C++图书管理系统实验报告.docx

上传人:b****5 文档编号:14901312 上传时间:2023-06-28 格式:DOCX 页数:14 大小:37.99KB
下载 相关 举报
C++图书管理系统实验报告.docx_第1页
第1页 / 共14页
C++图书管理系统实验报告.docx_第2页
第2页 / 共14页
C++图书管理系统实验报告.docx_第3页
第3页 / 共14页
C++图书管理系统实验报告.docx_第4页
第4页 / 共14页
C++图书管理系统实验报告.docx_第5页
第5页 / 共14页
C++图书管理系统实验报告.docx_第6页
第6页 / 共14页
C++图书管理系统实验报告.docx_第7页
第7页 / 共14页
C++图书管理系统实验报告.docx_第8页
第8页 / 共14页
C++图书管理系统实验报告.docx_第9页
第9页 / 共14页
C++图书管理系统实验报告.docx_第10页
第10页 / 共14页
C++图书管理系统实验报告.docx_第11页
第11页 / 共14页
C++图书管理系统实验报告.docx_第12页
第12页 / 共14页
C++图书管理系统实验报告.docx_第13页
第13页 / 共14页
C++图书管理系统实验报告.docx_第14页
第14页 / 共14页
亲,该文档总共14页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

C++图书管理系统实验报告.docx

《C++图书管理系统实验报告.docx》由会员分享,可在线阅读,更多相关《C++图书管理系统实验报告.docx(14页珍藏版)》请在冰点文库上搜索。

C++图书管理系统实验报告.docx

C++图书管理系统实验报告

面向对象程序设计(C++语言)课程设计

设计说明书

图书管理系统的设计与实现

起止日期:

年月日至年月日

 

学生

班级

学号

成绩

指导教师(签字)

 

计算机与通信学院

年月日

图书管理系统

一.需求分析

图书馆是目前生活中除了网络外的另一个获取知识的重要场所。

利用图书管理系统对图书记录进行统一管理,包括新增图书记录,更改图书记录,删除图书记录等功能,实现图书管理工作的系统化,规化和自动化,为图书管理提供便利。

同时是学习完《面向对象程序设计》课程后进行的一次全面的综合练习。

有助于加深对面向对象程序设计中基础理论和基本知识的理解,培养了实践能力,促进理论与实践的结合。

二.设计要求:

1.图书信息包括:

登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

试设计一图书信息管理系统,使之能提供以下功能:

2.系统以菜单方式工作

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

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

5.查询和排序功能:

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

6.按书名查询

7.按作者名查询

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

三.概要设计

1、类的设计

①、Book类的设计(部函数流程图):

 

ClassBook

获取图书类型

获取书名

获取图书编号

获取删除标志

设置书名

设置类型

删除图书

增加图书

输出图书

②、BDatabase类的设计:

ClassBDatabase

图书记录

删除全部记录

增加记录

查找图书记录

图书库(函数)

③、主函数流程图:

 

4多态的实现

classPeople

{

public:

virtualvoidcard(){cout<<"cardpeople"<

};

classStudent:

publicPeople

{

public:

virtualvoidcard(){cout<<"cardstudent"<

};

四、详细设计:

#defineStrNum20

#defineType20

#include

#include

#include

#include//输入/输出文件流类

usingnamespacestd;

constintMaxb=100;//最多可存储的图书

classPeople

{

public:

virtualvoidcard(){cout<<"cardpeople"<

};

classStudent:

publicPeople

{

public:

virtualvoidcard(){cout<<"cardstudent"<

};

 

classBook

{

private:

intlab;//删除标记

intnum;//图书编号

intadd;//增加标记

charnumber[StrNum];//编号

charbookname[StrNum];//书名

charbookkind[Type];//图书类型

public:

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;

strcpy(bookname,na);

strcpy(bookkind,kin);

}

voiddisp()//输出图书

{

cout.flags(ios:

:

left);//设置对齐的标志位为左

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()//全删

{

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;i<=top;i++)

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

book[i].disp();

}

~BDatabase()//析构函数,将book[]写到book.txt文件中,实现文本的写入

{

fstreamfile("book.txt",ios:

:

out);

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

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

file.write((char*)&book[i],sizeof(book[i]));

file.close();

}

};

voidmain()

{

BDatabaseBookDB;

charchoice;

charbname[40];

charbkind[40];

charnewType[20];

intbookid;

Book*b;

while(choice!

='0')

{

cout<<"\t******************************************************************\n";

cout<<"\n\n";

cout<<"\t\t\t图书管理系统\n\n";

cout<<"\t\t\t1新增图书记录\n";

cout<<"\t\t\t2更改图书记录\n";

cout<<"\t\t\t3删除图书记录\n";

cout<<"\t\t\t4查找图书记录\n";

cout<<"\t\t\t5显示图书记录\n";

cout<<"\t\t\t6清空全部记录(慎用)\n";

cout<<"\t\t\t0退出系统\n";

cout<<"\t\t\t7人员\n";

cout<<"\n\n";

cout<<"\t******************************************************************\n";

cout<<"请选择(1,2,3,4,5,6,0):

";

cin>>choice;

switch(choice)

{

case'1':

cout<<"输入图书编号:

"<

cin>>bookid;

cout<<"输入图书类型:

"<

cin>>newType;

cout<<"输入图书书名:

"<

cin>>bname;

BookDB.addbook(bookid,bname,newType);

break;

case'2':

cout<<"输入图书编号:

"<

cin>>bookid;

b=BookDB.query(bookid);

if(b==NULL)

{

cout<<"该图书不存在"<

break;

}

cout<<"输入新的书名:

"<

cin>>bname;

b->setname(bname);

cout<<"输入新的类型:

"<

cin>>bkind;

b->setkind(bkind);

break;

case'3':

cout<<"读入图书编号:

"<

cin>>bookid;

b=BookDB.query(bookid);

if(b==NULL)

{

cout<<"该图书不存在"<

break;

}

chartg1;

cout<<"确定要删除此记录吗?

(Y/N)"<

cin>>tg1;

if(tg1!

='n'&&tg1!

='N')

{

b->delbook();

cout<<"已成功删除该书记录!

"<

break;

}

case'4':

cout<<"读入图书编号:

"<

cin>>bookid;

b=BookDB.query(bookid);

if(b==NULL)

{

cout<<"该图书不存在"<

break;

}

cout<<"图书编号图书名称图书类型\n";

b->disp();

break;

case'5':

cout<<"图书编号图书名称图书类型\n";

b=BookDB.query(bookid);

b->disp();

break;

case'6':

chartg2;

cout<<"确定要清空所有记录吗?

(Y/N)"<

cin>>tg2;

if(tg2!

='n'&&tg2!

='N')

{

BookDB.clear();

cout<<"已成功清空记录!

"<

break;

}

case'0':

break;

default:

cout<<"输入错误,请从新输入(数字为0~6):

";

case'7':

Studentstudent;

People*ppeople=&student;

People&ref=student;

ppeople->card();

ref.card();

break;

 

}

}

}

五.用户使用说明

本系统实现了图书管理系统的典型功能,包括查询所有记录的信息,添加查找等功能,基本符合设计要求,利用类的封装实现了一定的安全性,函数的实现与调用在主函数中实现。

但在记录查询上仍有缺陷,有待于完善。

六、实验心得:

1、通过实验加深了对c++的了解,在程序设计上提高了自己的动手能力,在实践中增强了自己的编程水平。

2、但是因为自己独立完成且能力有限,还有部分功能未能完善,例如对书名,编号的排序等等,这些局限性都是有待逐步完善的方面。

3、而且通过这次课程设计,我培养了自己对C++编程的兴趣,编程能力也有所提高,但仍存在许多不足,不能独自写出功能很齐全的代码,写代码要参考很多资料,所以今后应培养自己独立写代码的能力。

 

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

当前位置:首页 > IT计算机 > 电脑基础知识

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2