手机销售系统说明书Word格式文档下载.docx
《手机销售系统说明书Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《手机销售系统说明书Word格式文档下载.docx(17页珍藏版)》请在冰点文库上搜索。
在系统中,只有管理员才能修改手机的价格。
基于成本、安全性、可扩展3个因素进行考虑,本系统的架构是B/S结构,具体采用JSP为开发技术(选用“JSP+JavaBean”模式)、Tomcat为Web服务器、Mysql为后台数据库。
在“JSP+JavaBean”模式下,将与数据库连接池相关的操作、读写数据库的操作、需经常使用的数据库的数据进行的操作人别定义成一个类。
考虑到某个功能可能需要用到上述建立的多个类,而JSP动作元素中的<
jsp:
useBean>
标签每次只能创建一个Bean实例。
为避免出现JSP页面中多次重复使用<
标签的情况,在开发时单独建立一个JSP文件,在该JSP文件中,用若干条<
标签将上述类的实例一起创建好。
这样就可以再各个JSP页面中仅用一条JSP指令元素中的include指令即可透明地读写数据库,也便于修改和统一管理。
各个角色经统一的登录页面成功登录后,界面均是一个被拆分为常见的“左窄右宽型”的框架集,其中左侧是功能选择区,右侧是具体操作区。
3..对性能的要求和约束
该系统属于实用型网站,需要对数据的处理,比如对货物的统计并把结果显示出来,故对数据的及时更新要求较高,保证数据的真实性.该系统在任何操作系统下都可以运行,但必须装有MySQL数据库。
四、总体设计
本次设计在功能需求上可分为以下3个方面:
1.前台
设计页面实现手机销售管理系统管理员登录,商品搜索,用户登录,用户注册,以现有手机的列表。
2.后台
(1)系统管理:
管理员管理,可以新增管理员及修改管理员密码,对用户信息的保存,修正。
(2)登记手机:
登记手机具体信息,填写手机信息。
(3)查询销售记录:
具体查看手机售出信息。
(4)查询手机库存:
查询剩余手机库存信息。
软件下载中心后台的组织结构图如图4-1所示。
图4-1后台组织结构
3.数据库
用户的注册与登录是大多数软件系统中必不可少的内容。
在用户登录的时候要判断其是前台服务人员还是管理员,因为二者将看到不同的页面显示。
所以本数据库的E-R图如图4-2、图4-3所示:
操作员
图4-2前台及管理员E-R图
操作内容
图4-3操作内容E-R图
用户表包括用户名和密码,操作内容包括修改密码、用户添加和用户撤销及用户信息查询。
通过概念结构设计阶段的E-R图可以直接在MySql数据库中创建表了,如表4-1、表4-2、表4-3所示。
表4-1user表的描述
字段名
数据类型
是否为空
备注
name
Varchar
否
用户名
password
用户密码
Type
用户类型
address
用户住址
tel
用户电话
表4-2product表的描述
number
手机型号
手机品牌
money
手机价格
style
手机类型
checkstyle
付款类型
id
手机编号
adress
手机生产地址
表4-3phone表的描述
phonestyle
price
state
是否售出
五、详细设计
根据功能模块设计:
1.手机人员登录模块,首先选择要登录的对象,普通用户或者是管理员,如图5-1所示。
图5-1用户登录界面
实现代码如下:
<
div>
<
formstyle="
float:
right"
action="
UserLoginServlet"
method="
post"
>
<
span>
账号:
/span>
inputtype="
text"
name="
username"
selectname="
type"
<
optionvalue="
1"
普通用户<
/option>
2"
管理员<
/select>
密码:
password"
inputname="
login"
type="
submit"
value="
登陆"
/>
ahref="
user_register.jsp"
注册<
/a>
/form>
/div>
主要过程如下:
在用户登录之前要选择所属权限,本设计设计了两个权限,即前台服务人员和管理员。
用户需要输入自己的用户名和密码,如果有一个输入错误或者是对用户名和密码没有输入任何信息就会显示错误信息并且要求用户从新输入用户名和密码。
当用户名和密码都正确的时候点击登录按钮,系统会自动跳转到另外一个界面,然后进行别的操作。
2.手机添加模块,首先用户注册要填写个人信息以便日后的管理工作,如图5-2。
图5-2用户注册填写个人信息
<
<
formmethod="
UserRegisterServlet"
table>
tr>
td>
/td>
name"
/tr>
重复密码:
repassword"
住址:
address"
电话:
tel"
/>
QQ:
qq"
&
nbsp;
&
提交"
reset"
重置"
用户首先填写个人信息如账号、密码、重复密码、住址、电话、QQ、联系方式。
首先定义这些属性,然后用request.getParameter()方法来读取用户填写的个人信息。
启动数据库,用conn.prepareStatement()和stmt.setString()方法将注册信息录入到数据库当中。
request,response参数分别处理请求与响应,抛出ServletException和OException异常。
当录入成功时网页会显示一些提示信息,如图5-3所示。
图5-3用户注册成功
2.手机查询模块,如图5-6所示。
图5-6所有库存信息
实现代码如下:
html>
head>
basehref="
%=basePath%>
"
title>
二手物品管理系统<
/title>
metahttp-equiv="
pragma"
content="
no-cache"
cache-control"
expires"
0"
keywords"
keyword1,keyword2,keyword3"
description"
Thisismypage"
!
--
linkrel="
stylesheet"
text/css"
href="
styles.css"
-->
/head>
framesetrows="
50,*"
framename="
top"
src="
topper.jsp"
framesetcols="
20%,*"
left"
index2_1.jsp"
scrolling="
auto"
right"
product_sale.jsp"
/frameset>
body>
/body>
/html>
首先连接数据库,当点击查询货物链接时,系统就会自动的将数据库的全部货物信息包括手机型号,手机类型,手机价格和是否现在有存货等显示在网页上。
利用session.setAttribute()方法将货物信息进行封装,让后利用rs.getString()放发将这些信息显示在网页上。
5.用户人员修改密码模块,首先输入旧密码,然后设置新密码,如图5-7所示。
图5-7修改密码信息
tablewidth="
307"
border="
tdwidth="
99"
当前用户:
192"
value=<
%=name%>
readonly>
/input>
旧密码:
新密码:
password1"
tdheight="
38"
&
Submit"
确定"
Submit2"
取消"
/table>
%intmessage=0;
Stringp=null;
Stringusername=request.getParameter("
);
Stringpswd=request.getParameter("
Stringpswd1=request.getParameter("
Connectionconn=null;
Statementstmt=null;
try{
Class.forName("
com.mysql.jdbc.Driver"
conn=DriverManager.getConnection("
jdbc:
mysql:
//localhost/test"
"
root"
stmt=conn.createStatement();
Stringsub="
updatetable1setpassword='
+pswd1+"
'
whereusername='
+username+"
;
message=stmt.executeUpdate(sub);
stmt.close();
conn.close();
}
catch(Exceptione){
e.printStackTrace();
if(message==1){p="
修改密码成!
}
else{p="
修改密失败!
}
%>
网页用户名处会显示当前用户的用户名,用户需要输入旧密码,如果输入的旧密码有误,系统会显示提示信息要求用户从新输入,或者是用户不输入任何信息系统同样会有提示信息显示在网页上。
旧密码输入正确后就是从新设置新密码,如果新密码处用户没有输入任何信息,系统会提示用户要求从新输入新设置的密码。
用(String)session.getAttribute("
)来直接接受当前登录用户的用户名并使其显示在用户名一栏,而且还是不准许修改的。
用request.getParameter("
)方法来接收用户的用户名,request.getParameter("
)方法来接收用户输入的旧密码,用request.getParameter("
)方法来接收用户输入的新密码。
六、程序调试
在设计的过程中遇到了很多的问题,比如说用户在登录的时候需要填写用户名和密码,而且本系统还设置了登录权限。
如果你选择了前台用户人员登录,而你却是输入管理员的用户名和密码,这样的话系统不会做出任何反应,用的用户会很迷惑,此时我们用该首先检查一下我们的登录权限是否正确。
在用户注册的时候,用户需要填写个人信息,但是完成这些信息以后再数据库中显示的却有些是乱码。
经过长时间调试才发现原来是没有设置过滤器,否则系统对汉语是不识别的。
往往在网页上进行手机录入的时候,在数据库中却没有该手机的型号信息,这就是数据没有能够录入的到数据库当中用户注销的时候却不能找到该用户的注册信息,这将给销售方和买家带来很大的不便和利益损失。
手机销售管理系统在删除商品的基本信息的时候,没有选择的删除,经常把所有的商品信息全部删除,这样给日后的工作带来很大的麻烦,还有就是对于删除模块与数据可相连接不当,往往在页面删除时,却没有将数据库中的数据删除,待下次使用查询用户信息的时候,已经删除的数据再次出现,给用户及网站带来不必要的工作。
七、结论
经过几周的奋战我的课程设计终于完成了。
在没有做课程设计以前觉得课程设计只是对这几年来所学知识的单纯总结,但是通过这次做课程设计发现自己的看法有点太片面。
课程设计不仅是对前面所学知识的一种检验,而且也是对自己能力的一种测试。
通过这次课程设计使我明白了自己对原来知识的理解还是比较欠缺。
自己要学习的东西还有太多,以前老是觉得自己什么东西都会,什么东西都懂,有点眼高手低。
通过这次课程设计,我才明白学习是一个长期积累的过程,在以后的工作、生活中都应该不断的学习,努力提高自己知识和综合素质。
在这次课程设计中也使我们的同学和老师关系更进一步了,同学之间互相帮助,有什么不懂的大家在一起商量或者是找老师来解决,听听不同的看法对我们更好的理解知识,所以在这里非常感谢帮助我的同学和老师。
附录(程序源代码)
packagecom.secondhand.servlet;
importjava.io.IOException;
importjava.io.PrintWriter;
importjavax.servlet.ServletException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
importjavax.servlet.http.HttpSession;
importcom.secondhand.query.gettime;
importcom.secondhand.query.update;
@SuppressWarnings("
serial"
)
publicclassProductBuyServletextendsHttpServlet{
@Override
protectedvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)
throwsServletException,IOException{
Stringname=req.getParameter("
HttpSessionsession=req.getSession();
Stringusername=(String)session.getAttribute("
if(null==username){
PrintWriterout=resp.getWriter();
out.print("
bodyonLoad=\"
checkForm()\"
scriptlanguage=\"
JavaScript\"
type=\"
text/JavaScript\"
functioncheckForm(){"
+
"
alert(\"
loginfirst!
\"
returntrue;
}<
/script>
req.getRequestDispatcher("
/index.jsp"
).forward(req,resp);
}else{
Stringdate_out=gettime.gettimeinfo();
Stringsql="
UPDATEproductSETdate_out='
+date_out+"
WHEREname='
+name+"
//PrintWriterout=resp.getWriter();
updateup=newupdate();
up.product(sql);
//out.print("
script>
alert('
success!
window.location.href='
/index.jsp'
//req.setCharacterEncoding("
gb2312"
req.getRequestDispatcher("
}
packagecom.