源码地址:https://download.csdn.net/download/m0_51152186/85261801
超市平台系统:本超市平台管理系统为后台管理员管理货物的系统
具有以下功能:
1.管理员登录
2.供应商管理
3.商品管理
4.进货管理
5.销售管理
6.库存管理
一、eclipse中建立以下目录的web工程,配置tomcat
二、建立数据库连接类,连接本地MySQL8.0
package com.supermarketManager.common;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class DBConn {
public Connection conn=null;
public Statement stmt=null;
public ResultSet rs=null;
public Connection getConn(){
try {
//����sql��������
Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection(
"jdbc:mysql://localhost:3306/supermaketmanager?user=root&password=123456&useSSL=false&serverTimezone=GMT%2B8&characterEncoding=utf-8&autoReconnect=true");
} catch (Exception e) {
// TODO: handle exception
}
return conn;
}
//�ر�SQL����������
public void closeConn(Connection conn,Statement stmt,ResultSet rs){
if(rs!=null){
try {
rs.close();
} catch (Exception e) {
// TODO: handle exception
}
}
if(stmt!=null){
try {
stmt.close();
} catch (Exception e) {
// TODO: handle exception
}
}
if(conn!=null){
try {
conn.close();
} catch (Exception e) {
// TODO: handle exception
}
}
}
}
三、SpringMVC其实就一种基于Servlet的MVC模型:
1、模型:一个或多个javabean对象,用于存储数据和业务逻辑。
Bean.java
package com.supermarketManager.Bean;
public class Bean {
private int wareid;
private String warename;
private String waredesc;
private int supplierid;
private String suppliername;
private String supplierdesc;
private String supplierperson;
private String suppliernumber;
private String supplieraddress;
private int buyid;
private String buyname;
private String buyprice;
private int buyqty;
private java.sql.Date buydate;
private String buyperson;
private String buydesc;
private int saleid;
private String salename;
private String saleprice;
private int saleqty;
private java.sql.Date saledate;
private String saleperson;
private int resid;
private int resqty;
private String resname;
public int getResid() {
return resid;
}
public void setResid(int resid) {
this.resid = resid;
}
public int getResqty() {
return resqty;
}
public void setResqty(int resqty) {
this.resqty = resqty;
}
public String getResname() {
return resname;
}
public void setResname(String resname) {
this.resname = resname;
}
public int getSaleid() {
return saleid;
}
public void setSaleid(int saleid) {
this.saleid = saleid;
}
public String getSaleprice() {
return saleprice;
}
public void setSaleprice(String saleprice) {
this.saleprice = saleprice;
}
public int getSaleqty() {
return saleqty;
}
public void setSaleqty(int saleqty) {
this.saleqty = saleqty;
}
public java.sql.Date getSaledate() {
return saledate;
}
public void setSaledate(java.sql.Date saledate) {
this.saledate = saledate;
}
public String getSaleperson() {
return saleperson;
}
public void setSaleperson(String saleperson) {
this.saleperson = saleperson;
}
public String getBuydesc() {
return buydesc;
}
public void setBuydesc(String buydesc) {
this.buydesc = buydesc;
}
public int getBuyid() {
return buyid;
}
public void setBuyid(int buyid) {
this.buyid = buyid;
}
public String getBuyprice() {
return buyprice;
}
public void setBuyprice(String buyprice) {
this.buyprice = buyprice;
}
public int getBuyqty() {
return buyqty;
}
public void setBuyqty(int buyqty) {
this.buyqty = buyqty;
}
public java.sql.Date getBuydate() {
return buydate;
}
public void setBuydate(java.sql.Date buydate) {
this.buydate = buydate;
}
public String getBuyperson() {
return buyperson;
}
public void setBuyperson(String buyperson) {
this.buyperson = buyperson;
}
public String getWarename() {
return warename;
}
public void setWarename(String warename) {
this.warename = warename;
}
public String getWaredesc() {
return waredesc;
}
public void setWaredesc(String waredesc) {
this.waredesc = waredesc;
}
public String getSuppliername() {
return suppliername;
}
public void setSuppliername(String suppliername) {
this.suppliername = suppliername;
}
public String getSupplierdesc() {
return supplierdesc;
}
public void setSupplierdesc(String supplierdesc) {
this.supplierdesc = supplierdesc;
}
public String getSupplierperson() {
return supplierperson;
}
public void setSupplierperson(String supplierperson) {
this.supplierperson = supplierperson;
}
public String getSuppliernumber() {
return suppliernumber;
}
public void setSuppliernumber(String suppliernumber) {
this.suppliernumber = suppliernumber;
}
public String getSupplieraddress() {
return supplieraddress;
}
public void setSupplieraddress(String supplieraddress) {
this.supplieraddress = supplieraddress;
}
public int getWareid() {
return wareid;
}
public void setWareid(int wareid) {
this.wareid = wareid;
}
public int getSupplierid() {
return supplierid;
}
public void setSupplierid(int supplierid) {
this.supplierid = supplierid;
}
public String getBuyname() {
return buyname;
}
public void setBuyname(String buyname) {
this.buyname = buyname;
}
public String getSalename() {
return salename;
}
public void setSalename(String salename) {
this.salename = salename;
}
}
2、控制器:一个或多个Servlet对象,根据视图提交的请求进行控制,即将请求转发给业务逻辑的javabean,并将处理记过存放到实体模型javabean中,输出给视图显示。
BuyServlet.java
package com.supermarketManager.servlet;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Collection;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import com.sun.org.apache.xerces.internal.impl.xpath.regex.ParseException;
import com.supermarketManager.Bean.Bean;
import com.supermarketManager.business.BuyB;
import com.supermarketManager.common.CharEncoding;
public class BuyServlet extends HttpServlet {
/**
*
*/
private static final long serialVersionUID = -870592389272747644L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
// ��ȡ�ͻ������ύ���������Ͳ���
String operation = CharEncoding.toGB2312(request.getParameter("op")
.trim());
BuyB buyB = new BuyB();
// �жϿͻ�����������Ƿ��ǻ�ȡ�����б�,����ֵ=allbuy
if (operation != null && operation.equals("allbuy")) {
// ����ҵ������ӿ�findAllBuy
Collection<Bean> coll = buyB.findAllBuy();
// �ѻ�õļ��϶���coll������request��Χ��
request.setAttribute("allbuy", coll);
// ������ת���������б�ҳ��buyList.jsp
getServletContext().getRequestDispatcher("/buyManager/buyList.jsp")
.forward(request, response);
return;
}
//�жϿͻ�����������Ƿ���ģ����ѯ��Ʒ��Ϣ,����ֵ=findStr
if (operation != null && operation.equals("findStr")) {
String str = CharEncoding.toGB2312(request.getParameter("buyname")
.trim());
// ����ҵ������ӿ�BuyB
Collection<Bean> coll = buyB.findByString(str);
// �ѻ�õļ��϶���coll������request��Χ��
request.setAttribute("allbuy", coll);
// ������ת���������б�ҳ��buyList.jsp
getServletContext().getRequestDispatcher("/buyManager/buyList.jsp")
.forward(request, response);
return;
}
// �жϿͻ��˲��������Ƿ�����
if (operation != null && operation.equals("add")) {
System.out.println(operation);
getServletContext().getRequestDispatcher("/buyManager/buyAdd.jsp")
.forward(request, response);
}
// ִ������
if (operation != null && operation.equals("doadd")) {
// ��ȡ��������
String buyname = CharEncoding.toGB2312(request.getParameter(
"buyname").trim());
String buyprice = CharEncoding.toGB2312(request.getParameter(
"buyprice").trim());
String buyqty1 = CharEncoding.toGB2312(request.getParameter(
"buyqty").trim());
Integer buyqty = new Integer(buyqty1);
String buyperson = CharEncoding.toGB2312(request.getParameter(
"buyperson").trim());
String buydesc = CharEncoding.toGB2312(request.getParameter(
"buydesc").trim());
String buydate1 = CharEncoding.toGB2312(request.getParameter(
"buydate").trim());
//ת���������²�����������:String----->java.util.Date------>java.sql.Date
java.sql.Date buydate = null;
//����ת����������ʽyyyy-MM-dd
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
//����:String------>java.util.Date
java.util.Date bd = df.parse(buydate1);
//����:java.util.Date------>java.sql.Date
buydate = new java.sql.Date(bd.getTime());
} catch (ParseException e) {
e.printStackTrace();
} catch (java.text.ParseException e) {
e.printStackTrace();
}
// ��װ����
Bean bean = new Bean();
bean.setBuyname(buyname);
bean.setBuyprice(buyprice);
bean.setBuyqty(buyqty);
bean.setBuyperson(buyperson);
bean.setBuydesc(buydesc);
bean.setBuydate(buydate);
// ִ�в���,����ҵ��������ӿڷ���:insertBuy(Bean bean)
buyB.insertBuy(bean);
// ˢ���б�
// ����ҵ������ӿ�findAllBuy
Collection<Bean> coll = buyB.findAllBuy();
// �ѻ�õļ��϶���coll������request��Χ��
request.setAttribute("allbuy", coll);
// ������ת���������б�ҳ��buyList.jsp
getServletContext().getRequestDispatcher("/buyManager/buyList.jsp")
.forward(request, response);
return;
}
// �жϿͻ��˲��������Ƿ���ɾ��
if (operation != null && operation.equals("delete")) {
// ��ȡ�ڶ�������:��Ҫɾ����¼ID��
String buyid = CharEncoding.toGB2312(request.getParameter("id")
.trim());
int id = Integer.parseInt(buyid);
// ����ҵ������ӿڷ���:deleteBuy(Bean bean)
buyB.deleteBuy(id);
// ���½����б���Ϣ
// ����ҵ������ӿ�findAllBuy
Collection<Bean> coll = buyB.findAllBuy();
// �ѻ�õļ��϶���coll������request��Χ��
request.setAttribute("allbuy", coll);
// ������ת���������б�ҳ��buyList.jsp
getServletContext().getRequestDispatcher("/buyManager/buyList.jsp")
.forward(request, response);
return;
}
// �жϿͻ��˲��������Ƿ����
if (operation != null && operation.equals("update")) {
// ��ȡ��Ҫ�������ݵ�ID��
String buyid = CharEncoding.toGB2312(request.getParameter("id")
.trim());
int id = Integer.parseInt(buyid);
System.out.println(id);
// ����ҵ��������еķ���:findByID(int id)
Bean bean = buyB.findByID(id);
// �Ѹ���ID�ҵ���Bean������request��Χ��
request.setAttribute("oldbuy", bean);
// ������ת���������б�ҳ��buyUpdate.jsp
getServletContext().getRequestDispatcher(
"/buyManager/buyUpdate.jsp").forward(request, response);
}
// ִ�и���
if (operation != null && operation.equals("doupdate")) {
// ��ȡ���²���
String buyid = CharEncoding.toGB2312(request.getParameter("id")
.trim());
int id = Integer.parseInt(buyid);
String buyname = CharEncoding.toGB2312(request.getParameter(
"buyname").trim());
String buyprice = CharEncoding.toGB2312(request.getParameter(
"buyprice").trim());
String qty = CharEncoding.toGB2312(request.getParameter("buyqty")
.trim());
int buyqty = Integer.parseInt(qty);
String buyperson = CharEncoding.toGB2312(request.getParameter(
"buyperson").trim());
String buydesc = CharEncoding.toGB2312(request.getParameter(
"buydesc").trim());
String date = CharEncoding.toGB2312(request.getParameter("buydate")
.trim());
//ת���������²�����������:String----->java.util.Date------>java.sql.Date
java.sql.Date buydate = null;
//����ת����������ʽyyyy-MM-dd
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
try {
//����:String------>java.util.Date
java.util.Date bd = df.parse(date);
//����:java.util.Date------>java.sql.Date
buydate = new java.sql.Date(bd.getTime());
} catch (ParseException e) {
e.printStackTrace();
} catch (java.text.ParseException e) {
e.printStackTrace();
}
// ��װ����
Bean bean = new Bean();
bean.setBuyid(id);
bean.setBuyname(buyname);
bean.setBuyprice(buyprice);
bean.setBuyqty(buyqty);
bean.setBuydate(buydate);
bean.setBuyperson(buyperson);
bean.setBuydesc(buydesc);
//ִ�и���
buyB.updateBuy(bean);
//ˢ���б�
// ����ҵ������ӿ�findAllBuy
Collection<Bean> coll = buyB.findAllBuy();
// �ѻ�õļ��϶���coll������request��Χ��
request.setAttribute("allbuy", coll);
// ������ת���������б�ҳ��buyList.jsp
getServletContext().getRequestDispatcher(
"/buyManager/buyList.jsp").forward(request, response);
return;
}
}
}
LoginServlet.java
package com.supermarketManager.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 com.supermarketManager.Bean.UserBean;
import com.supermarketManager.business.LoginB;
import com.supermarketManager.common.CharEncoding;
public class LoginServlet extends HttpServlet {
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html");
doPost(request, response);
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=gb2312");
PrintWriter out = response.getWriter();
String username=CharEncoding.toGB2312(request.getParameter("username").trim());//��ȡǰ̨ҳ��jsp������
String password =CharEncoding.toGB2312(request.getParameter("password").trim());
//
// //����UserBean����
// UserBean userBean=new UserBean();
//
// //��װ�õ�������
// userBean.setUsername(username);
// userBean.setPassword(password);
//��װ��������bean��:UserBean
UserBean userBean = new UserBean(username, password);
System.out.println(username);
request.getSession().setAttribute("username",username);
// ����ҵ����loginValidate��ִ�е�¼У��
LoginB loginB=new LoginB();
if (loginB.loginValidate(userBean)>0) {
// ��¼�ɹ�,����ӭҳ�棡
request.getRequestDispatcher("/index.html").forward(request,
response);
} else {
// �ض���¼ҳ��login.html
out.print("<script language='javascript'>alert('�û����������������µ�½��');" +
"document.location='login.jsp';</script>");
//request.getRequestDispatcher("/login.jsp").forward(request,
//response);
}
}
}
3、视图:一个和多个JSP页面,想控制器提交数据和为模型提供数据显示,JSP页面主要使用HTML标记和JavaBean标记来显示数据。
saleAdd.jsp
<%@ page language="java" contentType="text/html;charset=GBK"%>
<%@ page import="java.util.*,com.supermarketManager.Bean.*"%>
<script type="text/javascript">
function validate() {
var salename = document.myform.salename.value;
if (salename == "") {
alert("*标注内容不能为空,请输入商品名称!");
return false;
}
return true;
}
function salepriceonblur(){
var salepricevalue=document.myform.saleprice.value;
var regex1=/^(-?\d+)(\.\d+)?$/;
var regex2=/^(-?[0]\d+)(\.\d+)?$/;
if(salepricevalue==""||(regex1.test(salepricevalue)&&!regex2.test(salepricevalue))!=true){
alert("销售价格不能为空,并且必须是实数!");
return false;
}
return true;
}
function saleqtyonblur(){
var saleqty=document.myform.saleqty.value;
var regex3=/^[0-9]*[1-9][0-9]*$/;
if(saleqty==""||regex3.test(saleqty)!=true){
alert("销售数量不能为空,并且必须是整数");
return false;
}
return true;
}
function isDate(dateString){
//年月日正则表达式
var r=dateString.match(/^(\d{1,4})(-|\/)(\d{1,2})\2(\d{1,2})$/);
if(r==null){
alert("请输入格式正确的日期\n\r日期格式:yyyy-mm-dd\n\r例 如:2008-08-08\n\r");
return false;
}
var d=new Date(r[1],r[3]-1,r[4]);
var num = (d.getFullYear()==r[1]&&(d.getMonth()+1)==r[3]&&d.getDate()==r[4]);
if(num==0){
alert("请输入格式正确的日期\n\r日期格式:yyyy-mm-dd\n\r例 如:2008-08-08\n\r");
}
return (num!=0);
}
function saledateblur(){
var saledate=document.myform.saledate.value;
if(isDate(saledate)==false){
return false;
}
return true;
}
function gotoback() {
window.history.back();
}
</script>
<head>
<link rel="stylesheet" href="css/css.css" type="text/css" />
<link rel="stylesheet" href="css/style.css" type="text/css" />
</head>
<body>
<p align="center" class="table_top_ziti">
<font size=4>新增销售</font>
</p>
<%
String errmsg =(String) request.getAttribute("message");
if (errmsg != null && !errmsg.equals("")) {
out.println(errmsg);
}
%>
<form name=myform action="SaleServlet" method=post>
<table width="100%" align="center">
<tr width="100%">
<td width="30%">
</td>
<td align="center" bgcolor="#799AE1" width="15%">
销售商品名称:
</td>
<td width="50%">
<input type=text name="salename" class="input">
<font color="#ff0000">*</font>
</td>
</tr>
<tr>
<td width="30%">
</td>
<td align="center" bgcolor="#799AE1" width="15%">
销售商品价格:
</td>
<td width="50%">
<input type=text name="saleprice" onblur="salepriceonblur()" class="input">
</td>
</tr>
<tr>
<td width="30%">
</td>
<td align="center" bgcolor="#799AE1" width="15%">
销售数量:
</td>
<td width="50%">
<input type=text name="saleqty" onblur="saleqtyonblur()" class="input">
</td>
</tr>
<tr>
<td width="30%">
</td>
<td align="center" bgcolor="#799AE1" width="15%">
销售日期:
</td>
<td width="50%">
<input type=text name="saledate" size=40 onblur="saledateblur()" class="input">
</td>
</tr>
<tr>
<td width="30%">
</td>
<td align="center" bgcolor="#799AE1" width="15%">
销售人:
</td>
<td width="50%">
<input type=text name="saleperson" size=40 class="input">
</td>
</tr>
<tr>
<td colspan=3 align="center">
<input type="hidden" name="op" value="doadd">
<input type=submit name=dadd value="新增"
onClick="return validate() ">
<input type=button name=dback value="返回"
onClick="return gotoback() ">
</td>
</tr>
</table>
</form>
</body>
login.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>lieed网站后台管理</title>
<style type="text/css">
<!--
a {
color: #008EE3
}
a:link {
text-decoration: none;
color: #008EE3
}
A:visited {
text-decoration: none;
color: #666666
}
A:active {
text-decoration: underline
}
A:hover {
text-decoration: underline;
color: #0066CC
}
A.b:link {
text-decoration: none;
font-size: 12px;
font-family: "Helvetica,微软雅黑,宋体";
color: #FFFFFF;
}
A.b:visited {
text-decoration: none;
font-size: 12px;
font-family: "Helvetica,微软雅黑,宋体";
color: #FFFFFF;
}
A.b:active {
text-decoration: underline;
color: #FF0000;
}
A.b:hover {
text-decoration: underline;
color: #ffffff
}
.table1 {
border: 1px solid #CCCCCC;
}
.font {
font-size: 12px;
text-decoration: none;
color: #999999;
line-height: 20px;
}
.input {
font-size: 12px;
color: #999999;
text-decoration: none;
border: 0px none #999999;
}
td {
font-size: 12px;
color: #007AB5;
}
form {
margin: 1px;
padding: 1px;
}
input {
border: 0px;
height: 26px;
color: #007AB5;
.
unnamed1
{
border
:
thin
none
#FFFFFF;
}
.unnamed1 {
border: thin none #FFFFFF;
}
select {
border: 1px solid #cccccc;
height: 18px;
color: #666666;
.
unnamed1
{
border
:
thin
none
#FFFFFF;
}
body {
background-repeat: no-repeat;
background-color: #9CDCF9;
background-position: 0px 0px;
}
.tablelinenotop {
border-top: 0px solid #CCCCCC;
border-right: 1px solid #CCCCCC;
border-bottom: 0px solid #CCCCCC;
border-left: 1px solid #CCCCCC;
}
.tablelinenotopdown {
border-top: 1px solid #eeeeee;
border-right: 1px solid #eeeeee;
border-bottom: 1px solid #eeeeee;
border-left: 1px solid #eeeeee;
}
.style6 {
FONT-SIZE: 9pt;
color: #7b8ac3;
}
-->
</style>
<script type="text/javascript">
function loginvadate(){
if(document.myform.username.value != "" &&
document.myform.password.value != "")
{
document.myform.submit();
}else if(document.myform.username.value == "")
{
window.alert("请输入用户名!");
return false;
}else if(document.myform.password.value == "")
{
window.alert("请输入密码!");
return false;
}
}
</script>
</head>
<body>
<table width="681" border="0" align="center" cellpadding="0"
cellspacing="0" style="margin-top: 120px">
<tr>
<td width="353" height="259" align="center" valign="bottom"
background="./images/login_1.gif">
<table width="90%" border="0" cellspacing="3" cellpadding="0">
<tr>
<td align="right" valign="bottom" style="color: #05B8E4">
Lieed supermarket management system
</td>
</tr>
</table>
</td>
<td width="195" background="./images/login_2.gif">
<form action="LoginServlet" method="post" name="myform"
onsubmit="return loginvadate()">
<table width="190" height="106" border="0" align="center"
cellpadding="2" cellspacing="0">
<tr>
<td height="50" colspan="2" align="left">
</td>
</tr>
<tr>
<td width="60" height="30" align="left">
登陆名称
</td>
<td>
<input name="username" type="TEXT"
style="background: url(./images/login_6.gif) repeat-x; border: solid 1px #27B3FE; height: 20px; background-color: #FFFFFF"
id="UserName" size="14">
</td>
</tr>
<tr>
<td height="30" align="left">
登陆密码
</td>
<td>
<input name="password" TYPE="PASSWORD"
style="background: url(./images/login_6.gif) repeat-x; border: solid 1px #27B3FE; height: 20px; background-color: #FFFFFF"
id="Password" size="16">
</td>
</tr>
<tr>
<td height="30">
验 证 码
</td>
<td>
<input name="Code" type="text" id="Code" size="4"
style="background: url(./images/login_6.gif) repeat-x; border: solid 1px #27B3FE; height: 20px; background-color: #FFFFFF"
maxlength="4">
<img src="./images/VerifyCode.png" width="50" height="24" />
</td>
</tr>
<tr>
<td height="40" colspan="2" align="center">
<img src="./images/tip.gif" width="16" height="16">
请勿非法登陆!
</td>
<tr>
<td colspan="2" align="center">
<input type="submit" name="submit"
style="background: url(./images/login_5.gif) no-repeat"
value=" 登 陆 ">
<input type="reset" name="Submit"
style="background: url(./images/login_5.gif) no-repeat"
value=" 取 消 ">
</td>
<tr>
<td height="5" colspan="2"></td>
</table>
</form>
</td>
<td width="133" background="./images/login_3.gif">
</td>
</tr>
<tr>
<td height="161" colspan="3" background="./images/login_4.gif"></td>
</tr>
</table>
</body>
</html>
四、功能实现及运行效果图
1.登陆界面
2.超市主界面
3.新增供应商界面
4.新增供应商后数据库变化
5.新增销售界面
6.超市进货界面
7.超市新增存货界面
8.数据库表