课程设计报告19661873Word格式.docx
- 文档编号:17110253
- 上传时间:2022-11-28
- 格式:DOCX
- 页数:32
- 大小:97.65KB
课程设计报告19661873Word格式.docx
《课程设计报告19661873Word格式.docx》由会员分享,可在线阅读,更多相关《课程设计报告19661873Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
数据库连接、接收业务逻辑层传递过来的数据模型,提交给数据库进行处理,并根据实际的具体需求建立存储过程,既数据层开发员不在负责数据库的整体建立。
(二)四大功能区域
物流配送系统一共包括区域信息管理、顾客信息管理以及物流配送信息管理和信息查询四大功能,一下就是这四大功能之间关系的简图。
并且这四大功能与数据相连,实现对数据库的增、删、改、查操作。
三、人员分工
成员
姓名
成员分工
组长
高海丹
负责数据层的建立
王秋红
负责数据库建立
组员
矫美丽
负责业务逻辑层建立及代码实现
牟天琪
负责业务逻辑层接口代码实现
宋飞
表现层的FAreaFGuestFGuestOrder界面设计
张强
表现层的MainFormForderFSearch界面设计
崔志伟
表现层的FAreaFGuest代码设计
赵映寰
表现层的FGuestOrderMainForm代码设计
孙博
表现层的ForderFSearch代码设计
四、设计过程
(一)设计思想
我们小组们采用三层架构模式,使系统的代码不冗长,也有利于系统的编译和运行,如果系统出现错误就会第一时间知道问题出现在哪里。
所以采用三层的架构模式,不仅调理清晰,组员分工明确完成的效率也会提高。
以下就是三层架构逻辑关系图。
也是我们小组们设计设计系统的思想。
(二)数据库设计
根据物流管理系统的需求分析,可见在功能上分为:
区域信息管理、顾客信息管理、物流配送管理和信息查询。
1、数据表的建立
区域信息管理
根据需求分析得到区域信息只需要记录:
区域和区域信息的描述即可,所以可以为表TArea建立如下字段:
物流配送区域:
TArea
AreaID
uniqueidentifier
区域编号
AreaName
Varchar(50)
区域名称
AreaDesc
Varchar(150)
区域描述
顾客信息表
TGuest
GuestID
顾客编号
GuestName
顾客姓名
GuestPhone
顾客联系电话
GuestAddress
Varchar(500)
顾客地址
GuestDesc
Varchar(1000)
顾客说明
所属区域
*配送状态表
TOrder(
OrderID
物流单编号
CycleID
OrderNo
Varchar(5)
物流单号
CycleNo
OrderState
Int
配送状态
CycleState
OrderDesc
配送备注
CycleDesc
配送时间表
TGuestOrder
GuestOrderID
配送关系编号
GuestCycleID
运单编号
OrderOutDate
Datetime
配送日期
CycleOutDate
OrderOverDate
送至日期
CycleNextDate
DeliveryStaff
配送员
CycleCheckNO
OrderMoney
Float
运费
CycleMoney
isBack
是否被拒收
CycleBack
2、建立视图
根据顾客表物流配送表检索物流与顾客的关系并建立视图V1。
3、存储过程设计
为了方便程序处理,我们小组们需要为每个数据库中的表元素添加关于增、删、改、查、的存储过程,例如为区域增加的存储过程(其他三个表的存储过程也依此进行设计):
插入
ALTERProc[dbo].[Insert_Guest]
@GuestIDuniqueidentifier,
@GuestNamevarchar(50),
@GuestPhonevarchar(50),
@GuestAddressvarchar(500),
@GuestDescvarchar(1000),
@AresIDuniqueidentifier
As
INSERTINTO[TGuest]([GuestID],[GuestName],[GuestPhone],[GuestAddress],[GuestDesc],[AresID])
VALUES(@@@)
修改
ALTERProc[dbo].[Update_Guest]
@GuestPhonevarchar(50),
@GuestDescvarchar(1000),
Update[TGuest]set[GuestName]=@GuestName,[GuestPhone]=@GuestPhone,[GuestAddress]=@GuestAddress,[GuestDesc]=@GuestDescwhere[GuestID]=@GuestID
删除
ALTERProc[dbo].[Delete_Guest]
@GuestIDuniqueidentifier
Deletefrom[TGuest]where[GuestID]=@GuestID
查询
ALTERProc[dbo].[Select_Guest]
select[GuestID],[GuestName],[GuestPhone],[GuestAddress],[GuestDesc],[AresID]from[TGuest]where
convert(varchar(50),[GuestID])like'
%'
+convert(varchar(50))+'
and
[GuestName]like'
+@GuestName+'
[GuestPhone]like'
+@GuestPhone+'
[GuestAddress]like'
+@GuestAddress+'
[GuestDesc]like'
+@GuestDesc+'
convert(varchar(50),[AresID])like'
+convert(varchar(50),@AresID)+'
(三)建立数据模型及代码实现
根据项目的核心思想,因此需要建立一个类库项目,项目名称为“CommonModel”,并根据数据库表中的结构定义类和属性。
尽量保证表名和类名相同,字段名和属性名相同,字段类型和属性数据类型相同。
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
namespaceCommonModel
{
publicclassTGuest
{
privateGuidguestID=Guid.Empty;
privatestringguestName="
"
;
privatestringguestPhone="
privatestringguestAddress="
privatestringguestDesc="
privateGuidareaID=Guid.Empty;
publicGuidGuestID{get{returnguestID;
}set{guestID=value;
}}
publicstringGuestName{get{returnguestName;
}set{guestName=value;
publicstringGuestPhone{get{returnguestPhone;
}set{guestPhone=value;
publicstringGuestAddress{get{returnguestAddress;
}set{guestAddress=value;
publicstringGuestDesc{get{returnguestDesc;
}set{guestDesc=value;
publicGuidAreaID{get{returnareaID;
}set{areaID=value;
}
}
其他三个表同上
(四)表现层的设计以及代码实现
1、项目总揽
表现层开发员需要了解在项目的关系:
CycleManagement项目:
是项目运行的界面项目,负责与用户交互;
CycleInterface项目:
是负责与业务逻辑层之间协商的规范,负责与业务逻辑层进行交互;
CommonModel项目:
是负责表现层使用数据模型;
当项目开发时,表现层与业务逻辑层之间需要交流的便是CycleInterface项目中BLL文件夹内的借口文件;
2、主窗口——MainForm
在“LogisticsManagement”项目中右击,选择“新建项”,在项目列表中选择“Windows窗体”,名称为“MainForm.cs”;
窗体建立后,设置窗体属性:
MainForm.IsMdiContainer=true
MainForm.Text="
物流配送管理系统"
MainForm.StartPosition=CenterScreen
在需求分析中,物流配送管理系统的主要功能有:
区域信息管理、顾客信息管理以及物流配送信息管理和信息查询四大功能,因此可以为主窗体添加一个菜单栏,并设置如下菜单:
基础信息管理(M)
信息查询(S)
退出系统(X)
区域管理(A)
顾客管理(G)
物流配送管理(C)
(无)
单击“区域管理”菜单,则调用窗体“FArea”;
单击“顾客管理”菜单,则调用窗体“FGuest”;
单击“物流配送管理”菜单,则调用窗体“FLogistics”;
单击“信息查询”菜单,则调用窗体“FSearch”;
单击“退出系统”菜单,则执行Application.Exit()退出应用程序。
因此,为每个菜单编辑类似如下的代码(假设FArea窗体已经存在)
FAreaform=newFArea();
form.MdiParent=this;
form.StartPosition=FormStartPosition.CenterParent;
form.WindowState=FormWindowState.Maximized;
form.Show();
该窗体由于属于各个功能窗体的调用总窗体,因此不需要与业务逻辑层进行任何的交互操作。
3、区域管理窗口——FArea
窗体控件布局
根据需求分析,在区域管理的功能上,只需要做到增、删、查即可,不需要为区域管理添加其他功能,因此可将区域管理功能的界面设计如图所示界面:
业务逻辑的功能统计
根据界面的设计,我们小组们知道该功能需要:
查询出目前所有区域的信息
创建区域信息
修改区域信息
删除区域信息
操作逻辑
窗体加载成功后,通过查询功能将区域信息加载到内存,并在区域信息的数据源列表中的第一个位置新增具有“新建区域”信息的区域项目;
单击“创建”按钮,则调用业务逻辑层的创建方法,并传递区域名和区域描述两个文本框的内容;
单击“修改”按钮,则调用业务逻辑层的修改方法,并传递区域编号、区域名、区域描述;
单击“删除”按钮,则调用业务逻辑层的删除方法,并传递区域编号;
单击“取消”按钮,则使区域信息框隐藏,既Visible=false;
窗体加载时读取数据
双击窗体标题栏,进入代码编写界面,并在FArea_Load方法内书写如下代码:
IAreabll=newAreaBLL();
List<
TArea>
list=bll.GetList();
TAreaempty=newTArea();
empty.ID=Guid.Empty;
empty.Name="
新建区域"
empty.Description="
list.IndexOf(empty,0);
lstAreaList.Items.Clear();
foreach(TAreatmpinlist)
ListViewItemlvi=newListViewItem(tmp.Name);
lvi.SubItems.Add(tmp.ID.ToString());
lvi.SubItems.Add(tmp.Description);
lvi.ToolTipText=tmp.Name;
lvi.Tag=tmp;
lvi.ImageIndex=0;
lstAreaList.Items.Add(lvi);
双击ListView操作
双击ListView后,可能引发的三种情况:
代码如下:
if(lstAreaList.SelectedItems.Count!
=0)
TAreaarea=(TArea)lstAreaList.SelectedItems[0].Tag;
txtAreaName.Text=area.Name;
txtAreaDesc.Text=area.Description;
if(area.ID==Guid.Empty)
grpAreaInfo.Visible=true;
btnCreate.Enabled=true;
btnModify.Enabled=false;
btnDelete.Enabled=false;
btnCancel.Enabled=true;
grpAreaInfo.Tag=area;
txtAreaName.Text="
txtAreaDesc.Text="
else
btnCreate.Enabled=false;
btnModify.Enabled=true;
btnDelete.Enabled=true;
单击创建
单击创建后,由于需要与数据库进行交互,因此需要通过业务逻辑层的方法来创建。
在创建之前,需要对数据进行简单的验证,例如是否为空,数据是否合法等:
if(txtAreaName.Text=="
){MessageBox.Show("
区域名称不能为空!
);
return;
if(bll.Create(txtAreaName.Text,txtAreaDesc.Text))
MessageBox.Show("
区域新建成功!
grpAreaInfo.Visible=false;
区域新建失败!
单击修改
单击修改后,由于需要与数据库进行交互,因此需要通过业务逻辑层的方法来修改,在修改之前,需要对数据进行简单的验证,例如是否为空,数据是否有效等:
if(bll.Modify(((TArea)grpAreaInfo.Tag).ID,txtAreaName.Text,txtAreaDesc.Text))
区域修改成功!
区域修改失败!
单击删除
单击删除与修改相似,只是这里不再需要判断数据是否合法,只需要将ID传递给业务逻辑层即可:
if(MessageBox.Show(this,"
确定要删除该区域么?
"
删除"
MessageBoxButtons.OKCancel)==DialogResult.OK)
if(bll.Delete(((TArea)grpAreaInfo.Tag).ID))
区域删除成功!
区域删除失败!
单击取消
单击取消,只需要将GroupBox控件隐藏即可:
grpAreaInfo.Visible=false;
4、顾客管理窗口——FGuest
顾客管理窗口的界面与区域管理相似,同样应用ListView显示顾客数据,适用GroupBox收集和显示顾客信息数据,可见右图:
在顾客管理窗口的顾客信息GroupBox中,逻辑部分便是“顾客类型”选择后,应使对应的Panel处于可用状态,以及单击保存时,需要判断该顾客是需要新建,还是需要保存修改。
窗体加载
但在窗体加载过程中,需要为区域下拉框添加数据源:
IAreaarea=newAreaBLL();
cmbArea.DataSource=area.GetList();
cmbArea.DisplayMember="
Name"
双击ListView项目
切换RadioButton
可设计为:
单击个人家庭RadioButton时,第一个Panel可用,第二个Panel不可用;
单击个体商户RadioButton时,第一个Panel不可用,第二个Panel可用
privatevoidrdoHome_CheckedChanged(objectsender,EventArgse)
pnlHome.Enabled=true;
pnlShop.Enabled=false;
privatevoidrdoShop_CheckedChanged(objectsender,EventArgse)
pnlHome.Enabled=false;
pnlShop.Enabled=true;
单击保存
首先,判断双击项目是不是“新建顾客”的项目,如果是“新建顾客”的项目,则执行业务逻辑层中新建的方法,否则需执行修改的方法。
操作成功后隐藏Gr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 课程设计 报告 19661873
