【前言】
求職之路不容易,實力弱的渣渣倍感壓力,.net方向學習主要還是在一家IT培訓機構系統學習的,說不上在那學的多好,但是基礎的東西都有了一定的了解,算是稍微入了門了吧,培訓結束就是各種網投,各種找工作,最近一家單位面試說要帶上作品,無奈培訓期間做的東西要么沒保存,要么沒完成好,算了自己用以前學的東西,寫點簡單的玩意吧,算是復習下之前學的東西,不過這個過程中還是碰到問題,學到了點東西。今天總結下這個東西吧。
【東西簡介】
1 登錄界面
之前培訓期間,用三層架構寫過一個網絡教育平台(表示現在三層架構都不知道啥了),軟件主要分三種用戶角色,管理員主要是對老師的一些管理,增刪查改吧(簡單的數據操作)。
這里主要處理代碼就是,用戶名密碼的驗證。
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 管理員模塊
簡單的數據庫設計,簡單的信息反饋,主要的話就是初始化時把數據庫中數據填充上去,管理員操作主要是 查看教師列表和添加教師用戶。這些信息是通過id來查詢得到的,這個id就是登陸窗口中的用戶名。
這邊涉及到的一個知識點是,winform窗體與窗體之間的傳值,網上了解到兩種方法。
方法一:定義全局變量,我這里就是在static void Main(){}中 定義了一個全局變量 public static string userName = string.Empty; 然后其他form也可以用這個變量。
方法二:在form的構造函數中傳值實現,我認為這個好一點吧。當修改信息時,需要調出一些信息就是通過這么來寫的
…
【添加教師用戶】,又是彈出一個對話框,填完相關信息,點保存,保存到數據庫就行了。
年級班級聯動那塊內容,主要是通過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來展示教師數據的,以及簡單的查找。
這里主要學到一個知識點是,對datagridview中數據選中后彈出一個選擇框,選擇執行操作。
用到的控件是contextMenuScript,把該控件綁定到datagridview上去,然后增加幾個選項,就和button一樣實現相應功能就行了。
修改操作,重新調用之前新增老師的窗口來用只是要在選中行中獲取到Teacherid,然后通過id在初始化時候把數據庫中相應的值填充到form窗體上,這里用的是通過構造函數傳值。
哎,估計是代碼沒寫對,兩個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就可以了。
接下來還有一個教師模塊和學生模塊就沒什么新東西了,老師模塊主要是對學生的管理增刪查改,以及學生成績的錄入,學生模塊主要是登錄上去看看自己的信息和成績之類的。
【小結】 一開始總是想寫的好點的,想有哪些哪些功能,但是寫着寫着才發現就這么點水平,哎,不管怎么樣,寫點這樣的小玩意復習知識點比看書什么的要好一點,中間碰到一些問題,解決了又學習到了新的東西。 最近幾天,接二連三的面試,還是看看面試題,洗洗睡吧。





