一:先展示功能图:
主界面如下:
添加学生窗口:设置为父窗口和子窗口
添加成功图:
学生列表操作
删除学生:
添加学生:实现窗体间的通信
代码如下:
UI用户界面层代码:
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; namespace MySchoolUI { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void 添加学生ToolStripMenuItem_Click(object sender, EventArgs e) { AddStudent f = new AddStudent(); f.MdiParent=this; f.Show(); } private void 学生列表ToolStripMenuItem_Click(object sender, EventArgs e) { StudentListForm f = new StudentListForm(); f.MdiParent = this; f.Show(); } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using MySchoolEntity; using MySchoolBll; namespace MySchoolUI { public partial class AddStudent : Form { public AddStudent() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { Student student = new Student(); student.Id = textId.Text; student.Name = textname.Text; student.Gender = radiomale.Checked ? "男" : "女"; student.Major = textmajor.Text; student.Grade = int.Parse(textgrade.Text); student.TheClass =int.Parse( textclass.Text); StudentBll bll = new StudentBll(); bll.insert(student); // MessageBox.Show("添加成功!"); this.DialogResult = DialogResult.OK; } private void button2_Click(object sender, EventArgs e) { this.DialogResult = DialogResult.Cancel; } } }
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using MySchoolBll; using MySchoolEntity; namespace MySchoolUI { public partial class StudentListForm : Form { public StudentListForm() { InitializeComponent(); } private void 查看_Click(object sender, EventArgs e) { refreshDate(); } private void refreshDate() { StudentBll bll = new StudentBll(); List<Student> list = bll.getALl(); gride.DataSource = list; } private void gride_CellContentClick(object sender, DataGridViewCellEventArgs e) { } private void StudentListForm_Load(object sender, EventArgs e) { gride.AutoGenerateColumns = false; } private void gride_CellDoubleClick(object sender, DataGridViewCellEventArgs e) { string content = gride.CurrentCell.Value.ToString(); int row = gride.CurrentCell.RowIndex; int col=gride.CurrentCell.ColumnIndex; string s = string.Format("你双击的单元格:{0}行{1}列 值为{2}", row + 1, col + 1, content); MessageBox.Show(s); } private void button4_Click(object sender, EventArgs e) { this.Close(); } private void button3_Click(object sender, EventArgs e) { string id = gride.CurrentRow.Cells[0].Value.ToString(); string name = gride.CurrentRow.Cells[1].Value.ToString(); DialogResult r = MessageBox.Show("确实要删除["+id+" "+name+"]吗?", "提示", MessageBoxButtons.YesNo); if (r == DialogResult.Yes) { StudentBll bll = new StudentBll(); bll.delete(id); refreshDate(); } } private void button1_Click(object sender, EventArgs e) { AddStudent f = new AddStudent(); f.ShowDialog(); if (f.DialogResult == DialogResult.OK) { StudentBll bll = new StudentBll(); refreshDate(); } } } }
studenBll.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using MySchoolEntity; using MySchoolDAL; namespace MySchoolBll { public class StudentBll { public void insert(Student s) { //检查业务逻辑 if(s.Grade>2012||s.Grade<2009) throw new Exception("年纪错误!"); StudentDal dal=new StudentDal(); dal.insert(s); } public void delete(string id) { StudentDal dal = new StudentDal(); dal.delete(id); } public List<Student> getALl() { StudentDal dal = new StudentDal(); return dal.getAll(); } } }
DBhelper.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; namespace MySchoolDAL { public class DbHelper { static string connStr = "server=.;database=SampleDb;Integrated Security=true;"; public static void myExecute(string sql) { SqlConnection conn = new SqlConnection(); conn.ConnectionString = connStr; SqlCommand cmd = new SqlCommand(); cmd.CommandText = sql; cmd.Connection = conn; conn.Open(); cmd.ExecuteNonQuery(); conn.Close(); } public static SqlConnection createConnection() { return new SqlConnection(connStr); } } }
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data.SqlClient; using MySchoolEntity; namespace MySchoolDAL { public class StudentDal { public void insert(Student student) { string sql = string.Format("insert into Student(Id,Name,Gender,Major,Grade,Class) values('{0}','{1}','{2}','{3}',{4},{5})", student.Id, student.Name, student.Gender, student.Major, student.Grade, student.TheClass); DbHelper.myExecute(sql); } public void delete(string id) { string sql = string.Format("delete from student where id='{0}'", id); DbHelper.myExecute(sql); } //查询所有学生 public List<Student> getAll() { List<Student> list = new List<Student>(); SqlConnection conn = DbHelper.createConnection(); SqlCommand cmd = new SqlCommand(); cmd.CommandText = "select * from student"; cmd.Connection = conn; conn.Open(); SqlDataReader reader = cmd.ExecuteReader(); while (reader.Read()) { Student student = new Student(); student.Id = (string)reader["id"]; student.Name = (string)reader["name"]; student.Gender = (string)reader["gender"]; student.Major = (string)reader["major"]; student.Grade = (int)reader["grade"]; student.TheClass = (int)reader["class"]; list.Add(student); } reader.Close(); conn.Close(); return list; } } }
student.cs
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace MySchoolEntity { public class Student { public string Id { get; set; } public string Name { get; set; } public string Gender { get; set; } public string Major { get; set; } public int Grade { get; set; } public int TheClass { get; set; } } }
using MySchoolDAL; using Microsoft.VisualStudio.TestTools.UnitTesting; using MySchoolEntity; namespace DalTest { [TestClass()] public class StudentDalTest { /// <summary> ///insert 的测试 ///</summary> [TestMethod()] public void insertTest() { StudentDal target = new StudentDal(); Student student =new Student(); student.Id ="Bzu01"; student.Name="测试生成"; student.Major="CS"; student.Gender="M"; student.Grade=2011; student.TheClass=2; target.insert(student); } } }