winform簡易學生管理系統 小結


【前言】

     求職之路不容易,實力弱的渣渣倍感壓力,.net方向學習主要還是在一家IT培訓機構系統學習的,說不上在那學的多好,但是基礎的東西都有了一定的了解,算是稍微入了門了吧,培訓結束就是各種網投,各種找工作,最近一家單位面試說要帶上作品,無奈培訓期間做的東西要么沒保存,要么沒完成好,算了自己用以前學的東西,寫點簡單的玩意吧,算是復習下之前學的東西,不過這個過程中還是碰到問題,學到了點東西。今天總結下這個東西吧。

 

【東西簡介】

1 登錄界面

image

      之前培訓期間,用三層架構寫過一個網絡教育平台(表示現在三層架構都不知道啥了),軟件主要分三種用戶角色,管理員主要是對老師的一些管理,增刪查改吧(簡單的數據操作)。

    這里主要處理代碼就是,用戶名密碼的驗證。

   1:   private bool isExist(string sql,string uname,string upwd)
   2:          {
   3:              DataTable dt = new DataTable();
   4:              dt = SqlHelper.SqlHelperService.ExecuteQueryToTable(sql);
   5:              if (dt.Rows.Count > 0)
   6:              {
   7:                  string pwd = dt.Rows[0][0].ToString();
   8:                  if (pwd == upwd)
   9:                  {
  10:                      return true;
  11:                  }
  12:                  else
  13:                  {
  14:                      return false;
  15:                  }
  16:              }
  17:              else
  18:              {
  19:                  return false;
  20:              }
  21:          }

 

DataTable 用慣了,就知道啥表格讀取都用這個來完成,以至於今天筆試題中的DataSet數據讀取都寫不來,真心Orz..

          對了,這里還有一個問題就是,登錄后轉到一個新的winform(),管理員/教師/學生窗口,要關掉當前的登錄窗口。直接用this.Close(),結果都關掉了,然后網上建議那么用this.Hide(),把登錄窗口給隱藏掉的方法,這樣雖然在效果上是關掉了登錄窗口,但是實際上Login這個窗口沒有關掉,可以在資源管理器中看出,這樣的話,下一次運行之前,總是得去資源管理器中結束掉Login.exe然后再運行,不是很好。

       后來看到網上指導,可以為新窗口重新開一個線程,然后關掉登錄窗口,線程進程這東西聽起來就略高端,以后必須得學,今天就先拿來用了。

  Thread th = new Thread(func => { Application.Run(new Manager()); });

th.Start();

  this.Close();

 

2 管理員模塊

image

        簡單的數據庫設計,簡單的信息反饋,主要的話就是初始化時把數據庫中數據填充上去,管理員操作主要是 查看教師列表和添加教師用戶。這些信息是通過id來查詢得到的,這個id就是登陸窗口中的用戶名。

  這邊涉及到的一個知識點是,winform窗體與窗體之間的傳值,網上了解到兩種方法。

方法一:定義全局變量,我這里就是在static void Main(){}中 定義了一個全局變量   public static string userName = string.Empty; 然后其他form也可以用這個變量。

方法二:在form的構造函數中傳值實現,我認為這個好一點吧。當修改信息時,需要調出一些信息就是通過這么來寫的

          

     【添加教師用戶】,又是彈出一個對話框,填完相關信息,點保存,保存到數據庫就行了。

image

       年級班級聯動那塊內容,主要是通過comboBox控件的TextChange()來進行對應的數據查詢及綁定的一個聯動效果,但好像第一次展示時候一年級對應的幾個班級沒有展現出來,可能是第一次打開一年級沒有變動,沒觸發到TextChange(),這個問題以后看看怎么弄好一點,Mark一下。

   1:   private void cmbGrade_TextChanged(object sender, EventArgs e)
   2:          {
   3:              string value = cmbGrade.SelectedValue.ToString();
   4:              string sql = string.Format("select Cname from Class where Gradeid='{0}'", value);
   5:              DataTable dt = new DataTable();
   6:              dt = SqlHelper.SqlHelperService.ExecuteQueryToTable(sql);
   7:              cmbClass.DataSource = dt;
   8:              if (dt.Rows.Count > 0)
   9:              {
  10:                  cmbClass.DisplayMember = "Cname";
  11:              }
  12:          }
 

      感覺好多控件的數據綁定都是XXX.DataSourse = dt; 還是學的太少太不夠了,ADO.NET的幾個對象都掌握不夠啊,還有就是對comboBox等控件了解不夠吧。

【查看教師列表】,教師列表用的datagridview來展示教師數據的,以及簡單的查找。

image

       這里主要學到一個知識點是,對datagridview中數據選中后彈出一個選擇框,選擇執行操作。

用到的控件是contextMenuScript,把該控件綁定到datagridview上去,然后增加幾個選項,就和button一樣實現相應功能就行了。

修改操作,重新調用之前新增老師的窗口來用只是要在選中行中獲取到Teacherid,然后通過id在初始化時候把數據庫中相應的值填充到form窗體上,這里用的是通過構造函數傳值。

image

哎,估計是代碼沒寫對,兩個comboBox上面的值沒有填充上去,找個時間專門看看comboBox的用法,然后寫篇博文吧,Mark一下。

給該窗體的構造函數傳個值,如果是點擊新增按鈕彈出來的,那么該值為空,不去填充數據,如果是修改彈出來的,那么把獲取到id值傳過去,然后填充數據。Web項目中好像也是這么做的。

修改:

   1:   private void 修改ToolStripMenuItem_Click(object sender, EventArgs e)
   2:          {
   3:              string id = dataGridView1.SelectedCells[0].Value.ToString();
   4:              AddTeacher tec = new AddTeacher(id);
   5:              tec.Show();
   6:             
   7:          }

傳值

   1:    public AddTeacher(string id)
   2:          {
   3:              InitializeComponent();
   4:              
   5:              //如果傳入的id非空 就是代表修改操作,此時根據id加載數據
   6:              if (id != null)
   7:              {
   8:                  ChaXun(id);
   9:              }
  10:              else
  11:              {
  12:                  GetData();
  13:              }
  14:            
  15:           
  16:          }
 
 
如果是新增彈出來的話,將id設為empty就可以了。
 
 
接下來還有一個教師模塊和學生模塊就沒什么新東西了,老師模塊主要是對學生的管理增刪查改,以及學生成績的錄入,學生模塊主要是登錄上去看看自己的信息和成績之類的。
 
 
         【小結】 
          一開始總是想寫的好點的,想有哪些哪些功能,但是寫着寫着才發現就這么點水平,哎,不管怎么樣,寫點這樣的小玩意復習知識點比看書什么的要好一點,中間碰到一些問題,解決了又學習到了新的東西。 
          最近幾天,接二連三的面試,還是看看面試題,洗洗睡吧。  
         
    
 

 

 

 

 

         


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM