1 / 41

第 10 章 学生成绩管理系统实例

第 10 章 学生成绩管理系统实例. 10.1 系统分析与设计 10.2 数据库设计与实现 10.3 创建应用对象 10.4 设计系统管理模块 10.5 设计主窗口和菜单 10.6 设计班级管理模块 10.7 设计学生基本信息管理模块 10.8 设计课程管理模块. 10.9 设计成绩管理模块 10.10 系统的编译和发布 10.11 小 结 10.12 实 训. 本章要点. PowerBuilder 应用系统分析 PowerBuilder 应用系统的开发过程

Download Presentation

第 10 章 学生成绩管理系统实例

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 第10章 学生成绩管理系统实例 10.1 系统分析与设计 10.2 数据库设计与实现 10.3 创建应用对象 10.4 设计系统管理模块 10.5 设计主窗口和菜单 10.6 设计班级管理模块 10.7 设计学生基本信息管理模块 10.8 设计课程管理模块 • 10.9 设计成绩管理模块 • 10.10 系统的编译和发布 • 10.11 小 结 • 10.12 实 训

  2. 本章要点 PowerBuilder应用系统分析 PowerBuilder应用系统的开发过程 PowerBuilder应用程序的各种对象的设计方法 PowerBuilder应用程序的调试和发布

  3. 10.1 系统分析与设计 一个应用系统的开发过程包括分析、设计、实现、调试和发布等阶段,本节介绍学生成绩管理系统的功能分析和模块设计。

  4. 10.1.1 系统功能分析 • 本例中的学生成绩管理系统需要完成的主要功能如下。 • (1) 班级信息的输入和存储,包括班级编号、班级名称、所属专业、入校时间和学制等。 • (2) 对已经输入的班级信息的修改、查询。 • (3) 学生基本信息的输入和存储,包括学号、姓名、性别、出生日期、班级等。 • (4) 学生基本信息的修改和查询。 • (5) 每学期初各班所开设课程的输入,包括课程名、学期、学时等。 • (6) 各班所开设课程信息的修改和查询。 • (7) 学期末输入每个学生的考试成绩。 • (8) 学生成绩的修改。 • (9) 查询某个学生某学期的各科成绩。 • (10) 查询并打印某班某学期所有学生的各科成绩。 • (11) 查询并打印某班某学期某科成绩。 • (12) 系统具有用户和密码的管理。

  5. 10.1.2 系统功能模块设计 • 通过对上述各项功能的分析、分类、综合,按照模块化程序设计的要求,得到如图所示的功能模块图。

  6. 10.2 数据库设计与实现 10.2.1 数据库设计 根据学生成绩管理系统的功能要求,通过分析系统要涉及的相关实体以及要收集、存储和操纵的数据信息,得到系统E-R图。 根据系统E-R图得到以下关系模式。 l班级(班级编号,班级名称,所属专业,学制,入学时间,人数)。 l学生基本信息(学号,姓名,性别,出生日期,家庭住址,班级编号)。 l课程(班级编号,学期,课程名称,学时,教师)。 l成绩(学号,学期,课程名称,成绩)。 为了系统的使用安全,要建立用户管理,而用户使用权限分为管理员和一般用户两类,因此需要建立一个存储用户信息的关系。 l用户(姓名,密码,权限)。

  7. 10.2.2 创建数据库 • 首先,在D盘根目录下建立本实例的工作文件夹“xscj”,再在“D:\xscj”文件夹下建立文件夹“data”,用于存储数据库文件。 • 在PowerBuilder开发环境中打开数据库画板,使用【ODB ODBC】接口建立Adaptive Server Anywhere 8.0(ASA 8.0)的数据库D:\xscj\data\xscj.db,然后依次建立以下5个表和1个视图。 • “班级”表 、“学生基本信息”表 、“课程”表 、“成绩”表 、“用户”表 、视图“xsbj”(学生基本信息表和班级表连接 )

  8. 各个表之间通过外键形成如图所示的关联关系。各个表之间通过外键形成如图所示的关联关系。

  9. 10.3 创建应用对象 (1) 创建新的工作空间,工作空间文件路径及名称设为“d:\xscj\xscj.pbw”。 (2) 创建应用对象,应用对象名设为“app_xscj”,应用库文件路径及名称设为“d:\xscj\xscj.pbl”,目标文件路径及名称设为“d:\xscj\xscj.pbt”。 (3) 打开应用对象画板,应用对象app_xscj的Icon属性设置为“d:\xscj\BOOKS.ICO”。BOOKS.ICO是预先准备的图标文件。 (4) 为应用对象app_xscj的Open事件编写代码如下。

  10. //连接数据库 • SQLCA.DBMS = "ODBC" • SQLCA.AutoCommit = False • SQLCA.DBParm = "Connectstring='DSN=xscj;UID=dba;PWD=sql'" • CONNECT; • if SQLCA.sqlcode<>0 then • messagebox("提示","数据库连接失败!") • else • //open(w_login) //打开登录窗口 • end if

  11. 10.4 设计系统管理模块 10.4.1 设计登录窗口 1. 创建窗口并设置属性 2. 编写脚本 10.4.2 设计密码修改窗口 1. 创建窗口并设置属性 2. 编写脚本

  12. 10.4.3 设计用户管理的数据窗口和窗口 • 1. 设计数据窗口 2. 创建窗口并设置属性 3. 编写脚本

  13. 10.5 设计主窗口和菜单 10.5.1 创建菜单对象 菜单结构如图10.8所示。菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键(AccessKey),常用的菜单项设置了快捷键(如【退出系统】的快捷键为【Alt+F4】,【录入班级信息】的快捷键为【Ctrl+A】),最常用的菜单项在工具条上建立了按钮。 编写各个菜单项的脚本。对于这些代码行,在对应的窗口没有建立之前先注释掉,在对应的窗口建立后再去掉其注释符。

  14. 对 象 属 性 取 值 w_main Title 学生成绩管理系统 Window Type mdihelp! MenuName m_main WindowState maximized 10.5.2 设计主窗口 • 主窗口界面如图所示。 • 创建窗口对象w_main,设置相应属性。窗口对象w_main的Open事件脚本如下。 • if gs_admin='n' then • m_main.m_系统.m_用户管理.enabled=false • end if

  15. 10.6 设计班级管理模块 本模块实现班级信息的输入、修改和查询。 10.6.1 设计访问班级信息的数据窗口 1. 设计输入班级信息的数据窗口 创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”。 数据窗口d_banji_shuru生成的SQL Select语句为: SELECT "banji"."bjbh", "banji"."bjmc", "banji"."zymc", "banji"."xz", "banji"."rxsj","banji"."rs" FROM "banji"

  16. 2. 设计修改班级信息的数据窗口 • 创建数据窗口d_banji_xiugai,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图所示。 • 数据窗口d_banji_xiugai生成的SQL Select语句为: • SELECT"banji"."bjbh","banji"."bjmc","banji"."zymc","banji"."xz","banji"."rxsj","banji"."rs" • FROM "banji" • ORDER BY "banji"."bjbh" ASC

  17. 10.6.2 设计访问班级信息的窗口 • 1. 设计输入窗口 • 创建窗口对象w_shuru,调整其大小,放置1个数据窗口控件(dw_1)、8个命令按钮控件(cb_1 ~cb_8),窗口布局如图所示。 • 设置窗口及其控件的属性。 • 设置完属性后开始编写脚本代码 。

  18. 2. 设计修改窗口 • 创建窗口对象w_xiugai,调整其大小,放置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1 ~cb_4),窗口布局如图10.13所示。 • 设置窗口及其控件的属性。 • 窗口和控件的事件脚本与输入窗口的对应部分相同。

  19. 3. 设计输入班级信息窗口 • 通过继承输入窗口w_shuru生成输入班级信息窗口w_banji_shuru,将数据控件dw_1的DataObject属性设置为d_banji_shuru,将窗口的Title属性改为“录入班级信息”,此窗口设计便完成了。 • 4. 设计修改班级信息窗口 • 通过继承修改窗口w_xiugai生成修改班级信息窗口w_banji_xiugai,将数据控件dw_1的DataObject属性设置为d_banji_xiugai,将窗口的Title属性改为“修改班级信息”,此窗口设计便完成。

  20. 5. 设计浏览班级信息窗口 • 创建窗口对象w_banji_liulan,调整其大小,放置1个数据窗口控件dw_1,调整窗口布局如图所示。 • 设置窗口及其控件的属性。 • 窗口的Open事件脚本如下。 • dw_1.settransobject( sqlca) • dw_1.retrieve()

  21. 10.7 设计学生基本信息管理模块 10.7.1 设计访问学生基本信息的数据窗口 1.设计输入学生基本信息的数据窗口 创建数据窗口d_jiben_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”,其布局如图所示。 其中,列控件“xb”的编辑风格改为“RadioButtons”,码表如图10.15中所示;列控件“bjbh”的编辑风格改为“DropDownDW”,其DataWindow属性设置为“d_banji_xiugai”,Display Column属性和Data Column属性都设置为“bjbh”,Width of DropDown(%)属性设置为“300”,Lines in DropDown属性设置为“6”,VScrollBar属性设置为“True”。

  22. 2.设计修改学生基本信息的数据窗口 • 创建数据窗口d_jiben_xiugai,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图所示。 • 其中,列控件“xb”的编辑风格改为“DropDownListBox”,列表项为“男”,“女”;列控件“bjbh”的编辑风格改为“DropDownDW”,其DataWindow属性设置为“d_banji_xiugai”,Display Column属性和Data Column属性都设置为“bjbh”,Width of DropDown(%)属性设置为“300”,Lines in DropDown属性设置为“6”,VScrollBar属性设置为“True”。

  23. 3.设计查询学生基本信息的数据窗口 • 创建数据窗口d_jiben_chaxun,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图10.17所示。 • 其中,定义3个String型检索参数变量mxh、mxm、mbj,分别表示学号、姓名、班级,形成带检索参数的数据窗口。 • 该数据窗口的修改属性为默认值即“不允许修改”。

  24. 10.7.2 设计访问学生基本信息的窗口 • 1.设计输入学生基本信息的窗口 • 通过继承输入窗口w_shuru生成输入学生基本信息窗口w_jiben_shuru,将数据控件dw_1的DataObject属性设置为d_jiben_shuru,将窗口的Title属性改为“录入学生基本信息”,此窗口设计便完成了。 • 2.设计修改学生基本信息的窗口 • 通过继承修改窗口w_xiugai生成修改学生基本信息窗口w_jiben_xiugai,将数据控件dw_1的DataObject属性设置为d_jiben_xiugai,将窗口的Title属性改为“修改学生基本信息”,此窗口设计便完成了。

  25. 3.设计查询学生基本信息的窗口 • 要求此窗口中能够根据学生的姓名或学号查询出学生的基本信息,能够根据班级名称查询出该班所有学生的基本信息。查询学生基本信息窗口如图所示。 • 创建一个窗口对象w_jiben_chaxun,放置控件 ,设置窗口及其控件的属性 。 编写【查询】按钮的Open事件脚本。

  26. 【查询】按钮的Open事件脚本如下。 dw_1.settransobject( sqlca) if ddlb_1.text="" or sle_1.text="" then messagebox("提示","查询列和查询内容不能空!") return end if string str str=trim(sle_1.text) choose case ddlb_1.text case "学号" dw_1.retrieve( str, "%","%") case "姓名" dw_1.retrieve( "%",str ,"%") case "班级名称" dw_1.retrieve( "%","%", str) end choose

  27. 10.8 设计课程管理模块 10.8.1 设计访问课程信息的数据窗口 1. 设计输入班级课程信息的数据窗口 创建数据窗口d_bjkc_shuru,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图所示。其中,列控件“bjbh”的编辑风格改为“DropDownDW”,其DataWindow属性设置为“d_banji_xiugai”,Display Column属性和Data Column属性都设置为“bjbh”,Width of DropDown(%)属性设置为“300”,Lines in DropDown属性设置为“6”,VScrollBar属性设置为“True”。

  28. 2. 设计查询班级课程信息的数据窗口 • 创建数据窗口d_bjkc_chaxun,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图10.20所示。 • 其中,定义2个String型检索参数变量mxq、mbjmc,分别表示学期、班级,形成带检索参数的数据窗口。 • 该数据窗口的修改属性为默认值即“不允许修改”。

  29. 10.8.2 设计访问课程信息的窗口 • 1. 设计输入修改班级课程信息的窗口 • 窗口的布局如图所示。 • 从祖先窗口w_xiugai继承生成窗口对象w_bjkc_shuruxiugai,调整其大小。然后将数据窗口控件dw_1的DataObject属性设置为d_bjkc_shuru,此窗口设计即完成。

  30. 2. 设计查询班级开设课程的窗口 • 窗口如图所示。创建一个窗口对象w_bjkc_chaxun,放置控件,设置窗口及其控件的属性。书写各个对象的事件脚本。 • (1) 窗口w_bjkc_chaxun的Open事件脚本 • (2) 【查询】按钮的Clicked事件脚本

  31. 10.9 设计成绩管理模块 10.9.1 设计访问成绩信息的数据窗口 1. 设计输入成绩的数据窗口 创建数据窗口d_xscj_shuru,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图所示。数据来源于成绩表xscj和视图xsbj,其中,学号、学期、课程名称和成绩为成绩表xscj的列,姓名是视图xsbj的列。 选择【Rows】|【Update Properties】命令,设置数据窗口的修改属性,使只有成绩表xscj的成绩列(xscj_cj)可以在数据窗口中修改,关键字为成绩表xscj的主关键字(xh,xq,kcmc)。然后,单击工具条上的【Tab Order】图标,将列控件xscj_cj的Tab Order值设为10。

  32. 2. 设计查询学生个人某学期各科成绩的数据窗口 • 创建数据窗口d_xscj_grcx,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图10.25所示。在【Summary】条中添加一个计算域控件,计算数据窗口中成绩总和。 • 数据窗口的检索参数为mxh、mxq,分别对应于学号和学期。

  33. 3. 设计查询某班级某学期全体学生各科成绩的数据窗口 • 创建数据窗口d_xscj_bjcx,显示风格为“Cross Tab”,数据源类型为“SQL Select”,其布局如图所示。数据来源于成绩表xscj和视图xsbj,其中,学号、课程名称和成绩为成绩表xscj的列,姓名是视图xsbj的列。 • 在【Header[1]】条中添加2个计算域控件,对应的表达式分别为mbjmc和mxq,3个文本控件,其文本分别为“成绩单”、“班级:”和“学期:”。 • 数据窗口的检索参数为mxq和mbjmc,分别对应于学期和班级名称。修改属性取默认值(不允许修改)。

  34. 4. 设计查询某班级某学期全体学生某科成绩的数据窗口 • 创建数据窗口d_xscj_kccx,显示风格为“N_Up”,栏数为2,数据源类型为“SQL Select”,其布局如图10.27所示。数据来源于成绩表xscj和视图xsbj,其中,学号和成绩为成绩表xscj的列,姓名是视图xsbj的列。 • 在【Header】条中添加2个计算域控件对应的表达式分别为mbjmc和mkcmc,3个文本控件,其文本分别为“成绩单”、“班级:”和“课程:”。 • 数据窗口的检索参数为mxq、mbjmc和mkcmc,分别对应于学期、班级名称和课程名称。修改属性取默认值(不允许修改)。

  35. 10.9.2 设计访问成绩信息的窗口 • 1. 设计输入成绩的窗口 • 输入成绩的窗口如图所示。首先创建窗口对象w_xscj_shuru,放置控件,调整窗口和控件的大小、位置及有关属性。其中,【保存】按钮的enabled属性设为False;数据窗口控件调整到只显示学号、姓名和成绩3列,VScrollBar属性设为True,数据窗口对象为d_xscj_shuru;3个下拉列表框控件的列表项为空,由代码动态生成。 • 编写窗口和各个控件的事件脚本。

  36. 2. 设计查询学生个人成绩的窗口 • 查询学生个人成绩的窗口如图所示。数据窗口控件连接的数据窗口对象为d_xscj_grcx。 • 编写以下脚本: • (1)【查询】按钮的Clicked事件 • (2)【打印】按钮的Clicked事件 • (3)【退出】按钮的Clicked事件

  37. 3. 设计查询班级成绩的窗口 • 查询班级成绩的窗口如图所示。数据窗口控件的DataObject属性为d_xscj_bjcx。 • 编写窗口的Open事件脚本,【打印】按钮和【退出】按钮的Clicked事件脚本略,【查询】按钮的Clicked事件脚本。

  38. 4. 设计查询课程成绩的窗口 • 查询课程成绩的窗口如图所示。数据窗口控件的DataObject属性为d_xscj_kccx。 • 编写窗口的Open事件脚本、“课程”的下拉列表框的Getfocus事件脚本、【打印】按钮和【退出】按钮的Clicked事件脚本、【查询】按钮的Clicked事件脚本。

  39. 10.10 系统的编译和发布 在每个模块的实现过程中,对其每个功能要进行仔细的测试和调试,最后对整个应用程序做系统的测试,在测试工作完成后可以进行应用程序的编译和发布步骤如下。 1) 创建工程对象 2) 编译生成可执行程序 3) 测试分布

  40. 10.11 小结 本章通过学生成绩管理系统实例介绍了用PowerBuilder开发数据库应用程序的过程,介绍了开发应用系统时的系统分析、功能设计、数据库设计以及数据库的实现,具体描述了实例中各种PowerBuilder对象的设计方法,较为系统、综合、全面地总结了PowerBuilder的应用。

  41. 10.12 实训 实训目的 (1) 掌握数据库应用系统的设计方法。 (2) 掌握用PowerBuilder创建数据库的方法。 (3) 具备用PowerBuilder开发一个完整的应用系统的能力。 实训内容 (1) 用PowerBuilder实现本章所讲的“学生成绩管理系统”。 (2) 调试并发布完成的应用系统。

More Related