资源描述
成 绩 评 定 表
学生姓名
刘慧萍
班级学号
1109010103
专 业
信息与计算科学
课程设计题目
商品销售信息管理系统
评
语
组长签字:
成绩
日期
2013 年12月 日
课程设计任务书
学 院
理学院
专 业
信息与计算科学
学生姓名
刘慧萍
班级学号
1109010103
课程设计题目
商品销售信息管理系统
实践教学要求与任务:
本小型软件利用myeclipse、tomcat和SQL Server2000设计一个商品销售信息管理系统,其可通过网页实现如下功能:
1、进行用户登录及新用户的注册;
2、用户登录之后可对商品信息、营业员信息、商品交易信息等进行整体浏览;
3、可对商品信息、营业员信息、商品交易信息进行主键查询;
4、可对查询后的商品信息、营业员信息和商品交易信息进行修改。
工作计划与进度安排:
第一周:
1、 对该商品销售信息管理系统进行需求分析,并通过通过该数据之间的关系进行数据
库、数据表的设计;
2、然后通过tomcat服务器进行数据库与myeclipse的连接,以便进行后续功能中的数据的增删查改各功能,然后通过myeclipse进行各界面的设置,该软件通过MVC模式实现,首先对各界面进行初步界面设置。
第二周:
1、在上周界面设置的基础上,添加动态的各数据的增删查改等功能。其中主要以设计servlet、javabean、DAO三个层次来以此实现对界面与数据库间的连接。
2、进行课设论文的撰写和答辩等工作。
指导教师:
2013年 12月1日
专业负责人:
2013年 12月 日
学院教学副院长:
2013 年12月 日
摘 要
为提高自身对数据库的进一步了解,并学会将其应用于实际问题,进行了本次课程设计。本文主要通过SQL2000与myeclipse软件的结合,建立了一个商品销售信息管理系统。
首先为实现将两者结合,进行初步的环境准备,如tomcat服务器的安装与连接,系统信息path等的配置,SQL2000中相关jar包的引用。然后在实现初步的配置的基础上,开始进行相关网页的具体设计。本文采取MVC模式进行该系统实现的数据库与jsp网页的连接,其中采用javabean包、servlet、和DAO三层进行该功能的实现。该系统最终可通过网页的形式实现用户的登陆与注册、商品信息、营业员信息和商品交易信息等的数据增删查改功能。具体实现步骤将在下文中具体给出。
本次课程设计让我学到很多数据库相关知识及jsp相关知识,获益良多,感谢各位朋友们的倾力帮助,相信助人者天助也!
关键词 商品销售信息管理;jsp网站(tomcat、SQL2000);MVC模式
目 录
1 系统功能概述 5
1.1.系统功能 5
1.2.系统层次图 6
2 数据库设计 6
2.1 需求分析 7
2.2 E-R模型 7
2.3 关系模型 8
2.4 表结构设计 9
3 系统各功能模块的详细设计 14
3.1 tomcat与数据库连接 14
3.2 用户登陆模块 15
3.3注册新用户模块 20
3.4主窗体界面 25
3.5数据管理(增、删、改)模块 27
3.5.1信息查询管理 27
3.5.2信息浏览管理 33
3.5.3 信息添加管理 36
3.5.4 信息修改管理 39
3.5.4 信息删除管理 43
4 课程设计总结 46
参考文献 46
1 系统功能概述
1.1.系统功能
本系统主要以网上商城为模板进行简化的商品销售管理系统设计,将jsp网页与SQL2000相结合以实现以下如要功能:
1、进行用户登录及新用户的注册;
2、用户登录之后可对商品信息、营业员信息、商品交易信息等进行整体浏览;
3、可对商品信息、营业员信息、商品交易信息进行主键查询;
4、可对查询后的商品信息、营业员信息和商品交易信息进行修改。
1.2.系统层次图
图1-1 系统层次图
2 数据库设计
2.1 需求分析
该系统主要以实现商品信息、营业员、供货商信息的数据增删查改功能,在应用SQL2000数据库与jsp开发语言结合,以实现网页版的系统功能。如下为该系统的具体功能设计和数据库、数据表设计。
2.1.1、系统功能
1、商品信息管理
该功能可对商品信息进行浏览,添加,查询,修改,删除等操作,并均可通过网页的形式进行操作,同时在此基础上可对其进行进一步完善功能的添加。
2、供货商信息管理
该功能可对供货商信息进行浏览,添加,查询,修改,删除等操作,同样均可通过网页的形式进行操作,同时在此基础上可对其进行进一步完善功能的添加。
3、商品交易数据管理
该功能可对商品交易情况信息进行浏览,添加,查询,修改,删除等操作,也均可通过网页的形式进行操作,同时在此基础上可对其进行进一步完善功能的添加。
2.1.2、数据库的设计
该数据库包含以下实体及其属性:
1、商品信息(商品编号、商品名称、种类、库存量)
2、营业员信息(营业员编号,姓名,性别,联系电话)
3、供货商信息(供货商号、供货商名称、地址、联系人、联系电话、电子邮件)
4、系统信息(用户名、密码)
5、营业员卖出商品(售价、件数、交易日期)
6、供货商供应商品(进货日期、数量、进价)
2.2 E-R模型
图2-1 系统E-R模型
2.3 关系模型
图2-2 商品信息关系模型
图2-3 营业员信息关系模型
图2-4 供货商信息关系模型
图2-5 系统信息关系模型
图2-6 营业员卖出商品关系模型
图2-7 供货商供应信息关系模型
2.4 表结构设计
本系统在SQL Server2000数据库里共设计了以下6个数据表来记录数据:
1、商品信息表建立及其数据:
SQL语句:
create table product_info(
product_id varchar(20) primary key,
product_name varchar(20) not null,
product_category varchar(20),
product_stock int not null
);
数据:
图2-8 商品数据截图
2、 营业员信息表建立及其数据:
SQL语句:
create table assistant_info(
assistant_id varchar(20) primary key,
assistant_name varchar(20) not null,
assistant_gender varchar(20) not null,
assistant_phone varchar(20) not null
);
数据:
图2-9 营业员数据截图
3、 供货商信息表建立及其数据:
SQL语句:
create table supplier_info(
supplier_id varchar(20) primary key,
supplier_name varchar(20) not null,
supplier_address varchar(50) not null,
supplier_linkman varchar(20) not null,
supplier_phone varchar(20) not null,
supplier_email varchar(20)
);
数据:
图2-10 供应商数据截图
4、 系统信息表建立及其数据:
SQL语句:
create table system_info(
system_name varchar(20) primary key,
system_password varchar(20) not null
);
数据:
图2-11 系统数据截图
5、 营业员卖出商品信息表建立及其数据:
SQL语句:
create table sale_product_info(
assistant_id varchar(20),
product_id varchar(20),
product_price float not null,
product_number int not null,
sale_date date not null,
constraint fk_assistant_info foreign key(assistant_id) references assistant_info(assistant_id),
constraint fk_product_info foreign key(product_id) references product_info(product_id),
constraint pk_assistant_product primary key(assistant_id,product_id)
);
数据:
图2-12 卖出商品数据截图
6、 供货商供应商品信息表建立及其数据:
SQL语句:
create table supply_product_info(
supplier_id varchar(20),
product_id varchar(20),
product_bid float not null,
product_number int not null,
bid_date date,
constraint fk_supplier_info foreign key(supplier_id) references supplier_info(supplier_id),
constraint fk_product2_info foreign key(product_id) references product_info(product_id),
constraint pk_supplier_product primary key(supplier_id,product_id)
);
数据:
图2-13 供应商品数据截图
3 系统各功能模块的详细设计
3.1 tomcat与数据库连接
首先在tomcat官网中下载tomcat服务器并对其进行安装,并在环境变量中设置path路径。然后在下载SQL2000连接的驱动jar包,并将其导入tomcat的lib文件夹中且同时在该系统工程中引入jar包。
然后建立一个java的utilclass类进行数据库与服务器相连接与其断开的程序编写,具体程序语句如下:
package Util;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public final class DBUtil {
private DBUtil(){
}
static {
try { Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
public static Connection getConnection(){
Connection conn = null;
try {
conn = DriverManager.getConnection
("jdbc:sqlserver://localhost:1433;database=shopping","test","292211");
} catch (SQLException e) {
e.printStackTrace();
} finally{
return conn;
}
}
public static void closeConnection(Connection conn){
if(conn != null){
try {
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
此java类可实现系统与数据库的连接与断开,在后续的系统功能设置中可直接引用该类中的方法即可。
3.2 用户登陆模块
为实现用户的登陆功能,此系统采用MVC模式将其分为三个层次以实现其功能。
3.2.1 jsp界面
运用jsp网页开发语言,进行用户登陆界面的设计。其可实现通过互联网直接进行访问。
程序语句如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录界面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body >
<form action="login.let" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td><input type="submit" value="确认"/></td>
<td><input type="reset" value="取消"/></td>
</tr>
</table>
</form>
</body>
</html>
界面形式如下:
图3-1 系统用户登陆界面图
3.2.2 DAO方法类
为遵循MVC模式,将界面与具体实现方法与数据库分割开来,建立DAO类来实现界面调用数据库中的数据功能。
程序语句如下:
package dao;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import Util.DBUtil;
import bean.SystemInfoBean;
// 登录方法
public SystemInfoBean login(SystemInfoBean systemInfo) {
// 定义空的返回值对象
SystemInfoBean system = null;
try {
// 获取连接对象
Connection conn = DBUtil.getConnection();
// 创建SQL语句
String sql ="select * from system_info where system_name=? and system_password=?";
PreparedStatement pstmt = conn.prepareStatement(sql);
// 给SQL语句设值
pstmt.setString(1, systemInfo.getSystemInfo());
pstmt.setString(2, systemInfo.getSystemPassword());
//执行查询语句,得到ResultSet结果集
ResultSet rs = pstmt.executeQuery();
if(rs.next()){
system = new SystemInfoBean();
system.setSystemInfo(rs.getString(1));
system.setSystemPassword(rs.getString(2));
}
// 关闭数据库连接
DBUtil.closeConnection(conn);
} catch (Exception e) {
e.printStackTrace();
} finally {
return system;
}
}
}
3.2.3 javabean方法类
Javabean方法类主要实现调用数据库中各表的属性,采用封装的方法将各属性封装成bean包,并通过get与set方法进行各属性的调用。
程序语句如下:
package bean;
public class SystemInfoBean {
private String systemInfo;
private String systemPassword;
public String getSystemInfo() {
return systemInfo;
}
public void setSystemInfo(String systemInfo) {
this.systemInfo = systemInfo;
}
public String getSystemPassword() {
return systemPassword;
}
public void setSystemPassword(String systemPassword) {
this.systemPassword = systemPassword;
}
}
3.2.4 servlet方法类
Servlet主要实现服务器的调用,以便实现完整的数据库中数据与jsp界面的连接与其增删查改功能。
程序语句如下:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import bean.SystemInfoBean;
import dao.SystemInfoDAO;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 获取登录界面输入的值
String username = request.getParameter("username");
String password = request.getParameter("password");
// 将值赋值给SystemInfoBean对象
SystemInfoBean systemInfo = new SystemInfoBean();
systemInfo.setSystemInfo(username);
systemInfo.setSystemPassword(password);
SystemInfoDAO dao = new SystemInfoDAO();
SystemInfoBean system = dao.login(systemInfo);
String path = "";
if(system != null){
HttpSession session = request.getSession();
// //将登录成功的信息传给主界面
session.setAttribute("login_info", system);
path = "/main.jsp";
}else{
request.setAttribute("error_info", "用户名或密码错误,登录失败!");
path = "/login.jsp";
}
//实现页面跳转,登录成功,则转到主界面,失败则重新回到登录界面
RequestDispatcher reqDispatch = request.getRequestDispatcher(path);
reqDispatch.forward(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
3.3注册新用户模块
类似于用户登录实现一样,首先设计用户注册的界面设置。因需要用的数据库表为同一个表,因而其javabean包为同一个。因而只需对新用户注册的界面与DAO类方法与servlet类进行设置即可。具体步骤与程序如下:
3.3.1 jsp界面
程序语句如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>注册界面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body >
<h3>注册新用户</h3>
<form action="regist.let" method="post">
<table>
<tr>
<td>用户名:</td>
<td><input type="text" name="username"></td>
</tr>
<tr>
<td>输入密码:</td>
<td><input type="password" name="password"></td>
</tr>
<tr>
<td>确认密码:</td>
<td><input type="password" name="confirmPassword"></td>
</tr>
<tr>
<td><input type="submit" value="确认"/></td>
<td><input type="reset" value="取消"/></td>
</tr>
</table>
</form>
</body>
</html>
界面如下:
图3-2 用户注册界面图
3.3.2 DAO方法类
程序语句如下:
public class SystemInfoDAO {
// 注册方法
public boolean regist(SystemInfoBean systemInfo) {
// 定义空的返回值对象
boolean flag = false;
try {
// 获取连接对象
Connection conn = DBUtil.getConnection();
// 创建SQL语句
String sql = "insert into system_info (system_name,system_password) values(?,?)";
PreparedStatement pstmt = conn.prepareStatement(sql);
// 给SQL语句设值
pstmt.setString(1, systemInfo.getSystemInfo());
pstmt.setString(2, systemInfo.getSystemPassword());
// 执行SQL语句,并返回值
int count = pstmt.executeUpdate();
if (count > 0) {
flag = true;
}
// 关闭数据库连接
DBUtil.closeConnection(conn);
} catch (Exception e) {
e.printStackTrace();
} finally {
return flag;
}
}
在servlet类中调用如上所示的注册方法,以实现将注册信息数据存入数据库中。
3.3.3 servlet类
因MVC模式是将模型,视图,控制器三者分开,因而每一个功能的实现均需要一个servlet类方法。
程序语句如下:
package servlet;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import dao.SystemInfoDAO;
import bean.SystemInfoBean;
public class RegistServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
request.setCharacterEncoding("UTF-8");
// 获取注册界面输入的值
String username = request.getParameter("username");
String password = request.getParameter("password");
// 将值赋值给SystemInfoBean对象
SystemInfoBean systemInfo = new SystemInfoBean();
systemInfo.setSystemInfo(username);
systemInfo.setSystemPassword(password);
SystemInfoDAO dao = new SystemInfoDAO();
boolean flag = dao.regist(systemInfo);
String msg = "";
if (flag) {
msg = "注册成功";
} else {
msg = "注册失败";
}
response.setContentType("text/html;charset=UTF-8");
PrintWriter out = response.getWriter();
out.print("<h3 style='color:red'>" + msg + "</h3>");
out.print("<a href='login.jsp'>登录</a>");
out.close();
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
this.doGet(request, response);
}
}
3.4主窗体界面
主窗体界面设计了三个主菜单:文件,数据管理,数据查询。文件菜单可以实现注册新用户和退出功能;数据管理可对商品信息,营业员信息,供应商信息,营业员卖出商品信息,供应商供应商品信息进行浏览与修改等操作;数据添加即可对对商品信息,营业员信息,供应商信息,营业员卖出商品信息,供应商供应商品信息进行添加操作;数据删除可对商品信息,营业员信息,供应商信息,营业员卖出商品信息,供应商供应商品信息实现删除功能。
3.4.1 jsp界面
程序语句如下:
<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>登录界面</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
</head>
<body >
<label>${system.systemInfo}欢迎访问</label>
<form action="" method="post">
<table>
<tr>
<th>文件</th>
<th>数据管理</th>
<th>数据查询</th>
<th>数据添加</th>
<th>数据删除</th>
</tr>
<tr>
<td><a href="regist.jsp">注册新用户</a></td>
<td><a href="scanAllProductInfo.let">商品信息</a></td>
<td><a href="searchS.jsp">查询供货商信息</a></td>
<td><a href="">添加供货商信息</a></td>
<td><a href="">删除供货商信息</a></td>
</tr>
<tr>
<td><a href="login.jsp">退出</a></td>
<td><a href="scanAllAssistantInfo.let">营业员信息</a></td>
<td><a href="searchP.jsp">查询商品信息</a></td>
<td><a href="">添加商品信息</a></td>
<td><a href="">删除商品信息</a></td>
</tr>
<tr>
<td></td>
<td><a href="scanAllSupplierInfo.let">供货商信息</a></td>
<td><a href="searchSP.jsp">查询商品交易信息</a></td>
<td><a href="">添加商品交易信息</a></td>
<td><a href="">删除商品交易信息</a></td>
</tr>
展开阅读全文