C++课程设计报告图书信息管理系统设计Word文档格式.docx
- 文档编号:21806579
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:35
- 大小:604.99KB
C++课程设计报告图书信息管理系统设计Word文档格式.docx
《C++课程设计报告图书信息管理系统设计Word文档格式.docx》由会员分享,可在线阅读,更多相关《C++课程设计报告图书信息管理系统设计Word文档格式.docx(35页珍藏版)》请在冰豆网上搜索。
查询某一读者的信息
2.2.2图书信息查询模块
查询某一图书的信息
2.2.3打印图书信息
打印所有图书的信息
2.2.4打印读者信息
打印所有读者的信息
2.3.借书模块
登记读者的借书信息
2.4.还书模块
登记读者的还书信息
3.详细设计
3.1.类设计
typedefstructBOOK//声明图书结构体变量BOOK,表示图书信息
{
charnumber[10];
//书号
chartitle[20];
//书名
charwriter[10];
//作者
charpublish[20];
//出版社
intyear;
//出版年份
intmonth;
//出版月份
intday;
//出版日期
floatprice;
//出版价格
intstorage;
//库存量
intremain;
//现存量
structBOOK*next;
//下一个节点指针
}BOOK;
typedefstructBORROW//借书信息
charbook_number[10];
//书号
}BORROW;
typedefstructREADER//读者信息
charnumber[3];
//读者编号
charname[10];
//读者名字
intborrow_amount;
//当前借书量
BORROWborrow[Max];
//借书信息
structREADER*next;
}READER;
3.2.基本操作函数
intDisplayMenu();
//显示主菜单
voidInitialize();
//初始化(初始化读者和图书的信息)
voidInit_reader();
//初始化读者信息
voidInit_book();
//初始化图书信息
voidInsert_New_Book();
//新书入库模块
intFind();
//查找菜单
voidFind_Select();
//查找菜单选择函数
voidFind_Reader();
//查找某个读者信息
voidFind_Book();
//查找某个图书信息
voidPrint_reader();
//打印所有读者信息
voidPrint_book();
//打印所有图书信息
voidBorrow_Book();
//借书函数
voidReturn_Book();
//还书函数
voidSave();
//保存到文件
voidSelectmenu();
//主菜单选择函数
3.3.程序流程图
3.3.1主函数流程图
图3.3.1主函数流程图
3.3.2初始化模块
图3.2初始化模块流程图
3.3.3借书模块
图3.3借书模块流程图
3.3.4新书入库模块
图3.4新书入库模块
3.3.5信息查询模块
图3.5信息查询模块流程图
3.3.6还书模块
图3.6还书模块流程图
4.运行结果
5.设计源码
/*StandardTemplateLibrary,标准模板库*/
#include<
iostream>
//数据流输入/输出
string>
//字符串类
usingnamespacestd;
#defineMax3
BOOK*h_book=NULL;
//图书链表头结点
READER*h_reader=NULL;
//读者链表头结点
//显示主菜单
intDisplayMenu()
{
intchoice;
cout<
<
endl<
"
图书管理系统主菜单"
endl;
string(50,'
='
)<
*\t0----退出系统*"
*\t1----新书入库*"
*\t2----信息查询*"
*\t3----借书登记*"
*\t4----还书管理*"
请选择相应选项:
;
while
(1)
{
cin>
>
choice;
if(choice<
0||choice>
4)
cout<
\n错误!
请重新输入:
else
break;
}
returnchoice;
}
voidInitialize()//初始化(初始化读者和图书的信息)
Init_book();
Init_reader();
voidInit_book()//初始化图书信息
BOOK*pBook;
//创建指向BOOK类的指针
pBook=(BOOK*)malloc(sizeof(BOOK));
/*sizeof是C/C++中的一个操作符(operator),作用是返回一个对象或者类型所占的内存字节数。
*/
/*Malloc向系统申请分配指定size个字节的内存空间。
返回类型是void*类型。
/*void*类型可以强制转换为任何其它类型的指针。
memset(pBook,0,sizeof(BOOK));
//函数原型void*memset(void*s,intch,size_tn);
/*memset函数的作用是将s中前n个字节替换为ch并返回s;
h_book=pBook;
//打开文件
if(freopen("
book.txt"
"
r"
stdin)==NULL)
fclose(stdin);
freopen("
CON"
stdin);
return;
}
while
(1)
//读取读者信息
pBook->
number;
if(strcmp(pBook->
number,"
0"
)==0)//读到了文件末尾
//strcmp是字符串比较函数
{
//关闭文件输入流,恢复标准输入流
fclose(stdin);
freopen("
return;
}
title>
writer>
publish>
year>
month
>
day>
price>
storage>
remain;
//创建下一个节点
BOOK*temp=(BOOK*)malloc(sizeof(BOOK));
memset(temp,0,sizeof(BOOK));
pBook->
next=temp;
pBook=temp;
//关闭文件输入流,恢复标准输入流
fclose(stdin);
freopen("
//初始化读者信息
voidInit_reader()
READER*pReader;
pReader=(READER*)malloc(sizeof(READER));
/*向系统申请分配指定size个字节的内存空间,返回类型是void*类型。
memset(pReader,0,sizeof(READER));
/*把pReader清零*/
h_reader=pReader;
reader.txt"
stdin)==NULL)//打开文件
pReader->
if(strcmp(pReader->
)==0)//如果读到了文件末尾
name>
borrow_amount;
for(inti=0;
i<
pReader->
i++)
cin>
borrow[i].book_number;
READER*temp=(READER*)malloc(sizeof(READER));
memset(temp,0,sizeof(READER));
pReader->
pReader=temp;
//函数原型:
intfclose(FILE*stream);
/*重新分配文件指针,实现重定向。
如果stream流已经打开,则先关闭该流。
如果该流已经定向,则freopen将会清除该定向。
/*函数原型:
FILE*freopen(constchar*filename,constchar*type,FILE*stream);
*/
/*功能:
关闭一个流。
注意:
使用fclose()函数就可以把缓冲区内最后剩余的数据输出到磁盘文件中,并释放文件指针和有关的缓冲区。
voidInsert_New_Book()//新书入库模块
BOOK*p,*p0,*p1;
p=p1=h_book;
\n\t\t新书入库\n"
string(40,'
\n请输入新书信息:
\n"
p0=(BOOK*)malloc(sizeof(BOOK));
BookNo.:
cin>
p0->
while(strcmp(p0->
number,p1->
number)!
=0&
&
p1->
next!
=NULL)
p1=p1->
next;
if(strcmp(p0->
number)==0)
/*此处分两种情况,若图书编号存在,则直接进库,只须输入书的数量*/
cout<
\n此编号图书已存在!
!
直接入库!
请输入入库的图书数量:
storage;
p1->
storage+=p0->
remain+=p0->
cin.clear();
cin.ignore(200,'
\n'
);
else/*若不存在,则需要输入其他的信息,然后在进行插入操作*/
图书名:
chartmp[20]={0};
cin>
tmp;
memcpy(p0->
title,tmp,20);
//函数原型void*memcpy(void*dest,constvoid*src,intn);
/*从源src所指的内存地址的起始位置开始拷贝n个字节到目标dest所指的内存地址的起始位置中*/
图书作者:
chartmp0[10]={0};
writer,tmp,20);
图书出版社:
chartmp1[20]={0};
publish,tmp,20);
图书的出版年份:
year;
图书的出版月份:
month;
图书的出版日期:
day;
图书价格:
price;
图书入库量:
p0->
storage=p0->
while(strcmp(p->
next->
)!
=0)
p=p->
if(h_book==NULL)h_book=p0;
/*此处分两种情况,链表中如果没有数据,head则直接指向p0处*/
else
p0->
next=p->
p->
next=p0;
/*此处分两种情况,链表中有数据,链表中最后元素的next指向p0处*/
remain=p0->
\n新书入库完毕!
getchar();
//查找菜单
intFind()
\n\t\t信息查询菜单\n"
*\t0----返回上级\t*\n"
*\t1----查找图书\t*\n"
*\t2----查找读者\t*\n"
*\t3----打印所有图书\t*\n"
*\t4----打印所有读者\t*\n"
请选择相应代码:
for(;
)/*循环调用模式,保证能进行重复操作*/
{
cin.clear();
cin.ignore(200,'
break;
//查找菜单选择函数
voidFind_Select()
while
(1)/*循环调用模式,保证能进行重复操作*/
switch(Find())/*功能选择*/
{
case0:
return;
case1:
Find_Book();
break;
case2:
Find_Reader();
case3:
Print_book();
case4:
Print_reader();
default:
cout<
cin.clear();
exit(0);
voidFind_Reader()//查找某个读者信息
READER*p;
inti;
charfind_reader[10];
p=h_reader;
\n读者信息查询模块\n"
\n请输入你要查询读者编号:
find_reader;
while(strcmp(p->
number,find_reader)!
p->
next)
p=p->
if(strcmp(p->
number,find_reader)==0)
\n读者编号:
find_reader<
的信息为:
编号:
number<
姓名:
name<
/*此处这样处理,是为了能实现一个读者能借多本书,
而Max的数值可以随需要修正*/
for(i=0;
i<
Max;
i++)
借的第"
i+1<
本书的编号为:
borrow[i].book_number<
else
\n此读者编号不存在,请核对!
voidFind_Book()//查找图书信息
BOOK*p;
charfind_book[10];
/*读者编号唯一,查找只须一次遍历*/
p=h_book;
\n图书信息查询模块\n"
string(25,'
^'
请输入你要查询图书编号:
find_book;
number,find_book)!
number,find_book)==0)/*找到了就打印,否则提示不存在,或出错*/
\n图书编号"
find_book<
title<
作者:
writer<
出版社:
publish<
出版日期:
year<
年"
month<
月"
day<
日"
图书价格:
price<
元"
现存量:
remain<
库存量:
storage<
\n此图书编号不存在,请核对并检查你的信息是否有误!
voidPrint_reader()//打印所有读者信息
\
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 课程设计 报告 图书 信息管理 系统 设计