课程设计报告题目快递管理系统系统设计报告课程名称软件项目实践1.目的:该文档是关于学生选课系统的功能和性能描述,重点描述了模块划分。
2 概要设计2.1 项目规划应用管理的主要功能是对系统中的基本信息管理。
包括客户信息、货物信息以及派送人员信息等功能。
1.客户管理主要实现的功能是对客户的基本信息进行添加、修改和删除;2.库管管理主要实现的功能是对货物的出库以及入库的管理;3.调度管理主要实现的是货物的派送。
2.2 系统功能结构图快递管理系统的系统功能结构图如图1所示。
图1 系统功能结构图图2 系统功能结构图2.3 业务需求2.3.1:票据管理1.功能描述:票据管理的主要功能是对票据本的分发,查询,修改和删除。
2.流程图如图2-1所示:图2-1票据管理流程图2.3.2 投递人员管理流程图如图2-4所示:图2-4投递人员流程图2.3.3接货管理1、功能描述:接货管理的主要功能是填写一份货运单合同,该合同的内容包括货运单编号、发货客户信息、收货客户信息、运费、保险费等。
在货物列表中,添加货物,主要填写货物的名称、重量、体积、货物价值等信息。
2、流程图如图2-6所示:图2-6接货管理流程图3 详细设计3.1 系统登录设计系统登录主要用于对登录物流管理系统的用户进行安全性检查,以防止非法用户登录该系统。
根据给管理员分配的权限,登录用户可以根据自己所具有的权限操作系统中相应的功能。
在登录系统时验证操作员及其密码,主要通过ADO控件中记录集(RecordSet)对象结合If语句判断用户选定的操作员及其输入的密码与数据库中的操作员和密码是否相同来实现,如果相同则允许登录,并给予相应的权限,否则将不允许用户登录。
系统登录的运行结果如图2所示。
图2 系统登录窗体的运行结果1.窗体设计(1)在工程中新建1个窗体,将窗体的名称设置为“frm_xtdl”,BorderStyle属性设置为“0-None”,通过设置Picture属性为窗体添加图片。
(2)在窗体上添加Adodc控件,由于该控件属于ActiveX控件,在使用之前必须从“部件”对话框中添加到工具箱。
添加方法如下:在“工程”/“部件”对话框中勾选“Microsoft Ado Data Controls 6.0(SP4)”列表项,单击【确定】按钮之后即可将Ado控件添加到工具箱当中。
(3)在窗体中添加2个CommandButton控件,分别将Name属性设置为“Cmd_Ok”和“Cmd_Cancel”,Caption属性设置为“登陆”和“取消”。
2.代码设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using System.Collections;using WuLiuXiTongDAL;namespace KuaiDi{public partial class FormLogin : Form{private string _EmployeeID="";//员工IDprivate string _EmployeeName="";//员工姓名private int _Role=0;//员工角色public FormLogin(){InitializeComponent();}private void btnOK_Click(object sender, EventArgs e){#region验证文本框是否为空if (txtUser.Text.Length == 0){MessageBox.Show("请输入您的用户名!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);return;}if (txtPwd.Text.Length == 0){MessageBox.Show("请输入您的密码!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);return;}#endregion#region登陆用户和角色判断int Judge = 0;//判断登录EmployeeInfo EmpInfo = new EmployeeInfo();EmpInfo.EmployeeID = txtUser.Text.ToString().Trim();EmpInfo.PassWord = txtPwd.Text.ToString().Trim();Judge=EmpInfo.Login();//用户名存在,登陆成功if (Judge == 1){_EmployeeID = this.txtUser.Text.Trim();_EmployeeName= EmpInfo.EmpNameWay(this.txtUser.Text.Trim());_Role = EmpInfo.EmpRoleWay(this.txtUser.Text.Trim());RoleOfWindows(_Role);//RoleOfWindows(0);//RoleOfWindows(1);//RoleOfWindows(2);//RoleOfWindows(3);//RoleOfWindows(4);//RoleOfWindows(5);}if (Judge == 0){MessageBox.Show("用户名不存在!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);txtUser.Clear();txtPwd.Clear();}if (Judge == 2){MessageBox.Show("对不起,密码错误!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);txtPwd.Clear();}#endregion}//窗体加载private void FormLogin_Load(object sender, EventArgs e){//密码框加载键盘输入事件txtPwd.KeyDown += new KeyEventHandler(txtPwd_KeyDown);ControlBox = false;}//键盘输入事件处理代码void txtPwd_KeyDown(object sender, KeyEventArgs e){if (e.KeyCode == Keys.Enter){btnOK_Click(sender, e);}}//取消按钮private void btnColear_Click(object sender, EventArgs e){}#region登陆界面选择private void RoleOfWindows(int RoleOfForm){string EmpName="";//登陆者姓名//EmpName = _EmployeeName;switch (RoleOfForm){case 0:formYeWuYuan YeWuYuan = new formYeWuYuan(EmpName, this.txtUser.Text.ToString().Trim(), "业务员");YeWuYuan.Show();this.Hide();break;case 1:formKuGuanYuan KuGuanYuan = new formKuGuanYuan(EmpName, this.txtUser.Text.ToString().Trim(), "库管员");KuGuanYuan.Show();this.Hide();break;case 2:formDiaoDuYuan DiaoDuY uan = new formDiaoDuYuan(EmpName, this.txtUser.Text.ToString().Trim(), "调度员");DiaoDuYuan.Show();this.Hide();break;case 3://formGongSiZhuGuan GongSiZhuGuan = new formGongSiZhuGuan(EmpName, this.txtUser.Text.ToString().Trim(), "公司主管");//GongSiZhuGuan.Show();//this.Hide();break;case 4:formXiTongGuanLiYuan XiTongGuanLiYuan = new formXiTongGuanLiYuan(EmpName, this.txtUser.Text.ToString().Trim(), "系统管理员");XiTongGuanLiYuan.Show();this.Hide();break;default:MessageBox.Show("没有这个角色!", "错误", MessageBoxButtons.OK, MessageBoxIcon.Error);}}#endregion}}3.2 业务员管理界面业务员管理界面只要是员工的信息的管理,其中可以生产订单,功能包括信息的添加,删除,修改以及会员客户的信息保存。
如下图2所示:图4 车辆调度安排窗体的运行结果。
图5 车辆调度安排窗体的设计结果1.代码设计using System;using System.Collections.Generic;using ponentModel;using System.Data;using System.Drawing;using System.Text;using System.Windows.Forms;using KuaiDi.YeWuYuan;using WuLiuXiTongDAL;using WuLiuXiTongDAL.Table;using System.IO;namespace KuaiDi{public partial class formYeWuYuan : Form{//声明数据集public DataSet1 ds;private string _EmployeeID;private string _EmployeeName;private int UpDateEmp = 0;//退单private int Cancel_Reason = 0;//构造函数传值public formYeWuYuan(string EmployeeName, string EmployeeID, string Position){InitializeComponent();this.ds = new DataSet1();//窗体传值barButtonItem8.Caption = "系统登录者:" + EmployeeName;barButtonItem9.Caption = "系统角色:" + Position;_EmployeeID = EmployeeID;_EmployeeName = EmployeeName;}* 工具栏* ===============================*///开单private void barButtonItem31_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {tabControl1.SelectedIndex = 0;tabControl2.SelectedIndex = 0;LiuShui();}private void barButtonItem11_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) {}//退单private void barButtonItem12_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e){tabControl1.SelectedIndex = 0;tabControl2.SelectedIndex = 1;};//理赔private void barButtonItem13_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e){tabControl1.SelectedIndex = 0;tabControl2.SelectedIndex = 2;}//退单private void barButtonItem18_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e){tabControl1.SelectedIndex = 0;tabControl2.SelectedIndex = 1;}//返单//private void barButtonItem19_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e) //{// tabControl1.SelectedIndex = 0;// tabControl2.SelectedIndex = 1;//}//理赔private void barButtonItem20_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e){tabControl1.SelectedIndex = 0;tabControl2.SelectedIndex = 2;}//收钱private void barButtonItem21_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e){tabControl1.SelectedIndex = 0;tabControl2.SelectedIndex = 3;}#endregion#region员工个人信息查看与修改//=================================================//员工个人信息查看与修改//=================================================//修改个人信息private void button10_Click(object sender, EventArgs e){int PanDuan = UpDateEmp;if (UpDateEmp == 0){MessageBox.Show("您没有做任何修改!");return;}EmployeeInfo UpdateEmpInfo = new EmployeeInfo();UpdateEmpInfo.EmployeeID = txtID.Text.Trim();UpdateEmpInfo.EmployeeName = txtName.Text.Trim();UpdateEmpInfo.ConsigneeTell = txtLianXi.Text.Trim();UpdateEmpInfo.Address = txtDiZhi.Text.Trim();UpdateEmpInfo.Remark = txtRemark.Text.Trim();if (cmbSex.SelectedIndex == 0){UpdateEmpInfo.Sex = 0;}else{UpdateEmpInfo.Sex = 1;}if (UpdateEmpInfo.UpDate_EmpInfo()){MessageBox.Show("员工信息修改成功!");LockEmpInformation();}else{MessageBox.Show("员工信息修改失败!");}UpDateEmp = 0;}//===================================================================== //业务员客户退单操作//===================================================================== //查找客户要退订的订单private void button15_Click(object sender, EventArgs e){Find_Order();textCancel_Reason.Text = "请填写客户退单原因";textCancel_Reason.ForeColor = Color.DarkGray;}//查找业务员退单方法public void Find_Order(){// 清空文本框textCancel_Name.Clear();textCancel_Tell.Clear();textCancel_Address.Clear();DataSet ds = new DataSet();string SqlStr = "SELECT [CustomerName],[CustomerTell],[CustomerAddress]FROM [Order] Where [OrderID]='"+textCancel_Order.Text.Trim()+"' and Handle="+0;ds = DB.getds(SqlStr, "Order");foreach (DataRow Row in ds.Tables[0].Rows){textCancel_Name.Text = Row["CustomerName"].ToString();textCancel_Tell.Text = Row["CustomerTell"].ToString();textCancel_Address.Text = Row["CustomerAddress"].ToString();Find_Goods();}}#region会员管理操作//会员管理操作//查找private void button21_Click(object sender, EventArgs e){VIPInfoLoad();}//单击单元格private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e){//DataSet ds = new DataSet();//string SqlStr = "SELECT [VIPID] AS 会员编号,[ViPName] AS 会员姓名,[Sex] AS 性别,[VIPTell] AS 电话号码,[Address] AS 详细地址,[Remark] AS 备注信息FROM [VIPInfo]";//ds = DB.getds(SqlStr, "VIPInfo");//foreach(DataRow)}private void dataGridView1_SelectionChanged(object sender, EventArgs e){VIPInfoFill();}//所有会员信息加载方法public void VIPInfoLoad(){DataSet ds = new DataSet();string SqlStr = "SELECT [VIPID] AS 会员编号,[ViPName] AS 会员姓名, '会员性别' = CASE WHEN [Sex] = 0 THEN '男' WHEN [Sex] = 1 THEN '女' END,";SqlStr += "[VIPTell] AS 电话号码,[Address] AS 详细地址,[Remark] AS 备注信息FROM [VIPInfo]";ds = DB.getds(SqlStr, "VIPInfo");dataGridView1.DataSource = ds.Tables[0].DefaultView;}3.3 库管员管理模块在正式托运货物之前,需要进行托运货物入库出库,这个模块做的正是这个.库管员管理模块的运行结果如下图所示。