C++图书管理系统设计文档格式.doc

上传人:聆听****声音 文档编号:475773 上传时间:2023-04-29 格式:DOC 页数:51 大小:266.50KB
下载 相关 举报
C++图书管理系统设计文档格式.doc_第1页
第1页 / 共51页
C++图书管理系统设计文档格式.doc_第2页
第2页 / 共51页
C++图书管理系统设计文档格式.doc_第3页
第3页 / 共51页
C++图书管理系统设计文档格式.doc_第4页
第4页 / 共51页
C++图书管理系统设计文档格式.doc_第5页
第5页 / 共51页
C++图书管理系统设计文档格式.doc_第6页
第6页 / 共51页
C++图书管理系统设计文档格式.doc_第7页
第7页 / 共51页
C++图书管理系统设计文档格式.doc_第8页
第8页 / 共51页
C++图书管理系统设计文档格式.doc_第9页
第9页 / 共51页
C++图书管理系统设计文档格式.doc_第10页
第10页 / 共51页
C++图书管理系统设计文档格式.doc_第11页
第11页 / 共51页
C++图书管理系统设计文档格式.doc_第12页
第12页 / 共51页
C++图书管理系统设计文档格式.doc_第13页
第13页 / 共51页
C++图书管理系统设计文档格式.doc_第14页
第14页 / 共51页
C++图书管理系统设计文档格式.doc_第15页
第15页 / 共51页
C++图书管理系统设计文档格式.doc_第16页
第16页 / 共51页
C++图书管理系统设计文档格式.doc_第17页
第17页 / 共51页
C++图书管理系统设计文档格式.doc_第18页
第18页 / 共51页
C++图书管理系统设计文档格式.doc_第19页
第19页 / 共51页
C++图书管理系统设计文档格式.doc_第20页
第20页 / 共51页
亲,该文档总共51页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

C++图书管理系统设计文档格式.doc

《C++图书管理系统设计文档格式.doc》由会员分享,可在线阅读,更多相关《C++图书管理系统设计文档格式.doc(51页珍藏版)》请在冰点文库上搜索。

C++图书管理系统设计文档格式.doc

Reader读者类、RDatabase读者库类、Book图书类、BDatabase图书库类

classRDatabase //读者库类

inttop;

//读者记录指针

Readerread[Maxr];

//读者记录

RDatabase() ;

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

voidclear();

//删除所有读者信息

intaddreader(intn,char*na);

//增添读者信息

Reader*query(intreaderid);

//按编号查找

voiddisp();

//输出所有读者信息

intReadernum();

//记录读者信息

voidreaderdata();

//读者库维护

~RDatabase();

//析构函数,将read[]写入reader.txt文件中

2、详细设计

1)类的原型描述

classReader //读者类

inttag;

//删除标记1:

已删0:

未删

intno;

//读者编号

charname[10];

//读者姓名

intborbook[Maxbor];

//所借图书

Reader(){}

char*getname()//获取姓名

intgettag() //获取删除标记

intgetno()//获取读者编号

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

voiddelbook()//设置删除标记

voidaddreader(intn,char*na);

//增加读者

voidborrowbook(intbookid);

//借书操作

intretbook(intbookid);

//还书操作

//输出读者信息

classBDatabase //图书库类

//图书记录指针

Bookbook[Maxb];

//图书记录

BDatabase() ;

//构造函数,将book.txt读到book[]中

voidclear();

//全删

intaddbook(intn,char*na);

//增加图书

Book*query(intbookid);

//查找图书

//输出所有图书信息

voidbookdata();

//图书库维护

~BDatabase();

//析构函数,将book[]写入book.txt文件中

classBook //图书类

//删除标记1:

//图书编号

charname[20];

//书名

intonshelf;

//是否在架1:

在架0:

已借

Book(){}

char*getname();

//获取姓名

intgetno();

//获取图书编号

intgettag();

//获取删除标记

voidsetname(charna[]);

//设置书名

voiddelbook();

//删除图书

voidaddbook(intn,char*na);

//增加图书

intborrowbook() ;

//借书操作

voidretbook();

//还书操作

//输出图书

三、核心控制设计

1、在主函数中我们要做的操作包括:

(1)建立1个Reader读者类、1个RDatabase读者库类、1个Book图书类、1个BDatabase图书库类

(2)建立菜单界面。

完成以下内容:

①进入功能必须打开菜单,然后用户根据菜单选择相应的操作方式,如查看数据、编辑图书数据以及修改图书数据、维护图书的采购信息。

添加、删除、查看读者个人信息,浏览图书信息。

②能够对图书基本信息、图书采购信息、图书的借阅人信息进行统计,统计的结果能够以表格的形式来表示。

(3)将图书基本信息、图书采购信息、图书的借阅人信息存储在相应的文件中。

(4)系统界面友好,易操作。

2、本程序应具备的功能:

A.添加、借阅、还书功能:

(1)添加读者和图书信息。

(2)借阅尚在架的图书。

(3)读者归还的图书。

B.查找功能

(1)根据图书的编号查找图书信息。

(2)根据读者的编号查找读者的信息。

C.系统的操作

(1)系统在进入时,要有菜单提示;

(2)系统在用户退出时,有一定的提示。

3、算法分析

1)添加操作:

(读者信息的添加与图书信息的添加类似)

包括两个部分,先通过输入设备输入信息,系统获取;

然后添加入读者数据库read.txt文件中。

㈠获取信息

voidReader:

:

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

{

inti=0

i<

Maxbor

borbook[i]=0;

i++;

输入n和na

tag=0;

no=n;

no=n;

strcpy(name,na);

tag=0;

strcpy(name,na);

for(inti=0;

Maxbor;

i++)

borbook[i]=0;

}

intRDatabase:

addreader(intn,char*na)//增添读者信息

{

der*p=query(n);

if(p==NULL)

{

top++;

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

cout<

<

"

读者添加成功"

endl;

return1;

}

return0;

}

流程图:

der*p=query(n);

p==NULL

Y

return0;

top++;

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

cout<

return1;

N

㈡析构函数写入新读者的编号跟姓名

RDatabase:

~RDatabase()

{

fstreamfile("

reader.txt"

ios:

out);

for(inti=0;

=top;

i++)

{

if(read[i].gettag()==0)

file.write((char*)&

read[i],sizeof(read[i]));

else

file.close();

}

}

fstreamfile("

当i<

=top

i++

read[i].gettag()==0

YN

inti=0

file.close();

file.write((char*)&

2)借书操作:

利用for语句和if语句,通过判断图书的borbook的编号是否为0,来判断图书是否未被借走或还没有被借完。

borrowbook(intbookid)//借书操作

for(inti=0;

i++)

if(borbook[i]==0)

{

borbook[i]=bookid;

return;

inti=0

borbook[i]==0

YN

i++

borbook[i]=bookid;

return;

}

3)还书操作:

利用for语句和if语句,通过判断图书的borbook的编号是否为要还书的编号,来判断是否借出此书。

intReader:

retbook(intbookid) //还书操作

for(inti=0;

{

if(borbook[i]==bookid)

borbook[i]=0;

borbook[i]==bookid

continue

borbook[i]=0;

return1;

return1;

}

else

continue;

}

(4)查找功能:

利用for语句和if语句,寻找与要查询的编号相同的读者编号或图书编号,如果找到,向系统返回相应的编号,输出相应的信息。

(读者的查找与图书查找类似)

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

for(inti=0;

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

&

read[i].gettag()==0)

return&

read[i];

returnNULL;

inti=0

read[i].getno()==readerid

Y&

read[i].gettag()==0N

return&

i++;

returnNULL;

四、测试分析

(一)、此系统存在问题

1)未设登录密码保护系统,是整个图书管理系统失去了一定的安全性;

2)程序运行界面

此界面运行时选择4有时会出现内存读取错误;

1)当输入错的数据类型时可能导致内存错误;

2)读者、图书信息不完善;

3)命名不是很规范;

4)信息存储有限;

五、心得体会

通过这次课程设计让我逐步学会了如何运用C++面向对象程序设计的设计思想和方法来解决实际问题。

比如这次设计图书管理系统,首先我考虑是在实际应用时用户一般进行什么操作,对哪些对象进行操作。

很显然我需要建立两个类,包括图书类和读者类,同时考虑到图书和读者不止一个,所以还需两个类,图书库类和读者库类,这两个类分别将其信息传递给图书类和读者类。

确定了类之后,则需要对类的内容进行扩充。

由于我需要这个系统完成对图书管理和读者管理的功能,并能对借阅信息进行管理,要求完成一下功能,图书资料管理,可以添加、修改、删除、查询书籍信息,读者资料管理,可以添加、修改、删除、查询读者信息;

还书管理,可以进行还书信息。

所以在对应的类下建立相应功能函数。

建立功能函数后就是构造主函数。

主函数的作用就是通过向对象发送信息、对象接受信息启动相应的方法来实现相应的操作。

当然在这些过程中要保证面向对象程序设计的抽象、封装、多态和继承的特点。

在设计本系统中虽然综合考虑到了图书管理的各个方面,界面设计简洁,数据库设计合理,但依然还有一些不足。

为了能够较好地完成本次课程设计,我详细阅读教材,以及网上搜索,和到图书馆查找相关资料等。

在做课程设计的过程中,我在利用所学的知识同时,又学到了很多实例化的理论知识和软件工程的一些实践,总结了一些经验和方法强化了我的实际动手能力,同时也找到自己的不足,我一定会继续学习增加自己的编程能力和调试能力,在今后的学习中我将会更加的努力,增加自己的知识储备,拓宽自己的知识面,锻炼自己的能力,使我的综合素质得到较大的提高。

在这设计的过程中我也出现过一些比较严重的错误,后来在同学的指点下我改正了自己的错误,并最终成功调试除了程序。

当程序调试出来的那一瞬间,我感觉自己完成了一件非常了不起的事,好有成就感。

在以后的日子,我将会继续我的兴趣继续深入学习程序设计,相信在越来越多的尝试之后,自己会不断进步不断提高的。

最后感谢老师的指导与同学的帮助,使我能顺利完成这次程序设计。

六、源程序代码

#include<

iostream>

iomanip>

string>

fstream>

//输入/输出文件流类

usingnamespacestd;

constintMaxr=100;

//最多的读者

constintMaxb=100;

//最多的图书

constintMaxbor=5;

//每位读者最多借五本书

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

classReader

{

private:

inttag;

//删除标记1:

已删0:

未删

intno;

//读者编号

charname[10];

//读者姓名

intborbook[Maxbor];

//所借图书

public:

Reader(){}//构造函数

char*getname()

{

returnname;

} //获取姓名

intgettag()

{

returntag;

} //获取删除标记

intgetno()

returnno;

}//获取读者编号

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

}

voiddelbook()//设置删除标记

tag=1;

}

voidaddreader(intn,char*na);

voidborrowbook(intbookid);

//借书操作

intretbook(intbookid);

//还书操作

voiddisp();

//输出读者信息

};

continue;

return0;

disp()//输出读者信息

cout<

setw(5)<

no<

setw(10)<

name<

"

借书编号:

["

;

if(borbook[i]!

=0)

borbook[i]<

|"

cout<

]"

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

classRDatabase

{

private:

inttop;

//读者记录指针

Readerread[Maxr];

//读者记录

public:

RDatabase();

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

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

top=-1;

intaddreader(intn,char*na);

//增添读者信息

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

read[i].gettag()==0)

//输出所有读者信息

intReadernum();

//得到读者编号

voidreaderdata();

//读者库维护

~RDatabase();

//析构函数,将read[]写入reader.txt文件中

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

Readers;

fstreamfile("

in);

while

(1)

file.read((char*)&

s,sizeof(s));

if(!

file)break;

top++;

read[top]=s;

file.close();

~RDatabase() //析构函数,将read[]写入reader.txt文件中

if(read[i].gettag()==0)

file.write((char*)&

else

file.close();

}

intRDatabase:

Reader*p=query(n);

voidRDatabase:

disp() //输出所有读者信息

read[i].disp();

Readernum()

returntop;

readerdata()//读者库维护

charchoice;

charrname[10

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

当前位置:首页 > 自然科学 > 物理

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

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