图书馆管理系统.docx
《图书馆管理系统.docx》由会员分享,可在线阅读,更多相关《图书馆管理系统.docx(24页珍藏版)》请在冰豆网上搜索。
图书馆管理系统
〖图书馆管理系统〗概要设计说明书
2任务概述3
2.1目标3
2.2运行环境3
2.3需求概述3
2.4条件与限制3
3总体设计4
3.1处理流程4
3.2总体结构和模块外部设计10
3.3功能分配11
4接口设计13
4.1外部接口13
4.2内部接口13
5数据结构设计14
5.1设计中三个对象的定义14
5.2功能实现函数18
6.1运行模块的组合25
6.2运行控制25
6.3运行时间25
7安全保密设计26
8系统测试27
9附录30
文档编号______________
版本号______________
文档名称:
概要设计说明书
项目名称:
图书馆管理系统
项目负责人:
张文超
编写张文超_____年_____月_____日
校对所有小组成员_____年_____月_____日
审核所有小组成员_____年_____月_____日
批准test_____年_____月_____日
开发单位__________________________________________
组员:
张磊
张文超
胡观
何剑涛
房启龙
张迪
姜景权
1引言
1.1编写目的
由前面的需求分析,得出了系统的基本需求,和基本的数据流图,要实现整个系统,需要对用户的需求进行设计,概要设计主要是利用比较抽象的语言对整个需求进行概括,确定对系统的物理配置,确定整个系统的处理流程和系统的数据结构,接口设计,实现对系统的初步设计。
1.2项目背景
根据XX学校希望能够充分利用现代科技来提高图书管理的效率,在原有的办公系统基础上进行扩展,将一些可以用计算机来管理的都进行计算机化,使得图书馆管理人员工作更加方便,工作效率也更加的高。
1.3定义
•Windowsvista/7/XP:
运行环境
•C++:
软件开发语言
1.4参考资料
《软件工程导论——第5版》张海藩编著清华大学出版社
《软件工程实践导论:
有关方法、设计、实现、管理之三十六计》
金尊和编著清华大学出版社
《C++程序设计》谭浩强清华大学出版社
2任务概述
2.1目标
通过该系统的实施,将图书馆管理等方面通过系统来实施,其中包括对学生借还读书信息,员工信息,以及读书信息等等,使得图书馆借还等管理业务和查询业务运转周期缩短?
%以上,来提高学校图书馆运转效率。
2.2运行环境
运行平台:
WindowsXP/Windowsvista/Windows7
2.3需求概述
按照需求分析文档中的规格要求,借书、还书,使得信息传递准确、流畅。
同时,系统最大限度地实现易安装,易维护性,易操作性,运行稳定,安全可靠。
2.4条件与限制
无
3总体设计
3.1处理流程
顶层数据流图:
第0层图:
第一层图:
(1):
登陆子系统
(2):
管理子系统
(3)查询子系统
第二层图:
(1):
入库管理
(2)处理学生借书
(3):
处理学生还书
(4):
处理图书注销
(5)处理学生信息查询
3.2总体结构和模块外部设计
3.3功能分配
针对图书馆管理系统,可以分为两大模块,一个小模块:
分别为管理子系统,查询子系统两大模块;基础信息管理小模块;
在管理子系统中:
1):
新书购入处理模块只要是针对采购员在根据计划在外采购新书之后的处理,所以当采购员采购到新书后,系统根据原先计划采购的新书进行核查,如果符合计划预定,则将新书入库;否则退货;该模块主要是处理购入的新书是否符合要求;
2):
处理学生借书模块:
该模块主要是处理学生借书业务,在图书馆管理人员输入学生信息的时候,系统会根据学生文件对该学生进行查询,看看是否存在该学生,如果不存在,则系统给出警告信息:
该学生不存在;如果存在该学生,则系统根据罚款单对该学生的欠款情况进行查询,如果欠款超过一定金额,则借书失败,否则接受借书,更新借书文件,在显示器上面显示借书成功;
3):
处理学生还书模块:
该模块主要是处理学生还书业务,在图书馆管理人员输入要还的图书字段时,系统会在借书文件中查找该图书信息,之后对借书文件,学生文件中的该学生已借书数,图书目录文件进行更新;然后在借书文件中提取学生数据,根据图书的还书日期和借出日期对学生的欠款金额进行计算,如果没有超期,则欠款金额在原来的基础上加0;之后将结果显示出来;
4):
处理图书注销模块:
该模块主要是针对图书注销业务;
在查询子系统中:
有两个查询内容:
1)学生信息查询:
学生信息查询子模块主要是对学生信息的查询;
2)图书信息查询:
图书信息查询子模块主要是对图书信息的查询;
这些模块,是针对学生或者图书馆管理人员这两个不同的对象,查询子系统主要是让用户了解信息,所以不需要进行用户密码登陆,直接可以进行查询,而管理模块是涉及到图书馆内部的重要信息管理方面,所以必须要设置用户密码登陆和权限等等,以保数据的安全性和系统的安全性;
4接口设计
4.1外部接口
1,用户接口:
采用窗口化,菜单式进行设计,在操作时响应热键。
4.2内部接口
通过面向对象语言设计类,在public类中实现调用;类间实现严格封装;
5数据结构设计
数据结构与程序是软件的重要组成部分,程序的正确执行依赖于合理的数据结构
系统程序函数大全介绍与说明:
图书馆管理系统中,我们小组将整个系统分成了三个大块:
1:
登陆信息(包括管理员与普通用户)
2:
图书信息(对图书进行借阅,归还,查询等操作)
3:
学生信息(对学生进行查询,添加,删除等操作)
5.1设计中的三个对象定义
我们在程序中建立了三个类别:
ClassLogin
{
Charid[11];
Charpassword[11];
}
ClassLogin用来记录一个用户的登陆信息
id是一个用户号,最长可以由11位构成。
Password是用户密码,最长可以由11位构成。
classBook
{
public:
charid[11];
charname[20];
chareditor[20];
charwriter[20];
time_ttime;
intoutdate;
boolonshelf;//true:
availablefalse:
notavailable
charsid[11];//theidofthestudent
Book*before;
Book*follow;
public:
Book();
};
ClassBook
用来记录一本图书的信息
Id是书号,最长可以用11位,如“11112222333”。
Name是书名,最长可以用20位,如“计算机科学与导论”。
Editor是出版社,最长可以用20位,如“人民教育出版社”。
Writer是作者名,最长可以用20位,如“冰心”。
Time用来记录一本书被借出的时间,在我们的程序里面,我们规定,借书超过30天不还的话,即为超期。
Outdate标注一本书是不是借阅超期,如果超期则为1,否则为0。
Onshelf标注一本书现在是不是在馆,如果在馆,则可以借阅,否则不能借阅。
Sid记录是哪一个学生借阅了本书。
Book*before构建链表的时候,用来指出上一个Book成员的指针。
Book*before构建链表的时候,用来指出下一个Book成员的指针。
Book()book类的构造函数,用来初始化一条记录的初始值。
classStudent
{
public:
charid[11];
charidv[11];
charname[20];
intnuma[6];
Student*before;
Student*follow;
Bookbook[6];
public:
Student();
};
Classstudent
用来记录一个学生的信息
Id学生的学号,最长为11位,如“11112222333”。
Idv学生的借书证号,最长为11位,如“11111222223”。
Name学生的姓名,最长为20位,如“张韬”。
Numa学生借阅的图书数目,最多为六本。
Student*before构建链表的时候,用来指出上一个Student成员的指针。
Student*follow构建链表的时候,用来指出下一个Student成员的指针。
Student()student类的构造函数,用来初始化一条记录的初始值。
我们为了将数据与操作分开
又建了三个类别分别对这三个类的数据进行操作:
classLoginread
{
public:
voidLoginwrite(classLogin*head,intm);
intLoginmodpassword(charid[11],charpassword[11]);
intOnLogin(charid[11],charpassword[11]);
classLogin*Login(intm);
};
Loginread用来对Login数据进行操作。
voidLoginwrite(classLogin*head,intm);
用来把管理员的记录写入一个名叫“Login.txt”的文件。
Head为要写出记录的头指针,m为要把记录写到哪一块,M代表一个Login对象的大小,我们以一个Login对象的大小为写出的基本单位
ClassLoginLogin(intm)
从“Login.txt0”里面读出数据,每一次读入20个记录返回一个头指针,从20*M的位置开始读,M为一个标记位置的数字,M代表一个Login对象的大小,我们以一个Login对象的大小为读取的基本单位
intOnLogin(charid[11],charpassword[11]);
管理员登陆的函数,此函数的返回值为一个整数,分为不同的情况
1:
管理员成功登陆
2:
密码不正确
3:
没有该管理员
Id为用户的帐号
Password为用户的密码
intLoginread:
:
Loginmodpassword(charid[11],charpassword[11])
此函数用来修改一个管理员的密码,返回值为一个整数,分为不同的情况
0:
没有这个管理员
1:
修改成功
2:
新密码不一样
3:
还没有登陆
Id为用户的帐号
Password为用户的密码
classBookreed
{
//voidBookread:
:
Pre();
public:
intsearchname(charname[20],charfromname[20]);
classBook*Booknamesearch(charname[20]);
intSearch(charid[11],classBook*book);
intBmod(charid[11],charname[20],chareditor[20],charwriter[20]);
classBook*Bookread(intm);
voidBookwrite(classBook*head,intm);
intBorrow(chara[11],chars[11],charidv[11]);
intBReturn(chara[11]);
intBAdd(charid[11],charname[20],chareditor[20],charwriter[20]);
intBDel(charid[11]);
private:
classStudentreedStudentreed;
};
5.2功能实现函数
Bookread用来对Book类的对象进行操作。
classBook*Bookreed:
:
Bookread(intm)
函数用来对“Book.txt”进行读取操作。
这里的M用来记录读入第几个20个文件这里设一次读入为20个记录
voidBookreed:
:
Bookwrite(classBook*head,intm)
函数用来对“Book.txt”进行写操作。
这里head为被写入文件的头指针 m为写回磁盘文件的哪一个位置
IntBAdd(charid[11],charname[20]);
此函数用来添加一本图书,返回值为整数,分为不同的情况:
0:
这本书已经存在了,在本馆中收藏
1:
这本书已经存在,但已经借出
2:
成功存入
3:
非法书号//这个不是函数的…还要改的
Id为新增的图书的书号。
Name为新增的图书的书名。
IntBDel(charid[11])
此函数用来删除一本图书,返回值为整数,分为不同的情况:
0:
没有这本书
1:
这本书有但是已经借出请以后再删除
2:
删除成功
Id要删除的图书的书号
IntBorrow(chara[11],chars[11])
此函数用来进行借阅操作,返回值为整数,分为不同的情况:
1:
这本书存在 但已经借出
2:
借书成功
3:
没有这本书
4:
因为学生原因不能成功借出,没有这个学生
5:
学生借书已满
6:
该借书证已无效
a为书号
s为学号
IntBReturn(chara[11])
此函数用来进行还书操作,返回值为整数,分为不同的情况:
0:
没有这本书
1:
这本书在馆 没有被借出
2:
成功归还此书
a为要归还的书号
IntBmod(charid[11],charname[20],chareditor[20],charwriter[20])
此函数用来进行修改书目信息的操作,返回值为整数,分为不同的情况:
0:
不存在这本书
1:
修改成功;
Id为要修改的书目的书号
Name为书目的新名字。
Editor为书目的新的出版社。
Writer为书目的新的作者。
intBookreed:
:
Search(charid[11],Book*book)
此函数用来进行按书号进行询寻的操作,返回值为整数,分为不同的情况:
0:
没有这本书
1:
有这本书。
但已经外借
2:
有这本书。
过期
3:
有这本书且在本馆中
Id为要查询的书目的书号,
Book一个指针,要查询的头指针。
intsearchname(charname[20],charfromname[20]);
此函数用来进行按书名进行匹配,返回值为整数,分为不同的情况:
0:
名字不匹配
1:
名字匹配
Name要匹配的名字。
Fromname从哪里匹配。
classBook*Booknamesearch(charname[20]);
此函数用来进行按书名进行询寻的操作,返回一个headv指针
若为NULL则找不到这本书
若不为NULL则输出所有的书
Name要查询的书目的名字。
classStudentreed
{
public:
intSMod(charid[11],charname[20],charidv[11]);
intSearch(charid[11],classStudent*student);
//voidSpre();
classStudent*Studentread(intm);
voidStudentwrite(classStudent*head,intm);
intSBorrow(charid[11],classBook*book,charidv[11]);//id:
是学生的学号bid:
是书号
intSDel(charid[11]);
intSReturn(charbid[11],charsid[11]);
intSAdd(charid[11],charname[20],charidv[11]);
};
Studentread用来对Student类的对象进行操作。
classStudent*Studentreed:
:
Studentread(intm)
函数用来对“Book.txt”进行读取操作。
这里的M用来记录读入第几个20个文件,这里设一次读入为20个记录
voidStudentreed:
:
Studentwrite(classStudent*head,intm)
函数用来对“Book.txt”进行读取操作。
这里head为被写入文件的头指针
m为写回磁盘文件的哪一个地方
IntSAdd(charid[11],name[20],idv[11])
此函数用来添加一名学生,返回值为整数,分为不同的情况:
0:
该学生已存在
1:
成功添加
Id为学生的学号,
Name为学生的姓名,
Idv为学生的借书证
IntSDel(charid[11])
此函数用来删除一名学生记录,返回值为整数,分为不同的情况:
0:
没有这个学生
1:
删除成功
Id为要删除学生的学号
intStudentreed:
:
SBorrow(charid[11],classBook*book,charidv[11])
此函数用来进行借书的操作,返回值为整数,分为不同的情况:
0:
没有这个学生
1:
这个学生已经借了6本书 不能再借了
2:
该学生可以借这本书
3:
这个借书证无效了
id为学号
book为书对象指针
idv 为借书证号
IntSReturn(charbid[11],charsid[11])
此函数用来进行还书的操作,返回值为整数,分为不同的情况:
0:
没有这个学生 (这一项为一个虚项,因为若有被借出的书 必定有借出人)
1:
成功归还
Id要还的书的书号
sid为学生的学号
intStudentreed:
:
Search(charid[],Student*student)
此函数用来进行查询的操作,返回值为整数,分为不同的情况:
0:
没有该学生
1:
又该学生,返回该学生的相关信息
Id要查的学生的学号
Student一个头指针。
intStudentreed:
:
SMod(charid[],charname[],charidv[])
此函数用来进行修改学生信息的操作,返回值为整数,分为不同的情况:
0:
没有这个学生
1:
修改成功
Id为学生的学号
Name为学生的新的姓名
Idv为学生的新的借书证
6运行设计
6.1运行模块的组合
本程序主要是以一个窗口为模块,一般一个窗口完成一个特定的功能,主窗口通过打开另一个子窗口来实现个模块之间不同功能的连接和组合。
各模块之间相对独立,程序的可移植性好。
各模块之间主要以传递数据项的引用来实现模块之间的合作和数据共享。
6.2运行控制
只要符合操作说明书,用户可自由控制
6.3运行时间
由用户决定
7安全保密设计
我们这个软件的安全主要有几个方面:
软件使用安全:
这个我们在对错误的异常处理的地方已经详细说明。
这里不再重述。
账号安全:
主要就是密码的保护,因为我们现在的能力有限,所以关于密码保护的方面比较薄弱,希望用户妥善保护自己的密码。
8系统测试
图书管理系统测试文档
测试人:
孙亦轩
基本功能测试:
每一项功能进行遍历
1双击运行程序,提示没有找到MFC42D.dll,说明该系统仅可以应用于安装了visualC++的机器上才能够运行.应该属于兼容性问题.
2管理员登陆(账号:
33333密码:
33333)通过
3存书功能正常单独存书通过(先存,在查找)
(1)单独输入书号存入错误
4添加用户添加成功
5借书通过输入借书人号,所借书的编号点击后借阅成功
6还书输入所还书的编号提示还书成功查询还书信息提示书仍在借书状态
7修改删除书通过
(1)删除借出的书籍失败提示语言错误
删除学生通过
(1)删除不存在的学生失败提示没有这个学生
(2)删除已经借书的学生信息,提示删除成功。
并且查询信息可以显示学生信息已被删除。
8选择修改书目,在书名栏不进行任何输入,然后点击按书名查询系统输出所有书籍信息。
若有已删除书籍,则有乱码输出。
9添加两个学生信息,借书证号均为001,然后选择借书,输入借书证号001,提示不存在这个学生。
选择查询学生的基本信息,输入001,依然显示学生不存在。
经过后续测试发现是学生信息添加失败。
该缺陷在测试中出现仅一次,未能找到重现方法。
10超长字符串处理,输入,提示成功,输出,只取前几位,没问题
11数据存储文件损坏后,程序在异常中运行。
12同时输出很多本书时候没有换行
测试总结:
本图书馆管理系统运行正常,基本功能已经实现,可以实现功能:
1.管理员登陆
2.存书
3.添加用户
4.借书
5.还书
但是在修改和删除图书信息功能上存在缺陷,在添加学生信息的时候也存在漏洞,不过这个不是严重的错误,经过其小组成员的分析和讨论以后已经改进这些漏洞完全可以正确实现修改和删除图书并且在添加学生信息的时候也不会出现问题了。
实现了该系统所要求实现的基本功能。
9附录:
人员分工:
程序编写:
图书书目信息相关模块:
张文超
学生信息相关模块:
张迪
用户登陆模块与最终整合:
何剑涛
文档整理:
设计报告:
张磊,胡观
系统测试:
房启龙
程序函数总结整理:
江景权
最终报告:
张文超,江景权:
负责程序信息整理
张迪,何剑涛:
程序测试文档整理
张磊,胡观:
系统概述与用户使用手册