资源描述
襄阳职业技术学院(毕业)论文
我院计算机专业汽车4S店网站的设计与实现
专业班级: 1407
学 生: 郭旭东
学 号:
指导教师: 欧阳宏
教学单位:电子信息工程学院
毕 业 届: 2014届
毕 业 设 计(论 文)课 题 任 务 书
电子信息工程学院 系(院) 计算机 专业 1407 班 学生 郭旭东
毕业设计(论文)课题 汽车4S店网站的设计与实现
二、毕业设计(论文)工作自 20xx 年 xx 月 xx 日起至 20xx 年xx月xx 日止
三、毕业设计(论文)进行地点 襄阳职业技术学院学院
四、毕业设计(论文)的内容要求
1.汽车行业的市场现在很是火热,现在购私家车的人日益飙升。每个购车人
先是从各个比较专业的网站(如:163、sina、sohu、qq等)汽车频道上浏览,再搜索各家4S店的各个模块进行筛选。所以建好一个汽车4S店的网站很重要。
2.市场竞争很激烈,所以把“售后服务”为网站的主题或以“潮流”为主题在网站策划上要下功夫,网站的功能和作用一定要定好位。
3.功能系统设计制作,图文管理系统,支持文字、图片编辑,支持集成各种扩展功能 。会员管理系统,客户登录、注册,成为会员后可在线浏览修改只对会员的一些信息资料。管理员可对会员进行权限、删除等的管理。 客户反馈系统,客户在线提交资料,管理者可在后台操作相关信息,并进行处理回复。
五、教师指定的主要参考文献(期刊、书籍、网页)
[01]刘同福,誉清新。汽车分销渠道的优化策略探讨[J].商业现代化,2007
[02](英)迈克·沃森,陈永倬、张景耀译。有效营销管理[M].北京。经济管理出版社,2005
[03] Michael Niek, Kurt Kengig. Increasing Revenue Profit and Customer Loyalty through the 360 sales Cyele [M]. Selling Publishing,2004
[04](美)菲利普·科特勒(PhilipKotler)、卢泰宏、高辉译。营销管理(第13版)[M].中国人民大学出版社,2008. 8
指导教师_ 欧阳虹_
学 生_ 郭旭东_
目 录
1 引言 1
1.1 4S店汽车销售及服务管理系统的发展现状 1
1.2开发的背景和意义 1
2 需求分析 2
2.1 4S店汽车销售及服务管理系统功能 2
2.2 4S店汽车销售及服务管理系统业务分析 2
3 系统设计 3
3.1 系统模块设计 3
3.1.1 维修管理模块 4
3.1.2 销售管理模块 4
3.1.3 库存管理模块 5
3.1.4 客户管理模块 6
3.1.5 系统管理模块 7
3.2 系统数据库设计 8
6 总结 10
6.1系统的总结 10
6.2开发过程的总结 10
附录 11
II
1 引言
1.1 4S店汽车销售及服务管理系统的发展现状
相对于国外同行来说,我国汽车服务企业的信息化总体应用水平还相当低。企业信息的传送更多地仍以最原始的图纸传送方式为主,只有少量的信息借助互联网进行传送。
这种状况要求我们必须尽快提升汽车服务企业的信息化水平,总结国外汽车服务企业的发展历程,少走弯路,在提升整个行业信息化水平的过程中充分采用跨跃式发展的思路。
近年来我国汽车服务业的信息化水平已经有了长足的发展和进步。企业信息管理系统正在规划和建设之中,管理者也已清醒地认识到,信息化对推动一个企业发展的重要作用及意义,这就为下一步更好地利用信息化成果来推动汽车服务业健康高效发展奠定了坚实的基础。
1.2开发的背景和意义
随着汽车工业竞争的日趋激烈,我国汽车销售市场出现了以整车销售(sale)、配件供销(sparepart)、售后服务(service)、信息反馈(survey)这四项功能集于一体(简称为4S)的汽车销售服务企业。由于许多4S店不分经销的汽车品牌的档次、强弱,不管其投资何时能回收,过份追求毫华、一流,一哄而上建4S店,导致了社会资源的大量浪费,和给自身的生存和发展背上了沉重的包袱。值得一提的是随着利润空间的不断压缩,不少4S店已直接面临着生存危机,提高工作效率,降低经营成本迫在眉睫。
电子计算机信息管理系统在4S店的合理运用,能很好的解决如上问题。电子计算机系统的建立,实现了汽车销售、配件供销、服务接待与结算、业务管理等系统的内外联网。加强软件建设,使4S店发挥更大的优势,特别是充分发挥电子计算机进行信息交流的互动功能和管理功能。
汽车销售及服务管理系统在汽车服务企业的合理运用顺应新时代计算机信息技术和汽车服务企业发展趋势的要求,是企业信息化的必然过程,是降低企业经营成本和提高企业竞争力的有效方法。
2 需求分析
2.1 4S店汽车销售及服务管理系统功能
汽车服务企业管理系统要根据行业特点,对经营过程中所有的重要环节——销售、维修和库存进行管理。能够完成需要的营业统计和生成所有的维修、销售和出入库单据。能够对企业经营的人力和物质资源进行有效管理。
2.2 4S店汽车销售及服务管理系统业务分析
根据对汽车服务企业的调查,该类企业的主要管理业务主要有以下几点:
1.汽车维修业务管理
汽车维修业务的完成需要企业多个部门人员的配合才能完成,包括进厂接待、接待人员输入客户车辆的相关信息、调度员分析汽车故障后确定派工人员、派工人员确定车辆故障、根据车辆故障列出需要使用的物料、工具和服务等、仓库人员根据派工人员的需求查询库存信息确定采购方式和库存调拨方案、派工人员到仓库领用物资进行作业、车辆维修完工结算。
2.汽车销售业务管理
销售管理是系统的核心功能。需要处理汽车服务企业中所有常见的销售方式,区别对待销售、预售、调拨,为财务管理提供合适的销售数据。该模块还必须提供多种查询方式,将配件标准编码、拼音和通用情况结合起来,找出最符合客户要求的配件组合,供其选择。
3. 物料出入库、移动管理
对日常的生产领料、销售提货、采购入库、生产入库和物料库位移动等工作进行管理,产生出、入和移动单据,改变仓库、货位的库存数量,登记数量帐。
4. 库存物料管理信息分析
从各种角度对库存物料信息做分析。如物料库存数量分析(是否超储或短缺)、物料来源和去向分析和物料分类构成分析等。
3 系统设计
3.1 系统模块设计
根据系统的需求分析,系统应包括以下几个模块:
(1) 维修管理模块
维修管理主要完成维修单据的创建、维修单据的编辑和维修单据的删除。
(2) 销售管理模块
销售管理主要完成销售单据的创建、销售单据的编辑和销售单据的删除。
(3) 库存管理模块
库存管理主要完成仓库的管理、出入库的管理、库存盘点。
(4) 客户管理模块
客户管理主要完成销售和维修客户的创建、编辑和删除。
(5) 系统管理模块
系统管理主要完成系统用户的维护、系统通知的维护、仓库基本信息管理和所有仓库数据维护及报表打印。
系统的总体功能模块如图1-1所示
4S店汽车销售及服务管理系统
维维修管理模块
销销售管理模块
仓仓库管理模块
客客户管理模块
系系统管理模块
图1-1 系统的总体功能模块图
3.1.1 维修管理模块
(1) 创建维修工单。在系统输入送修单位、送修时间、操作类型、故障描述、经手人、材料名和材料数量,可以点击查找物料的链接到物料查找的页面进行查找,点击查找到的物料系统会自动跳转回创建维修工单的页面,并会自动填入刚才选择的物料,输入完所有的信息,点击提交,系统提示成功创建维修工单。
(2) 编辑维修工单。该管理页面可以实现对维修工单的修改,操作用户根据实际需求填入需要修改的数据,点击提交保存,系统提示成功修改维修工单。
(3) 删除维修工单。该管理页面可以实现对维修工单的删除,操作用户根据实际需求,选择要删除的维修工单,点击确定删除按钮,系统会提示:是否要删除该维修工单,单击是,该维修工单会从数据库里删除,系统提示成功删除维修工单,单击否,系统自动跳转到工作页面,系统不对该维修工单进行删除操作,数据库仍然会保留该维修工单的数据。
维修管理模块包括如图1-2所示
维修管理模块
创建维修单
编辑维修单
删除维修单
图1-2 维修管理模块图
3.1.2 销售管理模块
(1) 创建销售单。在系统内输入购买单位、购买时间、操作类型、细节描述、经手人、购买车型和数量等信息,点击提交按钮,系统把信息写入数据库,系统提示操作成功。
(2)编辑销售单。该管理页面实现对销售单的修改,操作用户根据实际情况,对要修改的内容进行修改,点击保存按钮,系统把修改后的数据写入相关的数据库,系统提示操作成功。
(3)删除销售单。该管理页面可以实现对销售单的删除,操作用户根据实际需求,选择要删除的销售单。
销售管理模块包括如图1-3所示
销售管理模块
创建销售单
编辑销售单
删除销售单
图1-3 销售管理模块图
3.1.3 库存管理模块
(1) 仓库管理。该管理页面主要完成以下功能:通知列表及内容展示功能, 所管理仓库的库存产品数量超限警报功能,产品的类别设置等。
(2) 库存盘点。根据物料打印出盘点单据,根据盘点单据到仓库进行实物盘点,根据盘点结果录入盘点差异。
(3) 入库管理。操作员根据收货单据录入材料名和数量等相应的数据,系统会自动生成入库单。
(4) 出库管理。操作员根据实际需求录入材料名和数量,系统自动生成出库单。
(5) 仓库查询。输入要查询的物料号或物料名,点击开始查询,输出查询结果;如果不记得物料号和物料名,可以进行模糊查询,输入物料描述,点击开始查询,输出查询结果。
库存管理模块包括如图1-4所示
库存管理模块
仓库管理
入库管理
出库管理
库存查询
库存盘点
图1-4 库存管理模块图
3.1.4 客户管理模块
(1) 添加客户信息。在系统内输入客户姓名、电话等信息,点击提交按钮,系统提示成功创建客户信息。
(2) 编辑客户信息。根据需要修改客户信息,点击保存,系统提示修改成功。
(3) 删除客户信息。该管理页面可以实现对客户信息的删除,操作用户根据实际需求,选择要删除的客户信息。
客户管理模块包括如图1-5所示
客户管理模块
增加客户信息
编辑客户信息
删除客户信息
图1-5 客户管理模块图
3.1.5 系统管理模块
(1) 系统用户管理。系统管理员可以增加、删除、编辑用户,用户分为仓库管理员、入库员、出库员这三个角色,由于本系统支持多仓库操作,所以状态权限细分到单个仓库,修改本用户密码。
(2) 系统通知管理。发布系统通知,方便管理员和整个系统用户的信息交流,显示通知列表及内容。
(3) 仓库信息管理。对仓库进行增加、删除、及相关编辑,以满足生产扩张的需要,对仓库库存产品大类、产品小类进行增删改管理,产品小类设置数量上下限,索模块支持模糊搜索。
(4) 仓库数据维护。库存警报显示库存产品数量超限的产品,方便管理员实时监控库存数量;库存盘点对近三个月及本年度的出入库等数据进行展示,方便管理对帐;单据管理展示所有用户的操作记录及产品流动记录,并提供搜索服务;数据报表将仓库所有产品流动记录展示并提供报表数据搜索及导出功能(数据导出主要为Excel和PDF两种格式)
系统管理模块包括如图1-6所示
系统管理模块
系统用户管理
系统通知管理
仓库信息管理
仓库数据维护
图1-6 系统管理模块图
3.2 系统数据库设计
表1.1仓储人员表(User)
字段
类型
长度
备注
id
int
4
自编号
username
varchar
20
用户名
password
varchar
20
密码
warehouse_id
int
4
仓库ID
goods_type
int
4
0库管理1为入库2为出库
表1.2仓库表(Warehouse)
字段
类型
长度
备注
id
int
4
自编号
name
varchar
20
仓库名称
shelf_number
int
4
货架总数
表1.3库存产品表(Goods)
字段
类型
长度
备注
id
int
4
自编号
price
decimal
10
产品价格
quantity
int
4
产品数量
factory
varchar
20
产品厂家
ctime
varchar
10
生产日期
itime
varchar
10
入库日期
表1.4单据表(Receipt)
字段
类型
长度
备注
id
int
4
自编号
goods_id
int
4
库存产品ID
goods_number
int
4
库存产品数量
get_user
varchar
20
需求人
input_user
int
4
操作人
time
varchar
10
操作时间
receipt_type
int
4
操作类型
表1.5操作类型表(ReceiptType)
字段
类型
长度
备注
id
int
4
自编号
receipt_type
varchar
50
类型
表1.6系统日志表(Record)
字段
类型
长度
备注
id
int
4
自编号
uid
int
4
用户ID
goods_id
Int
4
操作的产品ID
goods_number
Int
4
该产品数量
receipt_type
Int
4
操作类型表
record_time
varchar
10
操作时间
表1.7系统通知表(SystemNotification)
字段
类型
长度
备注
id
int
4
自编号
tatile
varchar
50
公告标题
content
text
255
系统公告
time
varchar
10
发布时间
6 总结
6.1系统的总结
本系统已经从功能上满足了4S店汽车销售及服务管理系统管理的需要,但是从技术上来说这个系统还并不是一个高水平的作品。任何一个项目想做的完美都不是一件很容易的事情。
本系统在以下几个方面还存在缺陷:
1. 没有设计财务模块,已有模块功能也不是很完善,特别是没有设计与财务模块的集成点;
2. 数据报表模块应该有图形化的展示界面,这样更加直观。
6.2开发过程的总结
开发过程是快乐的。因为在开发中不但能充实生活,同时自己的技能也得到了很好锻炼。但是在开发过程中暴露出自己的一些问题或不足也是很值得思考的:
首先,在对一个系统的整体理解上,还不够充分,因此功能模块的设计和开发出现过技术上的调整。其次,在进行开发时,还不能深入的理解ASP.NET的思想,所以虽然是在.NET下开发程序,有些时候却还是在用面向过程的程序算法来实现……
相信有了这次开发经历,以后再做类似的开发项目,应该就会少栽很多跟头了。
附录
系统共用类,该类在系统App_Code文件夹下。该类下文件可以被整个应用程序集引用,其主要文件如下所示。
SqlDataBase.cs 类,数据库操作文件程序如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// SqlDataBase 的摘要说明
/// </summary>
public class SqlDataBase
{
public SqlDataBase()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
private SqlConnection Cn;
private SqlCommand Cm;
private DataSet ds;
private DataView dv;
#region
private void Open()//数据库连接
{
Cn = new SqlConnection ( ConfigurationSettings . AppSettings [" Den "] );
Cn.Open();
}
#endregion
#region 关闭连接
private void Close()
{
if (Cn != null)
{
Cn.Close();
Cn.Dispose();
}
}
#endregion
#region 执行简单的SQL语句
public void NoreturnSql(string Sql)
{
Open();
Cm = new SqlCommand(Sql, Cn);
Cm.ExecuteNonQuery();
Close();
}
#endregion
#region 返回首列单行的SQL语句
public string ReturnSQL(string Sql)
{
string Returnstring = "";
try
{
Open();
Cm = new SqlCommand(Sql, Cn);
Returnstring = Cm.ExecuteScalar().ToString();
}
catch
{
}
Close();
return Returnstring;
}
#endregion
#region 返回SQL语句的DateSet数据集
public DataSet GetDS(string SQL)
{
Open();
SqlDataAdapter myAdapter = new SqlDataAdapter(SQL, Cn);
ds = new DataSet();
myAdapter.Fill(ds);
Close();
return ds;
}
#endregion
#region 返回一个DataView视图
public DataView DV(string SQL)
{
ds = GetDS(SQL);
dv = ds.Tables[0].DefaultView;
return dv;
}
#endregion
#region 返回一个DataTable对象
public DataTable DT(string SQL)
{
return GetDS(SQL).Tables[0];
}
#endregion
#region 返回一个含有两个DataTable的DataSet数据集
public DataSet TwoDS(string SQL1, string SQL2)
{
DataSet myDS = new DataSet();
Open();
SqlDataAdapter myAD1 = new SqlDataAdapter(SQL1, Cn);
myAD1.Fill(myDS, "Big");
SqlDataAdapter myAD2 = new SqlDataAdapter(SQL2, Cn);
myAD2.Fill(myDS, "Small");
Close();
return myDS;
}
#endregion
#region
public SqlDataReader GRead(string Sql)
{
Open();
SqlCommand mycom = new SqlCommand(Sql, Cn);
SqlDataReader Dr = mycom.ExecuteReader();
return Dr;
}
#endregion
#region 创建一个Command来执行存储过程
private SqlCommand ReturnCM(string RunNM, SqlParameter[] PartNM)
{
Open();
SqlCommand ThisCm = new SqlCommand(RunNM, Cn);
ThisCm.CommandType = CommandType.StoredProcedure;
//传入参数
if (PartNM != null)
{
foreach (SqlParameter parmt in PartNM)
ThisCm.Parameters.Add(parmt);
}
//加入返回参数
ThisCm.Parameters.Add(new SqlParameter("ReturnValue", SqlDbType.Int, 4,
ParameterDirection.ReturnValue, false, 0, 0,
string.Empty, DataRowVersion.Default, null));
return ThisCm;
}
#endregion
#region 返回带参数的存储过程
public int RunInsert(string RunName, SqlParameter[] PartName)
{
SqlCommand MyCM = ReturnCM(RunName, PartName);
MyCM.ExecuteNonQuery();
this.Close();
return (int)MyCM.Parameters["ReturnValue"].Value;
}
#endregion
#region //传入输入的参数
public SqlParameter IntParam(string ParamName, SqlDbType DbType, int Size, object Value)
{
Return MakeParam ( ParamName , DbType , Size , ParameterDirection . Input , Value );
}
#endregion
#region //传入返回值参数
public SqlParameter OutParam ( string ParamName , SqlDbType DbType , int Size)
{
return MakeParam ( ParamName , DbType , Size , ParameterDirection.Output, null);
}
#endregion
#region //生成存储过程参数
private SqlParameter MakeParam ( string ParamName , SqlDbType DbType , Int32 Size , ParameterDirection Direction, object Value)
{
SqlParameter param;
if (Size > 0)
{
param = new SqlParameter(ParamName, DbType, Size);
}
else
{
param = new SqlParameter(ParamName, DbType);
}
param.Direction = Direction;
if (!(Direction == ParameterDirection.Output && Value == null))
param.Value = Value;
return param;
}
#endregion
}
UserAction.cs 类,用户操作行为文件程序如下:
using System;
using System.Data;
using System.Data.SqlClient;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
/// <summary>
/// UserAction 的摘要说明
/// </summary>
public class UserAction:SqlDataBase
{
public UserAction()
{
//
// TODO: 在此处添加构造函数逻辑
//
}
public bool UserChangePwd( string UserNam , string OldPwd , string NewPwd )
{
SqlDataBase MyDB = new SqlDataBase();//调用SqlDataBase类
int CheckNum = Convert.ToInt32(MyDB.ReturnSQL("select count(*) from UserList where UserName = '" + UserNam + "'and PassWord = '" + OldPwd + "'"));
if (CheckNum > 0)
{
MyDB.NoreturnSql("update UserList set PassWord='" + NewPwd + "' where UserName = '" + UserNam + "'");
return true;
}
else
{
return false;
}
}
public bool UserAdd(string UserNam , string Pwd ,string AlignK , string Types)
{
SqlDataBase MyDB = new SqlDataBase();
int CheckNum = Convert.ToInt32(MyDB.ReturnSQL("select count(*) from UserList where UserName = '" + UserNam + "'"));
if (CheckNum > 0)
{
return false;
}
else
{
MyDB.NoreturnSql("insert into UserList(UserName , PassWord , Controls , GoodsType) values('" + UserNam + "','" + Pwd + "','" + AlignK + "','" + Types + "')");
return true;
}
}
public DataTable GiveSysC()//返回通知列表
{
SqlDataBase MyDb = new SqlDataBase();
return MyDb.DT("select * from SystemTest where TestType = 0 order By ID desc");
}
public DataTable GiveSysX(string ID)
{
SqlDataBase MyDb = new SqlDataBase();
return MyDb.DT("select * from SystemTest where ID = '" + ID + "'");
}
public static DataTable GetBigClass() //返回产品大类
{
SqlDataBase MyDb = new SqlDataBase();
return MyDb.DT("select * from BigClass");
}
public static DataTable GetSmaGoods(string ID)//返回大类所属的产品列表
{
SqlDataBase MyDb = new SqlDataBase();
return MyDb.DT("select ID , GoodsNum , GoodsName from AllGood where AlignType = '"+ID+"'");
}
#region //产品入库
public int InsertGoods(int AlignGoods, string GoodCost, int GoodNum, string GoodMake, string GoodsBZ, string InputTime)
{
SqlParameter[] prams = {
IntParam("@AlignGoods", SqlDbType.Int, 4, AlignGoods),
IntParam("@GoodCost", SqlDbType.VarChar, 50, GoodCost),
IntParam("@GoodNum", SqlDbType.Int, 4, GoodNum),
IntParam("@GoodMake",SqlDbType.VarChar,50,GoodMake), IntParam("@GoodsBZ", SqlDbType.VarChar, 50, GoodsBZ),
IntParam("@InputTime",SqlDbType.VarChar,50,InputTime),
OutParam("@GoodsID",SqlDbType.Int,4)
};
RunInsert("InsertGood", prams);
return Convert.ToInt32(prams[6].Value);
//return Convert.ToInt32(prams[0].Value);
}
#endregion
public static void UpdateBigGodNum(int Num,int GodID) //入库产品大类数量更新
{
SqlDataBase MyDb = new SqlDataBase();
MyDb.NoreturnSql("update AllGood set NowNum = NowNum + " + Num + " Where ID = '" + GodID + "'");
//return "update AllGood set NowNum = NowNum + '" +
展开阅读全文