教务管理系统介绍

发布时间:2020-08-20 06:54:29   来源:文档文库   
字号:

1 教务管理系统需求分析

教务管理系统所必备的功能归纳为如图1.1所示,其中每个功能都由若干相关联的子功能模块组成。

1.1 教务管理系统的基本功能模块

1.1 系统数据流程

系统的数据流程如图1.2所示。

1.2 系统数据流程

1.2 基础数据管理

基础数据管理功能模块用于维护整个教务系统正常运行所需的基础数据集,以保证教务系统有一个统一的标准的基础数据集,便于数据的共享使用,内容包括包括入学年份、学年学期、院系数据、专业设置、教研室情况等,其中所包含子功能模块如图1.3所示

1.3基础数据管理功能模块

1.3 教学计划管理

教学计划管理功能模块用于维护学校中各系各专业的课程、课组计划安排信息,作为选课和毕业审查的标准,包括的功能有课程计划登记、课程计划审批、选课情况查询、选课信息审批等。

1.4 学籍管理

学籍管理主要包括了高校学籍管理的常用信息,提供对学生学籍基本信息录入、查询、修改、打印输出、维护等常用功能,并提供学号编排、学生照片输入与显示、学籍变动(留级、休学、跳级、转班、转学、退学等)、奖惩登记毕业情况等功能。

1.5 教师管理

教师管理功能模块用于管理教师相关的信息,提高质量,保证教学工作的高效运行,其中包含的子功能模块如图1.4所示。

1.4 教师管理功能模块

教师基本信息用于管理教师的基本信息,如所学专业、学历、毕业院校等。

教师任课档案用于管理教师任课档案信息,如教师姓名、学历和学期、任课班级、课程、周时数、总时数等。

教师奖惩档案用于管理教师奖惩档案信息,如教师姓名、奖惩日期、类别原因、奖惩名称、奖惩等级等。

教师考评管理用于对教师进行考评。

教师课时数统计用于统计教师工作量。

教师进修档案用于管理教师进修档案信息,如教师姓名、进修日期、进修科目、进修单位、进修成绩等。

1.6 注册收费管理

注册管理功能模块用于记录学生新学期的注册情况,如果未注册将记录学生的未注册原因及未注册去向。收费管理功能模块用于记录学生开学初的收费情况,每个学生的收费标准来自学生学籍信息中的收费类别。

1.7 排课选课管理

排课选课管理功能模块用于根据教学计划、教室资源、教师资源等,制定每学期的课程表,其中包含的子功能模块如图1.5所示。

1.5 排课选课管理功能模块

条件设定用于设置排课的一些限制条件,如班级、教师、教室的排课时段限制。

全校排课设定用于对某学期全校课表的共同部分进行设置,如课表的统一抬头、没天上课节数、统一的排课时段等进行设置。

班级课程配置用于对某个班级某学期具体开设的课程分别进行排课时段、单双周】连堂课等特殊情况设置。

教师排课设定用于对个别教师的排课时段进行特殊设置。

教室排课设定用于对个别教室的排课时段进行特殊设置。

课程信息录入用于对一些临时添加或修改的课程(不在教学计划之列的)进行设置。

教室分区设定用于把学校所有教室依据空间设置、使用类别等进行分区分组设置。

排课时段设定用于设置在一周的哪些时段安排课程,针对不同的班级、教室、教师只有给他们的排课时段相同可以通用。

合班信息设定用于对公共选修课打破行政班级的限制,在某个学期临时性的把几个班级组合在一起上课。

人工排课用于自动排课进行人工干预,常针对哪些调课、代课进行临时处理。

自动排课用于根据排课管理员设置的课程信息,以班级为单位进行自动的排课。

学生选课用于学生选择本学期的课程,目前一般都在网上直接完成。

1.8 考务成绩管理

考务成绩管理功能模块用于根据课程自动生成本学期的考试地点、考试时间、监考老师等数据,并对考试的过程和结果进行监控,其中包含的子功能模块如图1.6所示。

1.6 考务成绩管理功能模块

考务信息发布用于发布考务信息,如学年、学期、期中(期末)考试、考试时间等,以及其他一些有关考务的事项。

考试日程安排用于管理考试日期、时间、考试科目、考试班级、监考老师、考场等信息。

评卷安排用于对评卷专业、评卷科目、评卷教师、评卷日期、时间等评卷信息进行管理。

考场情况记录用于对考场情况进行管理,如考试班级、考试科目、应考人数、实到人数、违纪记录情况等。

学生成绩录入用于授课教师输入学生的考试成绩。

补考成绩录入用于授课教师输入学生的补考成绩。

补考通知单用于教务处依据班级、个人、课程、进行不及格统计,并打印出学生的补考通知单。

班级成绩单用于以班级为单位,打印该班级所开设课程的每个学生的成绩,送交教务处存档用。

1.9 毕业管理

毕业管理功能模块用于对学生毕业进行处理,同时对毕业信息、学位授予、证书授予及校友信息等进行管理,其中包含的子功能模块如图1.7所示。

1.7 毕业管理功能模块

技能管理用于对学生在校期间获得资格证书进行存档,有利于提高学生的综合素质。

实习管理用于记录学生在校期间的实习情况。

论文管理用于记录学生的毕业论文情况,供日后查询或借鉴。

毕业审核用于根据学生的所在系(所)、专业的教师计划、选课成绩和学籍来审查该省是否具备毕业资格。

毕业管理用于记录学生的毕业信息,包括毕业证书号、工作去向等。

1.10 教材管理

教材管理功能模块用于对教材库存、教材计划、教材预定、班级预收款、教材采购及教材销售工资进行有效管理,其中包含的子功能如图1.8所示。

1.8 教材管理功能模块

2 教务管理系统数据库分析

学生信息教师信息课程信息等都是系统的关键表,其他数据表与这些关键表间的关系是N1的关系。

2.1 教务管理系统E-R

关键实体的E-R图如图2.1所示。

班级信息

PK

班级编号

年级

班级名称

班级简称

人数

班主任

2.1 教务管理系统E-R

2.2 教务管理系统数据表清单

重要表的名称及用途如表2.1所示。

数据表名称 数据表用途

Bjbkb 班级报考表

Bjcjb 班级成绩表(打印用)

Bjjhcjb 班级计划成绩表(显示和打印用)

Bjhks 班计划学期考试课程表

Bjhxq 班计划学期课程开设表

Bjxjh 班教学计划信息表

Bjxxb 版注册和档案表

Bkbpdfb 报考编排登分表

Kctdmkb_tmp 毕业课程替代免考表

Kctdmkb 毕业课程代替免考表

Bysmdb 毕业生名单

Bycymdb 毕业预审审核差异名单表

Byyshsdfb 毕业预审审核得分表

Byyshsdfb _tmp 毕业预审审核得分表

Cgdw 采购单位

Cgdwdhzz 采购单位到货总账

Cgdwhzz 采购单位总账

Cgdhmxb 采购到货明细表

Cgdhmxml 采购到货明细目录

Cgmxb 采购明细表

Cgzb 采购总表

Cjdmb 成绩代码表

Cjgdb 成绩更动表

Cjtjb 成绩统计表

Cjzb 成绩总表

Cjzb_copy 成绩总表

Dgdw 订购单位

Dgdwmxb 订购单位明细表

Dgmxb 订购明细表

Dgzb 订购总表

Fxzyb 辅修专表

Jhkkkcb 计划开考课程表

Jhkkkcd 计划开考课程传递表

Jljb 奖励级别

Jlqkjzb 奖励情况记载表

Jccgfbml 教材采购分单目录

Jccgjsb 教材采购计算表

Jccgmxb 教材采购明细表

Jccgshb 教材采购审核表

Jcch 教材册号

Jcdgzb 教材订购总表

Jclxmdz 教材类型编码对照

Jcsmmb 教材说明模板

Jcthzt 教材替换状态

Dgdwzb 教材征订订购单位总表

Jczb 教材总表

Jxbm 教学部门表

Jxdg 教学大纲

Jxhjdy 教学环境定义

Kkdw 开课单位表

Kcqkb 考试情况表

Kdxxb 考点代码表

Kslb 考生类别代码表

Ksdmb 考试代码表

Ksdmcd 考试代码传递表

Ksdxb 考试对象表

Ksfsdm 考试方式代码表

Kslxdmd 考试类型代码表

Kccc 课程层次代码表

Kcgldw 课程管理单位

Kcjsfs 课程建设方式

Kcjsjb 课程建设级别表

Kcjslb 课程建设类别

Kcjcdzb 课程教材对照

Kclb 课程类别代码表

Kctdb 课程代替表

Kcxz 课程性质代码表

Kczb 课程总表

Ljhkc 类计划课程表

Ljhxq 类计划学期开设课程表

Ljhks 类计划学期考试课程表

Ljxjh 类教学计划表

Mzdm 民族代码表

Ndszb 年度收支表

Njdm 年纪代码表

Njkc 年纪课程表

Njcy 年期专业表

Njzy 新开课程表

Xkkc 新生注册表

Xszcb 学费来源代码表

Xfly 学籍变动代码表

Xjyd 学籍变动记载表

Xjydjzb 学籍状态代码表

Xjzt 学生非在籍和毕业生统计表

Xsbyfzjtj 学生基本情况表

Xsjbdab 学生基本情况表

Xsjhcjb 学生计划成绩表(显示和打印用)

Xslb 学生类别代码表

Xslx 学生类型代码表

User_xslx 学生类型代码对应表

3 制作介绍

3.1 实例功能

实例介绍如图2.2所示功能的开发过程,并简化其中各功能所包含的属性。

需要强调的是,由于用户登陆和权限管理的功能各个系统实现的方法是一致的,

2.2 详细介绍的功能模块

3.2 系统流程图

系统流程图2.3所示。

2.3 系统流程图

4 数据库设计

根据实例介绍,“学生信息表”和“课程信息”是系统关键的表,其他各表均通过相应的编号字段进行多对一的关联。系统共需10张表,用途分别如表2.4所示。

2.4 系统数据表及其用途

数据表名称

数据表用途

政治面貌代码表

保存学生政治面貌的代码和政治面貌,如团员、党员等

名族代码表

保存学生名族的代码和名族,如汉族、壮族等

籍贯代码表

保存学生籍贯的代码和籍贯,如北京,广西等

学籍代码表

保存学生学籍的代码和学籍,如在学、休学、毕业等

班级信息

保存班级的基础信息

学生信息

保存学生的基础信息

课程信息

保存课程的基础信息

课程表

保存课程的上课时间和地点的信息,一般有排课子系统生成。

成绩表

保存学生的课程成绩

4.1 创建数据库

创建 SQL Server企业管理器,新建一个数据库,将其命名为eisbook

4.2 创建“班级信息”数据表

CREATE TABLE [dbo].[班级信息] (

[班级编号] [varchar] (14) NOT NULL ,

[年级] [varchar] (4) NULL ,

[班级名称] [varchar] (30) NULL ,

[班级简称] [varchar] (16) NULL ,

[人数] [numeric](3, 0) NULL ,

[班主任] [varchar] (8) NULL

) ON [PRIMARY]

GO

4.3 创建“学生信息”数据库

CREATE TABLE [dbo].[学生信息] (

[学号] [varchar] (14) NOT NULL ,

[姓名] [varchar] (8) NULL ,

[班级编号] [varchar] (14) NULL ,

[性别] [varchar] (2) NULL ,

[年级] [int] NULL ,

[政治面貌编号] [varchar] (2) NULL ,

[民族编号] [varchar] (2) NOT NULL ,

[籍贯编号] [varchar] (2) NOT NULL ,

[身份证号] [varchar] (15) NULL ,

[学籍编号] [varchar] (2) NOT NULL

) ON [PRIMARY]

GO

4.4 创建“课程信息”数据表

CREATE TABLE [dbo].[课程信息] (

[课程编号] [int] NOT NULL ,

[课程名称] [char] (40) NOT NULL ,

[课程简称] [char] (40) NOT NULL ,

[拼音码] [char] (6) NULL ,

[本学期课程] [char] (2) NOT NULL ,

[教师] [char] (10) NULL ,

[开课系别] [char] (30) NULL ,

[学分] [int] NULL

) ON [PRIMARY]

GO

4.5 创建“课程表”数据表

CREATE TABLE [dbo].[课程表] (

[编号] [int] IDENTITY (1, 1) NOT NULL ,

[课序号] [varchar] (14) NOT NULL ,

[课程编号] [int] NOT NULL ,

[上课时间天] [int] NOT NULL ,

[上课时间节] [int] NOT NULL ,

[上课地点] [varchar] (20) NOT NULL

) ON [PRIMARY]

GO

CREATE TABLE [dbo].[选课表] (

[编号] [int] IDENTITY (1, 1) NOT NULL ,

[学号] [varchar] (14) NOT NULL ,

[课序号] [varchar] (14) NOT NULL

) ON [PRIMARY]

GO

4.6 创建“成绩表”数据库

CREATE TABLE [dbo].[成绩表] (

[编号] [int] IDENTITY (1, 1) NOT NULL ,

[学号] [varchar] (14) NOT NULL ,

[课程编号] [int] NOT NULL ,

[成绩] [int] NOT NULL ,

[考试次数] [int] NULL ,

[是否补修] [varchar] (2) NULL ,

[是否重考] [varchar] (2) NULL ,

[是否已确定成绩] [varchar] (2) NULL

) ON [PRIMARY]

GO

4.7 创建其他关键数据表

以下是其他关键数据库的创建脚本。

CREATE TABLE [dbo].[政治面貌代码表] (

[政治面貌编号] [varchar] (2) NOT NULL ,

[政治面貌] [varchar] (14) NULL

) ON [PRIMARY]

GO

CREATE TABLE [dbo].[民族代码表] (

[民族编号] [varchar] (2) NOT NULL ,

[民族] [varchar] (18) NULL

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[学籍代码表] WITH NOCHECK ADD

CONSTRAINT [PK_学籍代码表] PRIMARY KEY CLUSTERED

(

[学籍编号]

) ON [PRIMARY]

GO

CREATE TABLE [dbo].[籍贯代码表] (

[籍贯编号] [varchar] (2) NOT NULL ,

[籍贯] [varchar] (18) NULL

) ON [PRIMARY]

GO

4.8 创建主键及外键等表约束。

在查询分析器中通过如下代码创建数据表的主键及外键等表约束。

ALTER TABLE [dbo].[学生信息] WITH NOCHECK ADD

CONSTRAINT [PK_学生信息] PRIMARY KEY CLUSTERED

(

[学号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[学籍代码表] WITH NOCHECK ADD

CONSTRAINT [PK_学籍代码表] PRIMARY KEY CLUSTERED

(

[学籍编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[成绩表] WITH NOCHECK ADD

CONSTRAINT [PK_成绩表] PRIMARY KEY CLUSTERED

(

[编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[政治面貌代码表] WITH NOCHECK ADD

CONSTRAINT [PK_政治面貌代码表] PRIMARY KEY CLUSTERED

(

[政治面貌编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[民族代码表] WITH NOCHECK ADD

CONSTRAINT [PK_民族代码表] PRIMARY KEY CLUSTERED

(

[民族编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[班级信息] WITH NOCHECK ADD

CONSTRAINT [PK_班级信息] PRIMARY KEY CLUSTERED

(

[班级编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[籍贯代码表] WITH NOCHECK ADD

CONSTRAINT [PK_籍贯代码表] PRIMARY KEY CLUSTERED

(

[籍贯编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[课程信息] WITH NOCHECK ADD

CONSTRAINT [PK_课程信息] PRIMARY KEY CLUSTERED

(

[课程编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[课程表] WITH NOCHECK ADD

CONSTRAINT [PK_课程表] PRIMARY KEY CLUSTERED

(

[编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[选课表] WITH NOCHECK ADD

CONSTRAINT [PK_选课表] PRIMARY KEY CLUSTERED

(

[编号]

) ON [PRIMARY]

GO

ALTER TABLE [dbo].[成绩表] ADD

CONSTRAINT [DF_成绩表_成绩] DEFAULT (0) FOR [成绩]

GO

ALTER TABLE [dbo].[学生信息] ADD

CONSTRAINT [FK_学生信息_班级信息] FOREIGN KEY

(

[班级编号]

) REFERENCES [dbo].[班级信息] (

[班级编号]

),

CONSTRAINT [FK_学生信息_籍贯代码表] FOREIGN KEY

(

[籍贯编号]

) REFERENCES [dbo].[籍贯代码表] (

[籍贯编号]

),

CONSTRAINT [FK_学生信息_民族代码表] FOREIGN KEY

(

[民族编号]

) REFERENCES [dbo].[民族代码表] (

[民族编号]

),

CONSTRAINT [FK_学生信息_学籍代码表] FOREIGN KEY

(

[学籍编号]

) REFERENCES [dbo].[学籍代码表] (

[学籍编号]

),

CONSTRAINT [FK_学生信息_政治面貌代码表] FOREIGN KEY

(

[政治面貌编号]

) REFERENCES [dbo].[政治面貌代码表] (

[政治面貌编号]

)

GO

ALTER TABLE [dbo].[成绩表] ADD

CONSTRAINT [FK_成绩表_课程信息] FOREIGN KEY

(

[课程编号]

) REFERENCES [dbo].[课程信息] (

[课程编号]

),

CONSTRAINT [FK_成绩表_学生信息] FOREIGN KEY

(

[学号]

) REFERENCES [dbo].[学生信息] (

[学号]

)

GO

ALTER TABLE [dbo].[课程表] ADD

CONSTRAINT [FK_课程表_课程信息] FOREIGN KEY

(

[课程编号]

) REFERENCES [dbo].[课程信息] (

[课程编号]

)

GO

4.9 创建存储过程

系统使用了“sf_终止选课”和“sf_成绩提交”两个存储过程,分别实现结算选课,生成空白成绩单和教师提交最终的成绩但的功能。

create proc sf_成绩提交 @courseid int

as

begin tran

-- 提交成绩,提交后不可以再修改

update 成绩表 set 是否已确定成绩='Y' where 课程编号=@courseid

and 成绩>0

commit

GO

SET QUOTED_IDENTIFIER OFF

GO

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

SET ANSI_NULLS ON

GO

create proc sf_终止选课

as

begin tran

--应该单独有一个【终止选课】的功能,终止选课后生成空的成绩单

--所有学生将不允许更改课程信息,如果需要更改,必须单独申请,特殊处理。

--终止选课一学年应该只能进行一次操作,实例没有制作开始选课等功能,终止

--选课后在学生选课中仍然可以更改选择的课程。

insert into 成绩表(学号,课程编号,成绩,考试次数,是否补修,是否重考,是否已确定成绩)

select distinct a.学号, b.课程编号, 0, 1, 'N', 'N','N' from

选课表 as a, 课程表 as b where a.课序号=b.课序号

and rtrim(a.学号)+rtrim(b.课程编号) not in

(select rtrim(学号)+rtrim(课程编号) from 成绩表)

-- 因为没有记录选课状态,上面的sql语句加了判断,如果成绩表以有

-- 改学号/课程,就不插入,实际应用中如果是重复的,应该是补修和重考

-- 的情况,应该更改已有信息的这些状态

-- 还要注意select 语句加了distinct说明,因为选课表一个课序号

-- 一个学号可能有两条记录

commit

GO

5 程序开发

本系统采用多文档窗体程序,没一功能对应一个子窗体。

5.1 程序运行结果

本实例的运行结果如图2.5所示。选择菜单中的各菜单命令可以进入相应的功能。

(1) 选择【基础维护】|【班级信息维护】命令,进入【班级维护功能窗体】,在其中输入学校班级相关的信息,如图2.6所示,需要新增或修改信息,单击相应的按钮,输入信息后单击【保存】按钮即可。需要删除一条信息,选中该信息后单击【删除】按钮。在搜索条件编辑框输入搜索的条件,单击【搜索】按钮,可以查询出相应的记录。

(2) 选择【基础维护】|【学生信息维护】命令,进入【学生信息维护】功能窗体,如2.7所示,在输入学生相关的信息。其中【班级编号】、【政治编号】、【名族编号】、【籍贯编号】和【学籍编号】列表框都是通过饿数据库中相应的代码表关联出列表框的选择项,选择下拉的一个列表项目后,保存的是该项目的编号信息。

图2.5 实例运行结果

图2.6 班级信息维护功能窗体

图2.7 学生信息维护功能窗体

(3) 选择【基础维护】|【课程信息维护】命令,进入【课程信息维护】功能窗体,在其中输入课程的信息,如图2.8所示。

图2.9 课程信息维护功能窗体

完成以上基础信息维护后,就可以运行教务管理的各个功能了。一般教务管理系统中的基础信息除了以上信息外还涉及很多其他方面,如教师、教室、系别、教材等信息。在完成了各个资源的设置后,需要通过排课系统排出课程表。本实例使用现成的课程表演学生选课、成绩登记等功能。

(4) 选择【教学管理】|【学生选课】命令,进入【学生选课】功能窗体,如图3.0所示。首先在【学号】编辑框中输入学号并回车,系统显示出对应学生信息和该学生已选的课程;然后在【课程信息组合框中输入课程查询条件,查询并选择希望选的课程,单击【选课】按钮,系统检查该门课程是否已选择,以及该课序号课程的所有上课时间和已选择课程的上课时间是否冲突,如果都没有问题就可以完成指定课序号的课程的选课操作。需要注意的是,一般教务管理系统都是学生用自己的学号登陆到系统,只能选择自己的课程,而不是在选课界面输入学号,因为实例程序没有制作登陆功能,所以这么处理了。同时还应注意一门课程可以对应多个课程号,一个课程号可以对应多个上课时间。想要删除已经选择的课程,在【已选课程】组合框中选择欲删除的课程号,单击【删除】按钮即可。单击【显示课表】按钮可以按照课表的形式显示选择的课程,具体参见【课表查询】功能。

图3.0 学生选课功能船体

(5) 选课完成后,选择【教学管理】|【课表查询】命令,进入【课表查询】功能窗体,如3.1所示,从中可以查询对应课程表。

如图3.1 课表查询功能窗体

学生选课完成后通过终止选课功能终止选课时间,产生空成绩单,所选择的课程不能够在修改。实例把终止选课的功能集成到成绩输入功能中。选择【教学管理】|【成绩输入】命令,进入【成绩输入】功能窗体,如图3.2所示。先单击【终止选课,生成空成绩单】按钮,系统调用“sf_终止选课”存储过程,产生对应的成绩表记录。在【选择课程】组合框中输入课程号的查询条件,查询出需要登记成绩的课程,系统列出所有选择了指定课程的学生及成绩,选择相应记录,在【成绩】编辑框中输入成绩,单击【修改成绩】按钮即可。在完成所有的成绩输入后,单击【最终提交】按钮,提交成绩,提交后成绩将不可再修改(在成绩输入功能不能再查询到)。

图3.2 成绩输入功能窗体

(6) 学生毕业前一般都需要打印成绩单,选择【报表统计】|【打印成绩单】命令,进入【打印成绩单】功能窗体,如图3.3所示。在【学号】编辑框中输入学号后回车,可以查询出指定学号学生的所有成绩单,单击【打印】按钮可以打印出成绩单,如图3.4所示。

图3.3 打印成绩单功能窗体

图3.4 打印成绩单

5.2 创建工程

启动Microsoft Visual .NET 2003,在主菜单选择【文件】|【新建】|【项目】命令,弹出【新建项目】对话框,在【项目类型】列表框中选择【visual basic项目】选项,然后在【模板】列表框中选择【windows应用程序】。在【名称】文本框中输入一个合适的方案文件名,选取要存放的位置,然后单击【确定】按钮完成新项目的开启。

5.3 创建系统主窗体

(1)利用系统默认生成的窗体作为主窗体,并为其添加主菜单控件和其他控件,布局如图3.5所示。

图3.5 系统主窗体

(2)主窗体及其控件的属性设置如表3.6和3.7所示。

表3.6 主窗体属性设置

控件类型

对象(控件)名

属性

取值(说明)

From

Frmmain

Name

Frmmain

Caption

EIS教务管理系统

Ismdicontainer

True

表3.7 窗体主菜单属性设置

菜单栏

菜单项

属性

取值(说明)

Mnbasic

Text

基础维护(&w)

Mnclass

Text

班级信息维护(&x)

Mnstudent

Text

学生信息维护(&y)

Msubject

Text

课程信息维护(&z)

Mnteach

Text

教学管理(&x)

Mnselect

Text

学生学科(&x)

Mncourse

Text

课表查询(&y)

Mnresult

Text

成绩输入(&z)

Mnprint

Text

报表统计(&y)

Mnreport

Text

打印成绩单(&z)

Mnexit

Text

退出系统(&z)

5.4 创建数据访问模块

因为各个窗体均需要对数据库进行访问,可以把对数据库的一些操作通过一个类来实现,这样可以使对数据库的访问更加简单。选择【文件】|【添加新项】命令添加一个名为“database.Vb”的类文件。

5.5 创建数据操作窗体的父类窗体

因为系统中所有对数据库表进行维护的窗体界面及实现的功能大体是一致的,为了减少系统编程的工作量,可以把这些共同的部分抽取出来,生成一个父类窗体,其他数据库操作窗体均可以通过集成父类窗体获得数据维护的功能。这是visual basic.net 语言的一个特点和优点,也是需要重点去理解和掌握的知识点。

新建一个窗体,将其name属性改为“frmbase”,并为其添加如图3.8所示的控件。

图3.8 基础窗体

5.6 实现班级信息维护

(1) 选择【文件】|【添加新项】命令,在【添加新项】对话框的【模板】列表框中选择【继承选择器】对话框,在其中选择frmbase选项并单击【确定】按钮。为新建窗体添加如图3.9所示的控件。

图3.9 frmclass窗体

(2)各控件的属性设置如表4.0所示。

表4.0 frmclass窗体控件属性

控件类型

对象名

属性

取值(说明)

From

Frmclass

Text

Frmbase

Groupbox

Groupbox1

Dock

Bottom

Textbox

Txbclaasid

Text

textbox

Txbgrade

Text

Textbox

Txbnumber

Text

Textbox

Txbteacher

Text

Textbox

Txbname

Text

Textbox

Txbshortname

Text

(3)从工具箱中拖动一个sqldataadapter对象到窗体上,连接eisbook数据库,添加班级信息,并选择所有字段。单击【确定】按钮完成sqldataadapter对象的配置。

(4)在sqldataadapter对象上右击,在弹出的快捷菜单中选择【生成数据集】命令,在弹出的【生成数据集】对话框中单击【确定】按钮。

(5)为每个textbox控件设置数据源。

(6)重写frmclass基类frmbase的函数。

Public Overrides Sub Prepare()

Me.Text = "班级信息维护"

End Sub

Public Overrides Sub LoadData()

Dim strFilter As String

If txbOne.Text.Trim.Length = 0 Then

If txbTwo.Text.Trim.Length = 0 Then

If txbThree.Text.Trim.Length = 0 Then

strFilter = ""

Else

strFilter = "where 班级名称 like '"

strFilter += txbThree.Text.Trim + "%'"

End If

Else

strFilter = "where 年级 like '"

strFilter += txbTwo.Text.Trim + "%'"

If txbThree.Text.Trim.Length <> 0 Then

strFilter += " and 班级名称 like '"

strFilter += txbThree.Text.Trim + "%'"

End If

End If

Else

strFilter = "where 班级编号 like '"

strFilter += txbOne.Text.Trim + "%'"

If txbTwo.Text.Trim.Length <> 0 Then

strFilter += " and 年级 like '"

strFilter += txbTwo.Text.Trim + "%'"

If txbThree.Text.Trim.Length <> 0 Then

strFilter += " and 班级名称 like '"

strFilter += txbThree.Text.Trim + "%'"

End If

Else

If txbThree.Text.Trim.Length <> 0 Then

strFilter += " and 班级名称 like '"

strFilter += txbThree.Text.Trim + "%'"

End If

End If

End If

'清空DataSet11

DataSet11.Clear()

SqlConnection1.ConnectionString = DataBase.sConn

Dim strSQL As String

SqlDataAdapter1.SelectCommand.CommandText _

= "select * from 班级信息 " + strFilter

'根据查询条件重新填充DataSet11

SqlDataAdapter1.Fill(DataSet11)

dtData = DataSet11.Tables("班级信息")

bmData = Me.BindingContext(DataSet11, "班级信息")

If bmData.Count <> 0 Then

bmData.Position = 0

End If

End Sub

Public Overrides Sub SetDataGrid()

LoadData()

'定义一个DataGrid表样式

Dim ts As New DataGridTableStyle

Dim aColumnTextColumn As DataGridTextBoxColumn

Dim numCols As Integer = dtData.Columns.Count

Dim i As Integer

For i = 0 To numCols - 1

aColumnTextColumn = New DataGridTextBoxColumn

aColumnTextColumn.MappingName = _

dtData.Columns(i).ColumnName

aColumnTextColumn.HeaderText = _

dtData.Columns(i).ColumnName

aColumnTextColumn.NullText = ""

aColumnTextColumn.ReadOnly = True

ts.GridColumnStyles.Add(aColumnTextColumn)

Next

ts.AlternatingBackColor = Color.LightGray

ts.AllowSorting = False

ts.MappingName = dtData.TableName

dgdList.TableStyles.Clear()

dgdList.TableStyles.Add(ts)

Dim dv As DataView = dtData.DefaultView

dv.AllowNew = False

dv.AllowDelete = False

'dv.AllowEdit = False

'设置数据源

dgdList.DataSource = dtData.DefaultView

bmData = Me.BindingContext(DataSet11, "班级信息")

lblCount.Text = "记录数:" + dtData.Rows.Count.ToString()

End Sub

Public Overrides Sub SetTextBoxState(ByVal bState As Boolean)

Me.GroupBox1.Enabled = Not bState

End Sub

Public Overrides Sub Clear()

Me.txbClassId.Text = ""

Me.txbGrade.Text = ""

Me.txbNumber.Text = ""

Me.txbTeacher.Text = ""

Me.txbName.Text = ""

Me.txbShortName.Text = ""

End Sub

Public Overrides Sub SaveForAdd()

Dim dr As DataRow = DataSet11.Tables("班级信息").NewRow()

Try

dr("班级编号") = Me.txbClassId.Text.Trim

dr("年级") = Me.txbGrade.Text.Trim

dr("班级名称") = Me.txbName.Text.Trim

dr("班级简称") = Me.txbShortName.Text.Trim

dr("人数") = Me.txbNumber.Text.Trim

dr("班主任") = Me.txbTeacher.Text.Trim

Catch ex As Exception

MessageBox.Show("数据格式不正确!")

Exit Sub

End Try

Try

DataSet11.Tables("班级信息").Rows.Add(dr)

If Me.DataSet11.HasChanges = True Then

SqlDataAdapter1.Update(DataSet11)

End If

Catch ex As Exception

MessageBox.Show("数据添加失败!")

End Try

LoadData()

dgdList.DataSource = dtData.DefaultView

End Sub

Public Overrides Sub DeleteData()

Try

'删除当前行的数据

DataSet11.Tables("班级信息"). _

Rows(bmData.Position).Delete()

If Me.DataSet11.HasChanges = True Then

'更新DataSet11

SqlDataAdapter1.Update(DataSet11)

End If

Catch ex As Exception

MessageBox.Show("数据删除失败!")

End Try

End Sub

Public Overrides Sub SaveForUpdate()

Try

Dim row As Integer

row = dgdList.CurrentCell.RowNumber

dgdList.CurrentCell = _

New DataGridCell((row + 1) Mod bmData.Count, 0)

'判断是否有更新的数据

If Me.DataSet11.HasChanges = True Then

SqlDataAdapter1.Update(DataSet11)

End If

Catch ex As Exception

MessageBox.Show("数据修改失败!")

End Try

End Sub

5.7 实现学生信息维护功能

(1)选择【文件】|【添加新项】命令,在【添加新项】对话框的【模板】列表框中选择【继承的窗体】选项,并命名为“frmstudent.vb”。单击【打开】按钮后会出现【继承器】对话框,在其中选择frmbase选项并单击【确定】按钮。为新建窗体添加如图4.1所示。

图4.1 frmstuent窗体

(2) 各控件的属性设置如表4.2所示。

表4.2 frmstudent窗体控件属性

控件类型

对象名

属性

取值(说明)

From

Frmstudent

Text

Groupbox

Groupbox1

Dock

Bottom

Textbox

Txbclassid

Text

Textbox

Txbname

Text

Textbox

Txbgrade

Text

Textbox

Txbpid

Text

Combobox

Cbbsex

Items

Combobox

Cbbclassid

Items

Combobox

Cbbpolity

Items

Combobox

Cbbnation

Items

Combobox

Cbbbirthplace

Items

Combobox

Cbbstatus

Items

(3) 从工具箱中拖动一个sqldataadapter对象到窗体上,连接eisbook数据库,添加学生信息,并选择所有字段。单击【确定】按钮完成sqldataadapter对象的配置。

(4) 在sqldataadapter对象上右击,在弹出的快捷菜单选择【生成数据集】命令、在弹出的【生成数据集】对话框中单击【确定】按钮。

(5) 为每个textbox控件设置数据源。

(6) 重写frmstudent基类frmbase的函数。

5.7 实现课程信息维护功能

(1) 选择【文件】|【添加新项】命令,在【添加新项】对话框模板列表框中选择【继承的窗体】选项,并命名为“frmsubject.vb”。单击【打开】按钮后会出现【继承选择器】对话框,在其中选择frmbase选择并单击【确定】按钮。为新建窗体添加如图4.3所示控件。

图4.3 frmsubject窗体

(2) 各控件的属性设置如表4.4所示。

表4.4 frmcash窗体控件属性设置

控件类型

对象名

属性

取值(说明)

From

Frmsubject

Text

Groupbox

Groupbox1

Dock

Bottom,left,right

Textbox

Txbcourseid

Text

Textbox

Txbcoursename

Text

Textbox

Txbcoursename

Text

Textbox

Txbpy

Text

Textbox

Txbteacher

Text

Textbox

Txbdept

Text

Combobox

Cbbcredithour

Text

Groupbox

Groupbox1

Text

本学期课程

Textbox

Txbdept

Text

Combobox

Frmsubject

Items

5.8 实现学生选课功能

学生选课功能窗体不需要从父窗体继承。

(1) 新建一个窗体,将其name属性改为“frmselect”,并为其添加如图4.5所示的控件。

图4.5 frmselect窗体控件属性设置

(2) 部分控件的属性设置如表4.6所示。

表4.6 frmselect窗体控件属性设置

控件类型

对象名

属性

取值(说明)

From

Frmsubject

Text

学生选课

Groupbox

Grbtop

Dock

Top

Textbox

Txbid

Text

True

Textbox

Txbname

Readobly

True

Textbox

Txbgrade

Reagonly

Groupbox

Groupbox1

Anchor

Top,left,right

Datagrid

Dgdlist

Dock

Fill

Groupbox

Groupbox2

Anchor

Top,bottom,left,right

Textbox

Txbpy

Text

Groupbox

Groupbox1

Text

Textbox

Txbcname

Text

textbox

Txbid

Text

Textbox

Txbcid

Text

Textbox

Txbnumber

Text

Button

Btnsearch

Text

查询

Button

Btnselect

Text

选课

Button

Btndel

Text

删除

Button

Btndisplay

Text

显示课表

5.9 实现课表查询功能

选择【文件】|【添加新项】命令,在【添加新项】对话框的【模板】列表框中选择【继承的窗体】选项,并命名为“frmcourse.vb”。单击【打开】按钮后会出现【继承选择器】对话框,在其中选择frmbase选择并单击【确定】按钮。为新建窗体添加如图4.3所示控件。

图4.7 Frmcourse窗体

5.10 实现成绩输入功能

成绩输入功能窗体不需要从父窗体继承。

(1) 新建一个窗体,将其name属性改为“frmscore”,并为其添加如图4.8所示的控件。

图4.9 frmscore窗体

(2) 部分控件的属性设置如表5.0所示。

表5.0 frmscore窗体控件属性设置

控件类型

对象名

属性

取值(说明)

From

Frmscore

Text

成绩输入

Groupbox

Groupbox1

Dock

Top

Button

Btnclear

Text

终止课,生成空成绩单

Groupbox

Groupbox2

Dock

Top

Textbox

Txbpy

Text

Textbox

Txbname

Text

Textbox

Txbid

Text

Button

Btnsearch

Text

查询

Button

Btnsubmit

Text

最终提交

Groupbox

Groupbox3

Dock

Fill

Datagird

Dgdlist

Anchor

Top,bottom,left

Textbox

Txbscore

Text

Button

Btnupdate

Text

修改成绩

5.11 实现打印成绩单功能

打印成绩单功能窗体不需要从父窗体继承。

(1)新建一个窗体,将其name属性改为“frmreport”并为其添加如图5.1所示的控件。

图5.1 frmreport窗体

(2)部分控件的属性设置如表5.2所示。

表5.2 frmreport窗体控件属性设置

控件类型

对象名

属性

取值(说明)

From

Frmreport

Text

打印成绩单

Groupbox

Grbsearch

Dock

Top

Textbox

Txbid

Text

Textbox

Txbname

Readonly

Textbox

Txbclass

Readonly

Button

Txbprint

Text

打印

(3) 为窗体frmreport添加私有变量。

Private dtData As DataTable

(4) 为文本框控件txbid的keydown事件添加事件响应事件。

Private Sub txbId_KeyDown(ByVal sender As Object, ByVal _

e As System.Windows.Forms.KeyEventArgs) Handles txbId.KeyDown

If e.KeyCode = Keys.Enter And txbId.Text.Trim.Length <> 0 Then

Dim db As DataBase = New DataBase

Dim dv As DataView

Dim strSQL As String = "select 姓名, 班级名称, 学籍编号 from"

strSQL += " 学生信息 as a, 班级信息 as b where a.班级编号="

strSQL += "b.班级编号 and 学号='" + Me.txbId.Text.Trim + "'"

dv = db.RunSelectSQL(strSQL)

If dv.Count = 0 Then

MessageBox.Show("学号错误!")

Exit Sub

End If

Me.txbName.Text = dv(0)("姓名").ToString()

Me.txbClass.Text = dv(0)("班级名称").ToString()

strSQL = "select b.课程名称,b.开课系别,b.教师,a.成绩 from "

strSQL += "成绩表 as a, 课程信息 as b where a.课程编号="

strSQL += "b.课程编号 and 学号='" + Me.txbId.Text.Trim

strSQL += " ' order by a.课程编号"

dv = db.RunSelectSQL(strSQL)

Me.dgdList.DataSource = dv

dv.AllowDelete = False

dv.AllowEdit = False

dv.AllowNew = False

dtData = dv.Table

Me.dgdList.AllowSorting = False

db.Dispose()

End If

End Sub

(5) 为按钮控件btnprint的click事件响应事件。

Private Sub btnPrint_Click(ByVal sender As System.Object, _

ByVal e As System.EventArgs) Handles btnPrint.Click

Dim childFrm As frmPrint = New frmPrint(dtData)

childFrm.ShowDialog()

End Sub

其中frmprint为打印报表的窗体,接下来将介绍窗体frmprint。Frmprint功能窗体不需要从父窗体继承。

(6) 新建一个窗体,将其name属性改为“frmprint”并为添加如图5.3所示的控件。

图5.3 frmprint窗体

(7) 部分控件的属性设置如表5.4所示。

表5.4 frmprint窗体控件属性设置

控件类型

对象名

属性

取值(说明)

Form

Frmprint

Text

Print preview

Cystalreportviewer

Cystalreportviewer1

Dock

Fill

(8) 为窗体类frmprint添加私有变量。

Private dtPrint As DataTable

(9) 为窗体frmprint添加构造函数。

Private Sub frmPrint_Load(ByVal sender As Object, _

ByVal e As System.EventArgs) Handles MyBase.Load

Try

Dim obj As ReportDocument = New ReportDocument

'obj加载Crystal Report的路径要设置好

obj.Load("Report.rpt")

'设置报表的数据源

'Dim ds As DataSet = New DataSet

'ds.Tables.Add(dtPrint)

obj.SetDataSource(dtPrint)

Me.CrystalReportViewer1.ReportSource = obj

Catch ex As Exception

MessageBox.Show(ex.ToString)

End Try

End Sub

Report.rpt如图5.5所示。

图5.5 report.rpt 窗体

至此实例全部功能已经完成。

6 系统发布

系统设计完成后需要打包发布,将应用制作成安装程序。制作安装程序的工具很多,一般Visual Basic.NET开发的应用系统可以使用Visual Basic.NET2003自带的功能进行打包,也可以用Install Shield来完成系统的安装查询。

7 小结

我们可以掌握以下知识和技巧。

教务管理系统的需求。

利用Visual Baisic .NET进行数据库编程的多种方法。

数据库识图的使用。

利用Visual Basic.NET编写教务管理系统

本文来源:https://www.2haoxitong.net/k/doc/18e0d182b72acfc789eb172ded630b1c59ee9bfb.html

《教务管理系统介绍.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:
点击下载文档

文档为doc格式