图书馆程序设计报告书马澜Word格式文档下载.docx
- 文档编号:5271794
- 上传时间:2023-05-04
- 格式:DOCX
- 页数:53
- 大小:437.13KB
图书馆程序设计报告书马澜Word格式文档下载.docx
《图书馆程序设计报告书马澜Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《图书馆程序设计报告书马澜Word格式文档下载.docx(53页珍藏版)》请在冰点文库上搜索。
但是由于上述四项基本业务活动都是通过书号(关键码)进行的,所以要用B树(2-3阶数)对书号建立索引,以获得高效率。
(3)系统应实现的操作及定义如下:
A、采编入库:
新购入一种书,经分类和确定书号之后登记到图书帐目中去。
如果这种书在帐中已有,则只将总库存量增加。
B、清除库存:
某种书已无保留价值,将它从图书帐目中注销。
C、借阅:
如果一种书的现存量大于零,则借出一本,登记借阅者的图书证号和归还期限。
D、归还:
注销对借阅者的登记,改变该书的现存量。
E、显示:
用凹入表的形式显示B树。
四、系统功能模块图
五、详细设计说明
书籍结构体(Book)
①私有数据
charbnum[10];
//书号
charbname[20];
//书名
charbauthor[10];
//作者
charrname[10];
//借阅人
②公有数据及公有函数
inttag;
//状态标记判断指标(已借/在架)
Book()//构造函数初始化信息
voidset_bnum(char*no)//设置书号
char*get_bnum()//获得书号
voidset_bname(char*n)//设置书名
char*get_bname()//获得书名
voidset_bauthor(char*a)//设置作者
char*get_bauthor()//获得作者姓名
voidset_tag(intt)//状态设置
voidset_rname(char*rn)//设置借阅人
char*get_rname()//获得借阅人姓名
voidshow_tag()//显示图书状态
voidcopy(Bookm)//Book结构体copy函数
书籍管理结构体(BookManage)
①私有数据及函数
Bookbooks[100];
//定义Book书籍结构体数组对象,最大容量100本
intlength;
//计数
voidsaveFile()//保存书籍文件
voidreadFile()//读取书籍文件
②公有数据及函数
BookManage()//构造函数,读取磁盘文件
~BookManage()//析构函数,保存磁盘文件
booladd(Bookbook)//添加图书资料
intbnu_search(char*bnu)//按书号查找书籍
intbna_search(char*bna)//按书名查找书籍
intbau_search(char*bau)//按作者查找书籍
intrn_search(char*rn)//按借阅人查找书籍
voidrevise(Bookbook,inti)//带参的修改书籍函数
voiddeleteBook(intindex)//带参的删除书籍资料函数
voidshow_book()//不带参的显示书籍函数
voidshow_book(inti)//带参的显示书籍函数
voidbr_book()//读者借、还书功能函数
boolin(inti)//判断图书是否在架函数
读者结构体(Reader)
①私有数据及函数
charrname[10];
//读者姓名
charrclass[10];
//班级
charrtel[10];
//电话
Reader()//构造函数,实现数据初始化
voidset_rname(char*rn)//设置读者姓名
char*get_rname()//获得读者姓名
voidset_rclass(char*rc)//设置班级
char*get_rclass()//获得班级
voidset_rtel(char*rt)//设置电话
char*get_rtel()//获得电话
voidcopy(Readerm)//读者Reader结构体copy函数
读者管理结构体(ReaderManage)
Readerreaders[50];
//定义读者结构体数组对象,最多50位
voidreadFile()//读取读者文件函数
voidsaveFile()//保存读者文件
ReaderManage()//构造函数,读取读者文件
~ReaderManage()//析构函数,保存读者文件
voidadd_reader(Readerr)//添加读者用户函数
intsearch(char*rn)//按姓名查找读者函数
boolrevise(Readerreader,inti)//修改读者资料函数
voiddelete_reader(intindex)//删除读者函数
boollog_reader(Readerr)//登录时判断读者用户是否存在函数
voidreg_reader()//注册用户函数
voidshow_reader()//不带参的显示读者信息函数
voidshow_reader(inti)//带参的显示读者信息函数
菜单结构体(Menu)
BookManagebm;
//定义书籍管理结构体对象bm
ReaderManagerm;
//定义读者管理结构体对象rm
Readerr;
//定义读者结构体对象r
intchoice;
//菜单序号选择
intkey;
//管理员密码
voidheader()//页眉
voidlog_menu()//主界面登录菜单
voidadmin_menu()//管理员管理菜单
voidreader_menu()//读者服务菜单
voidbsearch_menu()//读者查找书籍菜单
voidabsearch_menu()//管理员查找书籍菜单
voidreader_lr()//读者登录或注册菜单
voidlog_admin()//管理员登录
voidrn_search()//按书号查找函数
voidbnu_search()//按书号查找函数
voidbna_search()//按书名查找函数
voidbau_search()//按作者查找函数
voidaddBook()//新增书籍函数
voidreviseBook()//修改书籍函数
voiddelBook()//删除书籍函数
voidreviseReader()//修改读者用户函数
voiddelReader()//删除读者用户函数
主函数(main)
intmain()
六、部分函数流程图
①管理员登录
②读者登录
③读者借阅图书
④管理员或读者按书名查找图书
七、程序调试
各界面菜单显示
①主登录界面
②系统管理界面
③读者登录界面
④读者服务界面
⑤书籍查找界面
登录验证
①管理员登录
A.输入错误密码B.输入正确密码
②读者登录
A.
输入已注册姓名B.输入未注册姓名
注册新读者用户
添加新的图书资料
①输入已存在图书书号②输入未存在图书书号
修改已有图书资料
①输入不存在图书书号②输入已存在图书书号
删除已有图书资料
查找已有图书资料(以按书号查找为例)
①输入不存在图书书号
②输入已存在图书书号
2.4.8显示所有图书资料
八、课程设计心得与体会
经过近三个星期的努力,前后修修改改,调试又调试,我的C++图书管理系统终于得以诞生!
在这个过程中,我发现自己还有很多很多知识都没有学好,看别人的例子的时候好像很简单,自己一上机操作就有问题。
调试的时候系统总是报错,还有很多警告,每添加一个函数,往往都要要调试很久,有时候仅仅只是少了一个大括号,却花上近半个小时才找到问题的瓶颈所在。
系统虽然完成了,也可以运行,一些基本的功能也能够实现,但我知道,还有很多的不足。
另外,我发现帮助文件真的很有用,每当我看别人例子看不懂的时候,都是去帮助文件搜索,如果里面的信息不够完整,再利用各大网站的搜索引擎来寻找答案,比如更改背景颜色的问题,之前试了很多次都不行,后来偶然发现一个MS-DOS命令大全,然后再去网上搜索color命令的使用语法,原来以为很复杂的代码,只需一句system(colorfd),问题就迎刃而解了。
以后还会有很多课程设计,一定要吸取这次的教训,知识不是看过就可以了,而是要把知识学透、学精,才能够真正做到为我所用。
九、附录
#include<
iostream>
iomanip>
string>
fstream>
conio.h>
#defineBookFile"
book.txt"
//将字符串BookFile替换原文件中的宏名称book
#defineReaderFile"
reader.txt"
usingnamespacestd;
//**********读者结构体,用于存放读者基本信息**********
classReader
{
private:
public:
{strcpy(rname,"
"
);
strcpy(rclass,"
strcpy(rtel,"
}
{strcpy(rname,rn);
}//将rn的字符复制给rname
{returnrname;
}//返回rname的值
{strcpy(rclass,rc);
}
{returnrclass;
{strcpy(rtel,rt);
{returnrtel;
{strcpy(rname,m.get_rname());
strcpy(rclass,m.get_rclass());
strcpy(rtel,m.get_rtel());
};
//*********读者管理结构体,实现对读者用户的管理*********
classReaderManage
{
ifstreamfread;
//定义输入文件流对象fread
length=0;
if(!
fread)
{cout<
<
读取磁盘文件失败!
endl;
exit
(1);
fread.open(ReaderFile,ios:
:
binary);
//使文件流与文件关联,以二进制方式打开
inti=0;
while((fread.read((char*)&
readers[i],sizeof(Reader))))//计算并返回所占字节数
i++;
length=i;
fread.close();
//关闭磁盘文件
}
ofstreamfwrite;
//定义输出文件流对象fwrite
fwrite)
文件保存失败!
\n"
;
exit
(1);
fwrite.open(ReaderFile,ios:
fwrite.write((char*)readers,length*sizeof(Reader));
//计算并返回所占字节数
fwrite.close();
//关闭磁盘文件
{readFile();
{saveFile();
if(length>
=50)
{cout<
对不起,注册人数已满!
return;
readers[length].copy(r);
//调用读者结构体copy函数
length++;
for(inti=0;
i<
length;
i++)
if(strcmp(readers[i].get_rname(),rn)==0)//判断是否相等
returni;
return-1;
readers[i].copy(reader);
//调用读者结构体cpoy函数
returntrue;
for(inti=index;
length-1;
readers[i].copy(readers[i+1]);
//用后面的地址覆盖前面的地址
length--;
i++)
if(strcmp(readers[i].get_rname(),r.get_rname())==0)
returntrue;
returnfalse;
charn[10];
//姓名name
charc[10];
//班级class
chart[10];
//电话tel
Readerreader;
cout<
\n\t请输入您的姓名:
cin>
>
n;
\n\t请输入您的所在班级:
c;
\n\t请输入您的联系电话:
t;
reader.set_rname(n);
//调用读者结构体设置读者姓名函数
reader.set_rclass(c);
//调用读者结构体设置读者班级函数
reader.set_rtel(t);
//调用读者结构体设置联系电话函数
add_reader(reader);
//调用读者结构体添加读者函数
cout<
\n\t注册成功!
\n**********************读****者****信****息****列****表**********************\n\n"
姓名\t\t\t班级\t\t\t电话\n"
for(inti=0;
{
cout<
readers[i].get_rname();
\t\t\t"
readers[i].get_rclass();
readers[i].get_rtel()<
}
}
//********书籍结构体,用于存放书籍基本信息********
classBook
{
charbauthor[10];
inttag;
{strcpy(bnum,"
strcpy(bname,"
strcpy(bauthor,"
strcpy(rname,"
tag=0;
voidset_bnum(char*no)//设置书号
{strcpy(bnum,no);
}//把字符串no中的字符复制到字符串bnum中
char*get_bnum()//获得书号
{returnbnum;
}//返回值为bnum
voidset_bname(char*n)//设置书名
{strcpy(bname,n);
{returnbname;
{strcpy(bauthor,a);
{returnbauthor;
{tag=t;
{strcpy(rname,rn);
{returnrname;
if(tag==1)
已借"
else
在架"
strcpy(bnum,m.get_bnum());
//将获得书号函数里的返回值里的字符复制到bnum
strcpy(bname,m.get_bname());
strcpy(bauthor,m.get_bauthor());
tag=0;
//**********书籍管理结构体,实现管理书籍功能**********
classBookManage
//定义输出文件流ofstream结构体对象fwrite
if(!
fwrite.open(BookFile,ios:
//使文件流与文件建立关联,以二进制方式打开
fwrite.write((char*)books,length*sizeof(Book));
//计算并返回所占字节数
ifstreamfread;
文件读取失败!
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 图书馆 程序设计 报告书
![提示](https://static.bingdoc.com/images/bang_tan.gif)