mis系統,就是管理資訊系統,是企業管理思想的體現。乙個mis系統做得好不好,不僅在於it部門的水平有多高,更在於乙個企業的管理先不先進,規不規範,企業的高層對mis系統得認識有多深。
當然,有乙個好的cio,乙個好的系統分析員,乙個好的架構師,乙個好的資料設計師,3~5個訓練有素,基本功過硬的程式設計師(至少要能熟練運用陣列,鍊錶,佇列,堆疊,要知道遞規,知道怎樣把遞規演算法改為非遞規演算法,知道樹,二叉查詢樹,知道窮舉法,貪婪法等),再加上乙個美工,那是再好不過了。可惜,大部分的企業沒有這些人,或者這些人不全(至少我知道的企業如此,軟體公司除外),都是乙個人頂幾個人用。像我,乙個人既是系統分析員(直接和使用者打交道,搞清楚他們的需求),又是架構師(架構不好,那以後的修改可是非常痛苦的,不要認為使用者的要求的是不變,有時候,乙個星期,他就要變3次),又是做資料設計(搞mis系統,如果不熟悉sql,那可說不過去),又是編碼(分內之事),又作介面設計(雖然難看,但是沒人,你就得抗),系統測試(你寫的程式你不測試,誰測試?),有時還得給人裝裝機,換換硒鼓,調調ip。所以工作了好幾年,但水平一直提不高,也就是弄弄資料庫,見幾個表,然後開啟delphi,新建乙個表單,拉幾個比如dbedit之類的東東,在設定一下datasource,放幾個按鈕,寫幾行insert,edit,post之類的**。說是高階打字員,一點也不為過。
就這樣敲了幾年的begin,end,insert,edit,post,select,update,delete,發現了乙個規律,就是我每天辛辛苦苦敲的這些東東,其實完全可以敲一次就可以了,其他地方拉過就是了,不就是對資料的增,刪,改麼?哪管你審核,核准,還不就是對資料中乙個欄位的修改?什麼許可權不許可權,還不就是設定一下,讓你看不看得到某個欄位的內容?這樣一想,居然覺得自己以前好傻。
所有的這些,最終都是通過sql語句實現的,整個過程可以這樣描述。
首先,使用者開始使用系統,於是我根據他/她的使用者名稱select field1,field2,... from table where .... order by ....,然後使用者開始新增或修改資料,新增時,我 insert into table(field1,field2,field3....) values(value1,value2,value3...),修改時,我update table set field1=value1,field2=value2...where ....刪除時,我delete from table where ....
再分析,發現這些select,update,delete們,也有共同的特點,就是都是由動作,物件,條件組成,比如,select * from table where conditon1 order by sequence,update table set field1=value where condition,delete from table where condition。
至於相關的業務流程,無非就在insert,update,delete之前作判斷,是否exists某種condition,如果存在,就再做相應的insert,update或delete,或者讓這些insert,update,delete動作不被執行。
如果將這些功能封裝為乙個或幾個類,其他地方只要呼叫這個類或者幾個類,那不就省事多了?說幹就幹,經過兩天的冥思苦想,基於sql server 2005,c#2.0,寫了下面的幾行**,我把它做為乙個檔案,dbwr.cs。
////namespace eweai.business.inte***ces.it}//
////#define debug
using system;
using system.collections;
using system.data;
using system.data.sqlclient;
using system.text;
using eweai.business.inte***ces.it;
namespace eweai.data
private void initsetting()
private dataset dbsetting = new dataset("dbsetting");
private string getdbcononectionstring()
///
/// 資料讀寫模組的唯一例項
///
public static dbwr instance
}private static dbwr _instance = null;
#endregion
#region 資料庫聯接
///
/// 資料庫連線字串
///
return _connectionstring;
#endif}}
private string _connectionstring = null;
///
/// 資料庫連線
///
public sqlconnection connection
}#endregion
#region 資料讀寫
///
/// 構建某個表的選擇列表
///
///
///
///
///
///
///
///
public string buildselectsql(string user, string tablename, string where, string order,
string collist/*null返回所有字段*/)
//如果只返回部分字段
if (collist != null)
if (j == collist.length)
continue;
}coltable.dispose();
return result.tostring();
}///
/// 提取某個表的可以選擇字段
///
///
///
///
private datatable getfieldlist(string tablename, string user)
public void execsql(string sql)
finally
public datatable readdata(string sql)
finally
}public datatable readdata(string sql,ref datatable table)
finally
}public datatable getstruct(string sql)
finally
}public object getsinglevalue(string sql)
finally
}public string update(string asql, datatable table)}}
catch (exception e)
finally
return result;
}public string update(string asql, datarow row));}
}}catch (exception e)
finally
return result;
}private hashtable getadapter(hashtable sqls,sqlconnection con)
return result;
}public string update(dataset businessdata,hashtable sqls)
catch (exception cex)
}}
action.commit();
}catch (exception e)
finally
return null;
#endregion}}
一步一步建立我的MIS系統(一) 前言
當前的企業mis系統,許多都是兩層設計,將業務邏輯寫在介面,或者寫在資料庫,或者介面與資料中都寫。通俗的講,就是從控制項欄拉幾個控制項放到form,然後在這些控制項的事件裡寫 對使用者的行為進行控制,或者在後台資料庫作某些控制,使資料符合業務邏輯。以這種方式建立系統,在開發的時候,是非常快速的。但隨...
LingdotEMP的一步一步(1)
2007.10.18 夜 emp終於顫巍巍的立起來了。這許多天的努力,終於看到一點成果,心裡畢竟還是很高興的。想以前在學校的那些日子,雖然也很忙碌,卻不曾這樣做如此遠大規劃的事情。可能也是發展的乙個歷程吧。現在的emp還很不穩定。讓我想起蜘蛛俠3裡面的沙人,剛要站起來,卻又變成散沙,每一次起來都似乎...
一步一步建立GStreamer外掛程式
1 獲取建立外掛程式的模板gst template 方法一 cvs cvs d pserver anoncvs cvs.freedesktop.org cvs gstreamer login password root的密碼 cvs z3 d pserver anoncvs cvs.freedesk...