汽车零部件销售管理系统设计与实现 下载本文

public DataTable BindPurchaseInfo() {

DataTable myDataTable = new DataTable();

SqlConnection mySqlConnection = new SqlConnection(); mySqlConnection.ConnectionString = strcon;

。。。。。。

try {

mySqlConnection.Open();

SqlCommand mySqlCommand = new SqlCommand(sqlQuery, mySqlConnection); SqlDataAdapter mySqlDataAdapter = new SqlDataAdapter(); mySqlDataAdapter.SelectCommand = mySqlCommand; mySqlDataAdapter.Fill(myDataTable); }

。。。。。。 return myDataTable;

}

UI层触发gridview单击事件的代码:

首先在gridview的RowDataBound事件中判断当前点击的行是否为数据行,当满足条件时再通过代码来设置gridview的一些属性从而触发gridview的SelectedIndexChange事件取出点击行的值。

protected void gvProducts_RowDataBound(object sender, GridViewRowEventArgs e) {

if(e.Row.RowType==DataControlRowType.DataRow) {

switch (e.Row.RowType) {

case DataControlRowType.DataRow:

e.Row.Attributes[\] = \; #region //点击行触发SelectedIndexChanged事件

PostBackOptions myPostBackOptions = new PostBackOptions(this); myPostBackOptions.AutoPostBack = false; myPostBackOptions.PerformValidation = false;

myPostBackOptions.RequiresJavaScriptProtocol = true;

String evt = Page.ClientScript.GetPostBackClientHyperlink(sender as

GridView, \ + e.Row.RowIndex.ToString());

e.Row.Attributes.Add(\, evt); #endregion break; }

2.销售管理,如图5-7所示。

图5-7 销售管理

订单的处理就是对系统未处理的订单进行销售出库,是我们整个系统的业务中由采购到销售的必要环节,其中当我们进入销售管理界面,通过录入销售出库单来进行销售出库,当客户退货时我们还可以进行销售退货,在录入销售出库单时我们只需要将要处理的订单号输入,系统即可自动加载该订单的详细信息(如图5-8所示),销售退货的操作也一样,简单方便。

图5-8 销售出库单

最后当我们核对好相关的信息后点击保存单据信息,如果信息完整且正确后即完成该订单的处理。

主要实现代码如下: BU层添加方法代码:

public int AddOutputProductInfo(string ProductID,string paramOutputProductID,string

paramQuantity,string paramPayable,string paramPaid,string paramDifference,string paramCustomer,string paramRemark,string paramMainPerson,string paramDate)

{

int returnValue = 0;

SqlConnection mySqlConnection = new SqlConnection(); mySqlConnection.ConnectionString = strcon; 。。。。。。

sqlQuery +=\

+ paramQuantity + \ +ProductID+ \

。。。。。。

return returnValue; }

UI层调用代码:当我们点击保存按钮后,首先调用CheckInput()方法判断信息是否填写完整,最后通过for循环检索出gridview中的产品信息并取出赋值后,再调用BU层的添加方法AddOutputProductInfo()批量添加到数据库中。

protected void btnSave_Click(object sender, EventArgs e) {

this.Alert(\确认保存单据信息?\, \提醒!\); if(!CheckInfo()) {

return; }

。。。。。。

if (this.gvMessage.Rows.Count > 0) {

for (int i = 0; i < this.gvMessage.Rows.Count; i++) {

。。。。。。

if(mySalesOutputInfo.CheckExits(paramOutputProductID)>0)

{

this.Alert(\已处理的订单\, \系统提示!\); return; }

count += mySalesOutputInfo.AddOutputProductInfo(paramProductID,

paramOutputProductID, paramQuantity, paramPayable, paramPaid, paramDifference,

paramCustomer, paramRemark, paramMainPerson, paramDate);

sum += paramTotalMoney; }

if (count/2 == this.gvMessage.Rows.Count) {

。。。。。。

this.txtWarehouse.Value = \;

this.gvMessage.DataSource = myDataTable; this.DataBind(); } }

}

六、系统测试

(一)所遇问题

系统的完成,需要经过这么几步,首先根据需求把大致的框架和模块设计好,然后根据系统要求写代码,接着是调试程序,最后完善总结。其中最重要的就是之前的设计和系统的调试。在此次毕业设计中,给我印象最深的就是系统的调试。在调试过程中,遇到了不少的问题,经过自己不断的查阅资料,老师的指导,小组的讨论后,这些问题都逐渐得到了解决,现将整个的调试过程总结如下:

1.理清整个程序的设计思路,具有严谨的逻辑思维,按部就班是调试程序的首要条件。 2.按模块逐个进行调试即将其他模块先作为注释查看此模块的容是否正确,以此类推各个击破。

3.通过信息框(resgister进行注册)检查也是一种很有效的办法。

在编程过程中虽然遇到了不少困难,但在老师、同学、小组及自己的反复研究下,最后问题都得到了解决。在解决问题的过程中自己的收获不小,同样的问题也许在不同的模块中会重复出现,通过上次调试中的所获,这次我就可以轻松解决。克服一个难题的喜悦是无法用言语可以表达的,它让我感受到了真正学到知识的那种充实感。

(二)解决的方法

在测试之初,由于数据库中的数据都是刚开始编程时随便输入的,一点实用性也没有,所以我又把数据库中的数据全部清理了一下,输入了一些真实可用的数据,以便完成后面的数据测试。

在测试过程中,会出现很多bug, 我们通过小组的讨论后再自己修改,逐个地解决。