熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

一印度學生Asp.net源碼分享討論

2013-11-13 10:21:31  來源: .NET編程 
    (本文原標題源碼程序分析所感——印度一個不可輕視的近鄰!)
    最近在國外網站晃悠搜集到了不少寶貝覺得不錯的就漢化調試一下發到aspx與大家分享一般代碼美洲和歐洲的朋友發布比較多這些朋友寫的有個特點那就是比較粗狂用的技術比較罕見或者前衛(也許是我掌握的膚淺)
    一直聽說印度的軟件業比較發達而且平民化程度也比較高我以前其實是不以為然的直到前天下載了一個叫做Timmy MJohn印度大學生朋友寫的程序才讓我改變了這個看法也深刻體會到了了印度軟件業扎實的基礎還是言歸正傳看看那個代碼吧是采用(C#)開發的一個大學課程管理系統是現在商用程序的一個雛形主要功能實現大學課程的搜索用戶注冊後可以自行添加課程可以通過後台管理大學以及所屬二級學院等面是程序抓圖(注已經liudao漢化調試)


下面是類結構圖

程序的功能方面實現起來並不是很輕松但是這位印度朋友(Timmy MJohn)實現起來思路清晰簡單明了不像好多朋友一樣一個簡單的程序弄得很復雜雲山霧罩的
MJohn使用的是面向對象開發我把幾個積累代碼給大家看看吧先看一下數據庫操作類
DataManagercs


namespace IndiaStudyChannelUtils
{
    /**//// <summary>
    /// Summary description for DataManager
    /// </summary>
    /// 由 liudao 翻譯整理
    /// 該源碼下載自(51aspx.com)
    public class DataManager
    {
        public DataManager()
        {
        }

        public static DataTable ExecuteQuery(string query)
        {
            string connectionString = SystemConfigurationConfigurationSettingsAppSettings[connectionString];
            SqlConnection connection = new SqlConnection(connectionString);
            connectionOpen();
            
            try
            {
                SqlDataAdapter adapter = new SqlDataAdapter(query connection);
                DataSet ds = new DataSet();
                adapterFill(ds);

                return dsTables[];
            }
            finally
            {
                if ( connectionState == ConnectionStateOpen )
                    connectionClose();
            }
        }


        public static void ExecuteNonQuery(string query)
        {
            string connectionString = SystemConfigurationConfigurationSettingsAppSettings[connectionString];
            SqlConnection connection = new SqlConnection(connectionString);
            connectionOpen();
            
            try
            {
                SqlCommand cmd = new SqlCommand();
                cmd = connectionCreateCommand();
                cmdCommandType = CommandTypeText;
                cmdCommandText = query;

                cmdExecuteNonQuery();
            }
            finally
            {
                if ( connectionState == ConnectionStateOpen )
                    connectionClose();
            }
        }

        public static object ExecuteScalar(string query)
        {
            string connectionString = SystemConfigurationConfigurationSettingsAppSettings[connectionString];
            SqlConnection connection = new SqlConnection(connectionString);
            connectionOpen();
            //
            try
            {
                SqlCommand cmd = new SqlCommand();
                cmd = connectionCreateCommand();
                cmdCommandType = CommandTypeText;
                cmdCommandText = query;

                return cmdExecuteScalar();
            }
            finally
            {
                if ( connectionState == ConnectionStateOpen )
                    connectionClose();
            }
        }
    }
}

  把常用的sql方法寫成一個類看起來非常清晰功能簡單大家常用的的SqlHelper類既有存儲過程又有sql語句實現的方法讓新手一看就暈(我現在偶爾暈暈)~~

通用函數類(字符串處理等)



namespace IndiaStudyChannelUtils
{
    /**//// <summary>
    /// Summary description for Utils
    /// </summary>
    /// 由 liudao 翻譯整理
    /// 該源碼下載自(51aspx.com)
    public class Utils
    {
        public Utils()
        {
        }

        /**//// <summary>
        /// This method removes some dangerous characters from the word to avoid Sql Injection attack
        /// </summary>
        /// <param name=s></param>
        /// <returns></returns>
        public static string MakeSafeWord(string s)
        {
            if ( s == null )
                return ;

            return sReplace( )Replace( );
        }

        /**//// <summary>
        /// This method checks if the passed user id is an adinistrator or if this is same as current user
        /// </summary>
        /// <param name=userId></param>
        /// <returns></returns>
        public static bool IsOwner(object userId)
        {
            if ( SystemWebHttpContextCurrentSession[CurrentUser] == null )
            {
                // There is no userid saved in session This means user has not logged in
                return false;
            }

            // Get current user from session
            string currentUser = SystemWebHttpContextCurrentSession[CurrentUser]ToString();

            // Get the admin user id from config file
            string adminUser = SystemConfigurationConfigurationSettingsAppSettings[AdminUser];

            if ( currentUser == adminUser )
            {
                // Current user is an administrator Administrator is Owner for all submissions
                return true;
            }

            if ( userId != null && userIdToString() == currentUser )
            {
                // Current user is same as the userId passed
                return true;
            }

            return false;
        }

    
        /**//// <summary>
        /// This method checks if the passed user id is an adinistrator or if this is same as current user
        /// </summary>
        /// <param name=userId></param>
        /// <returns></returns>
        public static bool IsAdministrator()
        {
            if ( SystemWebHttpContextCurrentSession[CurrentUser] == null )
            {
                // There is no userid saved in session This means user has not logged in
                return false;
            }

            // Get current user from session
            string currentUser = SystemWebHttpContextCurrentSession[CurrentUser]ToString();

            // Get the admin user id from config file
            string adminUser = SystemConfigurationConfigurationSettingsAppSettings[AdminUser];

            if ( currentUser == adminUser )
            {
                // Current user is an administrator Administrator is Owner for all submissions
                return true;
            }

            return false;
        }

        public static string FormatFileName(string s)
        {
            char[] chars = {# @ ? : \ \  / \\   < > & * ( ) !  ; :  + =};
            foreach (char c in chars)
            {
                s = sReplace(c );
            }
            
            s = sReplace(  );
            s = sReplace( );

            if ( sLastIndexOf() == (sLength  ) && sLength >  )
            {
                s = sSubstring( sLength  );
            }

            return s;
        }
    }
}
函數的調用也很簡單


        protected void Page_Load(object sender SystemEventArgs e)
        {
            string query = Select UserId Name Email DateJoined from Members;

            dgDataSource = UtilsDataManagerExecuteQuery(query);
            
            dgDataBind();
        }
    其他優秀的地方都體現在細節方面比如Tab菜單的切換驗證函數的處理等

    通過這個程序發現我們在軟件方面要向印度方面學習的確實太多太多我相信我們之間的差距並不是僅僅因為我們的母語不同而造成的我們的基礎軟件教育需要反思的太多——為了暫時的小利益而放棄長遠利益(特別是某些民間教育機構)軟件需求大環境需要反思的太多——有時候是為了編程而寫代碼感慨太多所以把這個源碼翻譯了一下特分享給大家來研究借鑒!

    ·去除了部分印度字樣
    ·使數據庫等等支持中文字符(修改排序規則否則中文會變成問號)
    ·翻譯了大部分菜單及控件名稱
文中有翻譯可笑或者不妥之處還望大家批評指正!(liudao)

該項目的完整源碼下載地址>>

譯者補注該源碼適合初學者高手勿下!一個菜鳥認為優秀的代碼可能也不足以說明一個國家軟件業的如何如何但是我們永遠抱著一個學習的虛心態度去對待可能對於我們這個年代的年輕人沒有什麼壞處的!
   沒想到文章發完以後引各位朋友這麼熱心的關注總結一下
 ·該代碼對於高手來說確實是沒有什麼優秀可研但是思路清晰使新手容易上手不雲山霧罩
 ·大家要抱著初學者的心態來看待這個源碼過來人想想自己當初走的路能分享一下經驗最好
 ·高手應該在這裡引領新手應該指出新手的不足並提出合理的見解不是指指點點(這些體現不出你的
 ·這裡提到的印度也許是一個理想的不存在的國度——一個需要我們去實現的良好軟件大環境


也許是本人太菜也許是本人目光短淺但一個不容置疑的事實——

印度!一個不可輕視的近鄰!


From:http://tw.wingwit.com/Article/program/net/201311/13367.html
    相關文章
      没有相关文章
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.