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 }

实际效果

查询

删除

修改

添加

原文地址:https://www.cnblogs.com/sunriseblogs/p/9997911.html

时间: 2024-11-10 02:58:57

c#简易学生信息管理系统的相关文章

基于数据库MySQL的简易学生信息管理系统

通过这几天学习Mysql数据库,对其也有了基本的了解,为了加深印象,于是就写了一个最简易的学生信息管理系统. 一:基本要求 1.通过已知用户名和密码进行登录: 2.可以显示菜单: 3.可以随时插入学生信息: 4.可以删除学生信息: 5.可以通过学生姓名或学号显示学生所有信息: 还可以修改学生信息,添加学生表格属性等等,,,这些实现都基本类似上述的(这些不想写了,最简易的学生信息管理系统): 二:步骤 1.写一个sql脚本,包括创建数据库,使用数据库,创建学生信息表格,插入大部分学生信息. stu

java 学习日记---------简易学生信息管理系统

转眼间,开学六周过去了,我也学习java这么长时间了.在此国庆期间闲来无事,做个小系统玩玩. -------------student类封装----------- package StudentSystem; public class student extends user{ private int stuId; private String stuName; private String stuBirthday; public int getStuId() { return stuId; }

【填坑中】学生信息管理系统

目标:简易的学生信息管理系统 功能: -建立学生档案,管理.维护. --录入.更改信息. -成绩管理,查询.修改学生成绩. --根据课程. -课程管理,添加.删除.修改. -班级设置,添加.删除.修改. -分配权限,保证安全性. --不同人员不同权限. 模块图: https://www.processon.com/view/link/56973106e4b038369d270acb 模块设计: -登录模块 --输入用户名 和 密码,如果匹配,则进入主控平台:否则给出错误提示.不明文保存密码. -

Winform之学生信息管理系统登陆窗体

好吧,对这块的知识学习早已期待已久,感觉学习的进度还是慢了,最近一直在学习Winform,不得不说一些登陆窗体的设计,这几天算是小有收获,自己也看了许多这方面的知识,知道了要想做学生信息管理系统是一个漫长的过程,但是从今天起就来慢慢地进行学生信息管理系统的构建,此外还用到数据库的知识,打算着自己开始学数据库的知识,今天就来看看学生信息管理系统登录窗口的设计.下面图片的是样例: 这方面的知识还是基于C#语言和.NET Framework平台的.自己所用的还是熟悉的开发环境VS2012,感觉VS20

简易学生成绩管理系统

做了一个小型的成绩管理系统.主要代码如下: /* * 功能:简易学生成绩管理系统 */package day7; import java.util.Scanner; public class HomeWork { static Scanner scan=new Scanner(System.in); static String[] user=new String[2]; static String[] password=new String[2]; static String[] name=ne

学生信息管理系统修改

北京工业大学耿丹学院 c语言设计课程报告   课程设计名称:高级语言程序设计 专业班级:计算机科学与技术1 姓名:吴双 学号:150809201   2016年5月10日 一 对c语言指针链表的体会 ------------------------ 二 修改学生信息管理系统 ------------------------ 三 体会 ------------------------ 一 对c语言指针链表的体会 1.指针 简单来说,指针是一个存储计算机内存地址的变量. 用 int *ptr 这种形

用基本数据结构修改后的学生信息管理系统(增删改查)

package com.xt.student.system; //创建学生类存放信息 public class Student {//声明变量private String stuNo; private String stuName; private String gender; private int age; private int score; //对变量进行封装 public String getStuNo() {return stuNo;} public void setStuNo(St

学生信息管理系统

根据资料显示,那么,如果写一个字符串到一个文件中,是什么方式呢?显示到屏幕上是默认的输出文件,如果是硬盘中的一个文件,首先要打开一个文件,然后才能往里写,那么就要告诉程序这个文件在什么地方,按照什么样的方式打开(读.写.读和写.添加.覆盖等),然后打开后要给这个打开的文件一个符号(指针变量),表示后续的读和写都是针对这个文件的,而不是到屏幕的,这个指针变量以后就代表了文件自身了. 在学生信息管理系统中,需要同时保存一个学生的姓名,性别,年龄等信息,那么设置变量保存很多同学的这些信息就有点不太方便

【学生信息管理系统】EOF 和 BOF

敲完学生信息管理系统时,在删除信息的时候,经常会出现下图这样的错误,遇到问题就要解决问题.经过查阅理解了记录集Recordset的EOF和BOF属性,用这两个属性可以知道记录集中是否有信息存在. EOF和BOF属性 BOF 指示当前记录位置位于 Recordset 对象的第一个记录之前. EOF 指示当前记录位置位于 Recordset 对象的最后一个记录之后. 返回值:BOF 和 EOF 属性返回布尔型值. 使用 BOF 和 EOF 属性可确定Recordset 对象是否包含记录,或者从一个记