VC学生成绩管理系统及源码.docx
《VC学生成绩管理系统及源码.docx》由会员分享,可在线阅读,更多相关《VC学生成绩管理系统及源码.docx(64页珍藏版)》请在冰豆网上搜索。
VC学生成绩管理系统及源码
学生成绩管理系统
1.操作数据库简介
本章节主要介绍中操作数据库的一般方法,有控件的连接、
对象的使用,当然在可视化的开发系统中用控件是的方法是比较简单的,但不是很灵活,相比较对象的方法比较灵活,但使用相对麻烦;这里读者会问,那这两个又是怎么去访问到数据库的呢?
其实他们是通过一些接口去访问不同数据库的,而这些接口会屏蔽掉数据库访问协议和各个数据库之间的差别,这里最常用的有两种接口,一种就是、还有一种是,下面我们介绍他们的结构:
(a)数据库访问接口:
(1):
其实是开放式数据库互连(),是微软公司
推出的一种实现应用程序和关系数据库之间通讯的方法标准,是一个接口标准。
所
以它实际上是一种标准,符合标准的数据库就可以通过语言编写的命令对数
据库进行操作,但只能针对关系数据库进行操作(如,,,
等),目前所有的关系数据库都符合该标准。
本质上是一组数据库访
问(应用程序编程接口),由一组函数调用组成,核心是语句,他的结构
图如下图1:
图1.1
在具体操作时,首先必须用管理器注册一个数据源,管理器根据数据源提
供的数据库位置、数据库类型及驱动程序等信息,建立起与具体
数据库的联系。
这样,只要应用程序将数据源名提供给,就能建立
起与相应数据库的连接。
(2):
:
数据库链接和嵌入对象(
)。
是微软提出的基于思想且面向对象的一种技术标准,
目的是提供一种统一的数据访问接口访问各种数据源,这里所说的"数据"除了标准
的关系型数据库中的数据之外,还包括邮件数据、上的文本或图形、目录服
务()、以及主机系统中的文件和地理数据以及自定义业务对
象等。
标准的核心内容就是要求对以上这些各种各样的数据存储(
)都提供一种相同的访问接口,使得数据的使用者(应用程序)可以使用同样
的方法访问各种数据,而不用考虑数据的具体存储地点、格式或类型,他的结构
图如下图2:
图1.2
(b)中数据库访问对象:
(1)控件:
控件使用数据对象()来快速建立数据绑
定的控件和数据提供者之间的连接。
数据绑定控件是任何具有“数据源”属性的控
件。
数据提供者可以是任何符合规范的数据源,这里可能是对的一
个封装,他访问数据库的接口可以使用、也可以使用,但
灵活,不用在系统中配置数据源,而且效率高,所以现在使用更多点,下
面程序中也是用来介绍的,这里简单介绍一下控件的使用层次图。
在数据库程序设计中起了一个桥梁的作用,可以方便中的一些控
件直接和数据库关联,他的使用示意图如下:
图1.3
(2)对象
是的缩写,是一项新的数据库的存取技术,他最主要包含三个对象,、、,
对象:
连接对象,负责通过或建立与数据库之间的连接。
对象:
记录集对象,存放从数据库中得到的记录,这些可能是执行某条
语句的结果。
对象:
执行语句返回类型的结果。
基本的用法:
(1)连接数据源
(2)打开记录集对象
(3)使用记录集
(4)断开连接
具体的应用后面在学生成绩录入中会介绍到。
2.连接数据库
a)用可视控件连接数据库,从→→,如图将、组控件选择到工具栏。
(1)设置的属性。
图2.1
(2)打开的属性页,选择下的生成连接字符串。
图2.2
图2.3图2.4
(3)设置的属性。
命令类型
图2.5
命令类型:
:
值1,表示命令为语句。
:
值2,表示命令为一表名。
:
值4,表示命令是一存储过程名。
:
值8,表示不确定命令类型。
(4)此时数据源控件已连接好数据库,可以直接访问它,或者可以充当数据表格控件的数据源使用。
b)用对象连接数和操作据库
(1)创建对象
=;
(());
(2)使用对象
;
("903\\1234;")“”—使用,“903\\”—数据库服务器名,””—数据库名,后面是用户明和密码
=>(,"","");
(3)对象
用来执行语句来操作数据库的对象,根据参数的不同可以执行存储过程
=;定义对象指针
=;
=;
;
(());
>=;
执行语句
("*");
>=();
=>()返回记录集
执行存储过程
("");
>=();
>=;
为存储过程创建输入参数
=>("",16);
>=(“081101”);
>>();
为存储过程创建输入参数
=>("",16);
>=(“计算机基础”);
>>();
为存储过程创建输入参数
=>("",4);
>=(()80);
>>();
为存储过程创建输入参数
=>("",4);
>=(()0);
>>();
执行存储过程
>();
关闭连接
>();
(4)对象
用来操作表的更新删除等的对象
=;
;
(());
("*=''",”081101”);
打开记录集
>(()((*)));
(>)
{
>("",(()”1991-2-5”));
更新记录集
>();
}
>();
>();
3.学生成绩管理系统
本演示系统是一个用实现的简单的学生成绩管理系统,使用用可视控件和对象来访问后台数据库服务器的,包含学生信息的查询、学生休息的录入修改删除、学生成绩的录入修改,下面就分别说明各模块的具体实现。
4.系统主界面
创建多文档工程,会生成框架,、、等对象,这里演示的程序比较简单,所以代码主要加在对象里,创建两个来实现学生信息修改和学生成绩修改。
主界面菜单和工具条框架如下:
图4.1
主要功能:
主界面,导航作用,点击可进入操作窗口。
创建过程:
(1)创建菜单:
图4.2
因为学生信息查询作为默认的界面,所以创建学生信息修改、学生成绩修改,打开的,添加菜单处理事件,这里选择映射到对象里面。
图4.3
(2)创建工具条:
图4.4
创建工具条,打开的,添加菜单处理事件,这里选择映射到对象里面。
图4.5
主要菜单代码:
菜单的处理过程在对象里面,对应与文件
学生信息修改菜单
32771()
{
:
;
();
}
学生成绩录入菜单
32772()
{
:
;
();
}
工具条的处理,分别对应调用菜单中的处理过程
学生信息修改工具条的处理
32773()
{
:
;
();
}
成绩录入工具条的处理
32774()
{
:
;
();
}
5.学生信息查询
目的与要求:
了解使用控件显示用语句查询到的数据库中的数据,同时了解模糊查询的基本方法。
程序界面:
图5.1
主要功能:
实现简单查询的需要,输入条件进行模糊查询,各条件之间为与的关系,在查询的结果中移动记录指针可以查看这个学生的具体选课信息
创建过程:
(1)在的主窗体上放入两个学生信息查询的和学生选课信息的、创建两个学生信息显示的和学生选课信息显示的,并分别起名为,,,。
放入学号、姓名和专业下拉列表框,为了美观隐藏在后面,增加专业下拉列表项,如图5.2。
图5.2
(2)设置,的属性为
.1903\
(3)设置的属性为
*
(4)设置的属性为。
(5)设置的属性为
.1903\
(6)设置的属性为
*
(7)设置的属性为。
(8)使用对这些控件设定变量的绑定,选顶绑定的类型,只要输入输出,所以简单的类型就可以满足,则要选择的变量类型,这样才能访问其属性和调用函数,如图5.3、5.4。
图5.3
图5.4
完成的开发窗体如图:
图5.5
实现过程:
直接打开时由于控件属性的设置,所以显示所有记录,当输入查询条件时点击查询按钮则调用函数产生查询字符串,然后重新设置控件的属性,打开控件显示查询结果集。
当查询结果学生信息记录集中移动记录指针时,可以在下面的选课表中看到学生选课的信息。
主要代码:
对象的构造函数,为了避免在未初始化完成就做一些操作,所以定义为初始化完成标记,标记有效才能做进一步操作。
:
{
…………………………
:
;添加成员变量
…………………………
}
类的构造函数,初始化成员对象
()
:
()
{
{{()
=;
=("");
=("");
=0初始化成0
}}
:
}
初始化函数,这里初始化的显示格式,添加表格头以及和数据库字段的绑定关系。
()
{
=()->;
();
;
;
;
:
增加表格列
=();
(2);
(3);
(4);
(5);
(6);
=;
分别设定每列的属性,包括表头、绑定的数据库字段
=(0);
();
("");
("学号");
=
(1);
();
("");
("姓名");
=
(2);
();
("");
("性别");
=(3);
();
("");
("出生日期");
=(4);
();
("");
("专业");
=(5);
();
("");
("总学分");
=(6);
();
("");
("备注");
初始化标记设置
=1;
();
();
()();
}
根据输入产生查询语句的函数,以学号、姓名的输入信息和专业的选择生成模糊查询的字符串
()
{
;
;
();
(())
{
"'%";
;
"%'";
}
(())
{
(,"");
"'%";
;
"%'";
}
取选择的专业
=();
();
();
(())
{
"='";
;
"'";
}
;
}
“查询”事件处理,用生成的模糊查询的字符串,来刷新,并显示到关联的中,在显示查询到的结果
()
{
:
;
="*"+();
();
();
}
控件有记录的消息的时候,以当前学生信息的学号作为查询条件,从表中查找当前学生的选课记录,并显示到学生课程显示的中
(,,*,)
{
:
(0)
;
;
;
;
(());
>(,(**));
=>>("")->;
(());
();
("==''");
();
();
}
注:
为了方便控件显示学生性别,这里建立了一个表((4))存放数据1,男;0,女,这样把要显示的表与其连接便可以显示中文的性别,如有类似情况可参照此方法。
6.学生信息修改
目的与要求:
了解使用对象对数据库操作的基本方法(增、删、改),以及存储显示图像的操作。
程序界面:
图6.1
主要功能:
用户可以点击下面的表格,移动记录指针,用户资料便同步映到上面的控件中去,修改控件中的信息,点击“更新”实现修改。
如输入一个新的学号点击“更新”实现记录的添加,当选中当前记录点击“删除”时则可以删除此学生记录,点击“载入照片”可以选择学生照片,用于更新学生照片信息。
创建过程:
(1)在窗体上放入、并起名为2,2。
(2)设置的属性为.1903\
(3)置2的属性为*
(4)置2的属性为2。
(5)在窗体上放入控件并起名为,用来显示学生照片。
(6)并在窗体上放入如图所需控件,并在定义关联变量,如图6.2。
图6.2
设计好的窗体如图:
图6.3
实现过程:
当点击中的记录时记录集游标也跟着移动,在2事件中取出本条记录显示在上面的控件中,可以在控件中修改学生信息,点击载入照片可以选择学生照片,按更新按钮更新到数据库中,按删除按钮删除当前此记录,删除记录时系统会调用触发器来保持数据的参照完整性。
主要代码:
类中定义的全局变量
:
{
:
………………………………
;初始化标记
;照片路径
*;照片流变量
;照片长度
*;照片缓冲指针
;可变类型,用来从接口中获取数据
………………………………
}
类构造函数
(*/**/)
:
(,)
{
{{()
=("");
=("");
=0;
=("");
=();
=-1;
}}
>=0;
=;
}
窗口初始化函数,定义2的显示风格,添加表格头以及和数据库字段的绑定关系。
()
{
();
;
;
;
:
=();
(2);
(3);
(4);
(5);
(6);
=;
=(0);
();
("");
("学号");
=
(1);
();
("");
("姓名");
=
(2);
();
("");
("性别");
=(3);
();
("");
("出生日期");
=(4);
();
("");
("专业");
=(5);
();
("");
("总学分");
=(6);
();
("");
("备注");
();
();
添加专业项
(0,"计算机");
(1,"通信工程");
:
初始化完成标记
=1;
移动记录指针到第一个
()();
重绘窗口消息
(>(),0,0);
;a
:
}
学生信息记录集记录指针移动完成事件,取出当前记录中的学生信息,更新到学号、姓名等显示控件中去,从中取出学生照片,并以流的方式保存,调用重绘,在中显示照片
2(,,*,)
{
窗口初始化判断
(0)
;
=;
=;
;
;
;
(());
>(,(**));
=>>("")->;
(());
();
=;
=>>("")->;
(());
();
=;
=>>("")->;
(());
();
=;
=>>("")->;
=;
=>>("")->;
=;
=>>("")->;
(());
();
=(0,());
();
=>>("")->;
()
=0;
=1;
根据当前学号,从数据库中读出照片数据流,并保存在流中,在中会把他显示出来
();
{
=;
;
(());
();
>();
>(,,,(),());
打开连接,提取学生照片
("=''");
(());
=>(,"","");
(());
>(()((*)));
取照片数据长度
=>>("")->;
(0)
{
();
}
{
取照片数据
=>>("")->();
}
((|1))
{
复制照片数据到流中
(,(**));
();
=;
();
}
>();
>();
}
()
{
.
(());
(());
;
(":
:
",(),());
();
>();
>();
}
窗口重绘消息,显示照片
(>(),0,0);
();
}
“删除”事件处理,取出当前记录的学号,然后通过对象执行语句来删除当前的学生记录,语句的调用会引起触发器的动作
()
{
:
=;
=;
;
;
=;
=定义为无参数
();
{
a
();
(());
=>(,"","");
(());
>=;
;
("=''");
>=();
>();
>();
("删除成功!
");
}
()
{
.
(());
(());
;
>();
(":
:
",(),());
();
}
}
“载入照片”事件的处理,打开对话框,给用户选择照片,打开照片把照片数据写入到流中,在消息中显示照片,同时记录下选择的文件名和路径到全局变量中,给后面的更新学生信息使用
()
{
:
;
;
;
;
:
打开文件选择对话框
(,"","*","(*)|*(*)|*");
(())
{
保存文件名
();
();
}
{
="";
}
重文件中读出照片数据流,存放到中,在中会把他显示出来
(()()((=)-1))
{
=(,);
=;
()
{
((=()))
{
(,);
();
=;
(,,);
}
}
();
}
{
="";
}
窗口重绘消息,显示照片
(>(),0,0);
}
窗口消息,调用来解析照片,并显示到指定的控件中去
()
{
();
*;
*;
创建照片显示的设备
*=(*)>();
=>();
;
解析照片数据
(((,(*))))
{
;
;
>();
>();
;
=()>()*()(()>()*100.0);
=()>()*()(()>()*100.0);
>();
=()-5;
=()-5;
在当前设备中绘制照片
((>(*,0,0,(),(),0)))
{
("");
>();
}
("");
}
()
}
“更新”事件处理,先查询当前学号的学生信息,有当前学生的信息则修改相应的记录字段,打开照片存放到数据流中,然后再存到记录集中的“”字段,更新记录集到数据库中去;没有则通过新增一条记录,然后修改相应的记录字段,并更新记录集到数据库中去,打开照片存放到数据流中,然后再存到记录集中的“”字段,保存到数据库中去
()
{
:
=;
=;
;
;
;
();
{
a
();
(());
=>(,"","");
(());
;
("*=''");
>(()((*)));
(>)
{
>("",());
>("",());
>("",(()));
=();
();
>("",());
>("",());
>("",(()));
(0)
>("",(()1));
>("",(()0));
有照片更新,存放到数据库
("")
{
;
(0())
{
("");
;
}
;
*;
=();
=[2];
()
{
("");
;;
}
();
*;
=;
a
*;
[1];
[0]=0;
[0]=;
=(1,1,);
(i=0;i<;)
(,,);
;
=|1;
=;
>>("")->();
="";
}
>();
}
{
>();
>("",());
>("",());
>("",(()));
=();
();
>("",());
>("",());
>("",(()));
(0)
>("",(()1));
>("",(()0));
有照片,存放到数据库
("")
{
;
(0())
{
("");
;
}
;
*;
=();
=[2];
()
{
("");
;;
}
();
*;
=;
a
*;
[1];
[0]=0;
[0]=;
=(1,1,);
(i=0;i<;)
(,,);
;
=|1;
=;
>>("")->();
="";
}
>();
}
>();
>();
("*");
();
();
("更新成功!
");
}
()
{
.
(());
(());
;
>();
>();
(":
:
",(),());
();
}
}
为了保证数据的参照完整性在删除学生时要检查成就表中此学生的记录,有就删除。
此过程放在触发器中完成的
[][].[]
()
7.学生成绩的录入
目的与要求:
了解中调用中存储过程的基本方法。
参数对象
的使用,视图的更新使用,触发器的使用。
程序界面:
图7.1
主要功能:
用户可以选择专业,这是会列出本专业所有的学生学号,选择课