091181068肖兴南c#实验五._第1页
091181068肖兴南c#实验五._第2页
091181068肖兴南c#实验五._第3页
091181068肖兴南c#实验五._第4页
091181068肖兴南c#实验五._第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、福建农林大学计算机与信息学院实验报告系(教研室): 软件工程系 专业: 软件工程 年级: 09级 实验课程: C#语言程序设计 姓名: 肖兴 南 学号: 091181068 实验室号: 田302 计算机号: 68 实验时间: 2011/12/9 指导教师签字: 成绩: 实验五 数据库操作一、实验目的:1、了解与ADO.NET框架相关的类。2、掌握数据库应用系统创建的一般过程。二、实验内容:设计并实现“学生选课系统”的“学生信息管理模块”,要求如下:(1) 界面如下图所示。(2) 单击“添加”按钮,实现将用户在文本框和组合框中设置的数据添加到学生信息表student中。(3) 用户在数据控件Da

2、taGridView中选择一条学生记录后,单击“修改”按钮,实现对所选学生记录的修改。(4) 用户在数据控件DataGridView中选择一条学生记录后,单击“删除”按钮,实现从学生信息表student表中删除相应记录。(5) “查询”按钮用于查询符合条件的学生记录。三、实验要求:1、设计并实现“学生选课系统”的“学生信息管理模块”,并在实验报告中给出相应的实验步骤、调试过程以及实验结果分析。2、在实验报告中指出【待分析实验步骤】的设计和代码存在的不足之处。3、(选作)使用三层架构改写【待分析实验步骤】中的设计和代码。四、实验学时:2学时五、算法描述及实验步骤【待分析的实验步骤】一、 设计数据

3、库1、打开SQL SERVER,创建一个数据库,命名为db_studentcourse2、在db_studentcourse数据库下,创建学生信息表student。其表结构如下表所示。二、 创建程序结构1、打开VS2008,新建一个项目,在新建项目对话框中,模板选择“Windows应用程序”,解决方案名称为“StudentInfoManagement”,选择存放的路径后,单击确定。2、修改默认的窗体对象名为“FrmStudent”。3、在“解决资源管理器”中,选择“StudentInfoManagement”,单击右键,在弹出的菜单中,选择“添加类”,名称为“CDataBase.cs”。效果见

4、下图:三、 设计界面FrmStudent窗体以及窗体中各控件的属性设置如下表所示:控件类型控件名称属性设置结果FormFrmStudentText学生信息管理TextBoxTextBox1NametxtNoTextBox2NametxtNameTextBox3NametxtAgeTextBox4NametxtDeptTextBox5NametxtSelectComboBoxComboBox1NamecmbSexItems男、女DropDownStyleDropDownListComboBox2NamecmbSelectItems学号、姓名、性别、年龄、所在系DropDownStyleDropD

5、ownListText学号ButtonButton1NamebtnAddText添加Button2NamebtnUpdateText修改Button3NamebtnDeleteText删除Button4NamebtnSelectText查询DataGridViewDataGridView1NamedgrdvStudentReadOnlyTrueRowHeadersWidth25四、 编写代码1、 CDataBase类CDataBase类用于处理应用程序对数据库的相关操作,包括添加、删除、修改和查询。该类中包含两个方法:(1)“读”方法方法名:GetDataBase返回值:类型为DataSet。

6、若查询到的数据不为空,返回数据集;否则返回null参数说明:参数的个数为1,名称为sqlStr,类型为string,用于传递SQL语句(Select语句)。(2)“写”方法方法名:UpdateDB返回值:类型为void。参数说明:参数的个数为1,名称为sqlStr,类型为string,用于传递SQL语句(insert、update、delete语句)。【实现代码】using System.Data.SqlClient;using System.Data;namespace StudentInfoManagement public class CDataBase public static st

7、ring connStr = data source = .; database = db_studentcourse; integrated security = true; public static SqlConnection conn = new SqlConnection(connStr); public static DataSet GetDataFromDB(string sqlStr) conn.Open(); SqlDataAdapter myAdapter = new SqlDataAdapter(sqlStr, conn); DataSet myDataSet = new

8、 DataSet(); myDataSet.Clear(); myAdapter.Fill(myDataSet); conn.Close(); if (myDataSet.Tables0.Rows.Count != 0) return myDataSet; else return null; public static void UpdateDB(string sqlStr) conn.Open(); SqlCommand myCmd = new SqlCommand(sqlStr, conn); myCmd.CommandType = CommandType.Text; myCmd.Exec

9、uteNonQuery(); conn.Close(); 2、 公共方法该部分包含本模块设计中需要使用的一些公共方法。(1)ObjOpen方法用于设置用户界面中的文本框和下拉列表框可用,并将焦点设置到学号文本框中。【实现代码】 private void ObjOpen() txtNO.Enabled = true; txtName.Enabled = true; txtAge.Enabled = true; cmbSex.Enabled = true; txtDept.Enabled = true; txtNO.Focus(); (2)ObjClose方法用于设置用户界面中的文本框和下拉列表框

10、不可用。【实现代码】 private void ObjClose() txtNO.Enabled = false; txtName.Enabled = false; txtAge.Enabled = false; cmbSex.Enabled = false; txtDept.Enabled = false;(3)ClearAll方法用于清空用户界面中文本框的文本内容,并设置下拉列表框“cmbSex”不选中任何项。【实现代码】 private void ClearAll() txtNO.Text = ; txtName.Text = ; txtAge.Text = ; cmbSex.Selec

11、tedIndex = -1; txtDept.Text = ; (4)Refresh方法用于将Student表中的数据读取出来,显示在相应的数据控件中,并设置了数据控件中各数据列的列标题和列宽。【实现代码】 private void RefreshData() string sqlStr; DataSet ds = new DataSet(); sqlStr = select * from student; ds = CDataBase.GetDataFromDB(sqlStr); if (ds != null) dgrdvStudent.DataSource = ds.Tables0; dg

12、rdvStudent.Columns0.HeaderText = 学号; dgrdvStudent.Columns0.Width = 120; dgrdvStudent.Columns1.HeaderText = 姓名; dgrdvStudent.Columns1.Width = 120; dgrdvStudent.Columns2.HeaderText = 性别; dgrdvStudent.Columns2.Width = 80; dgrdvStudent.Columns3.HeaderText = 年龄; dgrdvStudent.Columns3.Width = 80; dgrdvStu

13、dent.Columns4.HeaderText = 系; dgrdvStudent.Columns4.Width = 150; dgrdvStudent_RowHeaderMouseClick(null,null); else dgrdvStudent.DataSource = null; (5)IsNoExist方法返回一个bool型的值。在添加学生信息时,用于判断当前输入的学生信息是否在数据库中已经存在,其参数为输入的学生学号。若返回值为true,说明输入的学生信息不存在,可以添加学生信息;否则不能添加。【实现代码】 private bool IsNoExist(string no) i

14、nt n = dgrdvStudent.Rows.Count; for (int i = 0; i n-1 ; i+) if (no = dgrdvStudent.Rowsi.Cells0.Value.ToString().Trim() return false; return true;3、窗体事件代码(1)窗体的Load事件代码。将数据库表Student中的学生记录读取到数据控件DataGridView中,完成数据的初始化。【实现代码】 private void FrmStudent_Load(object sender, EventArgs e) ObjClose(); RefreshD

15、ata(); (2)窗体的FormClosing事件代码当准备关闭窗体时,需要判断当前编辑的数据是否已保存,若已经保存,则关闭窗体。若数据尚未保存,则弹出提示消息框。当用户取消当前的关闭操作时,则不关闭窗体。【实现代码】private void FrmStudent_FormClosing(object sender, FormClosingEventArgs e) if (txtName.Enabled) if (MessageBox.Show(数据尚未保存,要关闭窗口吗?, 询问, MessageBoxButtons.YesNo, MessageBoxIcon.Question, Mess

16、ageBoxDefaultButton.Button2) = DialogResult.No) e.Cancel = true; 4、数据控件代码当用户在数据控件(DataGridView)的行标题的边界处单击,选择不同的学生记录时,将选中的学生信息显示在相应的文本框和下拉列表框,该功能由DataGridView控件的RowHeaderMouseClick事件代码完成。【实现代码】private void dgrdvStudent_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e) int n = dgrdv

17、Student.CurrentCell.RowIndex; if (n dgrdvStudent.RowCount) txtNO.Text = dgrdvStudent0, n.Value.ToString().Trim(); txtName.Text = dgrdvStudent1, n.Value.ToString().Trim(); cmbSex.Text = dgrdvStudent2, n.Value.ToString().Trim(); txtAge.Text = dgrdvStudent3, n.Value.ToString().Trim(); txtDept.Text = dg

18、rdvStudent4, n.Value.ToString().Trim(); 5、“添加”按钮的Click事件代码。单击“添加”按钮,实现将用户在文本框和组合框中设置的数据添加到学生信息表student中。【实现代码】 private void btnAdd_Click(object sender, EventArgs e) if (btnAdd.Text.Trim() = 添加) btnAdd.Text = 确定; ObjOpen(); ClearAll(); RefreshData(); btnUpdate.Enabled = false; btnDelete.Enabled = fal

19、se; cmbSelect.Enabled = false; txtSelect.Enabled = false; btnSelect.Enabled = false; dgrdvStudent.Enabled = false; return; else if (txtNO.Text.Trim() = ) MessageBox.Show(请输入学号!,提示); txtNO.Focus(); return; else if (txtName.Text.Trim() = ) MessageBox.Show(请输入姓名!, 提示); txtName.Focus(); return; else if

20、(cmbSex.SelectedIndex = -1) MessageBox.Show(请选择性别!, 提示); cmbSex.Focus(); return; else if (txtAge.Text.Trim() = ) MessageBox.Show(请输入年龄!, 提示); txtAge.Focus(); return; else if (txtDept.Text.Trim() = ) MessageBox.Show(请输入该生所在系!, 提示); txtDept.Focus(); return; else if (!No(txtNO.Text.Trim() MessageBox.Sh

21、ow(该生已存在!, 提示); txtNO.Text = ; txtNO.Focus(); return; btnAdd.Text = 添加; string sqlStr1; sqlStr1 = insert into student values( + txtNO.Text.Trim() + , + txtName.Text.Trim() + , + cmbSex.Text.Trim() +, + txtAge.Text.Trim() + , + txtDept.Text.Trim() + ); CDataBase.UpdateDB(sqlStr1); RefreshData(); if (

22、MessageBox.Show(添加成功!继续添加吗?, 添加学生, MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) = DialogResult.Yes) ClearAll(); ObjOpen(); btnAdd.Text = 确定; else ObjClose(); btnUpdate.Enabled = true; btnDelete.Enabled = true; cmbSelect.Enabled = true; txtSelect.Enabled = true;

23、btnSelect.Enabled = true; dgrdvStudent.Enabled = true; 6、“修改”按钮的Click事件代码。用户在数据控件DataGridView中选择一条学生记录后,单击“修改”按钮,实现对所选学生记录的修改。【实现代码】 private void btnUpdate_Click(object sender, EventArgs e) if (btnUpdate.Text.Trim() = 修改) btnUpdate.Text = 确定; btnAdd.Enabled = false; btnDelete.Enabled = false; cmbSel

24、ect.Enabled = false; txtSelect.Enabled = false; btnSelect.Enabled = false; txtName.Enabled = true; txtAge.Enabled = true; cmbSex.Enabled = true; txtDept.Enabled = true; txtName.Focus(); else btnUpdate.Text = 修改; btnAdd.Enabled = true; btnDelete.Enabled = true; cmbSelect.Enabled = true; txtSelect.Ena

25、bled = true; btnSelect.Enabled = true; ObjClose(); string sqlStr; sqlStr = update student set Sname= + txtName.Text.Trim() + ,Ssex= + cmbSex.Text.Trim() + ,Sage= + txtAge.Text.Trim() + ,Sdept= + txtDept.Text.Trim() + where Sno= + txtNO.Text.Trim() + ; CDataBase.UpdateDB(sqlStr); RefreshData(); Messa

26、geBox.Show(修改成功!,提示); 7、“删除”按钮的Click事件代码用户在数据控件DataGridView中选择一条学生记录后,单击“删除”按钮,实现从学生信息表student表中删除相应记录。【实现代码】 private void btnDelete_Click(object sender, EventArgs e) if (txtNO.Text.Trim() = ) MessageBox.Show(没有可删除的记录!,提示); return; if (MessageBox.Show(确定要删除学生“ + txtName.Text.Trim() + ”吗?, 删除学生, Mess

27、ageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2) = DialogResult.Yes) string sqlStr = delete from student where Sno= + txtNO.Text.Trim() + ; CDataBase.UpdateDB(sqlStr); int n = dgrdvStudent.CurrentCell.RowIndex; dgrdvStudent.Rows.RemoveAt(n); if (dgrdvStudent.Rows.Count

28、= 1) ClearAll(); dgrdvStudent.DataSource = null; else dgrdvStudent_RowHeaderMouseClick(null, null); 8、“查询条件”下拉列表框的SelectedIndexChanged事件代码当用户选择不同的查询方式时,清空查询值对应的文本框中的文本内容,并将焦点设置到文本框中,等待下一次的查询操作。【实现代码】 private void cmbSelect_SelectedIndexChanged(object sender, EventArgs e) txtSelect.Text = ; txtSelect

29、.Focus(); 9、“查询”按钮的Click事件代码“查询”按钮用于查询符合条件的学生记录。【实现代码】 private void btnSelect_Click(object sender, EventArgs e) string sqlStr = ; if (txtSelect.Text.Trim() = ) MessageBox.Show(请输入要查询的“ + cmbSelect.SelectedItem.ToString().Trim() + ”!,提示); return; else if (cmbSelect.SelectedIndex = 0) sqlStr = select * from Student where Sno = + txtSelect.Text.Trim() + ; else if (cmbSelect.SelectedIndex = 1) sqlStr = select * from Student where Sname = + txtSelect.Text.Trim() + ; else if (cmbSelect.SelectedIndex = 2) sqlStr = select * from Studen

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论