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

目录

 

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第1张图片C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第2张图片C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第3张图片

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

1.2 添加MenuStrip、ToolStrip和StatusStrip控件

构建如下界面:

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第4张图片

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

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第5张图片

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

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

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

2 数据维护窗体开发

2.1 创建数据集

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第6张图片

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第7张图片

添加Xk数据库

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第8张图片

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第9张图片 C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第10张图片C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第11张图片  C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第12张图片

拖入到dsXk.xsd中

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第13张图片

2.2 frmDepartment.cs界面设计

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第14张图片 C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第15张图片

(2)拖放Department至frmDepartment中

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第16张图片

(3)点击DataGirdView右上小三角,编辑列
C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第17张图片

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

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

2.3 班级数据库的维护

(1)创建主外键关系图

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第18张图片 C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第19张图片C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第20张图片

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第21张图片

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

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第22张图片

2.4 学生表的维护

(1)创建学生表

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第23张图片

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第24张图片C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第25张图片

(3)将ClassNo的TextBox换成ComnoBox

 C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第26张图片   C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第27张图片

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第28张图片  C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第29张图片

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第30张图片

2.5 课程表界面设计

(1)定义课程表

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第31张图片

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

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第32张图片

        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窗体

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第33张图片

3.2 全局类

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第34张图片

如果数据表中设置的数据类型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
    {
        /// 
        /// 应用程序的主入口点。
        /// 
        [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
  • *TableAdapter
  • tableAdapterManager
  • *BindongNavigator:导航器控件

(6)对于DataGridView控件

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

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

(7)ComboBoxColumn控件

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第35张图片

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第36张图片

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第37张图片

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

C#编程学习31:学生信息管理系统项目实战-上(VS2010+SQL server 2008)_第38张图片

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

 

 

 

 

你可能感兴趣的:(C#编程学习)