第 11 章 高校学生档案管理系统

Preview:

DESCRIPTION

第 11 章 高校学生档案管理系统. 学生档案管理是常用、典型的教学管理软件,许多学校都开发和使用过这类软件。但不同学校有各自不同的情况,要求不可能完全一样,软件的功能与使用方式也有很大差异。科学技术不断进步,人们的需求千差万别,要求永无止境。所以,根据不同的要求,开发适合不同情况的软件,并且不断升级、更新、完善,不断研究和采用新技术,是软件开发人员始终面临的任务。. 本软件的主要特点是: (1) 用 PowerBuilder 8.0 工具开发,采用多文档界面风格,使用菜单、快捷键、工具栏等多种操作方式和选项卡、下拉列表等控件,使用户操做简便、高效,有良好的用户界面。 - PowerPoint PPT Presentation

Citation preview

第 11 章 高校学生档案管理系统

学生档案管理是常用、典型的教学管理软件,许多学校都开发和使用过这类软件。但不同学校有各自不同的情况,要求不可能完全一样,软件的功能与使用方式也有很大差异。科学技术不断进步,人们的需求千差万别,要求永无止境。所以,根据不同的要求,开发适合不同情况的软件,并且不断升级、更新、完善,不断研究和采用新技术,是软件开发人员始终面临的任务。

本软件的主要特点是:

(1) 用 PowerBuilder 8.0 工具开发,采用多文档界面风格,使用菜单、快捷键、工具栏等多种操作方式和选项卡、下拉列表等控件,使用户操做简便、高效,有良好的用户界面。

(2) 软件功能丰富、实用。 (3) 在查询、数据维护、统计等方面采用了独特的通用

实现技术,使软件具有很强的通用性、可维护性和可移植性。

11.1 系统功能设计 11.2 数据库和表设计 11.3 对象库和主菜单 11.4 全局变量与全局函数 11.5 登录窗口和MDI框架窗口 11.6 数据维护功能 11.7 字典维护功能  11.8 全字段查询和选字段查 11.9 数据统计 11.10 软件的使用

返回首页

11.5 登录窗口和 MDI 框架窗口

11.5.1 应用程序对象代码 11.5.2 封面窗口 11.5.3 系统登录窗口 11.5.4 MDI框架窗口

返回本章

        11.6 数据维护功能 

    11.6.1 数据维护菜单  11.6.2 数据窗口对象 11.6.3 窗口对象

对象

返回本章

11.7.1 数据窗口对象11.7.2 窗口对象11.7.3 有关菜单项的编码

返回本章

11.9.1 学生入学时自然情况统计表  11.9.2 历年招生人数统计表  11.9.3 历年招生人数统计图

返回本章

11.1 系统功能设计 

  按照一般高等学校对学生档案管理的需求,对软件的功能提出如下要求:

   1 .信息维护    2 .查询打印    3 、数据统计    4 、系统服务

返回本章

11.2 数据库和表设计   学生档案管理系统所涉及的学生档案资料以及其它有

关数据都要存储于数据库中。为此,首先建立一个 Adaptive Server Anywhere 7.0 数据库,数据库文件命名为 xsda.db ,用户名、口令先暂时用默认的 dba 和 sql ,将来需要时再作修改。

  在 PowerBuilder 中为数据库配置 ODBC 数据源和Profile ,取名均为 xsda 。

  在数据库 xsda.db 中首先建立一个主表,取名为 xsda ,用来存放学生的档案资料,每位学生占一条记录。包括基本信息以及入学时、在校时、毕业后的主要信息,共 55 个字段。

    为了提高效率,对一些可枚举的数据项(比如民

族、政治面貌、学生职务等)采用下拉数据窗口的形式进行输入。这样,需要为每一类枚举数据项建立一个表,每个表定义一个字段,我们把这类表叫做“字典”。

  为便于用户管理,建立一个表 dic_yhkl ,用来保存用户名、口令和级别等信息,结构

  为了记录系统使用信息,建立一个“日志”表 dic_log 。

 数据库中还有两表 tj_1 和 tj_rs ,等用到的时候再作介绍。

 返回本章

11.3 对象库和主菜单  由于本系统涉及到的对象比较多,为了管理上的方便,我们

建立四个对象库,分别用来存放窗口对象、一般数据窗口对象、字典数据窗口对象和其它对象。

用前面介绍的方法,在建立应用程序对象的同时可以建立一个对象库和一个目标。要建立多个对象库并使其置于搜索路径之中,要经过两个步骤:

在“ Migrate application” 对话框中单击“ Browse” ,选择需要的对象库,然后单击“ OK” 按钮,新的对象库便置于搜索路径之中。

本系统建立的四个对象库为 da_w.pbl 、 da_dw.pbl 、 da_dic.pbl 和 da_mn.pbl ,分别用来存放窗口对象、一般数据窗口对象、字典数据窗口对象和其它对象。在对象库 da_mn.pbl中建立一个应用程序对象 xsda 。在当前文件夹中建立一个目标 xsda.pbt 。

按系统的功能要求,设计的主菜单 m_main ,存于对象库 da_mn.pbl 中。

 返回本章

11.4 全局变量与全局函数   本软件要对用户进行管理,设置用户名、口令和用

户级别,不同级别的用户分配不同的权限。用户名、用户级别信息要在不同对象中使用,所以定义两个全局变量:

  另外,本系统使用第 10 章介绍的通用全字段查询和通用选字段查询模块来实现对学生档案的查询功能,所以还要定义两个全局变量:

  为简化代码设计、提高程序的清晰度,定义四个全局函数。分别介绍如下:

  1 .全局函数 f_czrz()  2 .全局函数 f_center()  3 .全局函数 f_add_ddlb_nf()  4 .全局函数 f_add_ddlb_lx() 返回本章

       11.5.1 应用程序对象代码 

  打开应用程序对象 xsda ,对它的 open事件编写代码:

程序中,用通常的方法进行数据库连接,如果连接失败,显示错误信息后,不是直接终止应用程序,而是先执行窗口 close事件代码,然后再终止应用程序。

数据库连接成功后,打开封面窗口 w_fm 和登录窗口 w_login 进行系统登录,登录成功则打开 MDI 框架窗口w_main ,并关闭封面窗口。

  它用自定义的全局函数 f_czrz()向“日志”表添加一条记录后结束应用程序。

返回本节

     11.5.2 封面窗口 

  建立一个封面窗口 w_fm ,窗口类型为 popup! ,初始状态为 maximized! (最大化),取消 TitleBar复选项。窗口上放一个图形控件 p_spash ,其 PictureName属性设置为图形文件 stk_fm.gif 。

  为了在不同的屏幕分辨率下,使窗口 w_fm 、图形 p_splash 与屏幕大小相同 .

 

返回本节

   11.5.3 系统登录窗口 

  建立一个登录窗口 w_login ,窗口类型为 respose! ,初始状态为 normal! ,取消 TitleBar复选项。窗口上放一个下拉列表框 ddlb_1 、一个单行编辑框sel_2 和两个命令按钮。

  代码的作用主要有两个:一是调整本窗口的大小和位置,使之不论在什么样的屏幕分辨率情况下,都能与封面窗口上的图形很好地搭配。二是把表 dic_yhkl 中的用户名添加到下拉列表框 ddlb_1 ,作为它的列表项,以便于登录时输入用户名。

返回本节

    请注意,在定义游标时,使用了“ ORDER B

Y” 选项使记录按 dlsj (登录时间)字段值升序排列,而且在把用户名添加到下拉列表框的同时,也把它作为下拉列表框的 text属性值。这样,最近登录过的用户名会自动作为下拉列表框的文本,相当于有了记忆功能,方便了用户操作。

    运行后窗口 w_fm 和 w_login叠加在一起 当用户单击“确定”按钮时,产生 clicked事件,

通过下面代码进行用户身份验证等处理:  代码中,首先从下拉列表框 ddlb_1 中取出用户

名,再从表 dic_yhkl 中取出该用户的口令的级别,如果在单行编辑框 sle_2 中输入的口令与表 dic_yhkl 中取出的口令不同,则要求重新输入。

    返回本节

       11.5.4 MDI 框架窗口 

  MDI 框架窗口 w_main 类型为 mdihelp! ,初始状态为 maximized! ,窗口标题为“高校学生档案管理系统”, MenuName 属性设置为 m_main ,即把菜单 m_main挂接到窗口上。

 其目的是根据用户的级别设置不同的权限,当用户为管理员(级别为 0 )时,使主菜单中“日志查询”、“用户管理”和其中的分隔线可见。否则,这几个菜单项是不可见的(设计时已取消了它们的 visible属性)。

返回本节

11.6.1 数据维护菜单  作为多文档界面应用程序,打开不同的工作表窗口,

可以改变不同的菜单。本系统除主菜单外,当进行学生档案记录增删、数据修改和字典管理时,要使用一个与数据维护相关的菜单。这个菜单取名为 m_

data ,它在主菜单 m_main 的基础上,添加一个下拉菜单,用于数据有关操作。因此,可以利用继承m_main 的方法建立菜单 m_data 。对继承下来的菜单添加需要的菜单项,并修改有关属性,隐藏不必要的菜单项和工具按钮,得到如图 11.6 所示的菜单。

 返回本

     11.6.2 数据窗口对象 

 在对学生档案数据进行维护时,要使用数据窗口对象。由于数据项较多,对学生档案表 xsda 定义五个数据窗口对象,具体形式如图 11.7~ 11.11 所示。

 

   1 .基本项    2 .常用项    3 .入学时   4 .在校时    5 .毕业后

返回本节

       11.6.3 窗口对象

   1 .窗口的布局   2 .窗口 open事件代码   3 .用户事件 u_serch代码   4 . u_serch事件的引用   5 .记录的翻阅与数据保存代码   6 .窗口的 activate事件代码

返回本节

11.7 字典维护功能 

  系统中有十几个作为字典的表,这些表中数据的增、删、改等操作可以采用统一的方式进行,这样能够大大减轻软件开发的工作量,系统的可扩充性也大大增强。

 

Go on

    11.7.1 数据窗口对象 

  为每一个字典表建立一个数据窗口对象,这些数据窗口对象都采用网格样式。比如,针对表 dic_xszw (学生职务)建立的数据窗口对象。

  用同样的方法设计出其它字典表的数据窗口对象,它们都存放在对象库 da_dic.pbl 中。

 

返回本节

        11.7.2 窗口对象  建立一个窗口对象 w_d_dic ,窗口类型main! ,初始状态为 normal! ,取消最大化复选项,窗口标题为“字典维护窗口”, MenuName属性设置为m_data ,使用的也是数据维护菜单 m_data 。

窗口上放置两个单行编辑框 sle_1 和 sle_2 ,一个数据窗口控件 dw_1 和一个“退出命令按钮”。

在窗口中,除了定义与窗口 w_d_edit 类似的五个用户事件 ue_first 、 ue_prior 、 ue_next 、 ue_last 和 ue_save 用来翻阅记录和保存数据外,还定义另外两个用户事件 ue_insert 和 ue_delete 。

它用来在数据窗口控件 dw_1 中插入一条空记录,并显示记录总数和当前记录号。

返回本节

     11.7.3 有关菜单项的编码 窗口 w_d_dic 中定义的用户事件 ue_first 、 u

e_prior 、 ue_next 、 ue_last 、 ue_save 、 ue_insert 和 ue_delete ,要通过菜单 m_data 的相关菜单项来引用,单击指定菜单项或对应的工具按钮,可执行相应的操作。其中五个菜单项的编码前面已经介绍过。

窗口 w_d_dic 要通过主菜单 m_main“ 字典管理”下的菜单项打开,并挂接相应的数据窗口对象。

  名添加到第一个下拉菜单的末尾。第二行把数据窗口对象名“ dic_xszw” 设置为窗口中数据窗口控件 dw_1 的 其中,第一行用 OpenSheet()函数在 MDI 框架窗口中按原始大小打开窗口 w_d_dic ,窗口 dataobject 属性值,实现动态连接数据窗口对象。最后两行为 dw_1指定事务对象并进行数据检索。

  “字典管理”下不同的菜单项动态连接不同的数据窗口对象,就可以实现对所有字典的管理。

返回本节

11.8 全字段查询和选字段查询   利用第 10 章介绍的通用全字段查询技术可

以非常方便地实现对学生档案的查询。  首先建立一个如图 11.15 所示的数据窗口对

象,取名为 d_xsda_cx ,存于对象库 da_dw.pbl 。该数据窗口对象包含了表 xsda 的全部字段,便于总体浏览和打印输出。

  该数据窗口对象在自由表样式基础上加工而成,其中“入学年龄”和“当前年龄”为计算列,计算表达式已在前面介绍过。

 我们知道,第 10 章介绍的通用全字段查询窗口可以挂接任意数据窗口对象,并对其进行查询。这里要查询的只是数据窗口对象 d_xsda_cx ,所以,在设计时可以直接设置数据窗口控件的 DataObject属性为d_xsda_cx ,而省去选择数据窗口对象的下拉列表。

 对于选字段查询,利用第 10 章介绍的通用选字段查询窗口,只要对“选表”下拉列表的代码略加修改即可。由于这里要查询的只是表 xsda 的内容,所以,也可以把“选表”下拉列表的代码转移到窗口的 open事件当中,从而省去“选表”下拉列表。

返回本章

11.9 数据统计 

 本软件的数据统计功能包括:对学生入学时自然情况的统计,对学生在校时的学籍变动和毕业人数的统计,学生毕业后获得各级学历、学位、职称、职务的人数统计,还有历年招收的各类学生人数统计表和统计图。

Go on

    11.9.1 学生入学时自然情况统计表 

为了统计出历届学生入学时各种自然情况的人数,在数据库中建立一个表 tj_1 。

表结构建立之后,插入一条空记录(整个表只使用一条记录)。

针对表 tj_1 建立一个数据窗口对象 d_xsda_tj1 。该数据窗口对象在一般的自由表样式基础上加工而成,右上角放置了一个计算列,用来显示当前日期。

建立一个窗口 w_xsda_jt1 ,窗口类型main! ,初始状态为 normal! ,取消最大化复选项,窗口标题为“数据统计窗口(入学时)”。

  窗口上放置“学生类型”下拉列表框 ddlb_1 、“入学年份”下拉列表框 ddlb_2 、“班级”下拉列表框 ddlb_3 ,一个数据窗口控件 dw_1 和三个命令按钮。数据窗口控件的 DataObject属性设置为 d_xsda_tj1 ,即把数据窗口对象 d_xsda_tj1 与 dw_1关联起来。下拉列表 ddlb_3 的 item属性设置为:各班、 1 、 2 、 3 、 ... 。

  这段代码用自定义的全局函数设置“学生类型”和“入学年份”下拉列表项。设置显示在三个下拉列表的初始值。最后检索出数据库的数据。

     程序中,首先取出三个下拉列表的显示值,作

为统计时的限定条件。由于限定条件要在 SQL语句的 WHERE子句中使用,所以要使用通配符,其中下划线“ _“ 通配单个字符,百分号“ %” 通配多个字符。然后利用游标,统计出表 xsda 中符合条件的各类人数。最后,在数据窗口中显示统计结果并更新数据库的表 tj_1 。

  为了在三个下拉列表框的选项发生改变时,直接刷新数据 .

   窗口 w_xsda_tj1 通过主菜单 m_main“ 数据统计”下的“入学时”菜单项打开

返回本节

     11.9.2 历年招生人数统计表 

  为了便于统计和输出历年招收的各类学生人数,首先建立一个表 tj_rs 。

  然后针对表 tj_rs 建立一个数据窗口对象 d_xsda_tjrs 。这个数据窗口对象的细节带每一行将显示一年中招收的各类学生人数和总人数,总结带显示历年各类学生的总计人数。

  剩下的主要问题是根据表 xsda 的数据统计出需要的结果存入表 tj_rs 中,并通过数据窗口控件把结果显示出来。

  这样,需要建立一个窗口,上面放一个数据窗口控件 dw_1 ,并将其与数据窗口对象 d_xsda_tjrs 相关联,窗口上放一个命令按钮“刷新”用来执行统计操作,“打印”按钮用来将数据窗口控件的内容打印输出。单行编辑框 sle_1 用来显示统计的年份数。窗口命名为 w_xsda_tjsr ,标题为“统计表窗口”,其它属性设置与窗口 w_xsda_tj1相同。

  其中,定义了一个一维数组 nr 存储各年总人数,一个二维数组 a 存储各年的各类学生数。通过游标读取表 xsda 每一条记录的“学号”和“入学层次”,学号的头四位表示入学年份,转换为数值后用来做数组的行下标,不同入学层次用不同的列下标来表示,用循环语句求出各类人数和总人数存到数组 a和 nr 中。 返回本节

     11.9.3 历年招生人数统计图–  

  制作历年招生人数统计图的关键是设计一个图形样式的数据窗口对象。从 xsda 表中选取“学号”和“入学层次”两个字段建立一个图形样式的数据窗口对象 d_xsda_tjt 。

  在数据窗口对象画板中,打开属性视图,  单击“ Data” 选项卡。设置“ Category”属性为

left(xh,4) ,用学号的头四位(入学年份)分类。“ Value”属性设置为 count(xh for graph) ,即学号数(人数)为值属性。选用“ Series”属性为 rxcc ,用入学层次划分系列。

 单击“ General” 选项卡,设置图形的标题为“历年招生人数统计图”,图形名为 gr_1 。图形的类型为 Colstacked(10) ,即分层直条图。

 单击“ Axisss” 选项卡,设置 Category 的 label属性为“年份”, Value 的 Label属性为“人数”。

  单击“ Text” 选项卡,在“ Text Object” 下拉列表中选“ Category Axis Text” 项,在“ Escapement”编辑框中输入 900 ,可使分类轴文本旋转 90度显示,以便显示更多的信息。再设置必要的字体、字号、颜色等属性,得到数据窗口对象。

  有了这样一个数据窗口对象,再建立一个窗口对象 w_graph ,窗口上放置一个数据窗口控件 dw_1 ,并与数据窗口对象 d_xsda_tjt连接起来,便可以把统计图在窗口中显示出来。

  窗口上放一个“打印”按钮用来将数据窗口控件的内容打印输出。窗口标题为“统计图窗口”,其它属性设置与窗口 w_xsda_tj1相同。

  窗口上还有一个静态文本控件 st_popup ,取消它的 Visible 选项,使之初始时不可见。它的作用是在程序运行时,用鼠标右击直条图显示出对应的人数。

  。  为了能使鼠标右击直条图时,显示出相应的数值,程序用函数 ObjectAtPointer() 求出鼠标所击图形的部件名称,如果鼠标所击的是数据( TypeData! )部分,则用函数 GetData() 取出系列中数据点的值作为静态文本 st_popup 的 text属性,在鼠标当前位置显示出静态文本的 text值。

  为了使鼠标右键抬起时,隐藏静态文本 st_popup ,可在 dw_1 中定义一个用户事件 ue_rbuttonup ,选择其 Event ID 为 pbm_rbuttonup ,输入一行代码:

  st_popup.visible = false

 这样,当鼠标右键抬起时,弹出的静态文本便消失

 统计图窗口运行后,用鼠标右击直条图,显示出如图 11.22 所示的结果,鼠标抬起,静态文本消失。

  以上介绍了学生档案管理系统的几项主要功能与核心技术,其它一些功能的实现,有的与介绍过的方法类似,有的过于简单,这里就不分别介绍了。请读者自行设计或参考实

返回本节

11.10 软件的使用 

软件运行后,输入用户名和正确的口令,打开主界面。接下来,可以用菜单、工具按钮、热键、快捷键进行需要的操作。

1 .增删记录 2 .修改数据 3 .字典维护 4 .全字段查询 5 .选项查询 6 .统计入学时、在校时、毕业后数据 7 .统计图 8 .统计表 9 .系统服务 返回本章

Recommended