目次
1 体系设计... 1
1.1 体系功能分析... 1
1.2 体系功能模块设计... 2
1.3 操纵流程图... 2
2 数据库设计... 2
2.1 数据库需求分析... 3
2.2 数据库概念布局设计... 4
2.3 数据库逻辑布局设计... 5
2.4 数据库布局的实现... 8
2.5 初始数据的录入... 12
3 体系主窗体的创建... 13
3.1创建工程文件... 14
3.4部分程序的实现... 16
4 学生信息管理模块... 16
4.1 模块功能分析... 16
4.2 主窗体的设计... 17
4.3模块用户界面的设计... 17
4.4 模块功能的实现... 18
4.4.1 通用变量、通用模块界说... 18
4.4.2 数据增加功能的实现... 19
4.4.3 数据修改功能的实现... 20
4.4.4 数据记录删除功能的实现... 22
4.4.5 数据记录add和刷新功能的实现... 23
5 课程管理模块... 25
5.1 模块功能分析... 26
5.2 主窗体的设计... 26
5.3 模块用户界面的设计... 26
5.4模块功能的实现... 26
5.4.1 通用变量、通用模块界说... 26
6 成绩管理模块... 29
6.1模块功能分析... 29
6.2主窗体的设计... 30
6.3模块用户界面的设计... 30
6.4模块功能的实现... 30
6.4.1 通用变量、通用模块界说... 30
7 学生信息查询模块... 33
7.1 模块功能分析... 33
7.2 主窗体的设计... 33
7.3模块用户界面的设计... 34
7.4 模块功能的实现... 34
7.4.1 默认查询功能... 34
7.4.2 查询功能的实现... 34
8 课程信息查询模块... 38
9 成绩信息查询模块... 39
10 绩点表查询和科目表查询... 39
10.1 主窗体的设计... 40
10.2 模块用户界面的设计... 40
11 体系的编译和发行... 41
11.1 体系的编译... 41
11.2体系的运行测试... 41
12 小结与提高... 43
12.1 小结... 43
12.2 创意与提高... 44
1 体系设计
在数据库体系开发的前期,一样平常要对体系的开发目的、使用对象、实现的功能等进行详细的分析,确定体系的开发方案。
1.1 体系功能分析
1.1.1 开发目的:
学生信息管理体系的开发目的是管理全校学生的各种信息,方便学生信息的查询。体系的使用对象是学生管理部门,如教务处工作职员、校院系领导、班主任、教师等。所开发的体系的重要使用对象是教务处。
1.1.2 重要功能:
- 学生基本信息的录入,包罗:学号、姓名、性别、院系、年岁等;
- 学生信息设置管理,学生基本信息的增加、修改和删除等;
- 学生信息的查询;
- 课程信息的录入,包罗:课程号、课程名、先行课、学分等;
- 课程设置管理,包罗课程的增加、修改和删除等;
- 课程信息的查询;
- 成绩信息的录入,包罗:学号、课程号、成绩等;
- 成绩设置管理,包罗成绩的增加、修改和删除等;
- 成绩信息的查询;
- 绩点表信息的录入,包罗:绩点号、绩点数、下限分、上限分、备注等;
- 绩点表的查询;
- 科目表信息的录入,包罗:院系、院系名等;
- 科目表的查询。
1.2 体系功能模块设计
根据体系所要实现的功能,按照布局化程序设计的原则,可以将整个体系划分为多少个功能模块。功能模块设计图如下所示:
1.3 操纵流程图
通过操纵流程分析,不光可以具体化体系的功能模块的构成,还可以明确体系中的数据流程,明确体系中所要生存的数据以及数据间的关系,为下一步的数据库设计打好底子。
2 数据库设计
数据库是信息管理体系的底子,在体系中占有告急的职位,数据库布局是否合理直接关系到体系功能的实现和运行的效率。合理的数据库布局设计可以提高数据存储的效率,保证数据的完整性和一致性,也有利于体系的编程实现。
数据库体系设计一样平常包罗如下几个步骤:
- 需求分析;
- 概念布局设计;
- 逻辑布局设计;
- 物理布局设计;
- 应用程序设计及调试;
- 性能测试与确认。
2.1 数据库需求分析
需求分析是整个数据库设计过程中最告急的步骤之一,是后续各阶段的底子。在需求分析阶段,需要从多方面对整个体系进行观察,网络和分析体系对信息和处理两个方面的需求。
网络资料是数据库设计职员和用户共同完成的。必须强调用户的参与,这是数据库应用体系设计的特点。网络资料的目的是明确用户的需求,用户的需求重要包罗以下三个方面:
1、信息需求,用户要从数据库获取的内容
2、处理需求,即完成什么处理功能以及采用何种处理方式
3、安全性及完整性需求
分析的过程是对所网络的数据进行抽象的过程。抽象是对实际事物或变乱的人为处理,抽取共同的本质特征,忽略渺小末节,并用各种概念进行精确形貌,这些概念构成某种数据模型。
在对学生信息管理体系操纵流程分析的底子上,可以列出以下学生信息管理体系所需的数据项和数据布局:
1、学生基本信息设置:学号、姓名、性别、院系、年岁等;
2、课程信息设置:课程号、课程名、先行课、学分等;
3、成绩信息设置:学号、课程号、成绩等;
4、绩点表设置:绩点号、绩点数、下限分、上限分、备注等;
5、科目表设置:院系、院系名等。
2.2 数据库概念布局设计
E-R模型(Entity-Relationship Module)简称E-R图,是形貌概念世界,建立概念模型的实用工具。数据库设计工作比较复杂,将实际世界的数据组织成符合具体数据库管理体系所采用的数据模型一样平常情况下不大概一次到位,P.P.S.Chen于1976年提出形象的实体-接洽方法。通过绘制E-R图,可以形貌组织模式,并可以进一步转化为任何一种SQL Sever所支持的数据模型。E-R图有三要素:
1、实体:用矩形框表示,框内标注实体名称
2、属性:用圆角矩形表示,并用连线与实体连接起来,表示实体的有关属性
3、实体间的接洽:用菱形框表示,框内注明接洽名称,并用连线将菱形框与有关实体连接,在连线上注明接洽的类型
在关系复杂的数据库体系的设计中,E-R图的设计包罗局部E-R图设计、综合E-R图设计、E-R图优化等步骤。本体系的学生信息管理体系功能比较简单,其E-R图如图所示:
2.3 数据库逻辑布局设计
概念布局设计的结果得到一个与计算机、软硬件的具体性能无关的全局概念模式。数据库逻辑设计的任务是将概念布局转换成特定SQL Sever所支持的数据库模型。从E-R图所表示的概念模型可以转换成任何一种具体SQL Sever所支持的数据模型。本体系采用关系模型,转换的原则是:
1、每个实体转化成一个关系模式(即数据表),实体的属性就是关系的属性,实体的关键字就是关系的关键字;
2、每个1:1的接洽转换成一个关系模式。每个实体的关键字都是该关系模式的候选关键字;
3、每个1:n的接洽转换成一个关系模式。多方的实体的关键字是该关系模式的关键字;
4、每个m:n的接洽转换成一个关系模式。接洽中各实体关键字的组合构成该关系模式的组合关键字;
5、具有相同关键字的关系可以归并。
在进行完概念布局的转化以后,还需要进行规范化处理,通过模式归并和模式分解,优化数据逻辑布局,使数据库既能有效减少冗余信息,又能提高数据库的查询、操纵性能。
根据学生信息管理体系的E-R图,通过简单的优化,可以设计5个关系模式(即数据表)来存储全部的信息。5个数据表的布局如表1到5所示:
表1 学生基本信息表(Student)
字段名
| 数据类型(长度)
| 必添字段
| 说明
| Sno
| Char(9)
| 是
| 学号(主关键字)
| Sname
| Char(20)
| 否
| 姓名
| Ssex
| Char(2)
| 否
| 性别
| Sage
| Smallint
| 否
| 年岁
| Sdept
| Char(20)
| 否
| 院系
|
表2 课程基本信息表(Course)
字段名
| 数据类型(长度)
| 必添字段
| 说明
| Cno
| Char(4)
| 是
| 课程号(主关键字)
| Cname
| Char(40)
| 否
| 课程名
| Cpno
| Char(4)
| 否
| 先行课
| Ccredit
| Smallint
| 否
| 学分
|
表3 成绩基本信息表(SC)
字段名
| 数据类型(长度)
| 必添字段
| 说明
| Sno
| Char(9)
| 是
| 学号(主关键字)
| Cno
| Char(4)
| 是
| 课程号
| Grade
| Smallint
| 否
| 成绩
|
表4 绩点表(jdb)
字段名
| 数据类型(长度)
| 说明
| Jdh
| Int
| 绩点号
| Jds
| float
| 绩点数
| Xxf
| Numeric(4,1)
| 下限分
| Sxf
| Numeric(4,1)
| 上限分
| Bz
| Char(20)
| 备注
|
表5 科目表(Dept)
字段名
| 数据类型(长度)
| 必添字段
| 说明
| Sdept
| Char(20)
| 是
| 院系
| Pname
| Char(20)
| 否
| 院系名
|
2.4 数据库布局的实现
数据库逻辑布局设计完成以后,就可以在SQL Sever上创建数据库和数据表了。一样平常情况下可以根据SQL Sever的SQL语法建立相应的SQL语句,并将数据库文件命名为xscj。数据库设计相应的SQL语句如下所示:
- create database xscj
- go
- use xscj
- go
- if exists (select * from sysobjects where xtype='U' and name='sc')
- drop table sc;
- if exists (select * from sysobjects where xtype='U' and name='course')
- drop table course;
- if exists (select * from sysobjects where xtype='U' and name='student')
- drop table student;
- if exists (select * from sysobjects where xtype='U' and name='dept')
- drop table dept;
- if exists (select * from sysobjects where xtype='U' and name='jdb')
- drop table jdb;
- go
- GO
- -- 课程信息表;
- CREATE TABLE Course (
- Cno char (4) NOT NULL ,
- Cname char (40) NULL ,
- Cpno char (4) NULL ,
- Ccredit smallint NULL
- ) ON [PRIMARY]
- GO
- -- 学生信息表;
- CREATE TABLE Student (
- Sno char (9) NOT NULL ,
- Sname char (20) NULL ,
- Ssex char (2) NULL ,
- Sage smallint NULL ,
- Sdept char (20) NULL
- ) ON [PRIMARY]
- GO
- -- 成绩信息表;
- CREATE TABLE SC (
- Sno char (9) NOT NULL ,
- Cno char (4) NOT NULL ,
- Grade smallint NULL
- ) ON [PRIMARY]
- GO
- -- 绩点表;
- create table JDB(
- jdh int primary key,
- jds float ,
- xxf numeric(4,1) ,
- sxf numeric(4,1) ,
- bz char(20)
- );
- GO
- -- 科目表;
- CREATE TABLE Dept (
- sdept char (20) NOT NULL ,
- pname char (20) NULL
- ) ON [PRIMARY]
- ALTER TABLE Dept WITH NOCHECK ADD
- CONSTRAINT PK_Dept PRIMARY KEY CLUSTERED
- (
- sdept
- ) ON [PRIMARY]
- GO
- ALTER TABLE Course WITH NOCHECK ADD
- CONSTRAINT PK_CNO PRIMARY KEY CLUSTERED
- (
- Cno
- ) ON [PRIMARY]
- GO
- ALTER TABLE Student WITH NOCHECK ADD
- CONSTRAINT PK_SNO PRIMARY KEY CLUSTERED
- (
- Sno
- ) ON [PRIMARY]
- GO
- ALTER TABLE SC WITH NOCHECK ADD
- CONSTRAINT PK_SCNO PRIMARY KEY CLUSTERED
- (
- Sno,
- Cno
- ) ON [PRIMARY]
- GO
- ALTER TABLE Course ADD
- UNIQUE NONCLUSTERED
- (
- Cname
- ) ON [PRIMARY]
- GO
- --删除一个约束定义
- --ALTER TABLE Student Drop CONSTRAINt DF_Student_Sname
- ALTER TABLE Student ADD
- CONSTRAINT DF_Student_Sname DEFAULT ('') FOR Sname,
- --Drop CONSTRAINt DF_Student_Sname DEFAULT for sname
- UNIQUE NONCLUSTERED
- (
- Sname
- ) ON [PRIMARY]
- GO
- setuser
- GO
- --绑定默认值给表字段
- --EXEC sp_bindefault N'nullchar', N'Course.Cname'
- --取消绑定
- --EXEC sp_unbindefault 'Course.Cname'
- GO
- setuser
- GO
- ALTER TABLE Course ADD
- CONSTRAINT FK__Course__Cpno FOREIGN KEY
- (
- Cpno
- ) REFERENCES Course (
- Cno
- ) NOT FOR REPLICATION
- GO
- ALTER TABLE Student ADD
- CONSTRAINT FK_Student_Dept FOREIGN KEY
- (
- Sdept
- ) REFERENCES Dept (
- sdept
- ) ON UPDATE CASCADE
- GO
- ALTER TABLE SC with nocheck ADD
- CONSTRAINT FK_SC_Course FOREIGN KEY
- (
- Cno
- ) REFERENCES Course (
- Cno
- ) ON UPDATE CASCADE ,
- CONSTRAINT FK_SC_Student FOREIGN KEY
- (
- Sno
- ) REFERENCES Student (
- Sno
- ) ON UPDATE CASCADE
- alter table Course nocheck constraint FK__Course__Cpno
- GO
- --表的检查约束
- ALTER TABLE SC ADD
- CONSTRAINT CK_Grade CHECK (grade>=0 AND Grade<=100)
复制代码 创建xscj数据库的表结果如下:

2.5 初始数据的录入
在某些数据库体系的开发中,需要录入一些初始据。在完成数据库的创建以后,便可以在SQL Sever中录入初始数据。SQL语句如下:
- -- 插入绩点表数据;
- insert into jdb
- select 1 , 4 , 90 , 100, 'A(优)' union
- select 2 , 3.7 , 87 , 89.9, 'A-' union
- select 3 , 3.3 , 84 , 86.9 ,'B+' union
- select 4 , 3 , 81 , 83.9 ,'B(良)' union
- select 5 , 2.7 , 78 , 80.9 ,'B-' union
- select 6 , 2.3 , 75 , 77.9 ,'C+' union
- select 7 , 2 , 72 , 74.9 ,'C(中)' union
- select 8 , 1.7 , 69 , 71.9 ,'C-' union
- select 9 , 1.3 , 66 , 68.9 ,'D+' union
- select 10 , 1 , 60 , 65.9 ,'D' union
- select 12 , 0 , 0 , 59.9 ,'F(不及格)' ;
- --插入Dept表数据
- insert Dept(sdept,pname) values( 'CS' ,'计算机科学系' )
- insert Dept(sdept,pname) values( 'IS' ,'信息工程系' )
- insert Dept(sdept,pname) values( 'MA' ,'物理系' )
- -- 插入Student表数据;
- insert Student(Sno,Sname,Ssex,Sage,Sdept) values('200215121','李勇','男',20,'CS')
- insert Student(Sno,Sname,Ssex,Sage,Sdept) values('200215122','刘晨','女',19,'IS')
- insert Student(Sno,Sname,Ssex,Sage,Sdept) values('200215123','王敏','女',18,'MA')
- insert Student(Sno,Sname,Ssex,Sage,Sdept) values('200215125','张立','男',19,'IS');
- -- 插入Course表数据;
- insert Course(Cno,Cname,Cpno,Ccredit) values('6','数据处理',NULL,2)
- insert Course(Cno,Cname,Cpno,Ccredit) values('2','数学',NULL,2)
- insert Course(Cno,Cname,Cpno,Ccredit) values('7','PASCAL语言','6',4)
- insert Course(Cno,Cname,Cpno,Ccredit) values('5','数据结构','7',4)
- insert Course(Cno,Cname,Cpno,Ccredit) values('1','数据库','5',4)
- insert Course(Cno,Cname,Cpno,Ccredit) values('3','信息系统','1',4)
- insert Course(Cno,Cname,Cpno,Ccredit) values('4','操作系统','6',3);
- -- 插入SC表数据;
- insert sc(Sno,Cno,Grade) values('200215121','1',92)
- insert sc(Sno,Cno,Grade) values('200215121','2',85)
- insert sc(Sno,Cno,Grade) values('200215121','3',88)
- insert sc(Sno,Cno,Grade) values('200215122','2',90)
- insert sc(Sno,Cno,Grade) values('200215122','3',80);
复制代码 数据库创建完毕以后,还需要对数据库的性能进行一些测试,以确保数据库设计的合理性,避免在体系软件开发过程中发现数据库不合理而修改数据库。
3 体系主窗体的创建
数据设计完成后,下一步的工作就是使用某种程序开发语言实现体系的具体功能,本体系采用的语言为微软公司的中文版Visual Basic 6.0程序开发语言。
内容包罗如下几个方面:
- 创建工程文件
- 主窗体的设计
- 主菜单设计
- 部分程序的实现
3.1创建工程文件
启动Visual Basic 6.0,直接单击【打开】按钮,Visual Basic创建工程文件,并自动产生一个窗体文件。根据Visual Basic配置的差异,偶然会出现差异的运行界面,体系会直接创建新的工程文件。
此外,也可以通过单击【文件】→【新建工程】菜单项来创建工程。
为了构造便于用户操纵的程序界面,需要在工程中增加相应的部件。单击【工程】→【部件】菜单项,打开“部件”对话框,在“控件”选项卡的列表框中将下面所列控件前面的方框勾选,然后单击“确定”按钮。相应的控件就会被增加到工具箱上。本程序需要增加如下几个部件:
Microsoft DataGrid Control 6.0(OLEDB)
Microsoft Windows Common Controls 6.0(SP4)
在设计复杂的应用程序时,为了方便用户的操纵,往往要考虑体系的界面框架布局,常用的框架布局有SDI(单文档界面)和MDI(多文档界面)两种。为轻便起见,本体系采用单文档界面。
打开主窗体(文件名为“学生管理体系菜单栏”(Form5)),设置窗体的有关属性。单击【工具】→【菜单编辑器】菜单项,打开菜单编辑器设计窗体的主菜单。为每个菜单项取一个比较故意义的名称。
菜单项名称
| 菜单项数据表
| 说明
| 体系信息查询
|
| 一级菜单
| 绩点表查询
| jdbQuery
| 二级菜单项
| 科目表查询
| deptQuery
| 二级菜单项
| 退出体系
|
| 二级菜单项
| 学生信息管理
|
| 一级菜单
| 学生信息查询
| studentQuery
| 二级菜单项
| 学生管理
| FromStudent
| 二级菜单项
| 课程信息管理
|
| 一级菜单
| 课程信息查询
| courseQuery
| 二级菜单项
| 课程管理
| FromCourse
| 二级菜单项
| 学生成绩管理
|
| 一级菜单
| 成绩信息查询
| scQuery
| 二级菜单项
| 成绩管理
| FromSC
| 二级菜单项
| 菜单项编辑的界面图和编辑图,如下所示:
3.4部分程序的实现
先实现退出功能。单击主窗体的“退出体系”菜单项,体系自动生成相应变乱过程框架,并切换到代码窗口,增加退出过程代码如下:
Private Sub 退出体系_Click()
cn.Close
End
End Sub
主窗体中别的菜单项功能的实现将在背面先容。
4 学生信息管理模块
学生信息管理模块是学生信息管理体系的辅助功能模块,实现学生信息增加、修改和删除以及学生信息欣赏等功能。
本节内容包罗如下几个方面:
- 模块功能分析;
- 窗体的创建;
- 模块用户界面的设计;
- 模块功能的实现。
4.1 模块功能分析
- 实现思路
在窗体上增加控件和数据控件,将别的控件与数据控件绑定,就可以实现学生信息数据的表现和欣赏。为了便于用户直观欣赏学生信息,本体系采用数据表格的情势表现数据。数据的增加、删除、修改可以通过数据控件和数据绑定控件来实现。
为了验证数据的有效性,保持数据库的完整性,在增加、删除、修改数据时必须对数据进行验证,可以在窗体上再增加一个数据控件,通过它查询相关数据表来验证数据。
在增加记录时,通过字段内容检验来实现域值和非空字段验证,通过对新增加的学生信息编号的查询,验证学生编号的唯一性(记录层验证);在删除记录时,通过查询是否有属于该学生的课程来确保数据的完整性。
- 实现步骤
- 增加、生存窗体,设置窗体属性;
- 增加控件,设置控件属性,构造窗体界面;
- 编写代码,实现相应功能;
- 和主窗体连接,测试模块功能。
4.2 主窗体的设计
在Visual Basic中单击【工程】→【增加窗体】(大概工具栏的“增加窗体”按钮),给工程增加一个新窗体,将窗体生存为FormStudent.frm。
4.3模块用户界面的设计
在窗体上增加多少标签、文本框、按钮,并增加数据表格控件,窗体布局如下图所示:
运行效果如下:
4.4 模块功能的实现
4.4.1 通用变量、通用模块界说
代码如下:
Private Sub DataGrid1_Click()
Textsno.Text = rs1.Fields("sno").Value
Textsname.Text = rs1.Fields("sname").Value
Textssex.Text = rs1.Fields("ssex").Value
Textsage.Text = rs1.Fields("sage").Value
Textsdept.Text = rs1.Fields("sdept").Value
If rs1.RecordCount = 0 Then Exit Sub
If rs1.EOF Then rs1.MoveLast
End Sub
Private Sub Form_Load()
rs1.CursorLocation = adUseClient
rs1.Open "select * from student", cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs1
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs1.Close
End Sub
同时本模块在同一个用户界面上实现数据的欣赏、增加、删除、修改等功能,为了避免用户操纵不当而错误修改数据,在欣赏数据时应禁止数据的修改;在增加、修改、删除数据时允许用户输入数据并禁止移动记录集指针,可以设置一个通用过程来实现界面的切换。
4.4.2 数据增加功能的实现
增加功能的代码如下:
Private Sub Command1_Click()
sno = Textsno.Text
sname = Textsname.Text
ssex = Textssex.Text
sage = Textsage.Text
sdept = Textsdept.Text
rs1.AddNew
rs1.Fields("sno") = sno
rs1.Fields("sname") = sname
rs1.Fields("ssex") = ssex
rs1.Fields("sage") = sage
rs1.Fields("sdept") = sdept
rs1.Update
DataGrid1.Refresh
End Sub
效果如下:
增加前:
增加后:
4.4.3 数据修改功能的实现
修改功能的代码如下:
Private Sub Command2_Click()
sno = Textsno.Text
sname = Textsname.Text
ssex = Trim(Textssex.Text)
sage = Val(Textsage.Text)
sdept = Textsdept.Text
rs1.Fields("sno") = sno
rs1.Fields("sname") = sname
rs1.Fields("ssex") = ssex
rs1.Fields("sage") = sage
rs1.Fields("sdept") = sdept
rs1.Update
DataGrid1.Refresh
End Sub
效果如下:
修改前:
修改后:
4.4.4 数据记录删除功能的实现
删除功能的代码如下:
Private Sub Command3_Click()
If rs1.RecordCount = 0 Then
MsgBox ("没有要删除的记录")
Exit Sub
End If
Dim str As String
str = MsgBox("确定删除此记录吗?", vbYesNo)
If str = vbYes Then
rs1.Delete
rs1.MoveNext
If rs1.EOF Then rs1.MoveLast
DataGrid1.Refresh
End If
End Sub
效果如下:
删除前:
删除后:
4.4.5 数据记录add和刷新功能的实现
add和刷新功能的代码如下:
Private Sub Command4_Click()
rs1.Close
rs1.Open " select * from student", cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs1
DataGrid1.Refresh
End Sub
Private Sub Command5_Click()
Dim errloop As ADODB.Error
Dim rsttitles As ADODB.Recordset
sno = Textsno.Text
sname = Textsname.Text
ssex = Trim(Textssex.Text)
sage = Val(Textsage.Text)
sdept = Textsdept.Text
On Error GoTo err_execute
cn.Execute "insert into student(sno,sname,ssex,sage,sdept) values('" & sno & "','" & sname & "','" & ssex & "'," & sage & ",'" & sdept & "')"
On Error GoTo 0
DataGrid1.Refresh
abc = MsgBox("插入数据乐成", 64, "提示")
Exit Sub
err_execute:
abc = MsgBox("插入数据出错", 16, "错误")
End Sub
效果如下:
add和刷新前:
add和刷新后:
5 课程管理模块
课程管理模块实现课程增加、删除和修改以及课程信息欣赏等功能。
内容包罗如下几个方面:
- 模块功能分析;
- 窗体的创建;
- 模块用户界面的设计;
- 模块功能的实现。
5.1 模块功能分析
- 实现思路
课程管理模块的实现和学生管理模块的实现类似。
- 实现步骤
- 增加、生存窗体,设置窗体属性;
- 增加控件,设置控件属性,构造窗体界面;
- 编写代码,实现相应功能;
- 和主窗体连接,测试模块功能。
5.2 主窗体的设计
在工程中新建一个窗体,将窗体生存为FormCourse.frm。
5.3 模块用户界面的设计
在窗体上增加多少标签、文本框、按钮、组合框,并增加数据表格控件。 窗体布局如下图所示:
5.4模块功能的实现
5.4.1 通用变量、通用模块界说
代码如下:
Private Sub DataGrid1_Click()
If rs2.RecordCount = 0 Then Exit Sub
If rs2.EOF Then rs2.MoveLast
Textcno.Text = rs2.Fields("cno").Value
If IsNull(rs2("cpno")) Then Textcpno.Text = 0
If Not IsNull(rs2("cpno")) Then Textcpno.Text = rs2.Fields("cpno").Value
If IsNull(rs2("cname")) Then Textcname.Text = 0
If Not IsNull(rs2("cname")) Then Textcname.Text = rs2.Fields("cname").Value
If IsNull(rs2("ccredit")) Then Textccredit.Text = 0
If Not IsNull(rs2("ccredit")) Then Textccredit.Text = rs2.Fields("ccredit").Value
End Sub
Private Sub Form_Load()
rs2.CursorLocation = adUseClient
rs2.Open "select * from course", cn, adOpenDynamic, adLockOptimistic
Set DataGrid2.DataSource = rs2
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs2.Close
End Sub
其他代码可参考“学生信息管理模块” ,学生信息管理模块实现学生基本信息的增加、修改、删除、欣赏等功能。本模块的界面布局和变乱处理程序类似于学生信息管理模块,这里只给出界面布局图和效果图。
初始:
增加:
修改:
删除:
6 成绩管理模块
成绩管理模块实现成绩增加、删除和修改以及成绩信息欣赏等功能。
内容包罗如下几个方面:
- 模块功能分析;
- 窗体的创建;
- 模块用户界面的设计;
- 模块功能的实现。
6.1模块功能分析
- 实现思路
成绩管理模块的实现和学生信息管理模块的实现类似。
- 实现步骤
- 增加、生存窗体,设置窗体属性;
- 增加控件,设置控件属性,构造窗体界面;
- 编写代码,实现相应功能;
- 和主窗体连接,测试模块功能。
6.2主窗体的设计
在工程中新建一个窗体,将窗体生存为FormSC.frm。
6.3模块用户界面的设计
在窗体上增加多少标签、文本框、按钮、组合框,并增加数据表格控件。 窗体布局如下图所示:
6.4模块功能的实现
6.4.1 通用变量、通用模块界说
代码如下:
Private Sub DataGrid1_Click()
Textsno.Text = rs3.Fields("sno").Value
Textcno.Text = rs3.Fields("cno").Value
Textgrade.Text = rs3.Fields("grade").Value
If rs3.RecordCount = 0 Then Exit Sub
If rs3.EOF Then rs3.MoveLast
End Sub
Private Sub Form_Load()
rs3.CursorLocation = adUseClient
rs3.Open "select * from sc", cn, adOpenDynamic, adLockOptimistic
Set DataGrid3.DataSource = rs3
End Sub
Private Sub Form_Unload(Cancel As Integer)
rs3.Close
End Sub
其他代码可参考“学生信息管理模块” ,本模块的界面布局和变乱处理程序类似于学生信息管理模块,这里只给出界面布局图和效果图。
初始:
增加:
修改:
删除:
Add和刷新:
7 学生信息查询模块
学生信息查询模块实现对学生信息的查询表现,包罗学生基本信息的查询、查询的移动等。
本模块内容包罗如下几个方面:
- 模块功能分析;
- 窗体的创建;
- 模块用户界面的设计;
- 模块功能的实现。
7.1 模块功能分析
- 实现思路
学生基本信息存储在Student数据表中。Student数据表中Sno字段存储着学生的编号,姓名、性别、年岁、所属课程等信息则分别生存在Sname、Ssex、Sage、Sdept等字段中。编程时通过将数据控件的数据集类型设置成动态数据集、将数据控件的数据源设置成SQL语句来实现。
7.2 主窗体的设计
在Visual Basic中单击【工程】→【增加窗体】给工程增加一个新窗体,将窗体生存为studentQuery.frm 。
7.3模块用户界面的设计
7.4 模块功能的实现
7.4.1 默认查询功能
点击后默认指向第一项数据,该功能的SQL语句为:
Private Sub Form_Load()
rs6.CursorLocation = adUseClient
rs6.Open "select * from student", cn, adOpenDynamic, adLockOptimistic
Set DataGrid1.DataSource = rs6
rs6.MoveFirst '指针移动到第一条记录。
Textsno.Text = rs6.Fields("sno").Value
Textsname.Text = rs6.Fields("sname").Value
Textssex.Text = rs6.Fields("ssex").Value
Textsage.Text = rs6.Fields("sage").Value
Textsdept.Text = rs6.Fields("sdept").Value
End Sub
7.4.2 查询功能的实现
通过文本框的变乱响应用户的操纵,当用户在点击“下一项”控件后,数据库中自动移动到下一项数据信息,
“下一项”的SQL语句为:
Private Sub Command1_Click()
If rs6.EOF = False Then
rs6.MoveNext
End If
Textsno.Text = rs6.Fields("sno").Value
Textsname.Text = rs6.Fields("sname").Value
Textssex.Text = rs6.Fields("ssex").Value
Textsage.Text = rs6.Fields("sage").Value
Textsdept.Text = rs6.Fields("sdept").Value
Form6.Refresh
End Sub
效果如下:
“前一项”的SQL语句为:
Private Sub Command2_Click()
If rs6.BOF <> True Then
rs6.MovePrevious
End If
Textsno.Text = rs6.Fields("sno").Value
Textsname.Text = rs6.Fields("sname").Value
Textssex.Text = rs6.Fields("ssex").Value
Textsage.Text = rs6.Fields("sage").Value
Textsdept.Text = rs6.Fields("sdept").Value
End Sub
效果如下:
“第一项”的SQL语句为:
Private Sub Command3_Click()
rs6.MoveFirst
Textsno.Text = rs6.Fields("sno").Value
Textsname.Text = rs6.Fields("sname").Value
Textssex.Text = rs6.Fields("ssex").Value
Textsage.Text = rs6.Fields("sage").Value
Textsdept.Text = rs6.Fields("sdept").Value
Form6.Refresh
End Sub
效果如下:
“最后一项”的SQL语句为:
Private Sub Command4_Click()
rs6.MoveLast
Textsno.Text = rs6.Fields("sno").Value
Textsname.Text = rs6.Fields("sname").Value
Textssex.Text = rs6.Fields("ssex").Value
Textsage.Text = rs6.Fields("sage").Value
Textsdept.Text = rs6.Fields("sdept").Value
End Sub
效果如下:
“退出”的SQL语句为:
Private Sub Command5_Click()
Textsno.Text = rs6.Fields("sno").Value
Textsname.Text = rs6.Fields("sname").Value
Textssex.Text = rs6.Fields("ssex").Value
Textsage.Text = rs6.Fields("sage").Value
Textsdept.Text = rs6.Fields("sdept").Value
Form6.Show
Unload Me
End Sub
8 课程信息查询模块
课程信息查询模块与学生信息查询模块相类似,具体代码参照如上信息,该处只展示课程模块用户界面的设计效果图:
窗体courseQuery.frm
9 成绩信息查询模块
成绩信息查询模块与学生信息查询模块相类似,具体代码参照如上信息,该处只展示成绩模块用户界面的设计效果图:
窗体scQuery.frm
10 绩点表查询和科目表查询
绩点表查询和科目表查询实现对绩点表和科目表的查询表现。
本节内容包罗如下几个方面:
10.1 主窗体的设计
在Visual Basic中单击【工程】→【增加窗体】给工程增加一个新窗体,将窗体生存为jdbQuery.frm、deptQuery.frm 。
10.2 模块用户界面的设计
11 体系的编译和发行
11.1 体系的编译
全部模块设计完成以后,体系的工程窗口应该如图所示。
单击【运行】→【启动】菜单项(大概按F5功能键),运行程序,输入实验数据,测试体系的功能,假如有任何题目请查抄、修改各项设置和程序代码。
体系如今还只能在Visual Basic环境下运行,为了使体系能脱离Visual Basic环境独立运行,必须对体系进行编译。单击【文件】→【生成学生信息管理体系.exe】菜单项,Visual Basic生成一个可执行文件学生信息管理体系.exe,这个文件可以独立于Visual Basic运行了。
11.2体系的运行测试
将学生信息管理体系.exe和学生信息管理体系.mdb复制到任意一个文件夹大概另外的任何一台呆板上,双击学生信息管理体系.exe,进行独立运行测试。
在测试体系功能时必须将全部的功能测试到,并测试全部大概出现的操纵。开发者一样平常会按照自己的头脑定势测试体系,某些弊端不轻易发现,因此在条件许可的情况下可以请不认识本体系开发过程的人帮助测试,尽大概发现程序中的弊端,以便修补弊端,完善体系功能。最后还需要请终极用户试用体系,并根据用户的要求调解完善体系的功能。
下面是体系运行测试的具体情况。
别的效果均正常,这里就不重复展示了。
12 小结与提高
12.1 小结
功能完整、性能稳定的学生信息管理体系开发完成了。通过本章的学习,应该掌握数据库体系开发的一样平常步骤,掌握Visual Basic下使用数据控件以及数据绑定控件开发数据库体系的方法。结合数据库理论,掌握在数据库体系开发中怎样实现数据库的完整性。
在体系开发中,不光要考虑体系功能的实现,而且要特别注意体系的稳定性,考虑各种大概导致体系运行异常的因素,并加以扫除。此外,还应掌握部分常用控件的使用方法。
12.2 创意与提高
在体系开发中必须要考虑数据库体系的安全性。一方面,可以给数据库自己增加安全认证和权限控制,具体的实现和SQL Sever有关;另一方面,在体系开发中可以增加用户登录功能,防止无关职员非法使用本体系,而且可以给每个使用者设置差异的权限,防止越权操纵体系的某些功能。
本体系中,为了维护数据库的完整性,对于部分数据采取了“拒绝修改/删除”的办法。这种方法简单易实现,但是未便于用户操纵,怎样有效实现“级联更新/删除”的功能?体系中许多的代码是重复的,怎样减少代码的重复量、提高体系开发、维护的效率?该体系还有待完善。
本体系的主窗体比较简单,可以给主窗体增加工具栏、状态栏,以方面用户的操纵,提供更好的人机界面。在实际的体系开发中还应该给体系设计有代表意义图标,用图片对用户界面进行适当的装饰,美化体系的界面。
实际使用的体系中一样平常都具有比较完备的帮助体系,指导操纵者的使用。另外还有“关于”菜单,便于使用者方便相识本体系的版本、开发时间、获取技能支持的途径等。
体系开发完成以后,还需要给体系制作安装程序,简化体系的安装过程,降低用户手工安装的难度。安装程序可借助专门的安装制作软件制作,也可以自己编程制作安装程序。此外一些压缩软件(如WinRAR)也具备简单的安装程序制作功能。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。 |