主菜单:数据查询 启动主窗体 子菜单:成绩信息查询 列示学生的成绩信息 成功 成绩查询窗体:输入学生学号 查询 数据验证 失败信息提示 图14.2.5-1:“学生成绩信息查询”功能流程图
(3)数据库设计
实现该功能计划采用带输出参数的存储过程来实现,否则我们需要进行两次数据库操作才能实现。为此,我们需要按照成绩信息查询操作的功能要求进行数据库设计。
首先,根据需要在stuInfoManage数据库中创建存储过程。该存储过程具有以下功能:可以根据输入参数学号,通过输出参数返回该学号所代表学生的姓名、性别和出生日期,同时通过存储过程返回该学生所修课程的成绩信息。
具体操作步骤如下:打开SQL Server 2000查询分析器输入以下代码并运行创建可以实现上所述功能的存储过程StuGradeQuery。
Use stuInfoManage
if exists (select * from sysobjects where name = StuGradeQuery and type = ‘P’)
drop procedure [dbo].[StuGradeQuery] GO
CREATE PROCEDURE StuGradeQuery (
26
C/S结构项目实训(C#语言版)
) as
@stuID varchar(12),
@stuName nvarchar(20) output, @stuSex nchar(1) output, @stuBirth varchar(12) output
select @stuName = stuName,@stuSex = stuSex,@stuBirth = convert(varchar(10),stuBirth,120) from stu where stuID=@stuID
select course.courseID as 课程编号,courseName as 课程名称,credit as 课程学分,grade as 成绩
from course inner join grade on course.courseID = grade.courseID where stuID = @stuID GO
至此,完成学生成绩查询所需的数据库设计任务完毕。 (4)界面设计
首先,在项目中添加一个Windows窗体类:StuGradeQueryForm,设置其Text属性为:学生成绩信息查询;然后在该窗体上添加以下控件并设置主要属性。具体控件及其主要属性设置参照表14.2.5-1说明。
控件类型 Label Label Label Label Label TextBox TextBox TextBox TextBox Button 控件名称 系统默认 系统默认 系统默认 系统默认 系统默认 StuIDInputTextBox StuNameTextBox StuSexTextBox StuBirthTextBox QueryButton 主要属性设置 Text:学生选修课程成绩查询 Text:查询学号输入: Text:姓名: Text:性别: Text:出生日期: 无 ReadOnly:true ReadOnly:true ReadOnly:true Text:查询 C/S结构项目实训(C#语言版) 27
DataGridView Panel GradeDataGridView 系统默认 无 无 表2.5-1:“学生成绩信息查询”窗体控件及其主要属性设置说明
此外为了美观效果,我们适当调整窗体和控件的其他属性(字体和颜色等)。具体的设计效果可以参照图2.5-2。
图14.2.5-2:“学生成绩查询”窗体设计效果图
(5)代码实现
5.1 菜单功能调用的实现
首先,在MainForm窗体类中添加StuGradeQueryForm窗体类的一个实例。 StuGradeQueryForm StuGradeInfoQueryForm = new StuGradeQueryForm(); 其次,在系统主菜单“数据查询”的“学生成绩信息查询”功能选项的Click事件中添加“学生成绩查询”窗体的功能调用代码。
if (StuGradeInfoQueryForm.IsDisposed) {
StuGradeInfoQueryForm = new StuGradeQueryForm();
C/S结构项目实训(C#语言版)
28
}
StuGradeInfoQueryForm.MdiParent = this; StuGradeInfoQueryForm.Show();
StuGradeInfoQueryForm.Focus(); 5.2 窗体功能的实现 ① 窗体状态的初始化
我们在窗体启动或查询失败时,需要清空界面所有控件的已有数据,故我们进行以下操作来实现该功能。
首先,在StuGradeQueryForm窗体类中添加以下私有方法设置控件属性。 private void CoverComponentReset() {
StuIDInputTextBox.Clear(); StuNameTextBox.Clear(); StuSexTextBox.Clear(); StuBirthTextBox.Clear();
GradeDataGridView.DataSource = \; StuIDInputTextBox.Focus(); }
其次,在StuGradeQueryForm窗体类的Load事件中调用CoverComponentReset方法对窗体控件进行初始化操作。
private void StuGradeQueryForm_Load(object sender, EventArgs e) {
CoverComponentReset();
}
② “查询”按钮功能的实现
在查询按钮中,我们需要根据数据库操作的结果进行操作选择:如果存在学号所代表的学生基本信息以及相关成绩信息,则直接列示;如果不存在,则提示相关信息并清除窗体界面的已有数据。实现该功能,我们需要在查询按钮的Click事件中添加以下代码:
private void QueryButton_Click(object sender, EventArgs e)
{
C/S结构项目实训(C#语言版)
29
string StuID = StuIDInputTextBox.Text.Trim(); SqlParameter[] cmdParam = new SqlParameter[]{
new SqlParameter(\,StuID),
new SqlParameter(\,SqlDbType.NVarChar,20), new SqlParameter(\,SqlDbType.NChar,1), new SqlParameter(\,SqlDbType.VarChar,12) };
cmdParam[1].Direction = ParameterDirection.Output; cmdParam[2].Direction = ParameterDirection.Output; cmdParam[3].Direction = ParameterDirection.Output; DataSet stuGradeDS =SqlHelper.ExecuteDataset(
SqlHelper.ConnectionString,CommandType.StoredProcedure,\y\,cmdParam);
if (!cmdParam[1].Value.ToString().Equals(\)) {
StuNameTextBox.Text = cmdParam[1].Value.ToString(); StuSexTextBox.Text = cmdParam[2].Value.ToString(); StuBirthTextBox.Text = cmdParam[3].Value.ToString();
GradeDataGridView.DataSource = stuGradeDS.Tables[0].DefaultView; GradeDataGridView.Columns[0].DataPropertyName = stuGradeDS.Tables[0].Columns[0].ToString(); GradeDataGridView.Columns[1].DataPropertyName = stuGradeDS.Tables[0].Columns[1].ToString(); GradeDataGridView.Columns[2].DataPropertyName = stuGradeDS.Tables[0].Columns[2].ToString(); GradeDataGridView.Columns[3].DataPropertyName = stuGradeDS.Tables[0].Columns[3].ToString(); } else
C/S结构项目实训(C#语言版)
30
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库项目实训-学生信息管理系统(6)在线全文阅读。
相关推荐: