文档库 最新最全的文档下载
当前位置:文档库 › 基于java Web 的在线拍卖系统

基于java Web 的在线拍卖系统

基于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-1

2.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:用户表。存放用户数据:

表2-3-1

(2)kind:种类表,存放种类信息。

表2-3-2

(3)state:状态表,存放物品状态信息。

表2-3-3

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

表2-3-4

(5)bid:竞价表。存放用户竞价信息。外键关联到item。

表2-3-5

2.4类图设计

(1)类主要包括:

①data类存放封装的数据:

图2-4-1

②Dao类主要存放对数据库操作的代码:

图2-4-2

③Manager类主要存放对实体类的操作代码:

图2-4-3

④Servlet类主要存放处理页面请求的数据的代码:

图2-4-4

(2)概念类图如下:

图2-4-5

3、 程序实现说明

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:

ViewWin

com.blue.servlet.ViewWin

ViewWin

/ViewWin

(4)浏览流拍物品界面:

图3-4

关键代码是对数据库视图查询的操作:

public ArrayList getWinItem(int userid){

ArrayList list = new ArrayList();

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 block

e.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 block

e.printStackTrace();

}

}

(6)管理物品页面:

图3-6

添加物品的时候关联种类表,物品种类下拉菜单是动态的。

(7)浏览拍卖物品界面:

图3-7

(8)查看自己竞标记录界面:

图3-8

(9)当物品到期,就要更新物品的状态id,刷新数据库的实现:

public void updateItemState(){

Date d = new Date();

java.text.SimpleDateFormat dateFormat = new

java.text.SimpleDateFormat("yyyy-MM-dd");

String s = dateFormat.format(d);

//可以连接一次

//将到期的物品如果init_price

if(m.createCon()){

String sql="update item set state_id=2 where endtime < '"+s+"' and init_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方法。测试该方法是否能达到指定功能,如果不能则需要修改代码。这种测试虽然比较费时,但可以避免很多以后的错误。

(2)功能点测试

完成一个功能后测试还功能情况。经测试基本能正确实现全部功能。

(3)数据测试

输入错误数据,测试程序反映。

例:当登陆时候出现用户名与密码不匹配的时候提示错误信息:

图4-1

5、程序总结

通过三周的课程设计,我完成了这个简易的拍卖系统,算是完成了自己一个阶段的学习。做这个项目的过程中我收获了很多,具体如下:

(1)做项目时候要认真细心,SQL Server 2008要求比较严格,在执行代码部分获取结果集的时候要严格按照数据库中表的字段顺序接收数据,不

然程序就会现“无效的描述错误”;

(2)学会了利用JSP+JavaBean+Servlet的模式开发信息系统;

(3)系统当前时间的获取,不同的数据库有不同的获取时间的语句,如果出现“没有执行可选特性”的错误,获取的时间就会有问题,或者根本

获取不到时间,数据插入就会失败;

(4)自己开发的系统页面尽量大方合理,布局合理,代码风格要良好,不然会出现自己要找代码时候写的代码都找不到;

(5)在命名文件名称的时候一定要规范,以方便查找文件;

系统不足之处有很多,比如:用户注册登陆时候没有加验证码降低了系统的安全性,再添加种类和物品的时候没有加验证肯会导致数据重复提交降低了系统的可靠性,系统只设置了用户登录并没有身份认证,应该增加管理员与游客身份这样才比较合理。

我的建议:我相信老师如果在多多指教,再多给我们几天时间就会做得更好的!

相关文档