当前位置:文档之家› 基于java Web 的在线拍卖系统

基于java Web 的在线拍卖系统

华北科技学院课程设计说明书技能训练类(三)学号:201207034102班级: 信管B121 姓名:何欢设计题目:_____在线拍卖系统________________ 设计地点:____基础五_______________________ 设计时间: 2015.3.10 至2015.4.17成绩评定:1、工作量: A(),B(),C(),D(),F( )2、难易度:A(),B(),C(),D(),F( )3、答辩情况:基本操作:A(),B(),C(),D(),F( )代码理解:A(),B(),C(),D(),F( )4、报告规范度:A(),B(),C(),D(),F( )5、学习态度:A(),B(),C(),D(),F( )总评成绩:_________________________________ 指导教师:_________________________________1、课程设计的目的技能训练的内容围绕一个信息管理系统的实际开发过程进行组织,重点在于程序设计开发部分。

信息管理系统的题目由教师指定或学生自行拟定,学生根据教师提出的系统在应用环境、系统规模、数据量、业务流程等方面的要求,进行需求分析、数据库设计、数据库实施、程序开发和测试,最终完成系统。

技能训练的目的和要求:(1)使学生巩固和加强《java基础》与《》课程的理论知识。

(2)使学生掌握程序设计开发的步骤。

(3)使学生掌握model2以上的开发系统的方法。

(4)使学生掌握使用数据库管理信息数据的方法。

(5)使学生掌握使用JA V A等程序设计语言连接和操作数据库的方法。

(6)使学生掌握调试程序的基本方法及上机操作方法。

(7)使学生初步掌握开发一个小型信息管理系统的基本步骤,引导学生根据实际业务流程和需求进行系统分析与设计,并建立需要的数据库,最后通过编写代码和调试完成系统。

2、软件需求分析和总体设计2.1软件功能拍卖系统是一个在线系统,系统设计为B/S模式,用户在浏览器请求服务端的资源。

包含的功能有:①查看竟得物品②浏览流拍物品③管理种类④管理物品⑤浏览拍卖物品⑥查看自己的竞标功能模块框图下图所示(图2-1-1):登录查看自己已经竞得的物品浏览流拍物品管理物品管理种类浏览拍卖物品查看自己的竞标的竞标记录返回首页注销显示种类添加种类查看自己拍卖物品添加自己要拍卖物品查看当前拍卖物品种类查看详细竞拍物品竞拍刷新图2-1-12.2设计模式拍卖系统采用Model2设计,即代码结构。

JSP+Servlet+JavaBean。

图2-2-1系统通过JSP技术来表现页面,通过Servlet技术来完成大量的事务处理工作。

在model2中,Servlet用来处理请求的事务,充当着一个控制者的角色,并负责向客户端发送请求。

Servlet创建JSP需要的Bean和对象,然后根据用户的请求行为,决定将哪个JSP页面发送给用户。

JSP页面没有任何商业处理逻辑,JSP页面只是简单地检索ervlet先前创建的Bean 和对象,再将动态内容插入到预定义的HTML模板中。

Model2 符合MVC架构模式,即(Model-View-Controller)。

MVC设计模式模式三部分组成。

模型是应用对象,没有用户界面;视图表示在屏幕上的显示,代表流向用户的数据;控制器定义用户界面对用户输入的相应方式,负责把用户的动作转成对Model的操作;Model通过更新View的数据来反映数据的变化。

图2-2-2优点:各司其职、互不干涉、有利于开发中的分工、有利于组件的重用缺点:系统结构和实现复杂、视图和控制器过于紧密、适合大型应用程序2.3数据库设计数据库设计为五个表:auction_user、kind、item、bid、state(1)auction_user:用户表。

存放用户数据:字段名字段说明字段类型字段约束User_id 用户的id int PKUsername 用户名varchar(50) Not nullUNIQUEUserpass 用户密码varchar(50) Not nullemail 用户email varchar(100) Not null表2-3-1(2)kind:种类表,存放种类信息。

字段名字段说明字段类型字段约束Kind_id 物品种类id int PKauto_incrementKind_name 种类名varchar Not null表2-3-2(3)state:状态表,存放物品状态信息。

表2-3-3(4)item:物品表,存放物品信息外键关联到auction_user,kind,state。

表2-3-4(5)bid:竞价表。

存放用户竞价信息。

外键关联到item。

表2-3-52.4类图设计(1)类主要包括:①data类存放封装的数据:图2-4-1②Dao类主要存放对数据库操作的代码:图2-4-2③Manager类主要存放对实体类的操作代码:图2-4-3④Servlet类主要存放处理页面请求的数据的代码:图2-4-4(2)概念类图如下:data -Attribute1+get()+set()Dao +connect()Maneger +add()+search()+updata()Servlet +doPost()+doGet()图2-4-53、 程序实现说明(1) 如果未登录,点击任何连接进入登录界面:图3-1登陆时候用户名与密码不匹配会有提示信息 (2) 如果没有账号进入用户注册界面:图3-2关键代码实现:if(aud.findUser(username, userpass)!=null){session.setAttribute("username",username);session.setAttribute("register", "error");RequestDispatcher rq =request.getRequestDispatcher("/register.jsp");rq.forward(request, response);}else{um.addUser(au);session.setAttribute("username",username);session.setAttribute("register","ok");RequestDispatcher rq =request.getRequestDispatcher("/login.jsp");rq.forward(request, response);}(3)查看自己竞得物品界面:图3-3配置servlet:<servlet><servlet-name>ViewWin</servlet-name><servlet-class>com.blue.servlet.ViewWin</servlet-class></servlet><servlet-mapping><servlet-name>ViewWin</servlet-name><url-pattern>/ViewWin</url-pattern></servlet-mapping>(4)浏览流拍物品界面:图3-4关键代码是对数据库视图查询的操作:public ArrayList<Win> getWinItem(int userid){ArrayList<Win> list = new ArrayList<Win>();Win win = null;double winprice = 0;if(m.createCon()){String sql = "select * from win where winer_id="+userid+" and state_id=2";m.query(sql);while(m.next()){try {item = new Item();item.setItem_name(m.getRs().getString("item_name"));kind = new Kind(m.getRs().getString("kind_name"));winprice = m.getRs().getDouble("max_price");item.setItem_remark(m.getRs().getString("item_remark"));win = new Win(item,kind,winprice);list.add(win);} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace(); } }}m.close();return list; }(5)管理物品种类页面:图3-5添加物品使用了存储过程向数据库添加。

if(m.createCon()){String sql = "exec Insert_Kind @kind_name=?,@kind_desc=?";try {PreparedStatement ps = m.getCon().prepareStatement(sql);ps.setString(1,kind.getKind_name());ps.setString(2, kind.getKind_desc());int num=ps.executeUpdate();} catch (SQLException e) {// TODO Auto-generated catch blocke.printStackTrace();}}(6)管理物品页面:图3-6添加物品的时候关联种类表,物品种类下拉菜单是动态的。

(7)浏览拍卖物品界面:图3-7(8)查看自己竞标记录界面:图3-8(9)当物品到期,就要更新物品的状态id,刷新数据库的实现:public void updateItemState(){Date d = new Date();java.text.SimpleDateFormat dateFormat = newjava.text.SimpleDateFormat("yyyy-MM-dd");String s = dateFormat.format(d);//可以连接一次//将到期的物品如果init_price<max_price则状态更新为2if(m.createCon()){String sql="update item set state_id=2 where endtime < '"+s+"' and init_price<max_price ";m.update(sql);}m.close();//将到期的物品如果init_price=max_price则状态更新为3,说明没有人拍卖if(m.createCon()){String sql1="update item set state_id=3 where endtime < '"+s+"' and init_price=max_price ";m.update(sql1);}m.close();}4、程序测试说明(1)单步方法测试写好一个方法后,在对应类里写一个main方法。

相关主题