c++图书管理系统实验报告和源代码Word下载.docx
- 文档编号:1516365
- 上传时间:2023-04-30
- 格式:DOCX
- 页数:29
- 大小:35.04KB
c++图书管理系统实验报告和源代码Word下载.docx
《c++图书管理系统实验报告和源代码Word下载.docx》由会员分享,可在线阅读,更多相关《c++图书管理系统实验报告和源代码Word下载.docx(29页珍藏版)》请在冰点文库上搜索。
//查找某一本书
print_books();
//输出所有书的信息
virtualadd_book()=0;
//对于读者是还书,对于管理员添加书
virtualdelet_book()=0;
//对于读者是借书,对于管理员是去掉某一本书
};
Classmanager:
publicbooks//管理员类
readers_node*rroot;
manager(readers_node*);
savereaders();
add_book();
//添加图书信息
delet_book();
//删除图书
search_reader();
//查找读者信息
add_reader();
//添加读者
delet_reader();
//删除读者
print_readers();
//输出所有读者
classreader:
publicbooks{//读者类
private:
readers_node*personnel;
//存放读者自身信息
reader(readers_node*);
//还书
reader_borrow();
reader_return();
//借书
print_me();
//查看自己借书情况
save_readers(readers_node*);
2.2程序流程图
3软件运行或者测试结果
(1)管理员身份登录:
(2)读者身份登录:
4软件设计过程中遇到的问题以及解决办法
由于编写前期做了大量的设计工作,在编写过程中基本没有遇到难解决的问题提,倒是在设计类时有些茫然,经过反复斟酌还是做了一些取舍,比如把读取读者文件放在了类的外面等。
。
5总结
通过本次课程设计学到了很多东西,对于c++对象的含义有了进一步的认识,从而对类的封装和设计有了一种新的认识,不只是停留在表面,为以后的学习积累了经验,设计不比编写容易,类设计好是整个程序写好的前提,只有一个好的规划才能写出好的程序。
不过也通过本次发现了自己的不足之处。
总是:
本次课程设计受益匪浅,动手能力大大增强;
附录(程序源代码)
#include<
iostream.h>
fstream.h>
string.h>
stdlib.h>
stdio.h>
conio.h>
#definemax3
typedefstructBooks{
charbook_name[15];
inttotal_num;
intborrow_num;
charbook_num[15];
Books*next;
}books_node;
typedefstructReaders{
charreader_name[15];
charreader_no[15];
intreader_borrow_num;
structReader_borrow_books{
charborrow_books_name[15];
charborrow_books_no[15];
}reader_borrow_book[max];
Readers*next;
}readers_node;
classbooks{
classmanager:
publicbooks
publicbooks{
books:
:
books()
books_node*r;
broot=newbooks_node;
r=newbooks_node;
r->
next=NULL;
broot=r;
ifstreaminFile;
inFile.open("
c:
\\books.dat"
ios:
binary);
if(inFile.is_open()==-1)cout<
<
"
con'
topenbooks.dat"
endl;
else
{
inti=0;
while
(1)
{
i++;
books_node*node;
node=newbooks_node;
inFile.read((char*)node,sizeof(books_node));
if(inFile.eof())break;
node->
next=r->
next;
r->
next=node;
}
inFile.close();
if(i<
2)cout<
暂时没有图书数据"
}
}
savebooks()
books_node*L;
L=newbooks_node;
L=broot->
ofstreamoutFile;
outFile.open("
while(L)
outFile.write((char*)L,sizeof(books_node));
L=L->
outFile.close();
search_book()
charsearchedbook[15];
cout<
输入要查找的书的名子:
;
cin>
>
searchedbook;
r=broot->
while(r)
if((strcmp(searchedbook,r->
book_name))==0)
{
cout<
书名:
r->
book_name<
书的总量:
total_num<
借出:
borrow_num<
书的编号:
book_num<
break;
}
r=r->
if(r==NULL)cout<
对不起,没有此书"
print_books()
r=newbooks_node;
cout<
deleter;
manager:
add_book()
L=broot;
while
(1)
books_node*r;
r=newbooks_node;
r->
输入书名:
cin>
book_name;
输入书的编号:
book_num;
borrow_num=0;
输入总数:
total_num;
next=L->
L->
next=r;
addmore?
(n终止,其它键继续)"
charsign;
sign;
if(sign=='
n'
||sign=='
N'
)
break;
broot=L;
delet_book()
chardeleted[15];
输入要删除的图书名字:
deleted;
books_node*node,*L;
node=newbooks_node;
node=broot;
while(node->
next)
if((strcmp(deleted,node->
next->
book_name))==0)break;
node=node->
if(node->
next==NULL)
sorry!
Thereisnothebook!
if(node->
borrow_num==0)
node->
next=node->
savebooks();
else
对不起,暂时不能删除,因为还有没有归还的书"
manager(readers_node*node)
rroot=newreaders_node;
rroot=node;
savereaders()
readers_node*L;
L=newreaders_node;
L=rroot->
\\Readers.dat"
outFile.write((char*)L,sizeof(readers_node));
add_reader()
L=rroot;
intsign=0;
readers_node*r;
r=newreaders_node;
输入姓名:
reader_name;
输入读者的编号:
reader_no;
reader_borrow_num=0;
rroot=L;
delet_reader()
输入要删除读者的名字:
readers_node*node,*L;
node=newreaders_node;
node=rroot;
reader_name))==0)break;
Thereisnothereader!
savereaders();
}
search_reader()
readers_node*r;
r=newreaders_node;
r=rroot->
charreader[15];
输入要查找读者的姓名:
reader;
if((strcmp(reader,r->
reader_name))==0)
姓名:
reader_name<
编号:
reader_no<
借书总数:
reader_borrow_num<
for(inti=0;
i<
reader_borrow_num;
i++)
{
cout<
reader_borrow_book[i].borrow_books_name<
reader_borrow_book[i].borrow_books_no;
elser=r->
if(!
r)cout<
没有此人"
print_readers()
readers_node*printL;
printL=newreaders_node;
printL=rroot->
while(printL)
姓名编号借书总数"
printL->
for(inti=0;
printL=printL->
deleteprintL;
reader:
reader(readers_node*node)
(personnel)=newreaders_node;
personnel=node;
books_node*node;
node=broot->
charreturned[15];
输入要还书的名子:
returned;
for(inti=0;
personnel->
if((strcmp(returned,personnel->
reader_borrow_book[i].borrow_books_name))==0)break;
if(i==personnel->
reader_borrow_num+1)
printf("
不好意思,你没有此书"
);
system("
pause"
else{
while(node)
if((strcmp(node->
book_name,returned)==0))break;
elsenode=node->
if(node)
personnel->
reader_borrow_num--;
node->
borrow_num--;
savebooks();
elsecout<
对不起,没有你要还的书或者所还书被删除"
if(personnel->
max)
charborrowed[15];
输入要借书的名子:
borrowed;
while(node)
if((strcmp(node->
book_name,borrowed)==0))break;
elsenode=node->
if(node&
&
(node->
total_num-node->
borrow_num)>
0)
strcpy(personnel->
reader_borrow_book[personnel->
reader_borrow_num].borrow_books_name,node->
book_name);
reader_borrow_num++].borrow_books_no,node->
book_num);
node->
borrow_num++;
elsecout<
对不起,没有你要借的书或者所要借的书已经借完!
对不起,你借书的数量已经超过最大借数量"
print_me()
姓名"
printf("
%s,书的编号:
%s"
personnel->
reader_borrow_book[i].borrow_books_name,personnel->
reader_borrow_book[i].borrow_books_no);
voidPause()
getch();
fflush(stdin);
reader_borrow()
reader_return()
save_readers(readers_node*L)
readers_node*root;
root=newreaders_node;
root=L->
while(root)
{
outFile.write((char*)root,sizeof(readers_node));
root=root->
readers_node*read_readers()
readers_node*r;
intflag=0;
if(inFile.is_open()==-1)
topenreaders.dat"
returnr;
while
(1)
flag++;
readers_node*node;
node=newreaders_node;
inFile.read((char*)node,sizeof(readers_node));
if(inFile.eof())break;
r->
}
inFile.close();
if(flag<
2)
暂无读者
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- c+ 图书 管理 系统 实验 报告 源代码