您好,欢迎访问三七文档
当前位置:首页 > 财经/贸易 > 资产评估/会计 > PowerBuilder第20讲 案例分析2
第11章高校学生档案管理系统学生档案管理是常用、典型的教学管理软件,许多学校都开发和使用过这类软件。但不同学校有各自不同的情况,要求不可能完全一样,软件的功能与使用方式也有很大差异。科学技术不断进步,人们的需求千差万别,要求永无止境。所以,根据不同的要求,开发适合不同情况的软件,并且不断升级、更新、完善,不断研究和采用新技术,是软件开发人员始终面临的任务。本软件的主要特点是:(1)用PowerBuilder9.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.1系统功能设计按照一般高等学校对学生档案管理的需求,对软件的功能提出如下要求:1.信息维护2.查询打印3、数据统计4、系统服务返回本章11.2数据库和表设计学生档案管理系统所涉及的学生档案资料以及其它有关数据都要存储于数据库中。为此,首先建立一个AdaptiveServerAnywhere7.0数据库,数据库文件命名为xsda.db,用户名、口令先暂时用默认的dba和sql,将来需要时再作修改。在PowerBuilder中为数据库配置ODBC数据源和Profile,取名均为xsda。在数据库xsda.db中首先建立一个主表,取名为xsda,用来存放学生的档案资料,每位学生占一条记录。包括基本信息以及入学时、在校时、毕业后的主要信息,共55个字段。为了提高效率,对一些可枚举的数据项(比如民族、政治面貌、学生职务等)采用下拉数据窗口的形式进行输入。这样,需要为每一类枚举数据项建立一个表,每个表定义一个字段,我们把这类表叫做“字典”。为便于用户管理,建立一个表dic_yhkl,用来保存用户名、口令和级别等信息,结构为了记录系统使用信息,建立一个“日志”表dic_log。数据库中还有两表tj_1和tj_rs,等用到的时候再作介绍。返回本章11.3对象库和主菜单由于本系统涉及到的对象比较多,为了管理上的方便,我们建立四个对象库,分别用来存放窗口对象、一般数据窗口对象、字典数据窗口对象和其它对象。用前面介绍的方法,在建立应用程序对象的同时可以建立一个对象库和一个目标。要建立多个对象库并使其置于搜索路径之中,要经过两个步骤:在“Migrateapplication”对话框中单击“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登录窗口和MDI框架窗口11.5.1应用程序对象代码11.5.2封面窗口11.5.3系统登录窗口11.5.4MDI框架窗口返回本章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,作为它的列表项,以便于登录时输入用户名。返回本节请注意,在定义游标时,使用了“ORDERBY”选项使记录按dlsj(登录时间)字段值升序排列,而且在把用户名添加到下拉列表框的同时,也把它作为下拉列表框的text属性值。这样,最近登录过的用户名会自动作为下拉列表框的文本,相当于有了记忆功能,方便了用户操作。运行后窗口w_fm和w_login叠加在一起当用户单击“确定”按钮时,产生clicked事件,通过下面代码进行用户身份验证等处理:代码中,首先从下拉列表框ddlb_1中取出用户名,再从表dic_yhkl中取出该用户的口令的级别,如果在单行编辑框sle_2中输入的口令与表dic_yhkl中取出的口令不同,则要求重新输入。返回本节11.5.4MDI框架窗口MDI框架窗口w_main类型为mdihelp!,初始状态为maximized!,窗口标题为“高校学生档案管理系统”,MenuName属性设置为m_main,即把菜单m_main挂接到窗口上。其目的是根据用户的级别设置不同的权限,当用户为管理员(级别为0)时,使主菜单中“日志查询”、“用户管理”和其中的分隔线可见。否则,这几个菜单项是不可见的(设计时已取消了它们的visible属性)。返回本节11.6数据维护功能11.6.1数据维护菜单11.6.2数据窗口对象11.6.3窗口对象对象返回本章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字典维护功能系统中有十几个作为字典的表,这些表中数据的增、删、改等操作可以采用统一的方式进行,这样能够大大减轻软件开发的工作量,系统的可扩充性也大大增强。Goon11.7.1数据窗口对象11.7.2窗口对象11.7.3有关菜单项的编码返回本章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、ue_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数据统计本软件的数据统计功能包括:对学生入学时自然情况的统计,对学生在校时的学籍变动和毕业人数的统计,学生毕业后获得各级学历、学位、职称、职务的人数统计,还有历年招收的各类学生人数统计表和统计图。Goon11.9.1学生入学时自然情况统计表11.9.2历年招生人数统计表11.9.3历年招生人数统计图返回本章11.9.1学生入学时自然情况统计表为了统计出历届学生入学时各种自然情况的人数,在数据库中建立一个表tj_1。表结构建立之后,插入一条空记录(整个表只使用一条记录)。针对表tj_1建立一个数据窗口对象d_xsda_tj1。该数据窗口对象在一般的自由表样式基础上加工而成,右上角放置了一个计算列,用来显示
本文标题:PowerBuilder第20讲 案例分析2
链接地址:https://www.777doc.com/doc-3762402 .html