基于PB9.0的学生信息管理系统课题设计报告

上传人:痛*** 文档编号:120769732 上传时间:2022-07-18 格式:DOC 页数:34 大小:530.50KB
返回 下载 相关 举报
基于PB9.0的学生信息管理系统课题设计报告_第1页
第1页 / 共34页
基于PB9.0的学生信息管理系统课题设计报告_第2页
第2页 / 共34页
基于PB9.0的学生信息管理系统课题设计报告_第3页
第3页 / 共34页
点击查看更多>>
资源描述
XXXX大学本科专业实习报告学生信息管理系统的分析与设计学 号: 2009101396 学 生 姓 名: 院 部: 统计与信息学院 专 业: 信息管理与信息系统 年 级: 2009级 指 导 教 师及 其 职 称: 完 成 日 期: 学生信息管理系统程序分析 摘 要现在我国的大中专院校的学生成绩管理系统还是很不完善,给学校的信息安全带来隐患,也给人们带来很大的负担,浪费了大浪的人力、物力。在今天科技迅速发展的信息时代,改善这种状态,实现学生成绩管理工作流程的系统化、规范化和自动化显得尤为重要。本文结合学生成绩管理系统在国内外发展额概况,从需求分析、系统分析、系统设计、系统实施四个方面介绍本系统的设计 过程:其次,本文还简单介绍了开发本系统运用的工具PowerBuilder9.0及其自带的ASA数据库、PoweerScript语言。该学生成绩信息管理系统包括班级、课程、学生、成绩以及教师等基本信息的维护,学生的成绩录入、修改、查询以及删除、打印等功能。关键字:成绩管理,成绩查询,学生成绩,powerbuilder9.0目 录1前言31.1背景31.2主要内容32系统分析42.1需求分析42.2业务流程图42.3数据流程图43系统设计53.1总体设计53.2数据库设计53.2.1概念模型53.2.2逻辑模型54系统实现65总结71 前言1.1 背景学生信息档案的管理对于学校的管理者来说至关重要,学生信息是高等学校非常重要的一项数据资源,是一个教育单位不可缺少一部分。特别是近几年来,国家政策的调整,我国高等院校大规模的扩招,给高等院校的教学管理、学生管理、后勤管理等方面都带来不少的冲击。其包含的数据量大,涉及的人员面广,而且需要及时更新,故较为复杂,难以单纯地依靠人工管理,而且传统的人工管理方式既不易于规范化,管理效率也不高,目前我国各类高等院校中还有相当一部分学生信息管理还停留在纸介质的基础上,尤其是中、小学对学生信息的管理更是落后,这样的管理机制已经不能适应时代发展的要求,其管理方法将浪费许多人力和物力。随着科学技术的不断提高,计算机科学与技术日渐成熟,计算机应用的普及已进入人类社会生活的各个领域,并发挥着越来越重要的作用。这种传统的手工管理模式必然被以计算机为物质基础的信息管理方法所取代。系统针对学校学生信息的特点以及管理中实际需要而设计,能够有效地实现学生信息管理的信息化,减轻管理人员的工作负担,高效率、规范化地管理大量的学生信息,并避免人为操作的错误和不规范行为。作为计算机应用的一部分,使用计算机对学生信息进行管理,有着手工管理所无法比拟的优点,如:查找方便、可靠性高、存储量大、保密性好、寿命长、成本低等。这些优点能够极大地提高学生档案管理的效率,也是学校向科学化、正规化管理发展的必要条件,更是各个高等院校与世界接轨的重要条件。虽然现在的学校在学生信息管理上都使用了计算机进行管理,但是现在市场上流行的学生信息管理软件有些并不是针对学校对学生一切信息的管理需求研发的,而是针对广大的企事业单位开发出来的,这就一会在某些方面给学校的学生信息管理带来不便,有些学生信息管理软件的功能虽然比较强大,但其价位较高,而且其繁琐的操作对于对计算机不是掌握的很好的学校学生信息管理工作人员来说无疑是一道屏障,造成了这样的学生信息管理软件不能很好的得到充分的应用,造成系统的“浪费”。而学校对计算机不是很熟悉的管理工作人员,运用PowerBuilder这样的软件很有可能会由于操作的失误造成学生信息的丢失成绩记录的错误或系统崩溃。给学校带来无法弥补的损失。对于学校的情况,本系统在实施后,能使教学管理人员从繁的工作中解脱出来,真正的、全身心投入到教学管理工作中去,集中管理,同时带动学校管理阶段,节省了大量的人力,物力,财力和时间,使管理清晰准确,使学籍管理体系更加科学化,规范化。1.2 主要内容基于以上的原因,开发一套操作简单、维护方便、适合各个阶段学校使用的学生信息管理系统就显得十分重要与紧迫。于是提出该课题,解决当今学校解决学生信息的管理问题。2 系统分析系统功能分析阶段的任务就是确定该系统所要解决的问题及其具体要求。学生成绩管理系统需要完成的主要功能如下:(1) 班级信息的输入和存储,包括班级编号、班级名称、所属专业、入学时间和学制等。(2) 对已经输入的班级信息的修改、查询。(3) 学生基本信息的输入和存储、包括学号、姓名、性别、出生日期、班级等。(4) 学生基本信息的修改和查询。(5) 每学期初各班所开设课程的输入,包括课程名、学期、学时等。(6) 各班所开设课程信息的修改和查询。(7) 学期末输入每个学生的考试成绩。(8) 学生成绩的修改。(9) 查询某个学生。(10) 查询并打印某班某学期所有学生的各科成绩。(11) 查询并打印某班某学期某课成绩。(12) 系统具有用户和密码的管理。2.1需求分析要开发一个学生信息管理系统,首先需要进行需求分析和总体设计,分析系统的使用对象和用户需求,设计系统的体系结构和数据库结构决定使用的开发工具和后台数据库规划项目开发速度。对于“学生信息管理系统”而言。则是要将院系、学生、课程设置、学生成绩等信息的录入、删除、查看、维护的各个功能进行更详尽的描述,安排该项目规划与进度,组织软件的开发与测试撰写文档。学生信息管理系统的用户是各院系(年级)负责教学管理的老师方便教师随时修改、删除、查询各种信息。具体体现在各种信息的提供、保存、更新和查询,这就要求数据库结构能充分满足各种信息的输入和输出、数据结构和数据处理的流程,为后面的具体设计打下基础。学校在处理学生信息工作方面主要包括:学生日常管理,其中都和每位学生息息相关;从在校学生和从事学生工作的老师的人数对比中,可以看到,从事学生工作的老师工作任务比较重,要处理的事务信息内容庞大,同时非常复杂,处理过程中很容易出现错误,传统的手工信息处理方式已经不能满足现阶段学校的需求。而学生信息管理系统设计的目的就是为了减轻老师们的负担,规范统一各类学生信息,方便老师处理各个学生的信息便于以后对学生各种信息的汇总和统计。根据学校对学生信息管理系统的需求,要求该系统具有以下功能:其一:该系统要提供学生摹本信息的维护功能;其二:该系统需要提供每位学生在各个学期考试的成绩,使辅导员能够迅速查找到任意一位学生的成绩;其三:考虑到学生信息的安全性,该系统还要对不同的用户授予不同的权限,对数据库中所有学生的信息都应具有查询、维护等基本功能。2.2业务流程图学生信息管理系统身份验证学生老师管理员信息查询信息修改信息添加系统维护数据保存 图(1)学生信息管理业务流程图2.3数据流程图2.3.1 开始验证用户有权限无权限信息查询增加删除信息修改退出 图(2)学生信息管理数据流程图 具体的操作方法是:首先,是启动学生信息管理系统,会首先弹出登陆界面(如图图(3)登陆界面)。输入登陆的用户名和密码,单击登陆按钮,然后进入系统主界面(如图图(4)系统主界面),然后选择自己想要的操作! 图(3)用户登录页面 图(4)系统主页面 3系统设计3.1总体设计本系统必须能够实现以下目标:其一使得学生的信息管理工作清晰化、条理化,可实现全方位细致的管理。其二简单易操作,可方便的实现新生信息的输入、老生信息的删除等操作。其三迅捷准确的查询系统,可方便查看所需信息。学生信息管理系统班级管理课程管理学生管理成绩管理系 统修改学生信息录入学生信息浏览班级信息修改班级信息退出系统录入班级信息查询课程成绩查询班级成绩查询个人成绩录入修改成绩查询开设课程录入开设课程查询学生信息密码修改用户管理 图(5)功能结构图3.2数据库设计管理员用户密码3.2.1概念模型 用户名 管理员的实体图3.2.2逻辑模型(1)班级表:该数据库表是班级的详细信息,包括班级编号、班级名称、专业名称、学制、入学日期、人数字段名数据类型可否为空班级编号(主键)Integer(10)NOT NULL班级名称Char(10)NOT NULL专业名称Char(10)NULL学制Char(4)NOT NULL入学日期DATEtimeNOT NULL人数Char(10)NOT NULL(2)学生基本信息表:该数据库表是学生基本信息表的详细信息,包括学号、姓名、性别、出生日期、家庭住址、班级编号。字段名数据类型可否为空学号(主键)Char(10)NOT NULL姓名char (100)NOT NULL性别Char(4)NOT NULL出生日期datetimeNOT NULL家庭住址char(20)NOT NULL班级编号Char(5)NOT NULL(3)课程表:该数据库表是课程表的详细信息,包括班级编号、学期、课程名称、学时、教师姓名。字段名数据类型可否为空班级编号(主键)char (10)NOT NULL学期char(5)NOT NULL课程名称Char(10)NOT NULL学时Char(6)NOT NULL教师姓名Char(10)NOT NULL(4)成绩表:该数据库表是成绩表的详细信息,包括业学号、学期、课程名称、成绩。字段名数据类型可否为空学号(主键)Char(10)NOT NULL学期Char(5)NOT NULL课程名称Char(10)NOT NULL成绩Char(5)NOT NULL(5)用户表:该数据库表是登录用户的详细信息,包括用户名、密码、权限字段名数据类型可否为空用户名(主键)Char(10)NOT NULL密码IntNOT NULL权限Char(5)NOT NULL 4系统设计和实现4.1创建数据库在PowerBuilder开发环境中打开数据库画板,使用ODB ODBC接口建立Adaptive Server Anywhere 8.0(ASA 8.0)的数据库,然后建立5个表和1个视图。分别为“班级”表、“学生基本信息”表、“课程”表、“成绩”表、“用户”表。各表之间的关系如下图1所示:图1 各表的关联关系4.2创建应用对象(1)创建新的工作空间。(2)创建应用对象,应用对象名设为“app_xscj”。(3)打开新的对象画板.为应用对象app_xscj的Open事件编写代码如下:/ Profile liudiSQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=liudi;UID=;PWD=CONNECT;if SQLCA.sqlcode0 thenmessagebox(提示,数据库连接失败!)elseopen(w_login)end if执行此应用时,首先链接数据库“xscj”,成功后打开登录窗口。4.3设计系统管理模块4.3.1设计登录窗口登录窗口如图2所示:图2 登录窗口为登录窗口编写脚本。(1)定义全局变量string gs_username,gs_password,gs_admin 分别存储登录用户的姓名、密码和权限。(2)定义实例变量 int li_n 存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。(3)登录窗口w_login的open事件脚本如下 li_n=3 初始化变量li_n,限制出错次数为3次。(4)确定按钮cb_1的Clicked事件脚本如下。string ls_username,ls_passwordls_username=trim(sle_1.text)ls_password=trim(sle_2.text)if ls_username= or ls_password= thenmessagebox(提示,用户名和密码不能为空)elseSELECT users.name,users.password,users.adminINTO :gs_username,:gs_password,:gs_adminFROM usersWHERE (users.name = :ls_username ) AND (users.password = :ls_password ); if sqlca.sqlcode=0 then open(w_main) close(w_login) else li_n=li_n - 1 if li_n0 then messagebox(提示,用户名或密码错误) else messagebox(提示,错误超过3次,自动退出) halt end if end ifend if(5)放弃按钮cb_2的Clicked事件脚本如下.halt 4.3.2设计密码修改窗口创建窗口并设置属性创建密码修改窗口w_mmxg,调整其大小,在窗口上放置3个静态文本控件(st_1,st_2,st_3)、2个命令按钮控件(cb_1,cb_2),设计完后如图3所示:图3 密码修改窗口为密码窗口编写脚本(1)确定按钮cb_1的Clicked事件脚本如下。 string ls_passwordif trim(sle_1.text)gs_password thenmessagebox(提示,旧密码错误)elseif trim(sle_2.text)=(sle_3.text) thenls_password=trim(sle_2.text)UPDATE users SET password = :ls_password WHERE (users.name = :gs_username ) AND (users.password = :ls_password); if sqlca.sqlcode0 then messagebox(提示,密码修改不成功)elseclose(parent)messagebox(提示,密码修改完成)end ifelsemessagebox(提示,两次密码不相同)end if end if(2)取消按钮cb_2的Clicked事件脚本如下。 Close(parent)4.3.3设计用户管理的数据窗口和窗口设计数据窗口创建数据窗口“d_yhgl”,显示风格为“Grid”,数据源类型为“Quick Select”,布局如图4所示。图4 数据窗口d_yhgl数据窗口d_yhgl生成的SQL Select语句为:SELECTusers. name, users. password, users. admin FROM users 创建窗口并设置属性创建用户管理窗口w_yhgl,调整其大小,在窗口上放置1个数据窗口控件(dw_1)、4个命令按钮控件( cb_1、cb_2、cb_3、cb_4),设计完后的窗口如图5所示:图5 用户管理窗口为窗口编写脚本(1)用户管理窗口w_yhgl的Open事件脚本如下。dw_1.settransobject( sqlca )dw_1.retrieve()(2)用户管理窗口w_yhgl的Closequery事件脚本如下。integer rtdw_1.accepttext()if dw_1.modifiedcount() =0 and dw_1.deletedcount()=0 thenreturn 0elsert=messagebox(提示,添加修改内容未保存,确实退出吗?,Question!,YesNo!)if rt=1 then return 0end ifend ifreturn 1(3)数据窗口控件dw_1的Itemechanged事件脚本如下。cb_3.enabled=true /激活“保存”按钮(4)添加按钮控件cb_1的Clicked事件脚本如下。integer rowrow=dw_1.insertrow(0)dw_1.scrolltorow(row)(5)删除按钮控件cb_2的Clicked事件脚本如下。dw_1.deleterow(0)cb_3.enabled=true(6)保存按钮控件cb_3的Clicked事件脚本如下。if dw_1.update(true,false)=1 thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox(提示,保存数据失败!)end if(7)退出按钮控件cb_4的Clicked事件脚本如下。close(parent)4.3.4设计主窗口和菜单(1)创建菜单对象菜单结构如图6所示。菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键(AccessKey),常用的菜单项设置了快捷键(如退出系统的快捷键为Alt+F4,最常用的菜单项在工具条上建立了按钮。)下面编写各个菜单项的脚本。对于这些代码,在对应的窗口没有建立之前先注释掉,在建立之后再去掉注释。(1)系统菜单下密码修改菜单的Clicked事件脚本如下。Open(w_mmxg)(2)系统菜单下用户管理菜单的Clicked事件脚本如下。Open(w_yhgl)(3)系统菜单下退出系统菜单的Clicked事件脚本如下。Close(parentwidow)(4)班级管理菜单下录入班级信息 菜单的Clicked事件脚本如下。opensheet(w_banji_shuru,w_main,6,Original!)5)班级管理菜单下修改班级信息菜单的Clicked事件脚本如下。opensheet(w_banji_xiugai,w_main,6,Original!)(6)班级管理菜单下浏览班级信息菜单的Clicked事件脚本如下。opensheet(w_banji_liulan,w_main,6,Original!)(7)学生管理菜单下录入学生信息菜单的Clicked事件脚本如下。opensheet(w_jiben_shuru,w_main,6,Original!)(8)学生管理菜单下修改学生信息菜单的Clicked事件脚本如下。opensheet(w_jiben_xiugai,w_main,6,Original!)(9)学生管理菜单下查询学生信息菜单的Clicked事件脚本如下。opensheet(w_jiben_chaxun,w_main,6,Original!)(10)课程管理菜单下录入修改开设课程菜单的Clicked事件脚本如下。opensheet(w_bjkc_shurnxiugai,w_main,6,Original!)(11)课程管理菜单下查询开设课程菜单的Clicked事件脚本如下。opensheet(w_bjkc_chaxun,w_main,6,Original!)(12)成绩管理菜单下录入修改成绩菜单的Clicked事件脚本如下。opensheet(w_xscj_shuru,w_main,6,Original!) (13)成绩管理菜单下查询个人成绩菜单的Clicked事件脚本如下。opensheet(w_xscj_chaxun,w_main,6,Original!)(14)成绩管理菜单下查询班级成绩菜单的Clicked事件脚本如下。opensheet(w_xscj_bjcx,w_main,6,Original!)(15)成绩管理菜单下查询课程成绩菜单的Clicked事件脚本如下。opensheet(w_xscj_kccx,w_main,6,Original!)(16)窗口菜单下层叠窗口菜单的Clicked事件脚本如下。w_main.arrangesheets (cascade!)(17)帮助菜单下关于菜单的Clicked事件脚本如下。 open(w_about) 图6 菜单结构(18)帮助菜单下联机帮助菜单的Clicked事件脚本如下。ShowHelp(d:xscjhelpxscjhelp.chm,index!)(2) 设计窗口本次学生成绩管理系统的主窗口界面如图7所示:图7 主窗口界面创建窗口对象w_main,其Open事件脚本如下。if gs_admin=n thenm_main.m_系统.m_用户管理.enabled=falseend if其功能是非管理员用户进入系统时关闭【用户管理】菜单项。2.1.5 设计班级管理模块(1)设计访问班级信息的数据窗口设计输入班级信息的数据窗口创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”,其布局如图8所示。图8 数据窗口d_banji_shuru数据窗口d_banji_shuru生成的SQL Select语句为:SELECT banji.bjbh, banji.bjmc, banji.zymc, banji.xz, banji.rxsj, banji.rs FROM banji 设计修改班级信息的数据信息创建数据窗口d_banji_xiugai,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图9所示图9 数据窗口d_banji_xiugai数据窗口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 (2)设计访问班级信息的窗口设计输入窗口创建窗口对象w_shuru,调整其大小,放置1个数据窗口控件(dw_1)、8个命令按钮控件(cb_1cb_8),窗口布局如图10所示。图10 输入窗口设置完属性后开始编写脚本代码,其中窗口w_shuru的Open事件、命令按钮(添加、删除、保存、退出)的Clicked事件同窗口w_yhgl的相应事件脚本。其他命令按钮的事件脚本如下:(1)|按钮的Clicked事件脚本如下。dw_1.scrolltorow(1)(2)按钮的Clicked事件脚本如下。dw_1.scrollnextrow()(4)|按钮的Clicked事件脚本如下。设计修改窗口创建窗口对象w_xiugai,调整其大小,放置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1cb_4),窗口布局如图11所示:图11 修改窗口窗口和控件的事件脚本与以上输入窗口的对应部分相同。设计输入班级信息窗口通过继承输入窗口w_shuru生成输入班级信息窗口w_banji_shuru,将数据控件dw_1的DataObject属性设置为d_banji_shuru,将窗口的Tile属性改为“录入班级信息”,此窗口设计便完成了。如图12所示:图12 录入班信息级窗口设计修改班级信息窗口通过继承输入窗口w_xiugai生成输入班级信息窗口w_banji_xiugai,将数据控件dw_1的DataObject属性设置为d_banji_xiugai,将窗口的Tile属性改为“修改班级信息”,此窗口设计便完成了。如图13所示:图13 修改班级信息窗口设计浏览班级信息窗口创建窗口对象w_banji_liulan,调整其大小,放置一个数据窗口控件dw_1,调整窗口布局如图14所示。图14 浏览班级信息窗口窗口的Open事件脚本如为:dw_1.settransobject(sqlca)dw_1.retrieve()4.3.6 设计学生基本信息管理模块(1)设计访问学生基本信息的数据窗口设计输入学生基本信息的数据窗口创建数据窗口d_jiben_shuru,显示风格为“Freeform”,数据源类型为“Quick Select”,其布局如图15所示:图15 数据窗口d_jiben_shuru数据窗口的d_jiben_shuru生成的SQL Select语句为: SELECT jiben.xh, jiben.xm, jiben.xb, jiben.csrq, jiben.jtzz, jiben.bjbh FROM jiben 设计修改学生基本信息的数据窗口创建数据窗口d_jiben_xiugai,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图16所示:图16 数据窗口d_jiben_xiugai数据窗口d_jiben_xiugai生成的SQL Seleect语句为: SELECT jiben.xh, jiben.xm, jiben.xb, jiben.csrq, jiben.jtzz, jiben.bjbh FROM jiben ORDER BY jiben.xh ASC 设计查询学生基本信息的数据窗口 创建数据窗口d_jiben_chaxun,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图17所示:图17 数据窗口d_jiben_chaxun其中,定义3个String型的检索参数变量mxh、mxm、mbj,分别表示学号、姓名、班级,形成带检索参数的数据窗口。(2)设计访问学生基本信息的窗口设计输入学生基本信息的窗口 1.通过继承窗口输入窗口w_shuru生成输入学生基本信息窗口w_jiben_shuru,将数据控件dw_1的DataObject属性设置为 d_jiben_shuru,将窗口的Title属性改为“录入学生基本信息”,如图18。图18 录入学生基本信息窗口2.设计输入学生基本信息的窗口通过继承窗口输入窗口w_xiugai生成修改学生基本信息窗口w_jiben_xiugai, 将数据控件dw_1的DataObject属性设置为 d_jiben_xiugai,将窗口的Title属性改为“修改学生基本信息”,如图19: 3设计查询学生基本信息的窗口 要求此窗口中能够根据学生的姓名或学号查询出学生的基本信息,能够根据班级名称查询出该班所有学生的基本信息。窗口如图20所示:图19 修改学生基本信息窗口图20 查询学生基本信息窗口查询按钮的Open事件脚本如下。dw_1.settransobject(sqlca)if ddplb_1.text= or sle_1.text= thenmessagebox(提示,查询列和查询内容不能为空!)returnend if string strstr=trim(sle_1.text)choose case ddplb_1.textcase 学号dw_1.retrieve(str,%,%)case 姓名dw_1.retrieve(%,str,%)case 班级名称dw_1.retrieve(%,%,str)end choose代码中根据查询依据的不同,以不同参数方式检索。4.3.7设计课程管理模块(1)设计访问课程信息的数据窗口设计输入班级课程信息的数据窗口创建数据窗口d_bjkc_shuru,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图21所示:图20 数据窗口d_bjkc_shuru数据窗口d_bjkc_shuru生成的SQL Seleect语句为: SELECT bjkc.bjbh, bjkc.xq, bjkc.kcmc, bjkc.xs, bjkc.jsxm FROM bjkc .设计查询班级课程信息的数据窗口创建数据窗口d_bjkc_chaxun,显示风格为“Grid”,数据源类型为“Quick Select”,其布局如图21所示。图21 数据窗口d_bjkc_chaxunn其中,定义2个 String型检索参数变量mxq、mbjmc,分别表示学期、班级,形成带检索参数的数据窗口。 该数据窗口的修改属性为默认值即“不允许修改”。数据窗口d_bjkc_chaxun生成的SQL Select语句为:SELECT bjkc.kcmc, bjkc.xs, bjkc.jsxm, FROM bjkc , banjiWHERE (banji. bjbh= bjkc. bjbh) AND (bjkc. xq=:mxq) AND(banji . bjmc=:mbjmc)(2)设计访问课程信息的窗口设计输入修改班级课程信息的窗口班级课程的输入和修改都通过此窗口完成,输入修改班级课程信息的窗口布局如图22所示。图22 输入修改班级课程信息的窗口首先,从祖先窗口w_xiugai继承生成窗口对象w_bjkc_shuruxiugai,调整其大小。然后将数据窗口控件dw_1的DataObject属性设置为d_bjkc_shuru,此窗口设计即完成。设计查询班级开设课程的窗口 首先创建一个窗口对象w_bjkc_chaxun,调整大小,在窗口中放置2个静态文本控件(st_1,st_2)、2个下拉列表框控件(ddlb_1,ddlb_2)、1个命令按钮(cb_1)、1个数据窗口控件(dw_1),调整各个控件的位置和大小。如图23所示:(1)窗口w_bjkc_chaxun的open事件脚本如下dw_1.settransobject(sqlca) int li_xq,li_bjmc,nstring ls_xq,ls_bjmcselect count(distinct xq)into :li_xq图23 查询班级开设课程的窗口from 课程;declare xqcursor cursor forselect xq from 课程 group by xq;open xqcursor;for n=1 to li_xqfetch next xqcursor into :ls_xq;ddplb_1.additem(ls_xq)nextclose xqcursor;select count(distinct bjmc) into :li_bjmcfrom 班级;declare bjmccursor cursor forselect 班级.bjmcfrom 课程, 班级where 课程.bjbh=班级.bjbh group by 班级.bjmc;open bjmccursor;for n=1 to li_bjmcfetch next bjmccursor into :ls_bjmc;ddplb_2.additem(ls_bjmc)nextclose bjmccursor; (2)查询按钮的Clicked事件脚本如下。dw_1.retrieve(ddplb_1.text,ddplb_2.text) 4.3.8设计成绩管理模块(1)设计访问成绩信息的数据窗口设计输入成绩信息的数据窗口创建数据窗口d_xscj_shuru,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图19所示。数据来源与成绩表xscj和视图xsjb,其中,学号、学期、课程名称和成绩为成绩表xscj的列,姓名是视图xscj的列。选则Roes|Updata Properties命令,打开数据窗口的修改属性对话框,如图24所示:图24 数据窗口d_xscj_shuru选择Rows|Update Properties命令,打开数据窗口的修改属性对话框,设置数据窗口的修改属性,即只有成绩表xscj的成绩列可以在数据窗口中修改,关键字为成绩表xscj的主关键字(xh,xq,kcmc)。然后,单击工具条上的Tab Order图标,将列控件sxcj_cj的Tab Order值设为10,在单击Tab Order图标回到原设计状态。如图25:图25 数据窗口d_xscj_shuru的修改属性设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口d_xscj_bjcx,显示风格为 “Cross Tab”,数据源类型为 “SQL Select”,数据来源于成绩表xscj和视图xsbj。如图26:图26 数据窗口d_xscj_grcx设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口d_xscj_bjcx,显示风格为 “Cross Tab”,数据源类型为 “SQL Select”,数据来源于成绩表xscj和视图xsbj。如图27:图27 数据窗口d_xscj_bjxc在Headeer1条中添加2个计算域控件,对应的表达式分别为mbjmc和mxq,3个文本控件,其文本分别为 “成绩单”、 “班级” 、和 “学期”.数据窗口的检索参数为mxq和mbjmc,分别对应于学期和班级名称,修改属性取默认值(不允许修改)。设计查询某班级某学期全体学生各科成绩的数据窗口创建数据窗口d_xscj_kccx,显示风格为 “N_Up”,拦数为2,数据源类型为 “SQL Select”,数据来源于成绩表xscj和视图xsbj.如图28:图28 数据窗口d_xsch_kccx在Header条中添加2个计算域控件对应的表达式分别为mbcme,3个文本控件,其文本分别为 “成绩单”、 “班级” 、和 “课程”.数据窗口的检索参数为mxq、mbjmc、mkcme,分别对应于学期、班级名称和课程名称,修改属性取默认值(不允许修改)。(2)设计访问成绩信息的窗口设计输入成绩的窗口首先创建窗口对象w_xscj_shuru,在窗口上放置1个分组框控件、3个静态文本控件、3个下拉列表框控件、3个命令按钮控件和1个数据窗口控件。如图29:图29 输入成绩的窗口各个窗口和控件的事件脚本如下。(1)窗口的open事件脚本如下。 dw_1.settransobject(sqlca)int li_xq,li_bjmc,li_kcmc,nstring ls_xq,ls_bjmc,ls_kcmcselect count(distinct xq)into :li_xqfrom bjkc;declare xqcursor cursor forselect xq from bjkc group by xq;open xqcursor;for n=1 to li_xq fetch next xqcursor into :ls_xq; ddlb_1.additem(ls_xq)nextclose xqcursor;/生成班级下拉列表框的列表项select count(distinct bjbh) into :li_bjmcfrom bjkc;declare bjmccursor cursor forselect banji.bjmcfrom bjkc, banjiwhere bjkc.bjbh=banji.bjbh group by banji.bjmc;open bjmccursor;for n=1 to li_bjmc fetch next bjmccursor into :ls_bjmc; ddlb_2.additem(ls_bjmc)nextclose bjmccursor;(2)窗口的closequery事件脚本如下。 integer rt dw_1.accepttext()if dw_1.modifiedcount()=0 then return 0else rt=messagebox(提示,添加修改内容未保存,确实退出吗?,question!,yesno!)if rt=1 thenreturn 0 end if end ifreturn 1(3)课程的下拉列表框的getfocus事件脚本如下。int li_kcmc,nstring ls_kcmc,ls_xq,ls_bjmcls_xq=ddlb_1.textls_bjmc=ddlb_2.textif not(ls_xq=or ls_bjmc=) thenselect count(distinct bjkc.kcmc)into :li_kcmcfrom bjkc,banjiwhere(bjkc.bjbh=banji.bjbh)and (banji.bjmc=:ls_bjmc)and(bjkc.xq=:ls_xq);declare kcmccursor cursor forselect bjkc.kcmcfrom banji,bjkcwhere(bjkc.bjbh=banji.bjbh)and (banji.bjmc=:ls_bjmc)and(bjkc.xq=:ls_xq)group by bjkc.kcmc;ddlb_3.reset()open kcmccursor;for n=1 to li_kcmcfetch next kcmccursor into :ls_kcmc;ddlb_3.additem(ls_kcmc)nextclose kcmccursor;end if (4)确定按钮的clicked事件脚本如下。 int li_xh,nstring ls_kcmc,ls_xq,ls_bjmc,ls_xhls_xq=ddlb_1.textls_bjmc=ddlb_2.textls_kcmc=ddlb_3.textif ls_xq= or ls_bjmc= or ls_kcmc= thenmessagebox(提示,选择项不能空!)elseselect count(distinct xh)into :li_xhfrom xsbjwhere xsbj.bjmc=:ls_bjmc;declare xhcursor cursor forselect xhfrom xsbjwhere xsbj.bjmc=:ls_bjmc;open xhcursor;for n=1 to li_xhfetch next xhcursor into:ls_xh;insert intoxscj(xh,xq,kcmc,cj)values(:ls_xh,:ls_xq,ls_kcmc,null);nextclose xhcursor;dw_1.retrieve(ls_xq,ls_bjmc,ls_kcmc)end if设计查询学生个人成绩窗口 查询学生个人成绩的窗口如图30所示。数据窗口控件连接的数据窗口对象为d_xscj_grcx.(1)查询按钮的clicked事件脚本如下dw_1.settransobject(sqlca)if sle_1.text=or sle_2.text= then messagebox(提示,班级学期和课程不能为空)else dw_1.retrieve(sle_1.text,sle_2.text) cb_2.enabled=trueend if(2)打印按钮的clicked事件脚本如下dw_1.print(true)(3)退出按钮的clicked事件脚本如下close(parent)图30 查询学生个人成绩的窗口设计查询班级成绩的窗口查询班级成绩的窗口如图31所示。数据窗口控件的dataobject属性为d_xscj_bjcx。此窗口的open 事件脚本与输入成绩窗口的open事件脚本相同。打印按钮和退出按钮的clicked事件脚本与d_xscj_grcx中的一样。(1)查询按钮的clicked事件脚本如下dw_1.settransobject(sqlca)if ddplb_1.text=or ddplb_2.text= then messagebox(提示,班级学期和课程不能为空)else dw_1.retrieve(ddplb_1.text,ddplb_2.text) cb_2.enabled=trueend if图31 查询班级成绩的窗口设计查询课程成绩的窗口查询课程成绩的窗口如图32所示。数据窗口控件的dataobject属性为d_xscj_kccx。此窗口的open事件脚本、“课程”的下拉列框的getfocus事件脚本与输入成绩窗口的对应事件脚本相同,打印按钮和退出按钮的clicked 事件脚本与查询学生个人成绩窗口中的一样。(1)查询按钮的clicked事件脚本如下dw_1.settransobject(sqlca)if ddplb_1.text=or ddplb_2.text=or ddplb_3.text= then messagebox(提示,班级学期和课程不能为空)else dw_1.retrieve(ddplb_1.text,ddplb_2.text,ddplb_3.text) cb_2.enabled=trueend if图31 查询课程成绩的窗口5.系统的编译和发布到此为止,系统的实现工作就完成了。在第个模块的实现过程中,对其每个功能要进行仔细的测试和调试,最后对整个应有程序做系统的测试,在测试工作完成后可进作应用程序的编译和发布步骤如下。(1)创建工程对象单击工具条上的new图标,打开new对话框,在对话框中选择rpoject 标签,再选择application wizard图标,单击ok按钮,开始工程的向导,露出马最后出现工程对象。(2)编译生成可执行程序单击工程画板工具条上的deploy图标,开始编译过程。编译通过后,生成可执行文件xscj.exe(3)测试分布对可执行程序做系统的测试,最后便可发布了。总 结在本次课程设计中,我更加的了Power Builder,更加的灵活的操作使用Power Builder,也深刻的体会到它给我们带来的方便。数据库一般由若干数据表组成,数据库中的数
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 管理文书 > 施工组织


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!