图书管理系统的设计书.docx
《图书管理系统的设计书.docx》由会员分享,可在线阅读,更多相关《图书管理系统的设计书.docx(25页珍藏版)》请在冰点文库上搜索。
图书管理系统的设计书
图书管理系统的设计书
1需求分析:
(1)能够输入图书的综合情况和进行新书入库、现有图书信息修改以及删除;
(2)能够实现对读者档案的查询和编辑管理;
(3)能够进行罚款功能;
(4)能够进行借阅历史的查询功能;
2系统性能要求:
(1)系统安全、可靠;
(2)功能齐全;
(3)操作方便、界面友好;
(4)易于维护和扩充。
3系统的功能分析:
(1)密码设置:
每个操作员均有自己的密码,可以防止非本系统人员进入本系统;又因每个人的权限不一致,故可以防止越权操作。
(2)资料维护:
为了存放图书、读者档案的全部数据,本系统将每一本图书和每位读者的信息进行管理。
系统维护包括对各种表记录的修改、删除、添加等操作。
(3)系统查询:
可以按图书编号、借阅证编号等相关信息进行查询
(4)系统管理:
进行员工管理、数据备份和数据恢复。
(5)报表统计:
包括统计图书信息、读者信息、借阅信息和罚款信息等。
(6)其它操作:
包括修改密码、添加用户、页面设置等
3.总体设计
3.1项目规划
图书管理系统可以分为前台显示界面、图书信息管理系统管理以及后台数据库三个部分。
其中前台显示界面的主要工作就是显示图书的信息,借阅情况,查询清空等问题,主要是向大家展示必要的信息。
图书信息管理系统作为核心,其主要功能就是实现图书的查询、借书、还书、图书入库以及清除库存。
后台数据库主要是为了进行图书的查询、借书、还书、图书入库以及清除库存的信息记录的。
3.3系统功能概述
图书管理部分:
包括图书信息管理和类别管理,其功能是实现对各部分数据容进行添加、修改、查询等操作。
各管理部分的明细如下:
(1)图书信息管理:
包括图书信息的添加、图书信息的修改、图书信息的查询和图书的信息删除4部分。
其中,图书信息包括图书编号、书名、图书类别、作者、、出版日期、登记日期以及是否已被借出。
(2)图书类别管理:
包括图书类别的添加、图书类别的修改、图书类别的删除3部分功能。
其中,图书类别包括类别名称和类别编号两部分。
借阅管理部分:
包括借书管理和还书管理,其功能是实现对各部分数据容的添加和查询等操作。
各管理部分的明细如下:
(1)借书管理:
包括添加借书信息和查询借书信息2部分功能。
其中,借阅信息包括借阅编号、读者编号、读者、图书编号、图书名称、出借日期和还书日期。
(2)还书管理:
实现添加还书信息功能。
其中,还书信息与借阅信息部分明细相同。
读者管理部分:
包括读者信息管理和读者类别管理,其功能是实现对各部分数据容的添加和修改、删除等操作。
各管理部分的明细如下:
(1)读者信息管理:
包括读者信的添加、读者信息的修改、读者信息的查询和读者信息的删除4部分功能。
其中,读者信息包括读者、读者编号、性别、读者类别、工作单位、家庭住址、、登记日期和已借书数量。
(2)读者类别管理:
包括读者类别的添加、读者类别的修改、读者类别的删除3部分功能。
其中,读者类别包括各种类名称、借书期限和有效期限4部分。
系统管理部分:
包括修改系统用户密码、增加新用户和退出系统三项功能。
系统初始设置一个超级用户名和密码,操作人员可以利用这个超级用户名和密码登录,之后,可以设置其他的超级用户名称,也可以设置权限用户,同时也设置了这个用户可以使用的权限。
帮助部分:
包括系统设计前台和后台简概述等功能。
运行本系统程序,首先出现登录界面,输入正确的用户名和密码后才能进入主窗体。
对主窗体上各个菜单的设置采用快捷键,便于用户更方便的应用该系统。
该图书管理系统按使用者的角色可以分为:
普通用户和管理员。
普通用户的主要功能有:
借书、还书、查询这三项基本功能。
管理员的主要功能有:
图书录入和清除库存
在该图书信息管理系统中,不同的角色对应不同的功能,在登陆界面需要输入用户名和密码
才能进入普通用户功能界面。
而需要输入特殊密码进入管理员功能界面。
建立链表的ADT:
classBookSystem
{
staticintj;//作为记录数据的静态变量
staticintstorage;
staticBookSystem*t;
staticBookSystem*re;
//staticBookSystem*h;
public:
BookSystem();//构造函数
~BookSystem();//析构函数
voidreplace(BookSystem*,BookSystem*);
voidSet(CString,CString,CString);//付值函数
voidDivision(CString);//把一个一个分开的函数
intReturnStorage();//返回库存函数
BookSystem*InsertMatrix_PandB(CString,CString,BookSystem*temp);//在和书名的稀疏距阵里建立节点
BookSystem*InsertMatrix_PandA(CString,CString,BookSystem*temp);//在和作者的稀疏距阵里建立节点
BookSystem*InsertMatrix_BandA(CString,CString,BookSystem*temp);//在作者和书名的稀疏距阵里建立节点
boolBorrowbookname(CString,CString,CString,BookSystem*);//借书
boolReturnbookname(CString,CString,CString,BookSystem*);//还书
//voidInsertBookSystem(int,int,int,BookSystem*);//插入一本书
voidPrint_Press(CString,BookSystem*temp,CListBox&);//按打印
voidPrint_Bookname(CString,BookSystem*temp,CListBox&);//按书名打印
voidPrint_Author(CString,BookSystem*temp,CListBox&);//按作者打印
voidPrint_PandB(CString,CString,BookSystem*temp,CListBox&);//按和书名打印
voidPrint_PandA(CString,CString,BookSystem*temp,CListBox&);//按和作者打印
voidPrint_BandA(CString,CString,BookSystem*temp,CListBox&);//按书名和作者打印
voidPrint_PandBandA(CString,CString,CString,BookSystem*temp,CListBox&);//按,书名和作者打印
boolPrint_Type(CString,BookSystem*temp,CListBox&);//按书的类型打印
BookSystem*Print_Press(CString,BookSystem*temp);//按打印
BookSystem*Print_Bookname(CString,BookSystem*temp);//按书名打印
BookSystem*Print_Author(CString,BookSystem*temp);//按作者打印
BookSystem*Print_PandB(CString,CString,BookSystem*temp);//按和书名打印
BookSystem*Print_PandA(CString,CString,BookSystem*temp);//按和作者打印
BookSystem*Print_BandA(CString,CString,BookSystem*temp);//按书名和作者打印
BookSystem*Print_PandBandA(CString,CString,CString,BookSystem*temp);//按,书名和作者打印
boolPrint_Type(CString,BookSystem*temp);//按书的类型打印
boolInsertBookSystem(CString,CString,CString,CString,BookSystem*);//插入一本书
BookSystem*BookSystem:
:
ResearchInsert_Type(BookSystem*,BookSystem*);//按类型查找和插入,方法基于跳跃链表的
BookSystem*Search_Press(CString,BookSystem*);//查找
BookSystem*Search_Bookname(CString,BookSystem*);//查找书名
BookSystem*Search_Author(CString,BookSystem*);//查找类名
BookSystem*Search_PandB(CString,CString,BookSystem*);//按和书名查找
BookSystem*Search_BandA(CString,CString,BookSystem*);//按和作者查找
BookSystem*Search_PandA(CString,CString,BookSystem*);//按书名和作者查找
BookSystem*Search_PandBandA(CString,CString,CString,BookSystem*);//按,书名和作者查找
CStringpress,bookname,author,type;intnote[3],ID,booknameID;//note用来记录数据相应坐标的位置
BookSystem*press_next;//记录下一条同一标记的节点的位置
BookSystem*bookname_next;//记录下一条同一书名的节点的位置
BookSystem*author_next;//记录下一条同一人名的节点的位置
BookSystem*same;
BookSystem*other;
};
4.3界面现实控制台
界面部分我们是利用MFC来实现图书信息管理系统的显示以及操作界面:
首先利用MFC来制作成用户登陆的界面里面包括调用了图书馆管理系统.cpp的函数来实现界面容,用户可以点击"用户登陆"按纽来进入系统。
点击完"用户登陆"后变是进入用户ID验证,以及功能选择界面(Id是1KEY是1111),按钮Borrow是进入借书界面,其部连接着borrow.cpp函数;按钮Rrturn是进入还书界面,其部连接着returnbook.cpp函数
用户选择Borrow后,便可以按照提示来进行图书的查询(可以按图书类型查找,按图书名查找,按图书作者查找,按图书查找;也可以图书名,图书作者,图书出板社3个元素混合查找。
)
Borrow.cpp函数里头每种的查找方式都跟核心算法函数BookSystem.cpp里头的查找函数(BookSystem*Search_Press(CString,BookSystem*);
BookSystemSearch_Bookname(CString,BookSystem*);
BookSystem*Search_Author(CString,BookSystem*);
BookSystem*Search_PandB(CString,CString,BookSystem*);
BookSystem*Search_BandA(CString,CString,BookSystem*);
BookSystem*Search_PandA(CString,CString,BookSystem*);
BookSystem*Search_PandBandA(CString,CString,CString,BookSystem*);)相连接调用
当搜索到相关的图书信息后,将会显示出来在搜索结果的筐架里头。
选定后按下Borrow按钮,如果借书成功,系统便会提示成功,没有便会提示失败;
时候
当一本书借书成功后,在Return函数里头便会以文本的形式记录起来,等待以后还书的时候调用文本所记录的数据来还书。
还书的时候只要进入还书的界面里头选定要还的书目,按Return,如果还书成功,系统便会有提示
4.4角色划分
图书管理系统将用户划分为两类:
普通用户和管理员。
普通用户的主要功能有:
借书、还书、查询这三项基本功能。
管理员的主要功能有:
图书录入和清除库存
在该图书信息管理系统中,不同的角色对应不同的功能,在登陆界面需要输入用户名和密码才能进入普通用户功能界面。
而需要输入特殊密码进入管理员功能界面。
4.5登陆窗口
这就是我们所做的信息安全专业图书管理系统的登陆页面:
点击用户登陆就进入输入用户名和密码(用户名:
1密码:
1111)身份验证完成之后进入普通用户的功能界面,在里面可以进行借书、还书以及查询图书的功能。
点击城堡图片进入输入超级密码(密码:
11111111)进入管理员功能界面,可以实现清除库存和图书录入的功能。
4.6操作流程
这就是我们所做的信息安全专业图书管理系统的登陆页面:
点击用户登陆就进入输入用户名和密码(用户名:
1密码:
1111)身份验证完成之后进入普通用户的功能界面,在里面可以进行借书、还书以及查询图书的功能。
点击城堡图片进入输入超级密码(密码:
11111111)进入管理员功能界面,可以实现清除库存和图书录入的功能。
点击用户登陆
输入:
用户名:
1
密码:
1111
输入Access2003数据库原理与应用标准教程标准
当搜索到相关的图书信息后,将会显示出来在搜索结果的筐架里头。
点击书目选择借书就可以实现图书的借阅。
选定后按下借书按钮,如果借书成功,系统便会提示成功,没有便会提示失败
同理进入归还界面:
选择其中的书目,点击归还:
下面介绍管理员账户的功能,首先点击首页的城堡图片进入管理员登陆页面
输入密码:
11111111
可以看到管理员账户所具有的两项功能可以选择其中的一项进行:
如果选择采编入库的话,就进入其页面,填写其中容进行记录。
选择清除库存的话,选择其中里面的一项或者几项,确定要清除的书籍信息然后点击确
编译程序如下:
#include
#include//I/O流控制头文件,类似C里面的格式化输出
#include
#include
constintmaxr=50;//读者上限
constintmaxb=50;//图书上限
constintmaxbor=5;//每个读者最多只能借5本书
constcharm[6]={'1','2','3','4','5','6'};//管理员密码
classReader
{
intflag;//删除标记
intnumber;//学号
charname[10];//
charmajor[10];//专业
intborbook[maxbor];
public:
Reader(){}
char*getname(){returnname;}
char*getmajor(){returnmajor;}
intgetflag(){returnflag;}
intgetnumber(){returnnumber;}
voidsetname(charna[])
{
strcpy(name,na);
}
voidsetmajor(charm[])
{
strcpy(major,m);
}
voiddelbook()
{
flag=1;//1.已删
}
voidaddreader(intn,char*na,char*m)
{
flag=0;
number=n;
strcpy(name,na);
strcpy(major,m);
for(inti=0;iborbook[i]=0;
}
voidborrowbook(intbookid)
{
for(inti=0;iif(borbook[i]==0)
{
borbook[i]=bookid;
return;
}
}
intbackbook(intbookid)
{
for(inti=0;iif(borbook[i]==bookid)
{
borbook[i]=0;
return1;
}
return0;
}
voiddisp()//显示读者信息
{
cout<for(inti=0;iif(borbook[i]!
=0)
cout<cout<<"]"<}
};
classRDatabase
{
inttop;//读者记录指针
Readerread[maxr];//读者记录
public:
RDatabase()//构造函数,将reader.txt读到read[]中
{
Readers;
top=-1;
fstreamfile("reader.txt",ios:
:
in);//***文件以输入方式打开reader.txt,创建文件流对象file
while
(1)
{
file.read((char*)&s,sizeof(s));
if(!
file)break;
top++;
read[top]=s;
}
file.close();
}
intaddreader(intn,char*na,char*m)//添加读者时先查找是否存在
{
Reader*p=search(n);
if(p==NULL)
{
top++;
read[top].addreader(n,na,m);
return1;
}
return0;
}
Reader*search(intreaderid)//按学号查找
{
for(inti=0;i<=top;i++)
if(read[i].getnumber()==readerid&&read[i].getflag()==0)
return&read[i];
returnNULL;
}
voiddisp()//输出读者信息
{
for(inti=0;i<=top;i++)
read[i].disp();
}
voidreaderdata();
~RDatabase()//析构函数,将read[]写入reader.txt文件中
{
fstreamfile("reader.txt",ios:
:
out);//文件以输出方式打开reader.txt,创建文件流对象file
for(inti=0;i<=top;i++)
if(read[i].getflag()==0)
file.write((char*)&read[i],sizeof(read[i]));
file.close();
}
};
voidRDatabase:
:
readerdata()
{
intchoice=1;
charrname[20];
charrmajor[20];
intreaderid;
Reader*r;
while(choice!
=0)
{
cout<<"欢迎进入读者管理系统"<cout<<"1:
添加读者"<cout<<"2:
删除读者"<cout<<"3:
查找读者"<cout<<"4:
显示"<cout<<"0:
返回"<cin>>choice;
switch(choice)
{
case1:
cout<<"输入读者学号:
";
cin>>readerid;
cout<<"输入读者:
";
cin>>rname;
cout<<"输入读者专业:
";
cin>>rmajor;
addreader(readerid,rname,rmajor);
cout<<"添加读者成功"<break;
case2:
cout<<"输入读者学号:
";//按学号删除读者
cin>>readerid;
r=search(readerid);
if(r==NULL)
{
cout<<"该读者不存在"<break;
}
r->delbook();
cout<<"成功删除该读者"<break;
case3:
cout<<"输入读者学号:
";//按学号查询读者信息
cin>>readerid;
r=search(readerid);
if(r==NULL)
{
cout<<"该读者不存在"<break;
}
r->disp();
break;
case4:
disp();
break;
}
}
}
classBook//图书类
{
intflag;
intnumber;//图书编号
charname[20];//图书名
charauthor[10];//作者名
charcbs[20];//名称
intonshelf;
public:
Book(){}
char*getname(){returnname;}
intgetnumber(){returnnumber;}