博主介绍:翰文编程 专注于Java(springboot ssm 等开发框架) vue  .net  php phython node.js    uniapp 微信小程序 等诸多技术领域和课设项目实战、企业信息化系统建设,从业十八余年开发设计教学工作
☆☆☆ 精彩专栏推荐订阅☆☆☆☆☆不然下次找不到哟
我的博客空间发布了2000+题目解决方法案例  方便大家学习使用
感兴趣的可以先收藏起来,还有大家在毕设选题,项目以及论文编写等相关问题都可以给我留言咨询,希望帮助更多的人
文末下方有源码获取地址

4 系统总体设计方案

4.1 系统的功能模块结构

汽车销售管理系统主要分为2个权限:管理员权限、用户权限。不同的身份登录系统会有不同的权限,进行不同的操作,具体功能模块图如4-1所示:

图4-1 系统功能模块图

4.2 系统功能描述

系统功能细分如图4-1所示,后台主要功能概括分为5个模块,具体介绍如下:

1.会员信息管理

该功能用于实现对系统会员信息的管理。可以添加、删除和更改会员信息,以及会员信息列表展现,在添加会员信息时,系统会自动查询系统中会员表中的会员编号字段,系统自动将会员表中最大值加1作为该会员表会员记录的会员编号,同时将会员编号,用户名,密码,姓名,联系电话,联系地址 信息添加到会员信息表中;在删除一条会员记录时,先选中一条会员记录,将该条会员记录中的会员编号作为查询条件在会员信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改会员记录时,先选中一条会员记录,将会员信息显示在相应的修改页面中,然后更改后保存到会员信息表中;查看会员信息记录时,选中要查看的会员记录,系统根据用户选择会员信息,在详细页面显示会员信息

2.管理员信息管理

该功能用于实现对系统管理员信息的管理。可以添加、删除和更改管理员信息,以及管理员信息列表展现,在添加管理员信息时,系统会自动查询系统中管理员表中的管理员编号字段,系统自动将管理员表中最大值加1作为该管理员表管理员记录的管理员编号,同时将管理员编号,用户名,密码,姓名 信息添加到管理员信息表中;在删除一条管理员记录时,先选中一条管理员记录,将该条管理员记录中的管理员编号作为查询条件在管理员信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改管理员记录时,先选中一条管理员记录,将管理员信息显示在相应的修改页面中,然后更改后保存到管理员信息表中;查看管理员信息记录时,选中要查看的管理员记录,系统根据用户选择管理员信息,在详细页面显示管理员信息

3.公告信息管理

该功能用于实现对系统公告信息的管理。可以添加、删除和更改公告信息,以及公告信息列表展现,在添加公告信息时,系统会自动查询系统中公告表中的公告编号字段,系统自动将公告表中最大值加1作为该公告表公告记录的公告编号,同时将公告编号,标题,内容,发布时间 信息添加到公告信息表中;在删除一条公告记录时,先选中一条公告记录,将该条公告记录中的公告编号作为查询条件在公告信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改公告记录时,先选中一条公告记录,将公告信息显示在相应的修改页面中,然后更改后保存到公告信息表中;查看公告信息记录时,选中要查看的公告记录,系统根据用户选择公告信息,在详细页面显示公告信息

4.车辆类别信息管理

该功能用于实现对系统车辆类别信息的管理。可以添加、删除和更改车辆类别信息,以及车辆类别信息列表展现,在添加车辆类别信息时,系统会自动查询系统中车辆类别表中的车辆类别编号字段,系统自动将车辆类别表中最大值加1作为该车辆类别表车辆类别记录的车辆类别编号,同时将车辆类别编号,类别 信息添加到车辆类别信息表中;在删除一条车辆类别记录时,先选中一条车辆类别记录,将该条车辆类别记录中的车辆类别编号作为查询条件在车辆类别信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改车辆类别记录时,先选中一条车辆类别记录,将车辆类别信息显示在相应的修改页面中,然后更改后保存到车辆类别信息表中;查看车辆类别信息记录时,选中要查看的车辆类别记录,系统根据用户选择车辆类别信息,在详细页面显示车辆类别信息

5.车辆信息信息管理

该功能用于实现对系统车辆信息信息的管理。可以添加、删除和更改车辆信息信息,以及车辆信息信息列表展现,在添加车辆信息信息时,系统会自动查询系统中车辆信息表中的车辆信息编号字段,系统自动将车辆信息表中最大值加1作为该车辆信息表车辆信息记录的车辆信息编号,同时将车辆信息编号,车辆名称,类别,排量,颜色,图片,介绍,生产年份,配置说明,价格 信息添加到车辆信息信息表中;在删除一条车辆信息记录时,先选中一条车辆信息记录,将该条车辆信息记录中的车辆信息编号作为查询条件在车辆信息信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改车辆信息记录时,先选中一条车辆信息记录,将车辆信息信息显示在相应的修改页面中,然后更改后保存到车辆信息信息表中;查看车辆信息信息记录时,选中要查看的车辆信息记录,系统根据用户选择车辆信息信息,在详细页面显示车辆信息信息

6.交易订单信息管理

该功能用于实现对系统交易订单信息的管理。可以添加、删除和更改交易订单信息,以及交易订单信息列表展现,在添加交易订单信息时,系统会自动查询系统中交易订单表中的交易订单编号字段,系统自动将交易订单表中最大值加1作为该交易订单表交易订单记录的交易订单编号,同时将交易订单编号,车辆,会员,订单流水,说明,时间,价格,状态 信息添加到交易订单信息表中;在删除一条交易订单记录时,先选中一条交易订单记录,将该条交易订单记录中的交易订单编号作为查询条件在交易订单信息表中进行查询,弹出“确定要删除吗?”的对话框,若是,则执行删除操作,否则退出删除操作;在更改交易订单记录时,先选中一条交易订单记录,将交易订单信息显示在相应的修改页面中,然后更改后保存到交易订单信息表中;查看交易订单信息记录时,选中要查看的交易订单记录,系统根据用户选择交易订单信息,在详细页面显示交易订单信息   

4.3 数据库的设计

4.3.1数据库需求分析

数据库需求分析是数据库结构设计的第一个阶段,是非常重要的一个阶段。在这个阶段主要是收集基本数据、数据结构以及数据处理的流程,组成一份详尽的数据字典,为以后进一步设计打下基础。

4.3.2数据库概念结构设计

这一设计阶段是在需求分析的基础上,设计出能够满足用户需求的各种褓,以及它们之间的关系,为后面的逻辑结构设计打下基础。

由上面的设计规划出的实体有:会员实体,管理员实体,公告实体,车辆类别实体,车辆信息实体,交易订单实体。每个实体如下所示:

(1)会员信息实体,主要包括 会员编号,用户名,密码,姓名,联系电话,联系地址 等信息实体。具体如下图4-3所示

图 4-3 会员实体图

  1. 管理员信息实体,主要包括 管理员编号,用户名,密码,姓名 等信息实体.具体如下图4-4所示

图 4-4 管理员实体图

(3)公告信息实体,主要包括 公告编号,标题,内容,发布时间 等信息实体.具体如下图4-5所示

图 4-5 公告实体图


(4)车辆类别信息实体,主要包括 车辆类别编号,类别 等信息实体.具体如下图4-6所示

图 4-6 车辆类别实体图

(5)车辆信息信息实体,主要包括 车辆信息编号,车辆名称,类别,排量,颜色,图片,介绍,生产年份,配置说明,价格 等信息实体.具体如下图4-7所示

图 4-7 车辆实体图

(6)交易订单信息实体,主要包括 交易订单编号,车辆,会员,订单流水,说明,时间,价格,状态 等信息实体.具体信息如下图4-8所示

图 4-8 交易订单实体图

实体和实体之间的关系E-R图如图4-11所示。

图4-9 实体之间关系E-R图

4.3.3数据库逻辑结构设计

数据库共包括6个表,详细表如下所示:

表4-1 会员信息表

序号

字段名称

数据类型

长度

主键

描述

1

hyid

INTEGER

11

会员编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

5

lxdh

VARCHAR

40

联系电话

6

lxdz

VARCHAR

40

联系地址

表4-2  管理员信息表

序号

字段名称

数据类型

长度

主键

描述

1

glyid

INTEGER

11

管理员编号

2

yhm

VARCHAR

40

用户名

3

mm

VARCHAR

40

密码

4

xm

VARCHAR

40

姓名

表4-3 公告信息表

序号

字段名称

数据类型

长度

主键

描述

1

ggid

INTEGER

11

公告编号

2

bt

VARCHAR

40

标题

3

nr

VARCHAR

40

内容

4

fbsj

VARCHAR

40

发布时间

表4-4  车辆类别信息表

序号

字段名称

数据类型

长度

主键

描述

1

cllbid

INTEGER

11

车辆类别编号

2

lb

VARCHAR

40

类别

表4-5  车俩信息表

序号

字段名称

数据类型

长度

主键

描述

1

clxxid

INTEGER

11

车辆信息编号

2

clmc

VARCHAR

40

车辆名称

3

lb

VARCHAR

40

类别

4

pl

VARCHAR

40

排量

5

ys

VARCHAR

40

颜色

6

tp

VARCHAR

40

图片

7

js

VARCHAR

40

介绍

8

scnf

VARCHAR

40

生产年份

9

pzsm

VARCHAR

40

配置说明

10

jg

VARCHAR

40

价格

表4-6  交易订单信息表

序号

字段名称

数据类型

长度

主键

描述

1

jyddid

INTEGER

11

交易订单编号

2

cl

VARCHAR

40

车辆

3

hy

VARCHAR

40

会员

4

ddls

VARCHAR

40

订单流水

5

sm

VARCHAR

40

说明

6

sj

VARCHAR

40

时间

7

jg

VARCHAR

40

价格

8

zt

VARCHAR

40

状态

4.3.4 数据库字典

根据需求分析,将数据库的结构设计为一库八表,所选取的数据库为mysql。数据词典(Data Dictionary ,DD)是结构化分析方法的另一个工具,它与数据流图配合,能清楚地表达数据处理的要求。其数据词典描述如下:

1 会员( 会员编号,用户名,密码,姓名,联系电话,联系地址 )

2 管理员( 管理员编号,用户名,密码,姓名 )

3 公告( 公告编号,标题,内容,发布时间 )

4 车辆类别( 车辆类别编号,类别 )

5 车辆信息( 车辆信息编号,车辆名称,类别,排量,颜色,图片,介绍,生产年份,配置说明,价格 )

6 交易订单( 交易订单编号,车辆,会员,订单流水,说明,时间,价格,状态 )

4.4 本章小结

本章主要介绍的内容是系统的总体功能介绍,主要是在总体模块设计和数据库设计的方面介绍的,为进一步的详细设计做准备。

5 系统的具体设计

5.1 欢迎主界面及代码设计

5.1.1系统登录

访问首页地址,首先将出现主界面,如下图。

图5-1 登录主界面

5.1.2 登录面代码设计

欢迎主界面实现的代码设计如下:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*"%>

<%@ page import="com.util.DBO"%>

<%

DBO db=new DBO();

request.setCharacterEncoding("gb2312");

String yhm=(String)request.getParameter("yhm");

String mm=(String)request.getParameter("mm");





String sql="";





sql="select * from yonghu where yhm='"+yhm+"' and mm='"+mm+"' ";







System.out.println("sql="+sql);

db.open();

ResultSet rs=db.query(sql);

out.println("<script>");

if(rs.next()){

session.setAttribute("yhid",rs.getString("yhid"));

session.setAttribute("yhm",rs.getString("yhm"));

session.setAttribute("mm",rs.getString("mm"));

session.setAttribute("qx",rs.getString("qx"));

;



out.println("alert('登录成功');");

out.println("window.location='index.jsp'");

}else{

out.println("alert('用户名或者密码错误');");

out.println("window.location='login.jsp'");

}

out.println("</script>");

%>

5.2 车辆信息界面及代码设计

5.2.1车辆信息查看界面

图5-2 添加用户界面

5.2.2 车辆信息界面代码设计

车辆信息界面实现的代码设计如下:

<%@ page contentType="text/html; charset=gb2312" language="java" import="java.sql.*" errorPage="" %>

<%@ page import="com.util.*"%>

<%@ taglib uri="/struts-tags" prefix="s" %>

<%



request.setCharacterEncoding("gb2312");





%>

<html>

<head>

<link href="<%=request.getContextPath()%>/css/style.css" rel="stylesheet" type="text/css">



<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />

<title>车辆信息信息查看</title>





<body >





<form name="form" method="post" action="">



<div class="place">

    <span></span>

    <ul class="placeul">

   

    </ul>

    </div>

    

    <div class="formbody">

    

    <div class="formtitle"><span>车辆信息查看</span></div>

    

    <ul class="forminfo">

    <li><label>车辆名称:</label> <s:property value='clxx.clmc' /></li>



    <li><label>类别:</label> <s:property value='clxx.lb' /></li>



    <li><label>排量:</label> <s:property value='clxx.pl' /></li>



    <li><label>颜色:</label> <s:property value='clxx.ys' /></li>



    <li><label>图片:</label> <img src="<%=request.getContextPath()%><s:property value='clxx.tp' />" width=200 height=200></li>



    <li><label>介绍:</label> <s:property value='clxx.js' /></li>



    <li><label>生产年份:</label> <s:property value='clxx.scnf' /></li>



    <li><label>配置说明:</label> <s:property value='clxx.pzsm' /></li>



    <li><label>价格:</label> <s:property value='clxx.jg' /></li>



   

    <li><label> </label> <input type="button" name="button2" id="button" value="返回" onClick="window.history.go(-1)" class="btn">



<input type="hidden" id="clxxid" name="clxx.clxxid" value="<s:property value='clxx.clxxid' />">

</li>

    </ul>

    

    

    </div>















</form>



<%



%>

</body>

</html>





     

5.3 公告管理界面及代码设计

5.3.1公告管理主界面

公告管理主界面,如下图:

图5-3 商品主界面

5.3.2系统主界面代码设计

系统主界面实现的代码设计如下:

package com.action;

import java.util.ArrayList;

import java.util.List;

import org.apache.struts2.ServletActionContext;

import com.opensymphony.xwork2.ActionSupport;

import com.bean.gonggao;

import com.dao.gonggaoDao;

/*

对公告功能进行维护

*/

@SuppressWarnings("serial")

public class gonggaoAction extends ActionSupport {

private static final long serialVersionUID = 1L;

private gonggaoDao dao=null;

private gonggao gonggao=new gonggao();////对公告进行管理bean

private List<gonggao> gonggaos=new ArrayList<gonggao>();//对公告进行管理获得结果集返回list

private String key="";

private int pageNum=1;

private int pageCount=0;

public gonggao getGonggao() {

return gonggao;

}

public void setDao(gonggaoDao dao) {

this.dao = dao;

}

public void setGonggao(gonggao gonggao) {

this.gonggao = gonggao;

}

public List<gonggao> getGonggaos() {

return gonggaos;

}

public String execute()

{//默认公告功能 添加 暂时留空

return "";

}

public String addPage(){

//公告添加页面

try{

}catch(Exception e){

System.out.println(e.toString());

}

return "gonggaoaddPage";

}

public String add()

{//对表gonggao进行添加操作

try{

dao.addgonggao(gonggao);

}catch(Exception e){

System.out.println(e.toString());

}

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('添加成功');</script>");

return "gonggaoadd";

}

public String list()

{//对公告进行管理 对表gonggao进行页面查询

int size=10;//分页个数

try{

String hql=" from gonggao where 1=1";

int count=dao.getgonggaos(hql).size();

pageCount=count%size==0?count/size:(count/size+1);

if(pageNum<1)

{

pageNum=1;

}else if(pageNum>pageCount)

{

pageNum=pageCount;

}

gonggaos=dao.getgonggaos(hql, pageNum, size);

}catch(Exception e){

System.out.println(e.toString());

}

return "gonggaolist";

}

public String listp()

{//对公告进行管理 对表gonggao进行查询

try{

gonggaos=dao.getgonggaos(" from gonggao where 1=1");

}catch(Exception e){

System.out.println(e.toString());

}

return "gonggaolistp";

}

public String del()

{//对公告进行删除 对表gonggao进行删除

String keyid=ServletActionContext.getRequest().getParameter("keyid").toString();

gonggao tempbean=dao.getgonggao("from gonggao where ggid="+keyid);

try{

dao.delgonggao(tempbean);

}catch(Exception e){

System.out.println(e.toString());

}

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('删除成功');</script>");

return list();

}

public String modPage(){

////对公告修改页面 对表gonggao进行修改

String keyid=ServletActionContext.getRequest().getParameter("keyid").toString();

try{

gonggao=dao.getgonggao("from gonggao where ggid="+keyid);

}catch(Exception e){

System.out.println(e.toString());

}

return "gonggaomodPage";

}

public String detail(){

////对公告修改页面 对表gonggao进行修改

String keyid=ServletActionContext.getRequest().getParameter("keyid").toString();

try{

gonggao=dao.getgonggao("from gonggao where ggid="+keyid);

}catch(Exception e){

System.out.println(e.toString());

}

return "gonggaodetail";

}

public String mod(){

////对公告进行修改操作 对表gonggao进行修改

try{

dao.modifygonggao(gonggao);

}catch(Exception e){

System.out.println(e.toString());

}

ServletActionContext.getRequest().setAttribute("msg", "<script>alert('修改成功');</script>");//location.href='bookmanage';

return list();

}

public String getKey() {

return key;

}

public void setKey(String key) {

this.key = key;

}

public int getPageNum() {

return pageNum;

}

public void setPageNum(int pageNum) {

this.pageNum = pageNum;

}

public int getPageCount() {

return pageCount;

}

}

5.4 车辆信息管理详细界面及代码设计

5.4.1车辆信息管理信息界面

对车辆进行入库操作。

图5-4 商品入库界面

大家点赞、收藏、关注、评论啦 其他的定制服务 商务合作 下方联系卡片↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 或者私信作者

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐