基于asp.net物流管理系统设计与实现

一、项目介绍

基于.net物流管理软件利用C#框架开发的一款web系统,数据存储到SqlServer中,会员端前台使用Html技术对界面进行设计和实现。本文先充分调查基于.net物流管理软件的需求分析,深入剖析系统应该具有的功能,并设计完善的数据库。利用成熟的开发技术完成编码工作,最后进行投入前的测试工作。最终,完成前台和后台的基于.net物流管理软件的功能,主要包括用户管理、司机管理、仓库管理、运单类型管理、车辆管理、申请运输管理、运输报价管理、物品入库管理、物品出库管理、运输信息管理、卸货信息管理等,通过前后台实现数据的传递。
关键词:物流公司;C#语言;运单;在线管理

二、开发环境

开发软件:VS 2017 (版本2017以上即可,不能低于2017)
数据库:SqlServer2008r2(数据库版本无限制,都可以导入)
开发模式:mvc
浏览器:谷歌浏览器

三、功能介绍

基于.net物流管理软件可以为物流公司领导提供业务管理功能,公司领导也就是系统的管理员,具有用户管理、司机管理、仓库管理、运单类型管理、车辆管理、申请运输管理、运输报价管理、物品入库管理、物品出库管理、运输信息管理、卸货信息管理的权限,添加或者删除用户基本信息,发布通知通知,对历史订单信息进行删除操作,
会员主要是查看个人信息,申请运输、查看出库报价、查看物品入库、查看物品出库、查看运输信息、查看卸货信息。
其中系统用例图如3.1所示:
在这里插入图片描述

图3.1系统用例图
其中用户登录中,通过HTML访问该基于.net物流管理软件,选择登录界面,进行登录。登录成功进入到系统,登录失败,提示用户不存在,需要重新输入正确的用户名和密码。
用户管理中,先运行基于.net物流管理软件,然后录入运单,验证信息后,保存信息到数据库,如果保存失败,提示错误信息,并返回到主界面。
运输管理中,启动基于.net物流管理软件,进入到运输创建的页面,填写创建运输的基本信息,创建成功后更新运输数据库表的记录。在运输修改或者删除的页面,完成操作后,更新运输数据库表的记录。在运输列表界面,查询所有的运输数据库表的记录,然后绑定数据到运输列表中。
卸货管理中,启动基于.net物流管理软件,进入到卸货创建的页面,填写创建卸货的基本信息,创建成功后更新卸货数据库表的记录。在卸货修改或者删除的页面,完成操作后,更新卸货数据库表的记录。在卸货列表界面,查询所有的卸货数据库表的记录,然后绑定数据到卸货列表中。

管理员管理包括用户登录、用户管理、司机管理、仓库管理、运单类型管理、车辆管理、申请运输管理、运输报价管理、物品入库管理、物品出库管理、运输信息管理、卸货信息管理。
管理员功能结构图如下图4-2所示。
在这里插入图片描述

图 4.2 管理员功能结构图
管理员需要先进行登录,获得操作的权限后才能进行信息管理。在本系统中,管理员可以登录服务器端对用户进行管理,管理员添加运单,对会员的基本信息进行管理,还可以管理系统内的业务信息。
4.2.3 会员功能设计
会员用户功能包括用户登录、查看个人信息、申请运输、查看出库报价、查看物品入库、查看物品出库、查看运输信息、查看卸货信息。
会员用户功能设计图如下图4.4所示。
在这里插入图片描述

图 4.4 会员用户功能结构图
会员用户登录后,在HTML的首页,查看操作菜单,可以修改个人信息和修改个人密码,修改个人信息和密码的功能流程一致,都是通过先获取到个人信息后,然后进行修改,通过数据库修改语句更新信息。
系统在技术路线上选择 ASP.NET 作为主要的软件开发技术,系统基于 B/S 模式,软 件体系结构采用.NET 三层架构,开发语言采用 C#,后台数据库管理系统选用 SQL Server2008,最终实现了系统管理模块,查询模块,客户综合管理模块,物流管理中心 模块以及运输管理模块等。 系统管理模块负责物流管理信息系统的各项常规管理。查询模块负责查询物流管理信息系统的各项信息和客户的各项相关数据信息。客户综合管理模块负责客户的订单管理操作和货物的各项管理操作。物流管理中心模块负责物流管理信息系统的仓库管理工作和货物的配送管理工作两大重要功能。而运输管理模块则负责各个车辆以及驾驶员的各项具体信息统计工作,货物运输路线的优化选择管理以及运输的动态控制管理等各项功能。

四、核心代码

部分代码:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.StaticFiles;
using Newtonsoft.Json;
using Xiezn.Core.Business.Services;
using Xiezn.Core.Common.Helpers;
using Xiezn.Core.Models.ViewModel;

namespace Xiezn.Core.Controllers
{
    /// <summary>
    /// 公共接口
    /// </summary>
    [Route("[action]")]
    public class CommonController : Controller
    {
        private readonly IHostingEnvironment _hostingEnvironment;
        private readonly string _savePath;
        private readonly CommonService _bll;
        private readonly ConfigService _configBLL;

        /// <summary>
        /// 构造函数
        /// </summary>
        public CommonController(IHostingEnvironment hostingEnvironment)
        {
            _hostingEnvironment = hostingEnvironment;
            _savePath = _hostingEnvironment.WebRootPath + Path.DirectorySeparatorChar + ConfigHelper.GetConfig("SchemaName") + Path.DirectorySeparatorChar + "upload" + Path.DirectorySeparatorChar;
            _bll = new CommonService();
            _configBLL = new ConfigService();
        }

        /// <summary>
        /// 获取某表的某个字段列表接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="columnName">列名</param>
        /// <returns></returns>
        [HttpGet("{tableName}/{columnName}")]
        public JsonResult Option(string tableName, string columnName)
        {
            try
            {
                int level = Convert.ToInt32(HttpContext.Request.Query["level"]);
                string parent = HttpContext.Request.Query["parent"];
                string conditionColumn = HttpContext.Request.Query["conditionColumn"];
                string conditionValue = HttpContext.Request.Query["conditionValue"];
                if (!string.IsNullOrEmpty(conditionColumn) && !string.IsNullOrEmpty(conditionValue))
                {
                    return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "option", 0, 0, " AND " + conditionColumn + " = '" + conditionValue + "' ") });
                }
                if (level == 0)
                {
                    return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, parent, level) });
                }
                else
                {
                    return Json(new { Code = 0, Data = _bll.Common(tableName, columnName) });
                }
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 根据option字段值获取某表的单行记录接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="columnName">列名</param>
        /// <param name="columnValue">列值</param>
        /// <returns></returns>
        [HttpGet("{tableName}/{columnName}")]
        public JsonResult Follow(string tableName, string columnName, string columnValue)
        {
            try
            {
                return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, columnValue, 0, "follow") });
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 根据主键id修改table表的sfsh状态接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="id">主键id</param>
        /// <param name="sfsh">当前审核状态(是/否)</param>
        /// <returns></returns>
        [HttpPost("{tableName}")]
        [Authorize(Roles = "Admin,Client")]
        public JsonResult Sh(string tableName, int id, string sfsh)
        {
            try
            {
                if (_bll.Common(tableName, id.ToString(), sfsh, 0, "sh") > 0)
                {
                    return Json(new { Code = 0, Msg = "更新成功!" });
                }

                return Json(new { Code = -1, Msg = "更新失败!" });
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 获取需要提醒的记录数接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="columnName">列名</param>
        /// <param name="type">类型(1表示数字比较提醒,2表示日期比较提醒)</param>
        /// <param name="remindStart">remindStart小于等于columnName满足条件提醒,当比较日期时,该值表示天数</param>
        /// <param name="remindEnd">columnName小于等于remindEnd 满足条件提醒,当比较日期时,该值表示天数</param>
        /// <returns></returns>
        [HttpGet("{tableName}/{columnName}/{type}")]
        public JsonResult Remind(string tableName, string columnName, int type, int remindStart, int remindEnd)
        {
            try
            {
                return Json(new { Code = 0, Count = _bll.Common(tableName, columnName, "", type, "remind", remindStart, remindEnd) });
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 计算规则接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="columnName">列名</param>
        /// <returns></returns>
        [HttpGet("{tableName}/{columnName}")]
        public JsonResult Cal(string tableName, string columnName)
        {
            try
            {
                return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "cal") });
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 人脸比较
        /// </summary>
        /// <param name="face1">图片1名称</param>
        /// <param name="face2">图片2名称</param>
        /// <returns></returns>
        [HttpGet]
        public JsonResult MatchFace(string face1, string face2)
        {
            try
            {
                BaiduAiHelper.clientId = _configBLL.GetValueByName("APIKey");
                BaiduAiHelper.clientSecret = _configBLL.GetValueByName("SecretKey");
                BaiduAiHelper.GetAccessToken();
                List<FaceMatchViewModel> matchInfo = new List<FaceMatchViewModel>
                {
                    new FaceMatchViewModel { image = FuncHelper.ImageToBase64(_savePath + face1) },
                    new FaceMatchViewModel { image = FuncHelper.ImageToBase64(_savePath + face2) }
                };
                string result = BaiduAiHelper.FaceMatch(JsonConvert.SerializeObject(matchInfo));
                dynamic resObj = JsonConvert.DeserializeObject(result);
                if (resObj.error_code == 0)
                {
                    return Json(new { Code = 0, Score = resObj.result.score, Msg = "匹配成功!" });
                }
                else
                {
                    return Json(new { Code = -1, Score = 0, Msg = "匹配失败!" });
                }
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 定位接口(根据经纬度坐标获取到省市县(区)信息)
        /// </summary>
        /// <param name="lat">经度</param>
        /// <param name="lng">纬度</param>
        /// <returns></returns>
        [HttpGet]
        public JsonResult Location(double lat, double lng)
        {
            try
            {
                AddressViewModel addressViewModel = BaiduAiHelper.GetAddress(_configBLL.GetValueByName("baidu_ditu_ak"), lng, lat);
                if (addressViewModel == null)
                {
                    return Json(new { Code = -1, Msg = "位置信息获取失败!" });
                }
                else
                {
                    return Json(new { Code = 0, Data = addressViewModel });
                }
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 类别统计接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="columnName">列名</param>
        /// <returns></returns>
        [HttpGet("{tableName}/{columnName}")]
        public JsonResult Group(string tableName, string columnName)
        {
            try
            {
                return Json(new { Code = 0, Data = _bll.Common(tableName, columnName, "", 0, "group") });
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 按值统计接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="xColumnName">列名</param>
        /// <param name="yColumnName">列名</param>
        /// <returns></returns>
        [HttpGet("{tableName}/{xColumnName}/{yColumnName}")]
        public JsonResult Value(string tableName, string xColumnName, string yColumnName)
        {
            try
            {
                return Json(new { Code = 0, Data = _bll.Common(tableName, xColumnName, yColumnName, 0, "value") });
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }

        /// <summary>
        /// 按时间统计类型接口
        /// </summary>
        /// <param name="tableName">表名</param>
        /// <param name="xColumnName">列名</param>
        /// <param name="yColumnName">列名</param>
        /// <param name="timeStatType">类型</param>
        /// <returns></returns>
        [HttpGet("{tableName}/{xColumnName}/{yColumnName}/{timeStatType}")]
        public JsonResult Value(string tableName, string xColumnName, string yColumnName, string timeStatType)
        {
            try
            {
                return Json(new { Code = 0, Data = _bll.StatDate(tableName, xColumnName, yColumnName, timeStatType) });
            }
            catch (Exception ex)
            {
                return Json(new { Code = 500, Msg = ex.Message });
            }
        }



    }
}


五、效果图

请添加图片描述

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

六、文章目录

目 录
摘 要 2
Abstract 3
目 录 5
1系统概述 8
1.1 研究的背景和意义 8
1.2 国内外研究现状 9
1.3 研究内容 12
2系统技术 14
2.1 ASP.NET技术 14
2.2 数据库技术 14
2.3 B/S结构 15
2.4 HTML5技术 15
3系统需求分析 16
3.1 可行性分析 16
3.1.1 经济可行性 16
3.1.2 技术可行性 16
3.1.3 法律可行性 16
3.2 需求分析 16
3.2.1 非功能性需求 16
3.2.2 功能性需求 17
4系统设计 20
4.1 架构设计 20
4.2 功能设计 20
4.2.1 管理员功能设计 20
4.2.3 会员功能设计 21
4.3 数据库设计 22
4.3.1 数据库设计原则 22
4.3.2 数据库ER图设计 23
4.3.3 数据库表设计 23
5 系统实现 27
5.1管理员功能实现 27
5.1.1 管理员登录功能实现 27
5.1.2 会员管理功能实现 27
5.1.3 运输审核管理功能实现 29
5.2.4 运输报价管理功能实现 29
5.2.5 运输信息管理功能实现 30
5.2 会员功能实现 31
5.2.1 在线寄件管理实现 31
5.2.2 个人中心功能实现 32
5.3.3 出入库查看功能实现 32
5.3.4 卸货信息查看功能实现 33
第6章 系统测试 34
6.1 程序测试 34
6.2 测试用例 35
6.3 系统测试结果 36
结论 37
参考文献 38
致谢 39

  • 22
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值