书籍在线销售系统
目: 考研资料在线销售系统
专 业 班 级 姓 名 学 号 指导教师 完成日期
2012 年 春季 学期
一、 系统需求
(任务的描述,系统中用户的界面需求、功能需
求、性能需求等)
1.1 需求分析
本系统的只要目的是为考研书籍信息提供分类管理、维护和网上订购功能,不但能够方便用户购买,而且有效的扩大的销售范围。利用本系统,用户可以足不出户进行考研书籍信息的查询和订购,这充分节省了考研学子的时间,让他们更快、更方便的学习。这种方式与传统模式相比有着较大的优势。
本系统遵循软件工程
,并按照软件工程
的流程进行项目的开发。 1.2 功能需求描述
考研资料在线销售系统的只要目的是为了针对所有的考研学子提供一个网上的图示购买平台,用户可以足不出户购买所需要的书籍。因此要为用户提供一个简洁、方便的操作界面,同时也为具有更高权限的管理员提供相应的系统管理功能。
考研资料在线销售系统主要实现
(1)注册新用户功能:在书店的登录页面上单击“注册新用户”超链接,就可以进入用户注册页面,需要填写应户名、真实姓名、密码、性别、电话、电子邮箱后提交,若输入的信息合法,则注册成功。通过用户注册的新用户只能是普通用户,其权限最低。
(2)登陆功能:在系统首页上输入用户名和密码,单击“提交”按钮,若输入信息合法,则可以成功登陆考研资料在线销售系统。否则会在页面上提示输入信息错误。登陆页面分为用户登录页面和管理员登陆页面。
(3)查看图书功能:任何登陆书店系统的用户均可以使用图书查看功能。用户进入书店后,可以通过单击图书名称查看书籍的资料,包括数名、作者、出版社、ISBN、价格、封面和内容简介等信息,并可以单击“加入购物车”超链接进入购物车中保存。管理员还可以查看这本书的销量。
(4)删除图书功能:只有管理员可以使用删除图书功能。通过单击图书列表左侧的“删除”超链接删除该图书信息。
(5)修改个人信息功能:任何登陆书店的用户都可使用修改个人信息功能。用户可以通过单击导航栏上的“修改人格信息”超链接进入该页面,可以对用户的真实姓名、密码、性别、电话、电子邮件等信息进行修改。若输入的修改信息合法,则修改成功。
二、 系统
(可包含系统的框架、功能描述)
2.1 开发与实际的总体思想
在之前的需求分析中提到,本系统的作用就是建立一个考研书籍购买系统。主要从两个方面着手:前台与后台。前台是用户操作的界面,后台是管理员操作的界面。
因为这次课程设计的时间问题,为完成增、删、改、查的功能,只能将这四项功能分别放在前台和后台执行。前台的用户执行注册(即增)、修改个人信息(即改)、查找图书(即查),后台的管理员执行删除现有的图书(即删)。 2.2 系统模块结构图
依据需求分析结果,电子书剑系统大体上可以分为3个模块:数据库访问模块、用户管理模块、图书管理模块。
考研资料在线销售系统
数图用
据书户
库管管 访理理
问系系
模统 统 块
2.3 模块设计
(1)数据库访问模块:利用javabean封装对数据库的操作,主要包括对数据库的链接,添加、删除、查询、修改数据表,关闭连接功能等。当JSP页面中需要访问数据库是直接调用这个javabean即可。数据库中访问模块功能树如下。
加载驱动程序
数据库访问模块 创建连接,执行查询语句
创建连接,执行非查询类语句
关闭连接
(2)用户管理模块:用户管理模块负责管理考研资料在线销售系统多有合法注册用户的信息并实现用户登录、退出、权限验证等操作。主要功能包括以下几个方面。
新用户注册
用户管理系统 用户登录
修改用户信
息
(3)图书管理模块:图书管理模块负责管理考研资料在线销售系统中的所有图书信息。包括以下几个方面。
查询图书
图书管理模块
添加图书
2.4 界面设计
考研资料在线销售系统的界面诗句遵循简洁美观、方便易用的基本原则。为方便用户在各个模块功能键快速切换,本系统使用了系统导航栏,在主页面中有导航栏,其他各个页面中有返回主页面的设计。系统的具体设计如下。 (1)用户登录页面:
(2)管理员登录页面:
(3)用户注册页面;
(4)用户主页面:
)管理员主页面: (5
(6)修改个人信息页面:
(7)查询图书页面:
三、 系统配置(描述系统的代码文件结构、如何配置、代码文件之
间的关系、如何访问、访问效果等)
据库设计 3.1 数
本系统采用Access数据库,数据源的名称叫“图书销售”,在数据库中使用book来储存书店现有的资料信息,表的结构如下图所示:
user数据表存储书店用户的基本信息,表的结构如下图所示:
Oderinfo数据表存储订单的基本信息,表的结构如下图所示:
3.2 主要代码及其功能描述
3.2.2 用户管理模块
用户管理模块主要提供新用户的注册、用户及管理员登陆、修改功能。由于对
个模块均要使用分页显示方式,因此我们仍然可以吧分页功能利用一个javabean单独实现,在需要分页显示的页面直接调用。
1.模块描述
提供新用户注册、登陆、修改信息的管理功能。
2.源文件定义
(1)判断.jsp.
名称:登陆验证页面
功能:主要负责检查用户输入的登陆信息的合法化。
输入:登陆页面的表单提交信息。
处理:若是合法用户,则将其用户级别、用户名、性别、电话、电子邮箱等信
息保存到session里面,便于以后识别该用户的身份和权限时使用。其中,用户
级别为对应记录的rank字段值,“0”代表普通用户,“1”代表管理员。
输出:根据验证结果转到相应的页面。
代码:
JSP Page
<%
String username=request.getParameter("username");
String password=request.getParameter("userpwd1");
Connection con;
Statement sql;
ResultSet rs;
try{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
}catch(ClassNotFoundException e)
{ out.print(e);
}
try {
con=DriverManager.getConnection("jdbc:odbc:user","username","password");
sql=con.createStatement();
rs=sql.executeQuery("select * from user where username='"+username+"' and
password='"+password+"'");
if(rs.next())
{
session.setAttribute("用户登录","true");
response.sendRedirect("主页面.jsp");
}else{ %>
<% }
con.close();
}
catch(SQLException e)
{ out.print(e);
}
%>
(2)Register.jsp
名称:注册处理页面。
功能:负责获取用户在注册时填写的个人信息。
输入:注册页面的表单提交信息。
处理:获取表单输入信息,首先对注册时使用的新用户名进行判断,如果注册
时输入的用户名和已有用户名重复,则提示错误信息。验证成功后,形成一条新
纪录插入到user表单中。
输出:显示注册成功信息或者错误提示信息。
代码:
JSP Page
(3)Dealupdate.jsp
名称:修改处理页面。
功能:处理用户信息修改页面的表单提交信息。
输入:修改用户信息界面提交的表单信息。
处理:这里要依据session中保存的用户权限及登录用户的ID号做权限验证,
限制普通用户只能修改自己的个人信息。只有管理员有权修改其他用户的信息。
验证通过后,获取用户提交的修改信息,更新user表中相应的记录。
输出:根据验证结果重定向到不同的页面。
代码:
JSP Page
<%
String username="fan";
String password="";
String truename="";
String sex="";
String phone="";
String email="";
String rank="";
String logrank="";
String logid="";
if(session.getAttribute("rank")!=null)
logrank=(String)session.getAttribute("rank");
if(session.getAttribute("id")!=null)
logid=(String)session.getAttribute("id");
if(!logrank.equals("1")&&!logid.equals("id"))
response.sendRedirect("主页面.jsp");
else
{;
if(request.getParameter("truename")!=null)
password=request.getParameter("truename");
if(request.getParameter("sex")!=null)
password=request.getParameter("sex");
if(request.getParameter("phone")!=null)
password=request.getParameter("phone");
if(request.getParameter("email")!=null)
password=request.getParameter("email");
if(request.getParameter("rank")!=null)
password=request.getParameter("rank");
}
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc : user
","username","password");
String sql="update user set password =' " + password + " ', sex = ' " + sex + " ' , phone
= ' " + phone + " ', email = ' " + email + " ' where username = " + username;
Statement stm=conn.createStatement();
stm.executeUpdate(sql);
conn.close();
%>
3.2.2 图书管理模块
1.模块描述
提供图书的查看、查询、修改等功能。
(1)Dealdelete.jsp
名称:删除用户处理页面。
功能:删除某个电子书店的合法用户。
输入:要删除的用户的用户名。
处理:获取管理员要删除的用户的用户名,删除user表中对应的用户记录。删除用户只允许管理员使用。
输出:根据验证结果重定向到不同的页面。
代码:
JSP Page
<%
String un;
un=request.getParameter("username");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn=DriverManager.getConnection("jdbc:odbc:user");
String sql="delete from user where username='un'";
Statement stm=conn.createStatement();
stm.executeUpdate(sql);
conn.close();
%>
(4)Dealfind.jsp
名称:查询图书处理页面。
功能:根据书名查询所需要的书籍。
输入:要查询的图书名称。
处理:获取要查询的图书的书名,在数据表查询跟图书名一致的图书资料。查询功能允许用户和管理员同时使用。
输出:显示出要查询的图书的基本信息。
代码:
JSP Page
<%
String n = request.getParameter("bookname");
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:article");
Statement st = conn.createStatement();
String sql = "select * from book where bookname=" + n;
ResultSet rs = st.executeQuery(sql);
while (rs.next()) {
%>
书名: |
作者: |
出版时间: |
出版社: |
ISBN: |
原价: |
现价: |
销量: |
<%=rs.getString("bookname")%> |
<%=rs.getString("author")%> |
<%=rs.getString("pubdate")%> |
<%=rs.getString("pubhouse")%> |
<%=rs.getString("isbn")%> |
<%=rs.getString("eprice")%> |
<%=rs.getString("price")%> |
<%=rs.getString("salenum")%> |
<%
}
rs.close();
st.close();
conn.close();
%>
(5)List.jsp
名称:显示图书界面。
功能:只要负责显示现在考研资料在线销售系统中有的资料,包括显示书名、作者、出版时间、出版社、ISBN、原价、现价、销量等基本信息。当操作者为用户时,只能查看;当操作者是管理员的时候,可以删除、新增、改变其基本信息等。
输入:从用户主页面和管理员主页面都可以直接进入这个界面,不过进行的操作不一样罢了。
处理:获取当前书店中所有资料的基本信息,并显示出来。
图书信息类表界面。 输出:
代码:
JSP Page
<%
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn = DriverManager.getConnection("jdbc:odbc:article");
Statement st = conn.createStatement();
String sql = "select * from book ";
ResultSet rs = st.executeQuery(sql);
rs.last();
while (rs.next()) {
%>
书名: |
作者: |
出版时间: |
出版社: |
ISBN: |
原价: |
现价: |
销量: |
<%=rs.getString("bookname")%> |
<%=rs.getString("author")%> |
<%=rs.getString("pubdate")%> |
<%=rs.getString("pubhouse")%> |
<%=rs.getString("isbn")%> |
<%=rs.getString("eprice")%> |
<%=rs.getString("price")%> |
<%=rs.getString("salenum")%> |
<%
}
rs.close();
st.close();
conn.close();
%>
四、 系统维护与扩展
4.1 系统维护
因为使用的是Access数据库,功能没有SQL数据库强大,需要管理员时不时
的检查数据库有没有被损坏,或者检查数据库是不是时刻都跟JSP连接在一起。
其次就是JSP页面,页面在编辑过程中有时会用到背景图片,但是在不同的浏
览器上的显示效果不一样,也需要开发人员注意。每个页面之间的连接
控制因为不完备,所以也需要开发人员注意。
4.2 系统扩展
4.2.1 现有功能扩展
1.注册
在新用户注册的时候,只是仅仅判断了这个用户名是否已经在数据表中存在,
但是并不限制用户起什么样的用户名,还有其长度、字符类型都没有限制,这对
将来数据库的管理造成麻烦,因为有可能用些字符是数据库不能识别的;密码也
没有限制,太短的密码会让网络黑客有机可乘,盗取用户信息,用作不好的地方。
2.主界面
主界面太过简单,没有丰富的内容,只能在其中不断连接,显得很粗糙,在将
来可以把图书的销售情况直接的显示在主界面上。
3.图书管理
没有图书的封面,在图书的介绍界面上仅仅有图书的基本信息,之后可以像当当、卓越那样把这本书的评价也直接的显示出来,而且在最下面还可以很管理员进行互动。
4.库存管理功能
例如当用户订购图书时出现库存不足时,系统会自动提示库存不足,莹及时补给,在今后的实际应用中可以进一步完善。
4.2.2 其他功能扩展
1.购物车功能
一般的图书资料购买网站上都可以直接购买,但是这次时间仓促,加上我自己的能力不够,没有能力写出这个功能。如果你马上购买,还可以收藏这本资料,之后再自己的购物车中看到这个商品,再对自己收藏的商品进行挑选,在决定要不要。
2.订单管理功能
目前的系统,仅仅只是用户管理自己的信息,管理员可以分别管理用户、图书信息,但是因为无法完成购物车的功能,就不能由用户自己生成订单。目前只能靠手动输入订单信息,无法提供生成订单、查看订单、修改订单状态和删除订单的功能。
3.联想功能
现在很多的网站有推荐功能,比如说现在购买了一本《李永乐复习全书》,在收藏或者加入购物车的时候就会提示还有《习题660》等相应的书籍,还会显示现在有百分之多少的人在购买《李永乐复习全书》的同时也购买了这本书。
同时还有组合购买的方式,提示几种书籍同时购买的时候会有一些优惠政策,类似于折扣、免邮之类的。
4.支付功能
这个系统没有涉及支付功能。在进行结算之后,就应该进入支付模块,链接进入支付宝或者一些银行的网上支付项目,支付之后卖家就可以进行发货了。 五、 心得体会
本系统实现了一些基本的电子书店系统的功能,但其中对书籍的销售模块实现的很简单,甚至都没有自动生成订单的功能,只能手动输入,更没有涉及支付功
能,该功能数额及到了技术很复杂,不在本系统的考虑之中。该系统的一些功能很薄弱,在之前的扩展功能中都提到。
经过这次的课程设计,我充分体会到建立网站的复杂性,几乎每个页面都要有链接到数据库的语句,其实完全可以把这部分封装起来,用一个语句直接调用,还有一些比较常用的功能,都可以封装起来,这样在分页显示效果的页面中可以直接调用该javabean来实现分页,有效的简化了程序,提高了代码的利用率。
另外,通过这次的课程设计,我熟练的掌握了利用JDBC的标准接口访问数据库的操作方法,完善自己的开发技术,便于以后搭设一个更加完整、复杂、具有实际意义的站点。
之前经常在网上买书,总觉的那些网站设计的简单不吸引人,通过自己的设计,明白了不同的商品对于网站的设计也是不一样的。比如考研资料和衣服的对比,考研资料注重的是内容,对于书本大小、封面好看程度都没有要求,需要一个尽量简洁、方便、易于浏览的页面,只要关键信息都正确,一般的考研学子就会直接买下,多半也不会再多家店面里选择,这是由书籍的统一标准性决定的;但衣服就有多不同的地方,多半人们会注重其美观程度,在选择的过程中,余地较大,买卖会很犹豫,页面的好看程度都会影响买家。所以,经过这次的试验,我收获的不仅仅是课本上的知识,也对影响人们的因素有了一定了解。 六、 参考文献
《JSP课程设计》电子工业出版社;
《JSP程序设计基础教程》清华大学出版社