南阳理工学院
课 程 设 计
课程设计名称: 课程设计
专业班级: 数据库一班
学生姓名: 张文瑞
学 号: 1315925020
指导教师:
网络购物车
一:需求分析
利用html、jsp、java、servlet、数据库等知识点,结合相关设计模式、以及软件工程的相关知识,设计一个网站购物车,用于记录不同客户的购物订单,并能对购物车中商品信息进行查询、修改、删除、清空、下载等操作,商品信息存储在数据库中。具体要实现的功能如下:1:显示商品展示界面、操作成功界面、购物车展示界面等界面。2:商品信息存储在数据库中。3:对商品信息能够进行查询、修改、删除、清空、下载等操作。4:使用MVC设计模式(View(jsp)、Model(javaBean)、Controller(servlet))。5:在浏览器中输入访问信息进行访问。6:购物车信息分页显示。
二:概要设计
本次课程设计中使用了MVC设计模式,jsp作为View,javaBean作为Model,servlet作为controller,实现界面与逻辑的分离,模块之间松耦合,通过传递参数进行调用。Jsp页面通过发送一个操作类型变量,从而使得controller获知应当进行的操作,并通过调用javabean进行实际的执行,这样页面与逻辑就得到了分离,互不干涉和影响。使用数据库存储购物信息,在数据库中对商品信息进行增、删、改、查等操作,此外控制器通过调用writeexcel类,在每次查看信息之前把当前的商品信息写入到xls文件中进行保存,并供用户下载。具体的设计模块及系统流程如下图所示:
三:运行环境、开发语言
运行环境:Windows XP 浏览器
开发语言:html、jsp、java
四:详细设计
1:程序清单
Java课程设计网络购物车文件功能对应表
2:主要代码
1:显示商品信息界面
用jsp来显示主界面
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>登录主页面</title>
</head>
<body>
<br>
<h1 align="center">欢迎光临百味书屋!</h1><br><br><br></p>
<p align="center">
<table width="80%" align=center>//用表格来排列显示信息
<tr>
<td><form method="post" action="controloperate?operatetype=add&booknum=0001"><image src="./image/11.jpg" align=left>书名:货币战争<br>书号:0001
<br>作者:王一<br>价格:23<br><input type="submit" value="购买"><br></image></form></td>
<td><form method="post" action="controloperate?operatetype=add&booknum=0002"><image src="./image/12.jpg" align=left>书名:我的抗战<br>书号:0002
<br>作者:王二<br>价格:33<br><input type="submit" value="购买"><br></image></form></td>
<td><form method="post" action="controloperate?operatetype=add&booknum=0003"><image src="./image/13.jpg" align=left>书名:你猫叔了没<br>书号:0003
<br>作者:王三<br>价格:43<br><input type="submit" value="购买"><br></image></form></td>
</tr>
<tr>
<td><form method="post" action="controloperate?operatetype=add&booknum=0004"><image src="./image/21.jpg" align=left>书名:赞美你<br>书号:0004
<br>作者:王四<br>价格:53<br><input type="submit" value="购买"><br></image></form></td>
<td><form method="post" action="controloperate?operatetype=add&booknum=0005"><image src="./image/22.jpg" align=left>书名:刀尖<br>书号:0005
<br>作者:王五<br>价格:63<br><input type="submit" value="购买"><br></image></form></td>
<td><form method="post" action="controloperate?operatetype=add&booknum=0006"><image src="./image/23.jpg" align=left>书名:人脉是设计出来的<br>书号:0006
<br>作者:王六<br>价格:73<br><input type="submit" value="购买"><br></image></form></td>
</tr>
<tr>
<td><form method="post" action="controloperate?operatetype=add&booknum=0007"><image src="./image/31.jpg" align=left>书名:龙年运程<br>书号:0007
<br>作者:王七<br>价格:83<br><input type="submit" value="购买"><br></image></form></td>
<td><form method="post" action="controloperate?operatetype=add&booknum=0008"><image src="./image/32.jpg" align=left>书名:最好的时光在路上<br>书号:0008
<br>作者:王八<br>价格:93<br><input type="submit" value="购买"><br></image></form></td>
<td><form method="post" action="controloperate?operatetype=add&booknum=0009"><image src="./image/33.jpg" align=left>书名:七日谈<br>书号:0009
<br>作者:王九<br>价格:103<br><input type="submit" value="购买"><br></image></form></td>
</tr>
</table>
<br><br><br>
<h1 align="center"><form method="post" action="controloperate?operatetype=scan"><input type="submit" value="查看购物车"></form></h1>
</p></body>
</html>
2:显示购物车信息界面
用jsp分页显示购物车中的商品信息
<%@page import="java.sql.*" import="java.util.*" contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>购物车界面</title>
</head>
<body>
<br><br>
<h2 align="center">您的购物车列表:</h2>
<br><br><br>
<%
request.setCharacterEncoding("gb2312");
ArrayList[] rs;
rs=(ArrayList[])session.getAttribute("rs");//获取从数据库的查询结果集
int onepagecount=3;int totalcount=0;int pagecount=0;
if(rs[0]!=null)
{
totalcount=rs.length;//获取分页显示需要的相关变量
if(totalcount%onepagecount==0)
{
pagecount=totalcount/onepagecount;
}
else
{
pagecount=totalcount/onepagecount+1;
}
if(request.getParameter("nowpage")!=null)//如果不是第一次登录查询界面的处理
{
request.setCharacterEncoding("gb2312");
int nowpage=Integer.parseInt(request.getParameter("nowpage"));
//rs.absolute(nowpage*onepagecount+1);
%>
<h2 align="center"><table align="center">
<tr><td>书名</td><td></td><td>书号</td><td></td><td>作者</td>
<td></td><td>价格</td><td></td><td>数量</td></tr>
<%
if((nowpage+1)*onepagecount>=totalcount)//当前页面为最后一页
{
for(int i=0;i<(totalcount-nowpage*onepagecount);i++)
{
%>
<tr><td><%=rs[nowpage*onepagecount+i].get(0)%></td><td></td><td><%=rs[nowpage*onepagecount+i].get(1)%></td>
<td></td><td><%=rs[nowpage*onepagecount+i].get(2)%></td><td></td><td><%=rs[nowpage*onepagecount+i].get(3)%></td>
<td></td><td><%=rs[nowpage*onepagecount+i].get(4)%></td>
<td></td><td><form method="post" action="alter.jsp?booknum=<%=rs[nowpage*onepagecount+i].get(1)%>">
<input type="submit" value="修改"></form></td><td></td>
<td><form method="post" action="controloperate?operatetype=delete&booknum=<%=rs[nowpage*onepagecount+i].get(1)%>">
<input type="submit" value="删除"></form></td><td></td></tr>
<%
}
%>
</table><br></h2>
<h2 align="center"><form method="post" action="controloperate?operatetype=deleteall"><input type="submit" value="清空购物车"></form><br>
<h2 align="center"><a href="shoppingcarmessage.xls">下载购物信息</a><br>
<a href="default.jsp">返回主页</a><br><br></h2>
<h3 align="right"><a href="shoppingcarplay.jsp?nowpage=<%=nowpage-1%>">上一页</a>  第<%=nowpage+1%>页   共<%=pagecount%>页</h3>
<%
}
Else//不是最后一页
{
for(int i=0;i<onepagecount;i++)
{
%>
<tr><td><%=rs[nowpage*onepagecount+i].get(0)%></td><td></td><td><%=rs[nowpage*onepagecount+i].get(1)%></td>
<td></td><td><%=rs[nowpage*onepagecount+i].get(2)%></td><td></td><td><%=rs[nowpage*onepagecount+i].get(3)%></td>
<td></td><td><%=rs[nowpage*onepagecount+i].get(4)%></td>
<td></td><td><form method="post" action="alter.jsp?booknum=<%=rs[nowpage*onepagecount+i].get(1)%>">
<input type="submit" value="修改"></form></td><td></td>
<td><form method="post" action="controloperate?operatetype=delete&booknum=<%=rs[nowpage*onepagecount+i].get(1)%>">
<input type="submit" value="删除"></form></td><td></td></tr>
<%
//rs.next();
}
if((nowpage-1)==-1)//第一页
{
%>
</table><br></h2>
<h2 align="center"><form method="post" action="controloperate?operatetype=deleteall"><input type="submit" value="清空购物车"></form><br>
<h2 align="center"><a href="shoppingcarmessage.xls">下载购物信息</a><br>
<a href="default.jsp">返回主页</a><br><br></h2>
<h3 align="right"><a href="shoppingcarplay.jsp?nowpage=<%=nowpage+1%>">下一页</a>  第<%=nowpage+1%>页   共<%=pagecount%>页</h3>
<%
}
if((nowpage+1)==pagecount){ //最后一页 {
%>
</table><br></h2>
<h2 align="center"><form method="post" action="controloperate?operatetype=deleteall"><input type="submit" value="清空购物车"></form><br>
<h2 align="center"><a href="shoppingcarmessage.xls">下载购物信息</a><br>
<a href="default.jsp">返回主页</a><br><br></h2>
<h3 align="right"><a href="shoppingcarplay.jsp?nowpage=<%=nowpage-1%>">上一页</a>  第<%=nowpage+1%>页   共<%=pagecount%>页</h3>
<%
}
if(((nowpage-1)!=-1)&&((nowpage+1)!=pagecount))//中间页面
{
%>
</table><br></h2>
<h2 align="center"><form method="post" action="controloperate?operatetype=deleteall"><input type="submit" value="清空购物车"></form><br>
<h2 align="center"><a href="shoppingcarmessage.xls">下载购物信息</a><br>
<a href="default.jsp">返回主页</a><br><br></h2>
<h3 align="right"><a href="shoppingcarplay.jsp?nowpage=<%=nowpage-1%>">上一页</a>  <a href="shoppingcarplay.jsp?nowpage=<%=nowpage+1%>">下一页</a>  第<%=nowpage+1%>页   共<%=pagecount%>页</h3>
<%
}
}
}
Else//第一次登录查询页面
{
%>
<h2 align="center"><table align="center">
<tr><td>书名</td><td></td><td>书号</td><td></td><td>作者</td>
<td></td><td>价格</td><td></td><td>数量</td></tr>
<%
if(totalcount<=3)//总页面=1
{
for(int i=0;i<totalcount;i++)
{
%>
<tr><td><%=rs[i].get(0)%></td><td></td><td><%=rs[i].get(1)%></td>
<td></td><td><%=rs[i].get(2)%></td><td></td><td><%=rs[i].get(3)%></td>
<td></td><td><%=rs[i].get(4)%></td>
<td></td><td><form method="post" action="alter.jsp?booknum=<%=rs[i].get(1)%>">
<input type="submit" value="修改"></form></td><td></td>
<td><form method="post" action="controloperate?operatetype=delete&booknum=<%=rs[i].get(1)%>">
<input type="submit" value="删除"></form></td><td></td></tr>
<%
//rs.next();
}
%></table><br></h2>
<h2 align="center"><form method="post" action="controloperate?operatetype=deleteall"><input type="submit" value="清空购物车"></form><br>
<h2 align="center"><a href="shoppingcarmessage.xls">下载购物信息</a><br>
<a href="default.jsp">返回主页</a></h2>
<%
}
Else//总页面>1
{
for(int i=0;i<onepagecount;i++)
{
%>
<tr><td><%=rs[i].get(0)%></td><td></td><td><%=rs[i].get(1)%></td>
<td></td><td><%=rs[i].get(2)%></td><td></td><td><%=rs[i].get(3)%></td>
<td></td><td><%=rs[i].get(4)%></td>
<td></td><td><form method="post" action="alter.jsp?booknum=<%=rs[i].get(1)%>">
<input type="submit" value="修改"></form></td><td></td>
<td><form method="post" action="operate?operatetype=delete&booknum=<%=rs[i].get(1)%>">
<input type="submit" value="删除"></form></td><td></td></tr>
<%
}
%></table><br></h2>
<h2 align="center"><form method="post" action="controloperate?operatetype=deleteall"><input type="submit" value="清空购物车"></form><br>
<h2 align="center"><a href="shoppingcarmessage.xls">下载购物信息</a><br>
<a href="default.jsp">返回主页</a><br><br></h2>
<h3 align="right"><a href="shoppingcarplay.jsp?nowpage=1">下一页</a>  第一页   共<%=pagecount%>页</h3>
<%
}
}
}
Else//结果集为空
{
%>
<br><br>
<h2 align="center">您的购物车是空的!</h2><br><br><br><br>
<h2 align="center"><a href="default.jsp">返回主页</a></h2>
<%
}
%>
</body>
</html>
3:显示修改商品界面
用jsp显示修改商品信息的界面
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>修改购物车界面</title>
</head>
<body>
<br><br><br><br><br><br><br>
<%
request.setCharacterEncoding("gb2312");
String booknum=(String)request.getParameter("booknum");
%>
<h2 align="center">//用form来提交修改的变量及书号
<form action="controloperate?operatetype=alter&booknum=<%=booknum%>" method="post">
您要订购的数量:<input type="text" name="count">
<input type="submit" value="提交">
</h2>
<%
%>
</body>
</html>
4:显示成功添加商品
用jsp显示成功添加操作
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>添加成功界面</title>
</head>
<body>
<br><br>
<h3 align="center">已成功加入购物车!</h3>
<br><br><br><br><br>
<h1 align="center"><a href="default.jsp">返回主页</a></h1>
</body>
</html>
5:显示成功更新商品
用jsp显示成功更新操作
<%@page contentType="text/html;charset=gb2312"%>
<html>
<head>
<title>更新成功界面</title>
</head>
<body>
<br><br>
<h3 align="center">已成功更新您的购物车!</h3>
<br><br><br><br><br>
<h1 align="center"><form method="post" action="controloperate?operatetype=scan">
<input type="submit" value="返回购物车">
</form></h1>
</body>
</html>
6:控制进行各种操作功能
用java servlet实现控制器控制进行各种操作以及决定返回何种界面
package shoppingcar;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
import java.sql.*;
public class controloperate extends HttpServlet
{//重写dopost方法对jsp请求进行处理
public void doPost(HttpServletRequest request,HttpServletResponse response)throws ServletException,IOException
{
request.setCharacterEncoding("gb2312");//获取相关变量
String operatetype=(String)request.getParameter("operatetype");
shoppingcar.operate ope=new shoppingcar.operate();
shoppingcar.writeexcel we=new shoppingcar.writeexcel();
HttpSession session = request.getSession();
if(operatetype.equals("add"))//添加操作的处理
{
request.setCharacterEncoding("gb2312");
String booknum= (String)request.getParameter("booknum");
String ip=(String)request.getRemoteAddr();
ope.addbook(booknum,ip);
response.sendRedirect("addsuccess.jsp");
}
if(operatetype.equals("scan"))//查询操作的处理
{
ArrayList[] rs=ope.getbook();
session.setAttribute("rs",rs);
if(rs[0]!=null)
{
we.write(rs);
}
response.sendRedirect("shoppingcarplay.jsp");
}
if(operatetype.equals("alter"))//修改操作的处理
{
request.setCharacterEncoding("gb2312");
String booknum= (String)request.getParameter("booknum");
String count=(String)request.getParameter("count");
ope.updatebook(booknum,count);
response.sendRedirect("updatesuccess.jsp");
}
if(operatetype.equals("delete"))//删除操作的处理
{
request.setCharacterEncoding("gb2312");
String booknum= (String)request.getParameter("booknum");
ope.deletebook(booknum);
response.sendRedirect("updatesuccess.jsp");
}
if(operatetype.equals("deleteall"))//清空购物车操作的处理
{
request.setCharacterEncoding("gb2312");
ope.deleteallbook();
response.sendRedirect("updatesuccess.jsp");
}
}
}
7:对数据库进行操作功能
用javabean通过多个函数实现对数据库的多种操作
package shoppingcar;
import java.sql.*;
import java.util.*;
public class operate
{
ArrayList[] a;
public void addbook(String booknum,String ip)//对数据库进行添加记录操作
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); //连接数据库
Connection conn = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");
Statement stmt = conn.createStatement();
String sql1="select * from 购物车 where 书号='"+booknum+"' and ip地址='"+ip+"'";
ResultSet rs=stmt.executeQuery(sql1);
String sql2="insert into 购物车(ip地址,书号,数量) values('"+ip+"','"+booknum+"',1)";
if(!rs.next())//当前不存在该条记录直接插入
{
stmt.executeUpdate(sql2);
}
Else//否则进行更新操作
{
int newcount=rs.getInt("数量");newcount+=1;
String sql3="update 购物车 set 数量="+newcount+" where 书号='"+booknum+"' and ip地址='"+ip+"'";
stmt.executeUpdate(sql3);
}
stmt.close();conn.close();
}catch(Exception e){}
}
public void get()
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");
Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement
String sql="select 书名 , 书籍.书号 , 作者 , 价格 , 数量 from 书籍 , 购物车 where 书籍.书号=购物车.书号";//获取结果的sql语句
ResultSet rs=stmt1.executeQuery(sql);
if(rs.next())
{
rs.last();
Integer rows = rs.getRow();
rs.beforeFirst();
this.a=new ArrayList[rows];
int l =0;
while (rs.next()) //将结果集转换为数组对象
{
this.a[l] = new ArrayList();
this.a[l].add(0,rs.getString(1));
this.a[l].add(1,rs.getString(2));
this.a[l].add(2,rs.getString(3));
this.a[l].add(3,rs.getString(4));
this.a[l].add(4,rs.getInt(5));
l++;
//System.out.println("success5");//判断该语句是否执行成功
}
}
else
{
this.a=new ArrayList[100];
}
stmt1.close();conn1.close();
}catch(Exception e){}
}
public ArrayList[] getbook()
{
get();
return this.a;//返回数组对象
}
public void updatebook(String booknum,String count)//对数据库执行修改操作作
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");
Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement
int bookcount=Integer.parseInt(count);
if(bookcount<=0)
{
deletebook(booknum);
}
else
{
String sql="update 购物车 set 数量="+bookcount+" where 书号='"+booknum+"'";
stmt1.executeUpdate(sql);
stmt1.close();conn1.close();
}
}catch(Exception e){}
}
public void deletebook(String booknum)//对数据库执行删除操作
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");
Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement
String sql="delete 购物车 where 书号='"+booknum+"'";
stmt1.executeUpdate(sql);
stmt1.close();conn1.close();
}catch(Exception e){}
}
public void deleteallbook()//清空购物车
{
try
{
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
Connection conn1 = DriverManager.getConnection("jdbc:odbc:shoppingcar","sa","111111");
Statement stmt1 = conn1.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);//创建支持游标滚动的statement
String sql="truncate table 购物车";
stmt1.executeUpdate(sql);
stmt1.close();conn1.close();
}catch(Exception e){}
}
}
8:生成excel信息文件
用java application引入poi包后,生成exceel文件,生成表格,循 环添加行数据,最终生成购物车信息。
package shoppingcar;
import java.io.*;
import java.text.NumberFormat;
import java.util.*;
import org.apache.poi.hssf.usermodel.HSSFCell; //引入poi工具包
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
public class writeexcel//<b style="color:black;background-color:#ff9999">Excel</b>
{
public void write(ArrayList[] rs)
{
HSSFWorkbook wb = new HSSFWorkbook(); //相当于writeexcel整个文件
FileOutputStream fos = null;
try
{
//创建一个文件
fos = new FileOutputStream("D:/apache-tomcat-6.0.33/webapps/shoppingcar/shoppingcarmessage.xls");
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
HSSFSheet sheet = wb.createSheet("sheet1"); //生成writeexcel中的sheet
HSSFRow row = sheet.createRow(0); //创建第一行
HSSFCell cell = row.createCell((short) 0); //创建第一个单元格
cell.setEncoding(HSSFCell.ENCODING_UTF_16); //设定单元格的字符编码
cell.setCellValue("书名"); //设定单元格的名字
cell = row.createCell((short) 1); //创建第二个单元格
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("书号");
cell = row.createCell((short) 2);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("作者");
cell = row.createCell((short) 3);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("价格");
cell = row.createCell((short) 4);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue("数量");
int totalcount=rs.length;
for (int i = 0; i <totalcount; ++i) //循环添加结果记录
{
String bookname=(String)rs[i].get(0);String booknum=(String)rs[i].get(1);
String bookauthor=(String)rs[i].get(2);String bookprice=(String)rs[i].get(3);
int bookcount=Integer.parseInt(rs[i].get(4).toString());
row = sheet.createRow(i +1); //创建行
cell = row.createCell((short) 0);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(bookname); //设定序号
cell = row.createCell((short) 1);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(booknum);
cell = row.createCell((short) 2);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(bookauthor);
cell = row.createCell((short) 3);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(bookprice);
cell = row.createCell((short) 4);
cell.setEncoding(HSSFCell.ENCODING_UTF_16);
cell.setCellValue(bookcount);
}
try
{
//将这个文件交给HSSFWorkbook类 由它负责<b style="color:black;background-color:#99ff99">写入</b>
wb.write(fos);
//关闭输出流
fos.close();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
}
五:调试与分析
本次设计中主要遇到了三点困难:(1)采用MVC设计模式,由于是第一次使用该模式,所以构思了很长时间才确定下来程序的模块结构及功能。(2)使用了java servlet,servlet也是第一次使用,中间还要用到配置XML文件,我在网上搜了很多资料才实现了servlet的应用。(3)使用了数据库,也是由于使用的不多,sql语句以及连接数据库都不太熟悉,花费了一番功夫才得到解决。
六:功能测试
登陆界面显示如图1:
1:
添加商品如图2:
2:
查看购物车如图3:
3:
修改商品如图4、5:
4:
5:
删除商品以及清空购物车如图6:
6:
下载购物车信息如图7:
7:
七:结论与心得
在本次课程设计中,除了html、jsp、javaapplication以外,我首次使用了MVC设计模式,首次使用了servlet,并巩固了连接数据库、使用数据库的能力,尽管遇到了很多困难,但我通过查找大量的资料,最终这些问题都得到了解决。通过本次课程设计,我不仅学习和巩固了很多知识,更重要的是我增强了解决问题的能力,主要表现在网上搜索信息的能力,获益匪浅。如果时间充足的话,我想能更进一步的增加功能,完善代码,使得功能更加强大、代码更加符合软件工程的要求,做得更好。
八:参考资料
【1】(美)Cay S. Horstmann、Gary Cornell. Java核心技术卷I:基础知识(第8版)(英文影印版).人民邮电出版社, 2008.11
【2】耿祥义、张跃平. JAVA2实用教程(修订). 清华大学出版社,2001.10
【3】杨小平 java项目案例导航 科学出版社,2003.7
【4】傅进勇、邓少烽、李波 jsp网络编程 电子工业出版社 2008.5
信息与电气工程学院课程设计说明书20xx20xx学年第二学期课程名称网络工程课程设计题目校园网内网设计专业班级组长组员指导教师设计…
淮海工学院计算机工程学院课程设计报告设计名称:计算机网络课程设计姓名:学号:专业班级:系(院):设计时间:设计地点:网络技术室
武汉理工大学华夏学院课程设计报告书课程名称计算机网络课程设计题目小型互联网组网工程模拟系名专业班级姓名学号指导教师月日课程设计任务…
网络工程实践报告要求根据本课程的教学内容和下列要求设计一个网络方案的实施计划书希望结合实际体现目前较新和较成熟的网络技术体现其实用…
淮海工学院计算机工程学院课程设计报告设计名称计算机网络课程设计姓名学号专业班级系院计算机工程学院设计时间20xx010420xx0…
关于Javaweb课程设计的心得体会----在线测试系统这次课程设计我做的是章节自测系统,主要是服务于学生进行阶段性自测和练习。系…
完成的任务1.2.3.4.5.登录模块前台服务权限管理密码MD5加密集成小组成员的各个模块心得与体会刚开始看这个项目的时候,觉得比…
黄淮学院JAVA课程设计报告题目:《日记本的设计与实现》课程设计学院:信息工程学院姓名:学号:专业:软件工程班级:软工1101B班…
《Web程序设计(JSP)》课程设计总结课程设计时间:20xx-20xx年第一学期第13周—第14周课程设计班级:计科08101课…