快递管理系统_第1页
快递管理系统_第2页
快递管理系统_第3页
快递管理系统_第4页
快递管理系统_第5页
已阅读5页,还剩48页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、快递公司管理系统目 录1项目管理11.1项目简介11.2甘特图12需求分析22.1业务分析22.1.1票据管理32.1.2分公司管理32.1.3分站管理.42.1.4投递员管理.52.1.5接货管理.63. 数据库设计63.1基本原则63.1.1数据库设计的基本原则.7 3.1.2逻辑结构设计.84. 概要设计104.1体系结构设计104.1.1B/S模式的体系结构.104.1.2三层结构工作原理.104.1.3B/S模式的体系结构的特点.114.2各模块工作描述.115. 详细设计.135.1.系统的设计与实现13 5.1.1系统登录界面135.1.2票据分发.155.1.3单据分发查询20

2、5.1.4货运单填写235.1.5货运单查询365.1.6分公司查询365.1.7客户管理406.项目测试.4361登录测试43 6.1.1登录失败界面.436.1.2登录成功界面.44 6.1.3客户货运单填写.44 6.1.4客户信息填写.457.安装手册.46 7.1安装环境.468.使用手册4781使用说明478.1.1使用步骤.479 总结47参考文献.481项目管理1.1项目简介随着快递公司业务的发展,业务量不断增多,跨区域工作的需求,客户需要一种能够运行于B/S模式的网络数据管理系统。本软件能满足快递公司与客户之间的业务需求和快递公司与承运人之间的业务需求,并能对业务数据进行统计

3、和管理,最后以报表的形式体现出来。本系统新增了客户服务,使快递公司与客户之间能随时沟通。1.2项目甘特图项目甘特图 如图 1-1 所示:图 1-1 项目甘特图2需求分析2.1 业务需求 2.1.1:票据管理1功能描述:票据管理的主要功能是对票据本的分发,查询,修改和删除。2流程图如图2-1所示:图2-1票据管理流程图2.1.2:分公司管理 1、功能描述:分公司管理的主要功能是对分公司的添加、删除、查询。 2、流程图 如图2-2所示:图2-2分公司流程图2.1.3 分站管理1、分站管理的功能是对分站的添加、删除、查询和修改的管理2、流程图 如图2-3所示:图2-3分站管理流程图2.1.4 投递人

4、员管理流程图 如图2-4所示:图2-4投递人员流程图2.1.5接货管理1、功能描述:接货管理的主要功能是填写一份货运单合同,该合同的内容包括货运单编号、发货客户信息、收货客户信息、运费、保险费等。在货物列表中,添加货物,主要填写货物的名称、重量、体积、货物价值等信息。2、流程图 如图2-6所示:图2-6接货管理流程图3. 数据库设计311数据库设计的基本原则数据库的规划和设计在整个软件工程中占有非常重要的地位,它在整个系统中不但起着存储各种信息,供统计、查询、分析等使用的作用,而且协调各个子系统之间的数据接口。数据库设计应具有合理性、规范性以及适应性,数据库之间的关系及设置直接关系到系统的优劣

5、。设计数据库系统时应首先需要充分了解用户各个方面的需求,包括现有的以及将来可能增加的需求。为了提高系统开发的质量和效率,基础数据管理和查询维护子系统的数据库设计遵循以下原则:(1)层次分明,布局合理。数据库系统必须层次分明,合理布局,数据信息进行浓缩、归纳、合并,减少冗余,提高数据共享程度。(2)保证数据结构化、规范化、编码标准化。这是建立数据库系统和进行业务部门内、外信息交换的基础。在每一个数据库设计之前都有一个充分的、详细的数据分析、数据格式及较为统一的编码,为减少数据的冗余量,应尽量避免数据库结构的重复,并保证整个数据库设计的完整性。(3)数据的独立性和可扩展性。做到数据库的数据具有独立

6、性,独立于应用程序,使数据库的设计及其结构的变化不影响程序,反之亦然。此外,由于业务也是在不断变化的,所以数据库设计需考虑其扩展接口,使系统增加新的应用或新的需求时,不会引起整个数据库系统的重新改写。(4)共享数据的完整性、正确性和一致性。应充分考虑数据资源的共享,合理建立公共数据库。采用数据库分层管理,使不同层次的信息数据共享。另外,由于共享数据是面向多个程序或多个使用者的,多个用户存取共享数据时,必须保证数据的正确性和一致性。(5)减少不必要的冗余建立数据系统后,应避免不必要的数据重复和冗余。(6)保证数据的安全可靠。数据库是整个信息系统的核心,它的设计要保证其可靠性和安全性,不能因某一数

7、据库的故障导致整个系统的瘫痪。做好对数据库访问的授权设计,对数据的非法访问,病毒侵扰和软、硬盘故障破坏,采取相应的保密措施。3.1.2 逻辑结构设计逻辑结构设计的任务就是把概念结构设计阶段设计好的基本E-R图转换为与选用DBMS产品所支持的数据模型相符合的逻辑结构。设计逻辑结构时一般要分三步进行,首先是将概念结构转换为一般的关系、网状、层次模型,其次是将转换来的关系、网状、层次模型向特定DBMS支持下的数据模型转换,最后是对数据模型进行优化。基于web的投稿与稿件处理系统采用的是将E-R图向关系数据模型转换。关系模型的一个重要特点就是用二维表格表示实体集,用关键码表示实体间联系的数据模型。表3

8、.1Account_User表3-2BillMgt_BillDetail表3-3Print_CustomerAmount表3-4TransferMgt_CompanyInfor4. 概要设计4.1体系结构设计4.1.1 B/S模式的体系结构B/S这种模式统一了客户端,将系统功能实现的核心部分集中到服务器上,简化了系统的开发、维护和使用。客户机上只要安装一个浏览器(Browser)。浏览器通过Web Server同数据库进行数据交互。 基于web的投稿与稿件处理系统采用三层级体系结构的B/S结构模式。4.1.2 三层结构工作原理B/S模式是一种以Web技术为基础的新型MIS平台模式,它将传统的C

9、/S模式中的服务器分解成一个数据服务器和一个或多个应用服务器,从而构成一个三层结构体系。第一层客户层,包括客户端和管理端,采用的是标准的浏览器。浏览器将HTML转换为图文并茂的网页,并提供一定的交互能力,允许用户输入信息提交给后台,提出处理要求。这个后台也就是第二层的应用服务器。第二层应用层,主要依靠应用服务器来完成工作。在客户层提出请求后,应用服务器将启动相应的进程响应,并动态生成一串HTML代码,其中包含处理结果,返回给客户的浏览器。如果客户端提交的请求包括数据的存取,那么应用服务器还需要与数据服务器交互完成这一处理。第三层数据层,负责数据的存储、响应和更新处理。位于数据层的数据服务器应客

10、户请求独立进行处理,而后将数据库结果返回应用服务器,再传回客户端或管理端,完成整个请求、应答过程。4.1.3 B/S模式体系结构的主要特点采用基于三层体系结构的B/S模式较以前的C/S模式有以下特点:(1) 资源利用率高。在C/S模式下,大部分运算在客户端完成,因此客户端配置要求较高,同时,导致服务器空闲。而在B/S模式下,大部分运算在服务器端完成,因此客户端配置要求不高,仅需能够正常显示网页即可。(2) 可维护性好。在C/S模式下,各种应用的主要部分安装在客户端,维护起来很不方便。而在B/S模式下的维护工作主要在服务器上,而且支持远程维护,客户端只运行浏览器,无需特别维护。(3) 安全机制完

11、善。在C/S模式下,主要利用操作系统和数据库系统的安全机制,较难提供数据加密和身份验证功能。而在B/S模式下不仅可以解决以上问题,还可以利用Web Server的安全机制或防火墙技术进行访问控制,利用cookie进行身份验证,极大地完善了安全机制。(4) 网络实时性强。在C/S模式下,数据库直接与客户端进行事务处理,一般需要做多次交互,数据更新过程繁琐。而在B/S模式下,事务处理在应用服务器上进行,数据的多次交互限定于应用服务器和数据服务器之间,网络传输量少,数据的实时更新性好。4.2 各模块功能描述(1)首页模块功能登录页面的入口连接了各个登录页面的连接(2)票据管理模块功能实现了票据查询、

12、分发的功能(3)接货管理模块功能包括了货运单的填写、货运单查询以及状态查询三个功能(4)到货管理模块功能包括了客户查询和新到货物查询(5)分公司管理模块功能包括了分公司填写、查询,分站填写和查询(6)应用管理模块功能主要包括了客户信息、线路信息、分公司信息(7)投递人员管理模块功能 主要包括投递人员的信息 5. 详细设计51系统的设计与实现 5.1.1 系统登录界面这是管理系统的首页,客户、员工、管理员都可以通过此页面登录。登录界面如图5-1所示: 图5.1登录界面相关代码:namespace Light.EXP.WebUI.SystemFramepublic partial class Lo

13、gin : System.Web.UI.Page protected void Page_Load(object sender, System.EventArgs e) if (!IsPostBack) /移除身份验证 FormsAuthentication.SignOut(); /消除会话状态中的所有值 HttpContext.Current.Session.Clear(); /取消当前会话 HttpContext.Current.Session.Abandon(); protected void lgnUserLogin_LoggedIn(object sender, EventArgs

14、e) SessionLoginID = this.lgnUserLogin.UserName; #region Web Form Designer generated codeoverride protected void OnInit(EventArgs e)/ CODEGEN: This call is required by the ASP.NET Web Form Designer./InitializeComponent();base.OnInit(e);/ / Required method for Designer support - do not modify/ the con

15、tents of this method with the code editor./ private void InitializeComponent()#endregion 5.1.2票据分发投递人员根据货运单号进行分发,其界面如图5-2图5-2票据分发界面相关代码:namespace Light.EXP.WebUI.Bill public partial class BillDispenseCreate : PageBase / / 页面载入 / / / protected void Page_Load(object sender, EventArgs e) if (!IsPostBac

16、k) BindBillDispensePersonsInfor(); / / 绑定有关票据人员信息 / private void BindBillDispensePersonsInfor() / 声明票据业务类对象 BillBusiness billBusiness = new BillBusiness();/ 绑定领票人下拉框 drdlReceiveBillPerson.DataTextField = Employee; drdlReceiveBillPerson.DataValueField = Employee; drdlReceiveBillPerson.DataSource = bi

17、llBusiness.GetBillEmployees(); drdlReceiveBillPerson.DataBind(); drdlReceiveBillPerson.Items.Insert(0, new ListItem(请选择, ); / 绑定分发人下拉框 drdlReleasePerson.DataTextField = Employee; drdlReleasePerson.DataValueField = Employee; drdlReleasePerson.DataSource = billBusiness.GetBillEmployees(); drdlReleaseP

18、erson.DataBind(); drdlReleasePerson.Items.Insert(0, new ListItem(请选择, ); / / 添加按钮单击事件 / / / protected void imgbCreate_Click(object sender, ImageClickEventArgs e) if (Int32.Parse(txtbBillStartCode.Text) Int32.Parse(txtbBillEndCode.Text) Utility.AlertMsg(this.Page, 单据开始号必须小于单据结束号!); return; / 声明票据实体类对

19、象BillDispense bill = new BillDispense();/ 为票据实体类对象的各个属性赋值 bill.BillType = drdlBillType.SelectedItem.Text; bill.BillStartCode = txtbBillStartCode.Text; bill.BillEndCode = txtbBillEndCode.Text; bill.ReceiveBillPerson = drdlReceiveBillPerson.SelectedValue; bill.AcceptStation = txtbAcceptStation.Text; b

20、ill.ReceiveBillTime = Utility.ToDateTime(txtbReceiveBillTime.Text); bill.ReleasePerson = drdlReleasePerson.SelectedValue;/ 声明票据业务类对象BillBusiness billBusiness = new BillBusiness(); / 增加票据分发信息 int rtnCode=billBusiness.CreateBillDispense(bill); if (rtnCode 0) Response.Redirect(BillDispenseList.aspx); e

21、lse string errorMessage=; switch (rtnCode) case 0: errorMessage = 增加票据分发信息操作失败! ; break; case -1: errorMessage = 票据开始编号已经存在!; break; case -2: errorMessage = 票据结束编号已经存在!; break; Utility.AlertMsg(this, errorMessage); / / 取消按钮单击事件 / / / protected void imgbCancel_Click(object sender, ImageClickEventArgs

22、 e) Response.Redirect(BillDispenseCreate.aspx); 5.1.3单据编号分配记录工作人员分发票据的情况,界面如图5-3所示:图5-3编号分配界面相关代码namespace Light.EXP.WebUI.Billpublic partial class BillDispenseList : PageBase / / 页面载入 / / / protected void Page_Load(object sender, EventArgs e) BindGridView(); / / 每个需要分页查询的页面都需要实现此方法 / 此方法为分页控件提供分页数据

23、的读取 / / 当前要读取的页, 从开始 / 总的数据行数(不分页时) / 一页数据 private DataSet GetPagerData(int pageIndex, ref Int64 recordCount) string billStatus = drdlBillStatus.SelectedItem.Text = 全部 ? : drdlBillStatus.SelectedItem.Text; string receiveBillPerson = txtbReceiveBillPerson.Text; / 获取数据源 BillBusiness billBusiness = new

24、 BillBusiness(); int pageSize = 10; DataSet dsBill = billBusiness.GetBillDispenses(receiveBillPerson, billStatus, pageIndex, pageSize, ref recordCount); return dsBill; / / 绑定票据分发列表 / private void BindGridView() int pageSize = 10; this.dtpBillDepense.BindDataPage(this.GetPagerData, pageSize); / / 搜索按

25、钮单击事件 / / / protected void imgbQuery_Click(object sender, ImageClickEventArgs e) BindGridView(); 5.1.4 货运单填写界面客户填写详细的货运单,界面如图5-4所示:图5-4货运单相关代码:namespace Light.EXP.WebUI.Acceptpublic partial class CarryBillCreate : PageBase protected void Page_Load(object sender, System.EventArgs e) if (!IsPostBack)

26、CarryBillBusiness carryBillBusiness = new CarryBillBusiness();/起点站数据绑定DataSet dsCity = carryBillBusiness.GetAcceptCitys(); drdlSendGoodsAddr.DataTextField = City; drdlSendGoodsAddr.DataValueField = PKID; drdlSendGoodsAddr.DataSource = dsCity; drdlSendGoodsAddr.DataBind(); drdlSendGoodsAddr.Items.Ins

27、ert(0, new ListItem(请选择, 0); drdlSendGoodsAddr.SelectedIndex = -1; drdlSendGoodsAddr.Items0.Selected = true; /到达站数据绑定 drdlReceiveGoodsAddr.DataTextField = City; drdlReceiveGoodsAddr.DataValueField = PKID; drdlReceiveGoodsAddr.DataSource = dsCity; drdlReceiveGoodsAddr.DataBind(); drdlReceiveGoodsAddr

28、.Items.Insert(0, new ListItem(请选择, 0); drdlReceiveGoodsAddr.SelectedIndex = -1; drdlReceiveGoodsAddr.Items0.Selected = true; drdlReceiveGoodsAddr_SelectedIndexChanged(null, null); /业务员数据绑定 DataSet dsEmployee = carryBillBusiness.GetAcceptEmployees(); drdlEmployee.DataTextField = Employee; drdlEmploye

29、e.DataValueField = PKID; drdlEmployee.DataSource = dsEmployee; drdlEmployee.DataBind(); drdlEmployee.Items.Insert(0, new ListItem(请选择, 0); drdlEmployee.SelectedIndex = -1; drdlEmployee.Items0.Selected = true; /收货客户数据绑定 DataSet dsCustomer = carryBillBusiness.GetAcceptCustomers(); drdlReceiveGoodsCust

30、omerName.DataTextField = Customer; drdlReceiveGoodsCustomerName.DataValueField = PKID; drdlReceiveGoodsCustomerName.DataSource = dsCustomer; drdlReceiveGoodsCustomerName.DataBind(); ListItem itemReceiveGoodsCustomer = new ListItem(请选择, 0); drdlReceiveGoodsCustomerName.Items.Insert(0, itemReceiveGood

31、sCustomer); drdlReceiveGoodsCustomerName.SelectedIndex = -1; drdlReceiveGoodsCustomerName.Items.FindByValue(0).Selected = true;/到货客户数据绑定 drdlSendGoodsCustomerName.DataTextField = Customer; drdlSendGoodsCustomerName.DataValueField = PKID; drdlSendGoodsCustomerName.DataSource = dsCustomer; drdlSendGoo

32、dsCustomerName.DataBind(); ListItem itemSendGoodsCustomer = new ListItem(请选择, 0); drdlSendGoodsCustomerName.Items.Insert(0, itemSendGoodsCustomer); drdlSendGoodsCustomerName.SelectedIndex = -1; drdlSendGoodsCustomerName.Items.FindByValue(0).Selected = true; / / 添加按钮 / / / protected void imgbCreate_C

33、lick(object sender, ImageClickEventArgs e) if (!IsValid) return; CarryBill carryBill = new CarryBill(); if (txtbReceiveGoodsCustomerTel.Text.Trim().Length = 0 & txtbReceiveGoodsCustomerMobile.Text.Trim().Length = 0) Utility.AlertMsg(this, 收货客户的电话、手机必须输入一个!); return; if (txtbSendGoodsCustomerTel.Text

34、.Trim().Length = 0 & txtbSendGoodsCustomerMobile.Text.Trim().Length = 0) Utility.AlertMsg(this, 发货客户的电话、手机必须输入一个!); return; if (this.drdlSendGoodsAddr.SelectedItem.Text = 请选择) Utility.AlertMsg(this, 请选择起点站!); return; if (this.drdlReceiveGoodsAddr.SelectedItem.Text = 请选择) Utility.AlertMsg(this, 请选择到达

35、站!); return; if (drdlReceiveGoodsCustomerName.SelectedItem.Text = 请选择) Utility.AlertMsg(this, 请选择收货客户!); return; if (this.drdlSendGoodsCustomerName.SelectedItem.Text = 请选择) Utility.AlertMsg(this, 请选择发货客户!); return; CarryBillBusiness carryBillBusiness = new CarryBillBusiness(); if (carryBillBusiness.

36、ExistCarryBill(txtbGoodsBillCode.Text) Utility.AlertMsg(this, 已经存在此运单编号!); return; if (!carryBillBusiness.ExistAcceptLine(drdlSendGoodsAddr.SelectedItem.Text, drdlReceiveGoodsAddr.SelectedItem.Text) Utility.AlertMsg(this, 没有此条线路的信息,请先填写线路的信息!); return; if (carryBillBusiness.GetAcceptStation(txtbGood

37、sBillCode.Text) = ) Utility.AlertMsg(this, 此运单编号不存在!); return; else carryBill.AcceptStation = carryBillBusiness.GetAcceptStation(txtbGoodsBillCode.Text); carryBill.GoodsBillCode = txtbGoodsBillCode.Text; carryBill.SendGoodsCustomerNO = drdlSendGoodsCustomerName.SelectedValue; carryBill.SendGoodsCust

38、omerTel = txtbSendGoodsCustomerTel.Text; carryBill.SendGoodsCustomerAddr = txtbSendGoodsCustomerAddr.Text; carryBill.ReceiveGoodsCustomerCode = drdlReceiveGoodsCustomerName.SelectedValue; carryBill.ReceiveGoodsCustomerTel = txtbReceiveGoodsCustomerTel.Text; carryBill.ReceiveGoodsCustomerAddr = txtbR

39、eceiveGoodsCustomerAddr.Text; carryBill.SendGoodsDate = Utility.ToDateTime(txtbSendGoodsDate.Text); carryBill.SendGoodsAddr = drdlSendGoodsAddr.SelectedItem.Text; carryBill.ReceiveGoodsAddr = drdlReceiveGoodsAddr.SelectedItem.Text; carryBill.HelpAcceptPayment = Utility.ToDecimal(txtbHelpAcceptPaymen

40、t.Text); carryBill.AcceptprocedureRate = txtbacceptprocedureRate.Text; carryBill.PayMode = drdlPayMode.SelectedItem.Text; carryBill.FetchGoodsMode = drdlFetchGoodsMode.SelectedItem.Text; carryBill.WriteBillPerson = txtbWriteBillPerson.Text; carryBill.WriteDate = Utility.ToDateTime(txtbWriteDate.Text); carryBill.TransferStation = drdlTransferStation.SelectedItem.Text; carryBill.PayKickback = Utility.ToDecimal(txtbPayKickback.Text); carryBill.Carriage = Utility.ToDecimal(txtbCarriage.Text); carryBill.Insurance = Utility.ToDecimal(txtbInsurance.Text); carryBill.Em

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论