图书管理系统实验报告

更新时间:2023-11-01 04:31:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验报告

【金超逸】 【11300240035】

一、实验题目

图书销售管理系统的设计与实现。

二、开发环境

操作系统:Windows 7 家庭普通版

数据库管理软件: Microsoft SQL Server 2008·SQL Server Management Studio 编程语言:java Web开发环境:jsp

三、数据库设计

其实这个项目的ER图不能算是标准意义上的ER图,因为各个关系各自独立存在就可以了——user和其它表没有什么联系,book和另外两个表frecord以及npn之间的所有联系也只是在对book进行特定的两种更新时frecord和npn也有对应的更新。因此,这个数据库结构中根本就只有“实体集”,而无真正的“联系集”。

每个表的功能和属性: npn:记录维护总平衡 tou:总支出 ti:总收入

rn:财务记录总数

frecord:收录维护财务记录 cp:动作前总平衡

acc:动作金额 usage:动作用途

numob:动作涉及书本数量 time:动作时间

number:财务记录编号 book:记录维护书籍信息 isbn:isbn title:书名 author:作者

publisher:出版社 price:零售价 iprice:进价 snum:库存数量 unum:未付款数量 dnum:已付款数量 user:记录维护用户信息 username:用户名 password:密码 rname:真实姓名 num:工号 gender:性别 age:年龄

四、系统设计

1. 用户管理 a) 1)系统用户分为超级管理员用户和普通管理员用户。普通管理员用户只能对图书进货、销售等信息进行管理,只能查询和修改自己的用户信息;而超级管理员除了可以对图书进货、销售等信息进行管理,还能创建新的用户和查看所有用户的资料。 2)超级管理员用户在系统完成时便已经存在(即其用户名和密码已经存在于数据库中)。而普通管理员用户的用户名和密码需要由超级管理员用户来创建。 3)用户的密码不能以明文形式保存于数据库中,而必须先加密,一般采用MD5算法进行加密。 4)每位用户除了用户名和密码信息外,还有真实姓名,工号,性别,年龄等基本信息。 5)系统所有功能只有用户登录了才能进行操作。 系统通过嵌入的判断页面保持登录。

<%

if(session.getAttribute(\)==null||!(session.getAttribute(\).equals(\)||session.getAttribute(\).equals(\))) {

response.sendRedirect(\);

}

%>

通过Attribute记录登录信息,若已登录,验证通过,否则自动送往登陆页面。用两个不同的标记,以及不同的嵌入页面,区分普通管理员和超级管理员。普通管理员无法通过超级管理员专用页面的验证。

关于用户信息的查询和更新通过jdbc连接后调用sql语句实现,而所有关于具体某用户信息的处理通过提交表单来实现。

MyJsp.jsp是登录页面,提交登录信息至login.jsp处理。login.jsp嵌入了javabean,用封装在Ebcy中的函数md5给密码进行MD5hash。提交的密码hash以后跟user库中保存的密文进行对照,如正确,设置一个正确的Attribute信号,这个信号在登出前一直有效;如果select的结果为空,或密文不匹配,则送回登陆页面MyJsp.jsp。

login.jsp根据用户名的不同把成功登陆的用户送往不同的页面:若是超级管理员“admin”,则送至管理员页面“admain.jsp”,否则送往主管理页面“main.jsp”。 主管理页面重点不在于用户管理,但每个用户可以编辑自己的信息。编辑信息通过表单送至editu.jsp执行编辑。

管理员界面里填写表单可提交至Cnew.jsp创建新用户。而mm.jsp使用一个查询\[user] \找出所有用户信息并打印在屏幕上,并且嵌在表单中,提交单选框信息可以由dlus.jsp执行删除用户操作。

2. 库存书籍管理 系统中需要维护整个书城目前库存的所有书籍信息,包括书籍ISBN号,书籍名称,出版社,作者,零售价格,当前库存数量等。 main.jsp上有按钮指向bm.jsp,这是书籍管理界面的首页。 书籍管理主要通过关系“book”来实现。“book”中的各个属性存储了需要的各条信息。“价格”分为“进价”和“零售价”,而“数量”则细分成了“库存数量”、“未付款数量”、“已付款数量”三种不同的类别,以便进行后面的处理。

3. 书籍查询 可以使用书籍编号、书籍ISBN号、书名、作者、出版社等方式查询库存的相关书籍。 从bm.jsp出发,sch.jsp是查询页面。这个页面主要有三个板块:一是计算查询,二是显示结果,三是编辑信息。编辑信息在后面会提到,这里不赘述。

计算查询是利用提交到自己的表单,将关键词嵌入sql语句,从而得出结果集。例如这样一条语句\author like '%\——其中kw是关键词字符串。 结果集用一个表格来显示,如下图。

4. 图书信息修改 可以修改书籍名称、作者、出版社、零售价格等信息。 从上图可以看到,sch.jsp产生的表格里有一栏“编辑信息”。这个表格其实也是一个表单,选上“编辑信息”一栏的单选框,点击“操作”,选中一行的isbn会被提交到eb.jsp,而根据这个主码,就可以编辑这本书的信息了。编辑信息被提交到Bedit.jsp执行。

5. 图书进货: 对于需要进货的书籍,如果库存中曾经有这本书的信息的话,则直接将这本书的ID列入进货清单,否则需要输入进货书籍的相关信息,包括ISBN号,书名,作者,出版社等。此外,每种书都要指定其进货价格和购买数量。对于刚列入进货清单的书籍给予未付款状态。 bm.jsp上的新书表单提交至Bnew.jsp实现进货。在这里提交的信息分两类,如果在“book”关系中有的isbn,也就是说不管现在有库存还是曾经在库里,只要出现过,单凭isbn就可以添加新书,改变的只是书的数量;并且,系统会提示,如果书籍信息有变,要进入编辑页面修改,而不是在这里。另一种添加方式则是针对没有过记录的书,这些书就要求信息绝对完整,如果有缺,系统会利用java里的“try{}catch(Exception ex){}”提示信息不完整,添加失败。不用说,改变的自然是“未付款数量”,这些书处于“未付款”状态。

6. 进货付款: 查询正在进货的书籍,并给予付款,付款后书籍状态为已付款。 由bm.jsp进入pay.jsp,就进入了付款页面。利用查询语句\,找出所有未付款的书籍。和上面查询页面sch.jsp一样,这里利用查询、表格打印、表单提交一体,提交到dpay.jsp执行付款——将“book”中未付款数量的属性值减少,而已付款数量属性的值相应增多:\isbn='\。界面如下。

7. 图书退货: 对未付款的书籍可以进行退货,即将书籍状态改为已退货。 ret.jsp。这个页面的设计几乎和上面的付款页面pay.jsp一模一样,只是对“book”中三个数量属性的处理上,是“退”不是“进”罢了。

8. 添加新书: 对于已付款的书籍,当书籍到货后,可以将其添加到库存中,此时需要添加上书籍的零售价格。 impo.jsp。同样,这个页面和上面的两个套的是一样的模板。不同的是,执行页面dimp.jsp里多了“制定零售价”的环节。

提交表单到dprc.jsp,\

dnum=dnum-\,书籍正式进入库存,而零售价也被指定。

9. 书籍购买: 使用标售零售价格购买书籍,这时书籍的库存数量需要相应地减少。 sell.jsp结构上是sch.jsp和pay.jsp的合体。

如图,先查询,查询到的输入数目提交就可出售。

10. 财务管理: 当对书籍进货进行付款,或购买书籍时,系统的财务账户都要添加一条账单记录,记录下财务账户的支出或收入。 在dpay.jsp对“book”中的书籍数目属性进行更新时,关系“frecord”和“npn”也要更新。\\添加一条新的财务记录;\set tou=tou+\更新总平衡数据。

“买”和“卖”是两个相对的过程,于是,在执行出售的dsl.jsp中,库存相应减少,而有关财务的两个关系,也会有收入上的更新。

11. 查看账单 查看某段时间内财务账户的收入或支出记录。 从main.jsp进入fm.jsp,可进入财务管理界面。在首页上,能看到总的财务状况,而点击“查看详单”进入fl.jsp,就可以看到每一条财务记录。这是在关系“frecord”中执行sql查询\* from [frecord] \得到的。

五、特色和创新点

1.编辑信息

eb.jsp中,编辑信息如图,原本的信息就放在文字框里,这样既可以让编辑者知道原来信息

本文来源:https://www.bwwdw.com/article/i8f2.html

Top