药品进销存储管理系统(三)
//登陆验证
List list=new ArrayList();
Integer page=Integer.parseInt(request.getParameter("page"));
session.setAttribute("u.flag", "1");
Integer pageNumber=(Integer)session.getAttribute("u.pageNumber");
Integer perPageNumber=(Integer)session.getAttribute("u.perPageNumber");
//从session中取出分页信息
if(pageNumber!=0){
if(page<1||page>pageNumber){
return mapping.findForward("tohome.do");
}
//验证当前页是否非法,若是,返回首页
String sql=(String)session.getAttribute("u.sql");
if(sql!=null){
sql+=" limit "+((page-1)*perPageNumber+1)+","+perPageNumber;
}
//拼接sql语句得到显示当前页的sql
list=new UserDAO().finduser(sql);
}
else{
if(page!=1){
return mapping.findForward("tohome.do");
}
}
if(list!=null||list.size()>0){
request.setAttribute("list", list);
return mapping.findForward("show.ok");
}else{
return mapping.findForward("show.error");
}
//若list长度大于0则分发至显示页面,否则生成错误信息返回
}
}
5 系统测试
系统在投入使用之前必须进行严格的测试,测试的内容包括功能测试、性能测试、可用性测试、客户端兼容性测试、安全测试等。测试完成后要上交测试报告,我们可以根据测试报告及时发现问题并提出解决方案,便于系统的维护与升级。
迄今为止,软件质量仍然主要靠软件测试来验证和确认,而且由于测试工作特别耗费资源,在软件开发的总成本中,用在测试上的开销要占30%到50%。在极端的情况下,例如在关系到人的生命安全的软件中(如飞机控制或核反应监控等软件),测试费用可能相当软件生存周期所有其它阶段费用总和的三到五倍。此外,据美国界的统计,对商品化的程序来说,测试在时间和费用两方面的花费都要占整个软件开发周期总开销的50%左右。
但软件测试并不是质量保证的“安全网”。因此,我们应该从两个方面来保证和提高软件质量:首先,应尽量在开发期间减少错误,通过软件过程来建立软件质量;次之,应通过分析和测试来发现和修复软件产品中残存的错误。
经过初步测试,系统在服务器上运行正常,对于不同显示分辨率下网页也能够正常显示而且网页的链接正确。系统各个基本功能都能顺利实现,没有发现重大系统错误。但是由于时间短促和设计者能力有限,在日志和新闻显示中效果不是很理想,另外页面美工效果一般。各个功能的可扩展性,如能在日志添加相册功能,在公开文章中加入留言功能等,还有待进一步实现。
附录一:
1 register.jsp表单设计
表单要素说明 | 表单要素名称 | 表单要素性质 |
用户名 | Username | 文本框(必填项) |
密码 | Password | 文本框(密码域、必填项) |
确认密码 | passconfirm | 文本框(密码域、必填项) |
真实姓名 | realname | 文本框 |
出生年月 | Year,month,day | 下拉菜单 |
性别 | sex | 下拉菜单 |
联系方式 | telnumber | 文本框 |
Email地址 | 文本框 | |
提交按钮 | Submit2 | 按钮(类型为submit) |
重置按钮 | Reset2 | 按钮(类型为reset) |
2 用户数据表结构
(1)用户表
表2 users 数据表结构
字段名 | 字段类型 | 字段含义 | 主外键约束 |
Username | varchar | 用户名 | 主键 |
userpass | varchar | 密码 | |
sex | char | 性别 | |
realname | varchar | 真实姓名 | |
borntime | varchar | 出生年月 | |
status | char | 审批状态 | |
telnumber | varchar | 联系方式 | |
varchar | 邮箱地址 | ||
introduce | text | 自我介绍 |
(2)管理员表:
表3 admin 数据表结构
字段名 | 字段类型 | 字段含义 | 主外键约束 |
Admin_name | varchar | 用户名 | 主键 |
Admin_pass | varchar | 密码 |
(3)日志表:
表4 diary 数据表结构
字段名 | 字段类型 | 字段含义 | 主外键约束 |
diaryID | integer | ID,自动编号 | 主键 |
Title | varchar | 标题 | |
kindID | integer | 所属类别 | 外键关联表kind |
Username | varchar | 发布人 | 外键关联users |
Content | text | 内容 | |
Createtime | datetime | 创建时间 | |
Updatetime | datetime | 更新时间 | |
Status | char | 状态 | |
isopen | char | 是否公开 |
(4)公告表:
表5 gonggao 数据表结构
字段名 | 字段类型 | 字段含义 | 主外键约束 |
Id | integer | ID,自动编号 | 主键 |
Title | varchar | 标题 | |
Content | text | 内容 | |
updatetime | datetime | 更新时间 |
表6 kind 数据表结构
字段名 | 字段类型 | 字段含义 | 主外键约束 |
Kindid | integer | ID,自动编号 | 主键 |
Kindname | varchar | 类别名称 | |
Username | varchar | 创建人 | 外键关联users |
(6)新闻表:
表7 news 数据表结构
字段名 | 字段类型 | 字段含义 | 主外键约束 |
newsid | int | ID,自动编号 | 主键 |
Title | varchar | 标题 | |
Content | text | 内容 | |
Createtime | datetime | 更新时间 | |
address | datetime | 转载地址 |
Web.xml文件