c#簡易學生資訊管理系統
阿新 • • 發佈:2018-11-21
在近期的學習中,我們學習了泛型及泛型集合的概念和使用,泛型是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 stringSno 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 { returnsclass; } 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 }
實際效果
查詢
刪除
修改
新增