最新c++ 图书信息管理系统附源码资料文档格式.docx
- 文档编号:13709466
- 上传时间:2022-10-13
- 格式:DOCX
- 页数:41
- 大小:592.31KB
最新c++ 图书信息管理系统附源码资料文档格式.docx
《最新c++ 图书信息管理系统附源码资料文档格式.docx》由会员分享,可在线阅读,更多相关《最新c++ 图书信息管理系统附源码资料文档格式.docx(41页珍藏版)》请在冰豆网上搜索。
1043班
学生姓名:
李优
指导教师:
徐日
日期:
2012-09-03~2012-09-14
1需求分析
1.1选题任务
图书借阅管理系统
(1)编程工具
C++
(2)要求
选题学生应具有端正的学习态度、正常的交流能力,应有积极主动、克服困难的学习意识
(3)本题概述
以学院图书馆为例,图书借与管理是一项经常性工作,为使图书借阅管理工作准确高效,提供图书借阅记录的添加、修改、删除、查询、浏览、汇总等,用图书借阅关系软件,能有效提高工作效率,具有较强的实际意义。
(4)功能描述
1能度日外部提供的包含图书借阅信息的文本文件(TXT文件);
2能在程序中录入图书借阅信息(可参考我院图书馆网上图书借阅信息的各个项目),并将信息写入文本文件(TXT文件);
3能对所有图书借阅信息,按条件(按图书名、图书编号、借阅日期、借阅人、超期与否、超期天数等)查询浏览,能汇总统计计算出符合某条件的图书借阅记录的数量并浏览这些借阅信息,能将查询、浏览、汇总的结果输出结果文本文件(TXT文件)
(5)辅助说明
基础要求:
①+②
扩展要求:
①+②+③
1.2输入数据和输出数据形式:
程序中包含的图书信息包括:
charbnum[20];
//书号
charbname[20];
//书名
charbauthor[10];
//作者
charrname[10];
//借阅人
charbdays[10];
//借出日期
charbchao[10];
//超期天数
为了方便,我全部设置成了char型。
而程序中包含两种输入方式和两种输出方式,对应题目要求,分别是:
单个图书信息的增删查改;
TXT文档的导入(图书数据库.txt);
屏幕的打印;
TXT文档的导出(书籍信息.txt)。
1.3测试数据及测试目的
字母测试,错误数据测试,重复数据测试
目的:
产看本程序的纠错能力和是否人性化。
2程序设计
2.1关键数据类型定义
//********书籍结构体,用于存放书籍基本信息********
classBook
{
private:
charbnum[20];
charbname[20];
charbauthor[10];
charrname[10];
charbdays[10];
charbchao[10];
public:
Book()//构造函数初始化信息
voidset_bnum(char*no)//设置书号
char*get_bnum()//获得书号
voidset_bname(char*n)//设置书名
char*get_bname()//获得书名
voidset_bauthor(char*a)//设置作者
char*get_bauthor()//获得作者姓名
voidset_bdays(char*d)//设置借出日期
char*get_bdays()//获得借出日期
voidset_bchao(char*c)//设置超出天数
char*get_bchao()//获得超出天数
voidset_rname(char*rn)//设置借阅人
char*get_rname()//获得借阅人姓名
voidcopy(Bookm)//Book结构体copy函数
};
//classbook
//**********书籍管理结构体,实现管理书籍功能**********
classBookManage
Bookbooks[100];
//定义Book书籍结构体数组对象,最大容量100本
intlength;
BookManage()//构造函数,读取磁盘文件
intadd(Bookbook)//添加图书资料
intbnu_search(char*bnu)//按书号查找书籍
intbna_search(char*bna)//按书名查找书籍
intbau_search(char*bau)//按作者查找书籍
intrn_search(char*rn)//按借阅人查找书籍
intbd_search(char*bd)//按借出日期查找书籍
intbc_search(char*bc)//按超期天数查找书籍
voidrevise(Bookbook,inti)//修改书籍函数
voiddeleteBook(intindex)//删除书籍资料函数
voidshow_bookhead()//显示输出列表,表头。
voidshow_book(inti)//显示书籍函数
voidsaveFileHead()///保存书籍文件的表头到txt
voidsaveFile(inti)//带参的输出书籍到txt
voidreadFile()//读取书籍文件
//classBookManage
//**********菜单结构体,实现界面引导**********
classMenu
BookManagebm;
//定义书籍管理结构体对象bm
intchoice;
//菜单序号选择
intkey;
//管理员密码
voidheader()//首页欢迎界面
voidlog_menu()//主界面登录菜单
voidadmin_menu()//管理菜单
voidabsearch_menu()//查找书籍菜单
voidlog_admin()//密码登陆
voidrn_search()//按借阅人姓名查找函数
voidbnu_search()//按书号查找函数
voidbna_search()//按书名查找函数
voidbau_search()//按作者查找函数
voidbd_search()//按借阅日期查找函数
voidbc_search()//按超期天数查找函数
voidaddBook()//添加新的书籍信息函数
voidreviseBook()//修改书籍函数
voiddelBook()//删除书籍函数
intmain()
2.2主程序流程图
2.3调用关系
1.书籍信息的录入:
{strcpy(bnum,no);
}//把字符串no中的字符复制到字符串bnum中
{returnbnum;
}//返回值为bnum
voidset_bname(char*n)//设置书名
{strcpy(bname,n);
}
char*get_bname()//获得书名
{returnbname;
voidset_bauthor(char*a)//设置作者
{strcpy(bauthor,a);
char*get_bauthor()//获得作者姓名
{returnbauthor;
voidset_bdays(char*d)//设置借出日期
{strcpy(bdays,d);
char*get_bdays()//获得借出日期
{returnbdays;
voidset_bchao(char*c)//设置超出天数
{strcpy(bchao,c);
char*get_bchao()//获得超出天数
{returnbchao;
voidset_rname(char*rn)//设置借阅人
{strcpy(rname,rn);
char*get_rname()//获得借阅人姓名
{returnrname;
2.书籍信息的添加:
intadd(Bookbook)
判断length是否达到最大值,如果没有则进行添加。
3.书籍信息的查找:
无论是按照书号、书名、作者、借阅人、借出日期、超期天数来进行查找都是进行挨个比较,如果遇到相同则返回书籍的i值,进行返回输出。
4.书籍信息的修改:
输入想要修改的书籍编号,按照查找的方法,找到i,然后进行覆盖。
完成修改。
5.书籍的屏幕打印输出:
分两部分输出,首先打印一个头信息,相当于列表的头;
然后利用循环语句带参输出(i为参数,循环)。
6.保存信息到txt文件:
同分为两部分,类似屏幕打印的方法,先存入表头,然后带参循环存入书籍信息。
带参的意义就是,可以无限调用该语句,只要知道书的序号i。
7.从信息中读取txt文件:
structbooks
charnumb[10];
charnameb[20];
charauthorb[10];
charnamer[10];
chardaysb[10];
charchaob[10];
定义结构体。
利用fscanf()语句讲读取的数据按顺序存入结构体中。
然后直接利用书籍添加函数直接写入系统。
3调试分析
3.1主要问题及解决方案:
1.界面颜色设定:
一直抛弃黑底白字这种默认形式,换一种颜色给人特殊的感觉,在网上找到相关的代码为system("
color**"
);
语句。
但是也是没有头绪不知道怎么调试,后来一不小心设置错误,系统就弹出了提示界面,我就明白了界面颜色的设置方法(图3.1):
图3.1
2.关于书籍的cout输出:
最开始设计输出模块时候,仅仅是想到了不带参的book信息输出,show_book()函数中自带了一个for语句循环输出所有书籍信息,是为显示全部书籍设计的。
但是后来发现如果要单显示筛选信息就要从新写一个带参show_book(inti),虽然函数重载允许这样做,但是却无意义的增加了代码长度。
我选择删除了不带参的show_book(),把for语句循环写在外面。
这样就增加了show_book(inti)函数的利用率,精简了函数的和长度。
3.书籍信息的txt写入:
综合了屏幕打印的经验,鉴于fwrite和cout使用方法和显示效果类似,我决定将txt的写入语句也设置成带参形式saveFile(inti),原理与show_book(inti)基本一致。
完成这些就能实现。
后来发现文件总是覆盖,每次写入都会将上一次的覆盖,也就是只有最后一行,后来才想起了ios:
:
app追加模式,才最终算完整实现。
4.读取数据函数:
这个函数是我编辑最
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 最新c+ 图书信息管理系统附源码资料 最新 c+ 图书 信息管理 系统 源码 资料