https://www.bilibili.com/video/BV14C41187FV/
演示视频:
3.1 系统设计思想
3.1.1 页面模块化
在本系统中,将数据库连接存入conn.PHP文件中,当需要数据库连接时,只要用Include语句包含此文件即可。
另外系统页面结构定义在一个模板文件template.PHP中,在这个文件中可以看到系统中基本的页面组成结构。只要在此模板页面中的特定位置加上实现某种功能的页面代码,此页就会成为一个具有特定功能的 完整的页面。例如ProductDetail.PHP文件是在template.PHP文件中加入了下面一行代码而具备了显示图书详细信息的功能。
call ShowProduct(RealSruing(Request.QUERYstring("id")))
3.1.2 注重安全性
1)不要把MYSQL数据库放在网站内部
不要把MYSQL数据库文件放在网站结构内部,这样,当恶意人士获取数据库路径后,就可以轻易获取该数据库,进而肆意更改数据库内容。比较好的做法是,使用MYSQL数据库或Oracle数据库,或者将MYSQL数据库文件放在网站虚拟目录以外。
2)过滤字符串中的单引号
当用字符串来组织SQL语句时,最重要的一个问题就是过滤字符串中的单引号,因为SQL语句中的字符是以单引号为分界的,例如下面的语句,在执行时就会出错:
strName="I'm Hacker"
strSQL="SELECT*FROM User WHERE[Name]='"&strName&"'"
conn.Execute strSQL
这样,在实际执行过程中最终SQL语句如下:
SELECT*FROM User WHERE [Name]=‘I'm Hacker'
由于在“I‘m Hacker”中包含一个单引号“’”,这样系统会认为在字母“I”后面已经结束,但后面仍有字符,于是就会提示语法错误。因此需要将单引号过滤掉,或者替换为两个单引号(在SQL语法中用两个单引号表示一个单引号),只要使用VBScript中的Replace函数就可以达到目的。
3.1.3 代码的复用
本系统中使用了很好的代码复用机制,即在开发中尽量使用本系统中已经使用过的代码,以及使用以前项目积累的代码,如分页、检查E-mail的函数和上传类。
3.2 系统功能模块划分
根据系统功能分析,可以画出系统的功能模块图,从管理界面分别对功能模块图加以描述。
管理界面的系统功能模块图如图3-1:
4 数据库设计
3.1 数据库需求分析
用户的需求具体体现在各种信息的提供、保存、更新和查询方面,这就要求数据库结构能充分满足各种信息的输入和输出。收集基本数据、数据结构及数据处理的流程,组成一份详尽的数据字典,为后面的具体设计打下基础。
通过系统功能分析,针对图书馆管理系统,总结出如下的需求信息:
1)用户分一般用户、用户和管理员用户;
2)一般用户和注册用户无需要登录就可以查看图书信息;
3)注册用户登录后可以维护自己的个人信息,并可在网站完成图书借阅、续借、归还等操作;
4)管理员用户登陆后可进行管理员信息、用户信息及图书信息的维护,以且图书借阅、续借及归还信息的维护;
5)图书按图书类别来分类;
6)一个用户可以借阅多个或多种型号的图书。
经过系统功能分析和需求总结,考虑到将来功能上的扩展,设计如下的数据项和数据结构:
1)管理员信息,包括数据项:帐号,姓名,密码等。
2)注册用户(用户)信息,包括数据项:用户ID,用户名,密码等。
3)图书信息,包括数据项:馆藏编号,图书名称,分类编号等。
4)图书借阅信息,包括数据项:图书编号,用户编号,图书编号,借阅时间等。
3.2 数据库概念结构设计
得到上面数据项和数据结构以后,就可以设计出能够满足用户需求的各种实体,以及它们之间的关系,为后面的逻辑结构设计打下基础。这些实体包含各种具体信息,通过相互之间的作用形成数据的流动。
设计规划出的实体有:管理员信息实体、注册用户(用户)信息实体、图书信息实体、图书借阅信息实体、图书续借信息实体和图书归还实体。
实体之间关系的E-R图如图3-1所示:
管理员信息实体E-R图如图3-2所示:
注册用户信息实体ER图如图3-3所示:
图书实体ER图如图3-4所示: