失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > C#编程学习31:学生信息管理系统项目实战-上(VS+SQL server )

C#编程学习31:学生信息管理系统项目实战-上(VS+SQL server )

时间:2023-10-08 16:12:50

相关推荐

C#编程学习31:学生信息管理系统项目实战-上(VS+SQL server )

目录

1 界面搭建

1.1 修改默认的Form1窗体为frmMain

1.2 添加MenuStrip、ToolStrip和StatusStrip控件

1.3 为不同控件设置相同的方法

2 数据维护窗体开发

2.1 创建数据集

2.2 frmDepartment.cs界面设计

2.3 班级数据库的维护

2.4学生表的维护

2.5课程表界面设计

3 登陆界面设计

3.1 创建frmLogin窗体

3.2全局类

3.3 登录代码

3.4 在主窗体前启动登录窗体

4 小结

1 界面搭建

1.1 修改默认的Form1窗体为frmMain

上述操作会自动修改启动窗体,优于将原生的Form1窗体删除,然后通过新建窗体的方式

1.2 添加MenuStrip、ToolStrip和StatusStrip控件

构建如下界面:

1.3 为不同控件设置相同的方法

工具条和菜单栏的退出执行相同的代码,都是退出系统

对于菜单栏的退出,添加点击事件代码:

private void tsmi_exitSystem_Click(object sender, EventArgs e){Close();}

对于工具条的退出事件,直接选择菜单栏的退出函数即可

2 数据维护窗体开发

2.1 创建数据集

单击项目,添加新项;选择【数据】--【数据集】,命名为dsXK.xsd,【添加】

单击【服务器资源管理器】超链接

添加Xk数据库

添加Department数据表,设置主键为DepartNo

拖入到dsXk.xsd中

2.2 frmDepartment.cs界面设计

(1)显示数据源,并下拉设置为DataGirdView

(2)拖放Department至frmDepartment中

(3)点击DataGirdView右上小三角,编辑列

(4)主窗体中添加启动frmDepartment的代码

private void 系部信息ToolStripMenuItem_Click(object sender, EventArgs e){frmDepartment fdt = new frmDepartment();fdt.MdiParent = this;fdt.Show();}

2.3 班级数据库的维护

(1)创建主外键关系图

(2)班级信息维护界面设计

显示数据源,并下拉设置为DataGirdView拖放Class表至frmClass窗体中点击DataGirdView右上小三角,编辑列班级ID和班级名称设置同上,对系部ID列,将其与Department表绑定,如下图

2.4学生表的维护

(1)创建学生表

(2)拖拽,显示【详细信息】

(3)将ClassNo的TextBox换成ComnoBox

(4)对性别的操作,先将TextBox换成ComnoBox;

2.5课程表界面设计

(1)定义课程表

(2)重写新增、保存、编辑、删除、放弃按钮

先将gbEdit、tsbDelete和tsbConcel的Enabled属性设置为false

private void ChangedEnabledState(){courseBindingNavigator.Enabled = !courseBindingNavigator.Enabled;gpEdit.Enabled = !gpEdit.Enabled;foreach (ToolStripButton tsb in tsControl.Items){tsb.Enabled = !tsb.Enabled;}}private void tsbInsert_Click(object sender, EventArgs e){ChangedEnabledState();courseBindingSource.AddNew();txtCouNo.Focus();}private void tsbEdit_Click(object sender, EventArgs e){ChangedEnabledState();couNameTextEdit.Focus();}private void tsbDelete_Click(object sender, EventArgs e){if (courseBindingSource.Current != null){if (MessageBox.Show("确定删除吗?", "确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == System.Windows.Forms.DialogResult.Yes){courseBindingSource.RemoveCurrent();this.tableAdapterManager.UpdateAll(this.xkDataSet1);}}}private void tsbSave_Click(object sender, EventArgs e){ChangedEnabledState();this.Validate();this.courseBindingSource.EndEdit();this.tableAdapterManager.UpdateAll(this.xkDataSet1);}private void tsbConcel_Click(object sender, EventArgs e){ChangedEnabledState();this.courseBindingSource.CancelEdit();}

3 登陆界面设计

3.1 创建frmLogin窗体

3.2全局类

如果数据表中设置的数据类型Text类型,Add函数不能使用SqlDbType.Text,出现类型转换错误,此处存疑

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Data;using System.Data.SqlClient;namespace Xk{class CPublic{public static bool IsManager;public static DataRow LoginInfo;public static void CheckUsers(string UserID, string UserPwd){SqlConnection cn = new SqlConnection(Properties.Settings.Default.XkConnectionString);SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Users WHERE UserID=@UserID AND UserPwd=@UserPwd", cn);da.SelectCommand.Parameters.Add("@UserID", SqlDbType.NVarChar, 10).Value = UserID;da.SelectCommand.Parameters.Add("@UserPwd", SqlDbType.NVarChar, 10).Value = UserPwd;//DataSet ds = new DataSet();da.Fill(ds);if (ds.Tables[0].Rows.Count > 0){LoginInfo = ds.Tables[0].Rows[0];IsManager = true;}else{LoginInfo = null;}}public static void CheckStudent(int StuNo, string ClassNo){SqlConnection cn = new SqlConnection(Properties.Settings.Default.XkConnectionString);SqlDataAdapter da = new SqlDataAdapter("SELECT * FROM Student WHERE StuNo=@StuNo AND ClassNo=@ClassNo", cn);da.SelectCommand.Parameters.Add("@StuNo", SqlDbType.Int).Value = StuNo;da.SelectCommand.Parameters.Add("@ClassNo", SqlDbType.Int).Value = ClassNo;DataSet ds = new DataSet();da.Fill(ds);if (ds.Tables[0].Rows.Count > 0){LoginInfo = ds.Tables[0].Rows[0];IsManager = false;}else{LoginInfo = null;}}}}

3.3 登录代码

private void btnLogin_Click(object sender, EventArgs e){if (cbIsManeger.Checked){CPublic.CheckUsers(txtID.Text, txtPwd.Text);}else{int stuID = int.Parse(txtID.Text);CPublic.CheckStudent(stuID, txtPwd.Text);}if (CPublic.LoginInfo == null){MessageBox.Show("密码错误", "登录", MessageBoxButtons.OK, MessageBoxIcon.Information);}else{Close();}}

3.4 在主窗体前启动登录窗体

using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;namespace Xk{static class Program{/// <summary>/// 应用程序的主入口点。/// </summary>[STAThread]static void Main(){Application.EnableVisualStyles();Application.SetCompatibleTextRenderingDefault(false);Application.Run(new frmLogin()); if (CPublic.LoginInfo != null){Application.Run(new frmMain());}}}}

4 小结

(1)建立数据库的主键和外键的之间的关系时,必须设置好主键【数据库小白,刚开始没搞明白,折腾了好久】

(2)多个按钮可以共享同一个点击事件,设置完第一个后,剩余的直接选择第一个点击事件的函数就可以了

(3)对原生的Form1.cs文件,右键属性,更改【文件名】,然后接受重命名操作;vs将会自动的更改因重命名导致的变更,特别的,run函数中的也会被更改掉;这种方式优于直接将原生Form1删掉的,然后再更改run的方法

(4)数据--显示数据源,左边的图标包括DataGridView和详细信息两种方式,如果要展示全部数据选用前者;若展示,选用后者

(5)将数据源拖拽到窗体中,会自动创建以下四个控件【*为表格名称】:

*BindSource*TableAdaptertableAdapterManager*BindongNavigator:导航器控件

(6)对于DataGridView控件

HeaderText属性设置显示出来的列标题;DataProperityName实际决定那一列数据会被显示

ColumnType用于指示列的显示形式;

(7)ComboBoxColumn控件

若DataGridView的ColumnType指定为DataGridViewComboBoxColumn,则需指定数据源、显示数据和选定值等信息:【建议DisployStyle设置为Nothing】

若自己【使用数据项绑定】,需指定以下值:

若自定义序列,编辑项,自己手动输入:

(8)自定义数据库的增删改操作

如果觉得《C#编程学习31:学生信息管理系统项目实战-上(VS+SQL server )》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。