730 likes | 957 Views
第15ç« ç»¼åˆåº”用实例. 15.1 系统功能总体设计 15.2 æ•°æ®åº“设计 15.3 用户登录åŠä¸»çª—体设计 15.4 功能模å—设计. 结æŸ. 15.1 系统功能总体设计. 15.1.1 设计目的 15.1.2 系统功能. 返回首页. 15.1.1 设计目的.
E N D
第15章 综合应用实例 • 15.1 系统功能总体设计 • 15.2 数据库设计 • 15.3 用户登录及主窗体设计 • 15.4 功能模块设计 结束
15.1 系统功能总体设计 • 15.1.1 设计目的 • 15.1.2 系统功能 返回首页
15.1.1 设计目的 管理信息系统(MIS,Management Information System)是进行信息的采集、存储、加工、维护和使用的系统,在现代信息社会中,它的应用越来越普及。本章通过一个经过简化的MIS应用实例“学生信息管理系统”的创建,使读者掌握用VB和ADO技术编制数据访问应用程序的基本过程和方法,同时巩固和提高对各种常用控件的综合应用能力。 返回本节 返回首页
15.1.2 系统功能 (1) 本实例采用VB+ADO+Access,创建一个简单的学生信息管理系统,系统的主要功能如下: • 学籍管理:包括基本学籍信息的输入、修改和查询,可随时根据查询结果动态生成学生基本信息查询报表。 • 班级管理:包括系、专业和班级的添加和修改。 • 课程及成绩管理:包括课程信息的输入和修改;成绩信息的输入、修改和查询,可随时根据查询结果动态生成学生成绩查询报表。 • 用户管理:包括添加用户、删除用户、设置用户权限和修改密码。 系统功能模块如图15.1所示。
15.1.2 系统功能 (2) 图15.1 系统功能模块 返回本节 返回首页
15.2 数据库设计 (1) 15.2.1 建立数据库 利用Microsoft Access或VB中的“可视化数据管理器”建立数据库,名称为“Student.mdb”。 15.2.2 建立数据表 根据系统功能模块的需要,在Student.mdb数据库中建立8个表。
15.2 数据库设计 (2) 1. 学籍表 该表存放学生的基本信息,名称为“学籍”,结构如表15.1所示。学号由11位数字组成,前8位与班号相同,后3位为本班学生的序号。 表15.1 学籍表结构
15.2 数据库设计 (3) 2. 系表 该表存放各系的编号和名称。表的名称为“系”,结构如表15.2所示。系号为两位数字,必须惟一。 表15.2 系表结构
15.2 数据库设计 (4) 3. 专业表 该表存放各系中的专业编号和专业名称。表的名称为“专业”,结构如表15.3所示。专业号由4位数字组成,前2位与系号相同,后2位为本系中的专业序号。 表15.3 专业表结构
15.2 数据库设计 (5) 4. 班级表 该表存放各专业中的班级编号和班级名称。表的名称为“班级”,结构如表15.4所示。班号由8位数字组成,前2位为年级,第3~6位与专业号相同,最后2位为本专业中的班级序号。 表15.4 班级表结构
15.2 数据库设计 (6) 5. 成绩表 该表存放学生成绩,名称为“成绩”,结构如表15.5所示。为减少数据冗余,成绩表中仅存储学号(与学籍表学号字段关联),不存储学生姓名,需要时根据学号从学籍表中获取姓名。课号与课程名称亦作同样处理。 表15.5 成绩表结构
15.2 数据库设计 (7) 6. 课程信息表 该表存放课程信息,名称为“课程”,结构如表15.6所示。 表15.6 课程信息表结构
图15.2 表间关系 15.2 数据库设计 (8) 上述6个表之间具有一定的关联,为了保证数据参照完整性,应当建立表间关联关系并设置参照完整性。各表之间的关系如图15.2所示。
15.2 数据库设计 (9) 7. 用户表 该表存放用户登录信息,名称为“用户”,结构如表15.7所示。表中暂时存放两条记录,内容如表15.8所示。 表15.7 用户表结构 表15.8 用户表内容
15.2 数据库设计 (10) 8. 临时表 该表作为临时工作表,名称为“临时”,用于输入成绩,结构如表15.9所示。在数据库中设计“临时”表的目的是兼顾DataGrid控件的使用和减少数据冗余。 表15.9 临时表结构 返回首页
15.3 用户登录及主窗体设计 • 15.3.1 创建工程 • 15.3.2 设计用户登录窗体 • 15.3.3 设计系统主窗体 返回首页
15.3.1 创建工程 创建一个VB工程,名称为StudInfo.vbp,将该工程与15.2节中创建的数据库Student.mdb保存在同一文件夹中。 返回本节 返回首页
图15.3 用户登录 15.3.2 设计用户登录窗体 (1) 本窗体(frmLogin)作为系统的启动窗体,用于验证用户是否合法,运行时界面如图15.3所示。
15.3.2 设计用户登录窗体 (2) 窗体上的两个文本框分别用于输入用户名和密码,设密码文本框PasswordChar=*。添加一个ADO数据控件,设Visible=False,使用连接字符串与Student.mdb数据库连接。 单击“确定”按钮后,用SQL语句查询“用户”表中是否有相符的用户名和密码,若不符,提示重新输入,焦点返回文本框。如果3次输入错误,退出系统。若输入正确,将用户名和用户权限保存在全局变量中,显示系统主窗体,卸载本窗体。单击“取消”按钮时结束程序运行。 返回本节 返回首页
15.3.3 设计系统主窗体 (1) 系统主窗体(frmMain)作为学生信息管理系统的主界面,如图15.4所示。窗体背景采用Image控件(Stretch=True,BorderStyle=1)显示图片。 图15.4 主窗体
15.3.3 设计系统主窗体 (2) 菜单结构如表15.10所示。 表15.10 菜单结构
15.3.3 设计系统主窗体 (3) 单击某一菜单项时,显示对应窗体。“系统”菜单中的“添加用户”、“删除用户”和“更改权限”三个菜单项的功能仅供权限为“管理员”的用户使用。因此,应在窗体加载时根据保存在全局变量中的用户权限确定是否显示这三个菜单项。 返回本节 返回首页
15.4 功能模块设计 • 15.4.1 学籍管理模块 • 15.4.2 班级管理模块 • 15.4.3 成绩及课程管理模块 • 15.4.4 系统模块 • 15.4.5 帮助菜单 • 15.4.6 关于标准模块 返回首页
15.4.1 学籍管理模块 (1) 学籍管理模块的功能通过【学籍管理】窗体(frmEss)实现。该窗体为主窗体【学籍管理】菜单下的两个菜单项【添加或修改学籍信息】和【查询学籍信息】所共用,通过选项卡区分其功能。选择【添加或修改学籍信息】菜单项时,将【添加或修改】选项卡设为活动选项卡;选择【查询学籍信息】菜单项时,将【查询】选项卡设为活动选项卡。 1. 使用TreeView控件和SSTab控件 为了便于用户操作,学籍管理窗体界面设计中采用TreeView控件供用户选择系、专业和班级,用SSTab控件切换管理功能,界面效果如图15.5所示。
15.4.1 学籍管理模块 (2) 图15.5 浏览状态 返回
15.4.1 学籍管理模块 (3) TreeView控件相关属性的设置见第11章11.2.1小节,注意将LabelEdit(标签编辑)属性设为1-tvwManual,即不允许用户修改节点标签。由于成绩管理窗体亦采用类似的界面设计,因此在标准模块中将TreeView控件添加系、专业和班级节点的程序段编制成全局过程MakeTree(tvwX As TreeView)供各窗体调用。该过程以当前窗体的TreeView控件作为参数,依次从数据库的系表、专业表和班级表中获取相关数据生成系-专业-班级目录树。
15.4.1 学籍管理模块 (4) 具体做法是首先利用记录集对象读取系表中的全部记录,将其添加为TreeView控件中的顶层节点,节点关键字(Key)为“X”+系号(关键字必须以字母开头),节点文本(Text)为系名,节点标志(Tag)均为“系”。 然后读取专业表中的记录,根据每条记录的系号字段值和TreeView中系节点的关键字,将其添加为对应系的子节点,节点关键字为“X”+专业号,文本为专业名称,标志均为“专业”。
15.4.1 学籍管理模块 (5) 最后读取班级表中的记录,根据每条记录的专业号字段值和专业节点关键字,将其添加为对应专业的子节点,节点关键字为“X”+班号,文本为班级名称,标志均为“班级”。 SSTab控件用于切换学籍管理功能,将其选项卡数设为2,标题分别为“添加或修改”和“查询”。该控件的属性设置方法见第11章11.3.1小节。
15.4.1 学籍管理模块 (6) 2. 添加或修改学籍信息 添加或修改学籍信息的功能在【添加或修改】选项卡中实现。程序运行时,在TreeView控件中选择系、专业和班级,若当前节点为班级,则在DataGrid中显示本班学生名单,此时可通过按钮进行添加、编辑、删除等操作,界面如图15.5和图15.6所示。
15.4.1 学籍管理模块 (7) 图15.6 添加或修改状态 返回
15.4.1 学籍管理模块 (8) (1)设置ADO数据控件 在窗体上添加一个ADO数据控件,名称为adoEdit,设Visible=False,LockType=4(批更新)。将其与数据库连接,设记录源为SQL语句: SELECT * FROM 学籍 WHERE 学号='' 在上述语句中,等号后面是一对单引号,表示空字符串。由于在设计学籍表时已将学号字段设为主键,且不允许为空字符串,因此表中不会有学号为空的记录。该语句的作用是生成含有各字段结构的空记录集,以供DataGrid控件检索字段使用。程序运行时由adoEdit为各数据绑定控件提供数据源。
15.4.1 学籍管理模块 (9) (2)设置DataGrid控件 在【添加或修改】选项卡中放置一个DataGrid控件,名称为DataGrid1,用于显示学号和姓名以及移动指针选择记录。设置其DataSource属性为adoEdit,AllowUpdate属性为False(不允许修改),Caption属性为“学生名单”。右击该控件,在快捷菜单中选择【检索字段】菜单项,在对话框中单击【是】。再次右击该控件,选择【属性】菜单项,在如图15.7所示的【属性页】对话框中单击【布局】选项卡,选择【列】组合框中的“性别”,清空【可见】复选框。对“出生日期”和“班号”作同样处理,目的是将其隐藏。
15.4.1 学籍管理模块 (10) (3)设置其他控件 在DataGrid控件右侧放置一个框架(Frame),名称为fraEss,Caption为“编辑”。框架中放置两个文本框,名称分别为txtID和txtName,用于输入学号和姓名;一个组合框,名称为cboSex,用于选择性别。将这三个控件的DataSource属性均设为adoEdit,DataField属性分别设为学号、姓名和性别字段。再添加一个DateTimePicker控件DTPicker1,用于显示和设定出生日期。采用这一控件的优点是不必编写验证代码即可保证用户的输入是合法的日期型数据,该控件属性的设置见11.3.3小节。
15.4.1 学籍管理模块 (11) 为了避免出生日期字段为NULL值时导致程序出错,对该字段的显示和赋值不采用绑定方式,而是通过代码完成相关操作。 记录的添加、编辑、更新、取消和删除操作通过5个命令按钮实现。 窗体加载时,设置【编辑】框架(fraEss)的Enabled=False(可使框架中的控件无效)。将【更新】和【取消】按钮设置为无效,其他按钮有效,此时为浏览状态(图15.5)。单击【添加】或【编辑】按钮时,将上述控件的Enabled属性取反,此时为编辑状态(图15.6)。
15.4.1 学籍管理模块 (12) 3. 查询学籍信息 查询学籍信息的功能在【查询】选项卡中实现。程序运行时,在TreeView控件中选择查询范围,在【查询方式】框架中设置查询条件。单击【查询】按钮后,显示查询结果,若有记录则使【报表】按钮有效,可随时打印查询结果。界面如图15.8和图15.9所示。
15.4.1 学籍管理模块 (13) 图15.8 全部显示 返回
15.4.1 学籍管理模块 (14) 图15.9 多条件复合查询 返回
15.4.1 学籍管理模块 (15) (1)设置ADO数据控件和DataGrid控件 在窗体上添加一个ADO数据控件,名称为adoQuery,设Visible=False,将其与数据库连接,记录源的设置与adoEdit相同。在【查询】选项卡中添加一个DataGrid控件,名称为DataGrid2,用于显示查询结果。设DataSource=adoQuery,AllowUpdate=False,Caption为“查询结果”。右击该控件检索字段,将全部字段名显示在列标头中。
15.4.1 学籍管理模块 (16) (2)设置查询方式控件 在【查询方式】框架中添加3个复选框,名称分别为chkNo、chkName和chkSex,设Caption分别为“按学号”、“按姓名”和“按性别”。添加两个文本框,名称分别为txtNoQ和txtNameQ,用于输入学号和姓名。添加一个组合框,名称为cboSexQ,预设两个列表项“男”、“女”,用于选择性别。
15.4.1 学籍管理模块 (17) (3)设置查询和报表按钮 查询按钮的名称为cmdQuery。在查询按钮的单击事件中,首先根据TreeView中的当前节点确定查询范围,将其显示在DataGrid2的标题中,然后根据各复选框的选中状态判断查询条件,若有复选框被选中,则根据文本框和组合框中的内容,用SQL语句的模糊查询、多条件复合查询功能生成查询语句,为adoQuery的RecordSource属性赋值。 报表按钮的名称为cmdReport。
15.4.1 学籍管理模块 (18) 为了实现“即查即览”功能,须将数据环境中为报表提供数据的命令对象的数据源设为SQL语句: SELECT * FROM 学籍 数据环境中的命令对象有一个对应的记录集对象,名称为“rs”+命令对象名。在报表按钮的单击事件中,将adoQuery的RecordSource属性赋值给报表数据源记录集对象的Source属性,调用记录集对象的Requery方法重新执行查询即可动态改变报表数据源。 查询结果的显示和报表预览如图15.10和图15.11所示。
15.4.1 学籍管理模块 (19) 图15.10 显示查询结果 返回
15.4.1 学籍管理模块 (20) 图15.11 报表打印预览 返回 返回本节 返回首页
15.4.2 班级管理模块 (1) 班级管理模块的功能通过【班级管理】窗体(frmClass)实现。该窗体为主窗体【班级管理】菜单下的3个菜单项【添加或修改系】、【添加或修改专业】和【添加或修改班级】所共用,通过选项卡区分其功能。菜单项与活动选项卡的关系跟学籍管理模块相似。界面如图15.12、图15.13和图15.14所示。各选项卡的左半部分用于导航,右半部分用于添加或编辑数据。
15.4.2 班级管理模块 (2) 图15.12 添加或修改系 返回
15.4.2 班级管理模块 (3) 图15.13 添加或修改专业 返回
15.4.2 班级管理模块 (4) 图15.14 添加或修改班级 返回
15.4.2 班级管理模块 (5) 1. 添加或修改系 【添加或修改系】选项卡的界面设计如图15.12所示。在选项卡中添加一个ADO数据控件,名称为adoDept,Visible=False,记录源为SQL语句“SELECT * FROM 系”。 DataGrid控件的名称为dgdDept,Caption为“现有系”,AllowUpdate=False,DataSource=adoDept。【添加或修改】框架中两个文本框的名称分别为txtDeptNo和txtDeptName,设DataSource=adoDept,分别与系号和系名字段绑定。本窗体的3个选项卡共用一组数据操作按钮,在它们的单击事件中根据选项卡的Tab属性判断当前选项卡,完成相关记录的添加、编辑和删除等操作。
15.4.2 班级管理模块 (6) 2. 添加或修改专业 【添加或修改专业】选项卡的界面设计如图15.13所示。在选项卡中添加一个ADO数据控件,名称为adoSpecial,Visible=False,记录源为SQL语句“SELECT * FROM 专业 WHERE 专业号=''”。 DataGrid控件的名称为dgdSpcl,Caption为“本系现有专业”,AllowUpdate=False,DataSource =adoSpecial。【添加或修改】框架中两个文本框的名称分别为txtSpclNo和txtSpclName,设DataSource=adoSpecial,分别与专业号和专业名称字段绑定。【选择系】组合框中的系名列表通过调用标准模块中的AddDeptItem(cboX As ComboBox)过程填充。
15.4.2 班级管理模块 (7) 3. 添加或修改班级 【添加或修改班级】选项卡的界面设计如图15.14所示。在选项卡中添加一个ADO数据控件,名称为adoClass,Visible=False,记录源为SQL语句“SELECT * FROM 班级WHERE 班号=''”。DataGrid控件的名称为dgdClass,Caption为“本专业现有班级”,AllowUpdate = False,DataSource = adoClass。【添加或修改】框架中两个文本框的名称分别为txtClassNo和txtClassName,设DataSource=adoClass,分别与班号和班级名称字段绑定。