1. 程式人生 > >c#簡易學生資訊管理系統

c#簡易學生資訊管理系統

在近期的學習中,我們學習了泛型及泛型集合的概念和使用,泛型是c#中的一個重要概念,為了鞏固我們學習的成果,我們可以使用一個例項來進行練習

題目及要求

要求使用Windows窗體應用程式,製作出如上圖的介面,並實現增刪改查的功能

StuInfo類的編寫

同往常一樣,在編寫窗體的程式碼前,我們需要先編寫一個StuInfo類用來存放學生的資訊

 

 StuInfo.cs程式碼如下:

 1 using System;
 2 using System.Collections.Generic;
 3 using System.Linq;
 4 using System.Text;
5 using System.Threading.Tasks; 6 7 namespace cs學生資訊管理系統1121 8 { 9 class StuInfo 10 { 11 private string sno; //學號 12 private string name; //姓名 13 private string sclass; //班級 14 private string tele; //電話 15 16 //定義成員變數的索引器 17 public string
Sno 18 { 19 get { return sno; } 20 set { sno = value; } 21 } 22 public string Name 23 { 24 get { return name; } 25 set { name = value; } 26 } 27 public string SClass 28 { 29 get { return
sclass; } 30 set { sclass = value; } 31 } 32 public string Tele 33 { 34 get { return tele; } 35 set { tele = value; } 36 } 37 38 //建構函式 39 public StuInfo(string sno, string name, string sclass, string tele) 40 { 41 Sno = sno; 42 Name = name; 43 SClass = sclass; 44 Tele = tele; 45 } 46 } 47 }

主窗體程式碼的編寫

寫好了StuInfo類之後,我們終於可以開始窗體應用程式的編寫了,首先我們需要設定一下頁面佈局

頁面佈局及我的部分控制元件命名

接下來我們來編寫程式碼

 Form1.cs程式碼:

  1 using System;
  2 using System.Collections.Generic;
  3 using System.ComponentModel;
  4 using System.Data;
  5 using System.Drawing;
  6 using System.Linq;
  7 using System.Text;
  8 using System.Threading.Tasks;
  9 using System.Windows.Forms;
 10 
 11 namespace cs學生資訊管理系統1121
 12 {
 13     public partial class Form1 : Form
 14     {
 15         //宣告值為StuInfo型別資料的泛型字典StuDic
 16         Dictionary<string, StuInfo> StuDic = new Dictionary<string, StuInfo>();
 17 
 18         //顯示資料方法
 19         private void FillGrid(Dictionary<string, StuInfo> dic)
 20         {
 21             //如果資料網格中沒有任何元素,則初始化
 22             if(dataGridViewStuInfo.ColumnCount == 0)
 23             {
 24                 //初始化一個新列
 25                 DataGridViewTextBoxColumn col_sno = new DataGridViewTextBoxColumn();
 26                 col_sno.HeaderText = "學號";  //設定標題
 27                 col_sno.DataPropertyName = "Sno";   //設定資料繫結文字
 28                 col_sno.Name = "sno";   //設定該列的名字
 29 
 30                 DataGridViewTextBoxColumn col_name = new DataGridViewTextBoxColumn();
 31                 col_name.HeaderText = "姓名";
 32                 col_name.DataPropertyName = "Name";
 33                 col_name.Name = "name";
 34 
 35                 DataGridViewTextBoxColumn col_class = new DataGridViewTextBoxColumn();
 36                 col_class.HeaderText = "班級";
 37                 col_class.DataPropertyName = "SClass";
 38                 col_class.Name = "class";
 39 
 40                 DataGridViewTextBoxColumn col_tele = new DataGridViewTextBoxColumn();
 41                 col_tele.HeaderText = "電話";
 42                 col_tele.DataPropertyName = "Tele";
 43                 col_tele.Name = "tele";
 44 
 45                 //向資料網格控制元件中加入我們剛才定義的列
 46                 dataGridViewStuInfo.Columns.Add(col_sno);
 47                 dataGridViewStuInfo.Columns.Add(col_name);
 48                 dataGridViewStuInfo.Columns.Add(col_class);
 49                 dataGridViewStuInfo.Columns.Add(col_tele);
 50             }
 51             //宣告資料來源繫結物件
 52             BindingSource bs = new BindingSource();
 53             bs.DataSource = dic.Values; //將我們資料字典中的元素繫結到bs中
 54             dataGridViewStuInfo.DataSource = bs;    //將bs中的資料與資料網格控制元件繫結
 55         }
 56 
 57         public Form1()
 58         {
 59             InitializeComponent();
 60             this.Text = "學生資訊管理系統";
 61             PanelEdit.Visible = false;  //將編輯面板隱藏
 62 
 63             //定義初始的資料
 64             StuInfo zhang = new StuInfo("001", "張三", "1601", "18096471357");
 65             StuInfo luo = new StuInfo("002", "羅輯", "1503", "13968743218");
 66             StuInfo sun = new StuInfo("003", "孫雪", "1704", "13579314567");
 67             StuInfo wang = new StuInfo("004", "王萊", "1605", "18034976521");
 68 
 69             //將我們定義的資料加入到資料字典中
 70             StuDic.Add(zhang.Sno, zhang);
 71             StuDic.Add(luo.Sno, luo);
 72             StuDic.Add(sun.Sno, sun);
 73             StuDic.Add(wang.Sno, wang);
 74 
 75             FillGrid(StuDic);   //顯示資料
 76         }
 77 
 78         //資訊查詢方法
 79         private void ButtonQuery_Click(object sender, EventArgs e)
 80         {
 81             PanelEdit.Visible = false;  //查詢資料時關閉編輯面板
 82             //如果輸入框中沒有輸入資料,則預設顯示所有資料
 83             if(textBoxQuery.Text == "")
 84             {
 85                 FillGrid(StuDic);
 86                 return;
 87             }
 88             //若找不到使用者要查詢的學生,則彈出錯誤提示
 89             if(!StuDic.ContainsKey(textBoxQuery.Text))
 90             {
 91                 MessageBox.Show("查無此人!", "錯誤",
 92                     MessageBoxButtons.OK, MessageBoxIcon.Error);
 93                 return;
 94             }
 95 
 96             StuInfo s = StuDic[textBoxQuery.Text];  //找出對應的學生資訊
 97             //建立一個新的資料字典,用於存放查詢的結果
 98             Dictionary<string, StuInfo> dic = new Dictionary<string, StuInfo>();
 99             dic.Add(s.Sno, s);
100             FillGrid(dic);  //顯示資料
101         }
102 
103         //資訊刪除方法
104         private void ButtonDel_Click(object sender, EventArgs e)
105         {
106             PanelEdit.Visible = false;  //刪除資料時關閉編輯面板
107             //如果找不到使用者要刪除的資料,報錯
108             if(!StuDic.ContainsKey(textBoxQuery.Text))
109             {
110                 MessageBox.Show("您要刪除的元素不存在!", "錯誤",
111                     MessageBoxButtons.OK, MessageBoxIcon.Error);
112                 return;
113             }
114 
115             StuDic.Remove(textBoxQuery.Text);   //刪除資料
116             FillGrid(StuDic);   //顯示資料
117         }
118 
119         //修改資料方法
120         private void ButtonEdit_Click(object sender, EventArgs e)
121         {
122             if(!StuDic.ContainsKey(textBoxQuery.Text))
123             {
124                 MessageBox.Show("您要修改的資料不存在!", "錯誤",
125                      MessageBoxButtons.OK, MessageBoxIcon.Error);
126                 return;
127             }
128 
129             PanelEdit.Visible = true;   //修改資料時開啟編輯面板
130             textBoxStuNo.Enabled = false;   //學號不允許修改
131 
132             //新建物件儲存要修改的元素
133             StuInfo s = StuDic[textBoxQuery.Text];
134 
135             //將資料分別放到各個輸入框中
136             textBoxName.Text = s.Name;
137             textBoxClass.Text = s.SClass;
138             textBoxStuNo.Text = s.Sno;
139             textBoxTele.Text = s.Tele;
140         }
141 
142         //新增資料方法
143         private void ButtonAdd_Click(object sender, EventArgs e)
144         {
145             //將所有輸入框中的資料清零
146             textBoxStuNo.Text = "";
147             textBoxName.Text = "";
148             textBoxClass.Text = "";
149             textBoxTele.Text = "";
150 
151             PanelEdit.Visible = true;   //新增資料時開啟編輯面板
152             textBoxStuNo.Enabled = true;    //啟用學號輸入框
153         }
154 
155         //編輯面板區域的確定按鈕事件
156         private void ButtonOK_Click(object sender, EventArgs e)
157         {
158             //實行新增方法時
159             if(textBoxStuNo.Enabled)
160             {
161                 //要新增的學號已存在時,發出警告
162                 if(StuDic.ContainsKey(textBoxStuNo.Text))
163                 {
164                     MessageBox.Show("學號已存在!", "警告",
165                          MessageBoxButtons.OK, MessageBoxIcon.Warning);
166                     return;
167                 }
168                 //填寫資訊不全時,發出警告
169                 if(textBoxStuNo.Text == "" || textBoxName.Text == ""
170                     || textBoxClass.Text == "" || textBoxTele.Text == "")
171                 {
172                     MessageBox.Show("請將資訊填寫完整!", "警告",
173                          MessageBoxButtons.OK, MessageBoxIcon.Warning);
174                     return;
175                 }
176 
177                 //新建物件s用於存放待新增的資料
178                 StuInfo s = new StuInfo(textBoxStuNo.Text, textBoxName.Text,
179                     textBoxClass.Text, textBoxTele.Text);
180                 StuDic.Add(s.Sno, s);   //將資料新增進資料字典
181             }
182             //實行修改方法時
183             else
184             {
185                 if(textBoxName.Text == "" || textBoxClass.Text == "" || textBoxTele.Text == "")
186                 {
187                     MessageBox.Show("請將資訊填寫完整!", "警告",
188                          MessageBoxButtons.OK, MessageBoxIcon.Warning);
189                     return;
190                 }
191 
192                 //先將資料刪除再新增來實現修改
193                 StuDic.Remove(textBoxStuNo.Text);
194 
195                 //新建物件s用於存放待新增的資料
196                 StuInfo s = new StuInfo(textBoxStuNo.Text, textBoxName.Text,
197                     textBoxClass.Text, textBoxTele.Text);
198                 StuDic.Add(s.Sno, s);   //將資料新增進資料字典
199             }
200 
201             FillGrid(StuDic);   //顯示資料
202 
203             //將所有輸入框中的資料清零
204             textBoxStuNo.Text = "";
205             textBoxName.Text = "";
206             textBoxClass.Text = "";
207             textBoxTele.Text = "";
208 
209             PanelEdit.Visible = false;  //關閉編輯面板
210         }
211 
212         //取消按鍵
213         private void ButtonCel_Click(object sender, EventArgs e)
214         {
215             //將所有輸入框中的資料清零
216             textBoxStuNo.Text = "";
217             textBoxName.Text = "";
218             textBoxClass.Text = "";
219             textBoxTele.Text = "";
220 
221             PanelEdit.Visible = false;  //關閉編輯面板
222         }
223     }
224 }

 

實際效果

查詢

刪除

修改

新增