《PowerBuilder程序设计学生成绩信息管理系统.doc》由会员分享,可在线阅读,更多相关《PowerBuilder程序设计学生成绩信息管理系统.doc(30页珍藏版)》请在三一办公上搜索。
1、 PowerBuilder程序设计学生成绩信息管理系统所属院系 计算机科学与应用所在班级 1110961 姓 名 学 号 111096127 指导教师 2011年11月10日目 录一、系统分析与设计- 3 -11系统结构设计- 3 -1.2系统开发设计- 3 -二、需求分析- 5 -2.1功能需求- 5 -2.2具体功能需求- 5 -三、数据库设计与实现- 6 -四、创建应用对象- 9 -五、详细设计- 10 -5.1 设计登陆窗口- 10 -5.2 学生功能模块- 11 -5.2.1设计密码修改窗口- 12 -5.2.2 成绩信息查询- 14 -5.3 教师功能模块- 19 -5.3.1 学
2、生信息管理- 19 -5.3.2 课程信息管理- 21 -5.3.3 学生成绩信息管理- 21 -5.4 菜单选项的设计与实现- 23 -六、使用说明- 26 -七、优缺点分析- 27 -八、总 结- 28 -九、参考文献- 29 -一、系统分析与设计在任何高等院校,学生的成绩管理都是学校教务管理的重要环节之一。随着学校学生人数的增加,学生成绩管理的任务更加繁重,必须借助现代化的管理工具和手段提高学生成绩管理效率。学生成绩管理系统广泛适用于高校教务管理部门的学生成绩管理,其作用和功能也是学生比较熟悉和容易理解的。11系统结构设计 学生成绩数据库管理系统式面向教务管理部门设计的,通过该系统可以很
3、方便地对存储在后台数据库的数据进行各种管理工作。XSCJ数据库包含有四个表,xs表用来存放学生基本信息情况,kc表用来存放课程基本信息,xs_cj表用来存放学生课程成绩信息,users表用来存放权限信息。根据学校教务管理的实际需要,可以设计以下主要的交互窗口:(1)登陆窗口w_login(2)控制台窗口w_main(3)查询子系统窗口w_query(4)数据管理子系统窗口w_manage(5)帮助系统窗口w_help其中查询子系统窗口包括学生成绩查询、学生基本情况查询、学生选课信息查询和交互式查询。而数据管理子系统窗口包括资源管理、数据的更新、数据的删除、数据插入等。1.2系统开发设计(1)检
4、查系统硬件环境和软件环境是否符合要求。(2)检查XSCJ数据库的4个样本数据表,观察是否满足系统需要。(3)为项目创建磁盘存储区域,并创建新的工作空间。(4)注意创建组成系统的各个模块。(5)采用面向对象的方法,实现模块的可重用性。(6)完成各个模块的代码,并进行单个模块的测试。(7)进行整个系统的测试。(8)生成可执行文件。(9)软件发布。整个系统的体系结构如图1.1所示。应用程序登录窗口系统控制台主窗口查询子系统学生信息查询学生选课查询学生成绩查询按专业名查询用户定义查询数据管理子系统学生信息管理课程信息管理学生成绩管理帮助子系统使用帮助软件小工具备忘录电子日历统计分析图1.1 系统体系结
5、构图二、需求分析以管理信息系统技术和Java语言程序设计理论为基础,结合Windows Access数据库服务器的相关技术,用PowerBuilder作为前台应用程序开发工具,阐述构建一个普遍适用于学校、班级的学生成绩管理系统的全过程,建立一套在现有Windows操作系统下的单机版学生成绩管理系统。管理系统具有简单实用、操作方便,可靠性强等特点。可供一般学生登陆查询,教师通过登录就可以放方便的看到谁选了他的课,最后选择相应的课号就可以对相应的学生录入成绩,以及选课总人数。2.1功能需求本课题要实现的是成绩管理信息系统,在设计时采用友好的用户界面,便于管理员及学生的操作,系统应有基本功能如下:登
6、录系统:分配权限、系统退出。管理:成绩,选课,学生基本信息查询等查询功能,学生信息管理、教师管理、成绩管理功能。 统计:统计相应选课人数,及格不及格人数学生可以对自己的基本信息浏览的功能。2.2具体功能需求学生成绩信息系统的用户主要分为两大类,即教师和学生。下面具体介绍各个角色的功能需求。教师:本用户在登录时输入用户名和密码就可以进入到主的界面。教师用户可以查看选课信息,以及修改密码。进入界面后看到的是详细信息,包括学生的姓名学号选课信息等。学生:此用户只可在本系统中查询自己的基本信息,成绩信息,修改密码等基本操作,不可进行数据的修改及录入。三、数据库设计与实现数据库在一个管理信息系统中占有非
7、常重要的地位,数据库结构的好坏将直接影响到应用系统的实现效果和数据操作效率以及能否保证数据的一致性、完成性和安全性。1、数据库设计根据学生成绩管理系统的功能要求,通过分析系统要涉及的相关实体以及要收集、存储和操纵的数据信息。根据系统E-R图得到以下关系模式。学生基本信息(学号,姓名,性别,出生日期,家庭住址)。课程(班级编号,学期,课程名称,学时)。成绩(学号,学期,课程名称,成绩)。为了系统的使用安全,要建立用户管理,而用户使用权限分为教师和学生两类,因此需要建立一个存储用户信息的关系。用户(姓名,密码,权限)。2、创建数据库根据关系模式,确定需要建立的数据库和表。1) “学生基本信息”表表
8、名:xs主键:xh各个列的属性见表2-1。表2-12) “课程”表表名:kc主键:kch各个列的属性见表2-2。表2-23) “学生成绩”表表名:xs_cj主键:xh,kch各个列的属性见表2-3。表2-34) “用户”表表名:users主键:userid各个列的属性见表2-4。表2-4各个表之间通过外键形成如图2.3所示的关联关系。图2.3表的关联关系四、创建应用对象完成数据库的设计和系统功能设计之后,可以开始各个功能模块的实现。在PowerBuilder中开发应用程序时,就是创建各种对象、为对象设置属性以及编写事件脚本的过程。但不是简单的顺序过程,有时需要返回为前面创建的对象补充脚本。下面
9、开始本实例在PowerBuilder中的实现。 创建新的工作空间,工作空间文件路径及名称设为“f:workspacexscj.pbw”。 创建应用对象,应用对象名设为“app_xscj”,应用库文件路径及名称设为“f:workspacexscj.pbl”,目标文件路径及名称设为“f:workspacexscj.pbt”。 为应用对象app_xscj的Open事件编写代码如下。/ Profile XSCJSQLCA.DBMS = ODBCSQLCA.AutoCommit = FalseSQLCA.DBParm = ConnectString=DSN=xscj;UID=dba;PWD=sql注意:
10、执行此应用时,首先链接数据库“xscj”,成功后打开登录窗口。五、详细设计本模块实现用户登录控制、用户自己的密码修改和用户管理,其中用户管理包括修改用户信息、添加新用户、删除用户,学生用户没有此权限。5.1 设计登陆窗口登陆窗口如图5.1所示。图5.1登陆窗口1) 创建窗口并设置属性创建登陆窗口w_login,调整其大小,在窗口上放置1个图片控件(p_1)、3个静态文本控件(st_1、st_2、st_3)、2个单选钮控件(rb_1、rb_2)2个单行编辑器控件(sle_1、sle_2)、2个命令按钮控件(cb_1、cb_2),各个控件的位置和大小参照图4.1调整。2) 编写脚本 (1)登陆按钮
11、cb_1的Clicked事件脚本如下。string is_username,is_passwordis_username=trim(sle_userid.text)is_password=trim(sle_password.text)if is_username= or is_password= thenmessagebox(提示,账号密码不能为空! )end if select password,qxinto :gs_password,:gs_adminfrom userswhere userid=:is_username;if rb_1.checked=true thenif trim(g
12、s_password)=trim(sle_password.text) and gs_admin=学生 then open(w_main) close(w_load) manue.m_-数据管理子系统.enabled=false end ifelseif rb_2.checked=true thenif trim(gs_password)=trim(sle_password.text) and gs_admin=老师 then open(w_main) close(w_load) manue.m_-数据管理子系统.enabled=true end ifend ifend if(2)退出按钮cb
13、_2的Clicked事件脚本如下。close(parent)5.2 学生功能模块由于本系统是多重身份用户共同使用,所以要分清各类用户的权限,以方便用户使用。本系统分为教师和学生两种权限,在登陆界面选择自己相应的身份后,输入用户名、密码后即可登入相应的权限界面。以学生为例登陆系统,进入如图5.2所示界面: 图5.2 学生登陆系统主窗口此时学生只可查询自己的基本信息和成绩,可以修改个人基本信息及密码,但不可随意修改成绩。只有教师才能进行对学生成绩信息的修改。5.2.1设计密码修改窗口修改密码窗口布局设计如图5.3所示。1) 创建窗口并设置属性创建密码修改窗口w_newpw,调整其大小,在窗口上放置
14、3个静态文本控件(st_1、st_2、st_3)、3个单行编辑器控件(sle_1、sle_2、sle_3)、2个命令按钮控件(cb_1、cb_2),各个控件的位置和大小参照图5.3调整。图5.3 密码修改窗口2) 编写脚本(1)保存按钮cb_1的Clicked事件脚本如下。string pwif trim(sle_1.text)is_password thenmessagebox(提示,旧密码错误!)elseif trim(sle_2.text)=trim(sle_3.text) thenpw=trim(sle_2.text)update ownerset password=:pwwhere
15、(password=:is_password) and (id=:is_username); else if sqlca.sqlcode0 then messagebox(提示,密码修改成功!) else close(parent) messagebox(提示,密码修改完成!) end if else messagebox(提示,两次新密码不同!) end ifend if(2)退出按钮cb_2的Clicked事件脚本如下。close(parent)5.2.2 成绩信息查询本窗口可以实现用户对成绩信息的查询及浏览,不同权限选择适合的身份,输入用户名和密码之后即可进入成绩信息查询界面。界面设计如
16、图5.4所示。图5.4 成绩信息查询界面(1)学生基本信息管理模块本模块实现学生基本信息的输入、修改和查询。创建数据窗口d_4,显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图4.5所示。 图5.5 学生信息基本模块进入成绩信息查询子系统后,可对学生的基本信息,选课信息,成绩进行查询。下面以学生基本信息查询为例进行详细介绍。进入查询窗口后,输入学生学号后点击查询按钮,即可查出该生地基本信息。查询窗口设计如图5.6所示。 图5.6 学生基本信息查询窗口基本信息查询窗口的查询按钮的clicked事件脚本如下:string xuehaoxuehao=trim(sle_1.te
17、xt)if xuehao= thenmessagebox(没有输入学号,请输入正确的查询条件!)elsedw_1.retrieve(xuehao)end ifsle_1.setfocus()清除按钮的clicked事件脚本如下:dw_1.reset()sle_1.text= sle_1.setfocus()(2) 学生选课信息管理模块本模块实现对学生学生所选课程的管理。用户可在此模块中查询所选课程,并对其进行增加、删除、修改等操作。创建数据窗口对象d_2, 显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图4.7所示。 图5.7 选课基本信息模块 点击学生选课查询按钮,进
18、入选课查询界面,界面如图5.8所示。 图5.8 学生选课查询选课查询窗口的查询按钮的clicked事件脚本如下:string kechengkecheng=trim(sle_1.text)if kecheng= thenmessagebox(没有输入课程号,请输入正确的查询条件!)elsedw_1.retrieve(kecheng)end ifsle_1.setfocus()清除按钮的clicked事件脚本如下:dw_1.reset()sle_1.text=sle_1.setfocus()(3) 学生成绩查询管理模块此模块可实现学生查询自己成绩的功能。通过输入学号及相应的要查询的课程号,即可查
19、出待查课程成绩。创建数据窗口对象d_3_0, 显示风格为“Grid”,数据源类型为“SQL Select”,其布局如图5.9所示。图5.9 成绩查询基本模块点击学生成绩查询按钮,进入成绩查询界面后,界面布局如图5.10所示。图5.10 学生成绩查询学生成绩查询的查询按钮的clicked事件脚本如下:dw_1.settransobject(sqlca)string xh,kcxh=trim(sle_1.text)kc=trim(sle_2.text)if xh= and kc= thenmessagebox(非法的条件输入,请输入正确的查询条件!)else/dw_1.retrieve(xh,kc
20、)dw_1.retrieve(kc,xh)end ifsle_1.setfocus()清除按钮的clicked事件脚本如下:dw_1.reset()sle_1.text=sle_2.text=sle_1.setfocus()5.3 教师功能模块教师也能使用与学生相同的查询功能,但是与学生不同的是,教师可以对所教课程的成绩进行录入与修改。下面对教师功能模块进行详细说明。5.3.1 学生信息管理此模块实现对学生基本信息的添加、删除、修改以及显示。学生不可使用此功能。界面布局显示如图5.11所示。 图5.11 学生信息管理添加按钮的clicked事件脚本如下:long rowrow=dw_1.ins
21、ertrow(0)dw_1.setrow(row)dw_1.scrolltorow(row)dw_1.setfocus()更新按钮的clicked事件脚本如下:dw_1.update()dw_1.reset()删除按钮的clicked事件脚本如下:dw_1.deleterow(dw_1.getrow()插入按钮的clicked事件脚本如下:long rowrow=dw_1.insertrow(dw_1.getrow()dw_1.setrow(row)dw_1.scrolltorow(row)dw_1.setfocus()显示按钮的clicked事件脚本如下:dw_1.retrieve()5.3
22、.2 课程信息管理此模块主要实现教师对课程的添加、删除、修改以及显示。界面布局设计如图5.12所示。 图5.12 课程信息管理5.3.3 学生成绩信息管理此模块实现教师对学生成绩的添加、删除、修改。运行后的界面布局设计如图5.13所示。 图5.13 学生成绩信息管理确定按钮的clicked事件脚本如下:string str1,str2integer chenjinteger xuefstr1=sle_1.textstr2=sle_2.textchenj=integer(sle_3.text)xuef=integer(sle_4.text)insert into xs_cj values(:st
23、r1,:str2,:chenj,:xuef) using sqlca;清除按钮的clicked事件脚本如下:sle_1.text=sle_2.text=sle_3.text=sle_4.text=dw_1.reset()返回按钮的clicked事件脚本如下:open(w_data)close(w_stuupdata)显示记录按钮的clicked事件脚本如下:dw_1.retrieve()删除记录按钮的clicked事件脚本如下:dw_1.deleterow(dw_1.getrow()5.4 菜单选项的设计与实现菜单结构如图5.14所示。菜单对象名为“manue”,常用的菜单项设置了快捷键,最常
24、用的菜单项在工具条上建立了按钮。菜单项属性的具体设置不再赘述。下面编写各个菜单项的脚本。对于这些代码行,在对应的窗口没有建立之前先注释掉,在对应的窗口建立后再去掉其注释符。(1)窗口选单管理选中窗口管理选单中的退出当前窗口选单项,右击鼠标,打开脚本编辑画板,输入如下脚本:Close(parentwindow)(2)查询子系统选单选中查询子系统选单中的学生信息查询选单项,右击鼠标,打开脚本编辑画板,输入如下脚本:open(w_stu)选中查询子系统选单中的学生选课查询选项单,右击鼠标,打开脚本编辑画板,输入如下脚本:Open(w_select)选中查询子系统选单中的成绩查询选单项,右击鼠标,打开
25、脚本编辑画板,输入如下脚本: Open(w_achievement)选中查询子系统中的自定义查询选单项,右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_custom)(3)数据管理子系统选单选中数据管理子系统选单中的学生信息管理选单项,右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_stuupdata)选中数据管理子系统选单中的课程信息管理选单项,右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_course)选中数据管理总系统选单中的学生成绩信息管理选项单,右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_achiveupdata)图5.14 菜单结构(4
26、)帮助子系统选单选中帮助子系统选单中的使用帮助选单项,右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_h)选中帮助子系统选单中的小工具下属的备忘录选单项,选右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_note)选中帮助子系统选单中的小工具下属的日历选单项,右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_day)(5)其他选单选中其他选单中的统计分析选单项,右击鼠标,打开脚本编辑画板,输入如下脚本: Open(w_statistic)六、使用说明(1)学生数据管理系统使用说明把系统文件拷贝到相应目录下后打开project1.pbw单击数据库图标。为XSCJ.db
27、数据库创建名为project1的ODBC数据源。并配置名为XSCJ的dbprofile。 学生登录可以以学号aaa密码aaa为例。学生学号从081101到081241。初始密码为学生学号。 教师登录以sss密码sss为例。初始化密码为教师编号。系统提供的功能有:“学生数据录入”、“课程安排录入”、“学生情况的浏览”以及“学生数据的查询”等。按学生家庭的地址查询为模糊查询方式,只要输入地址中的部分信息,就可以将满足要求的所有记录检索出来。在窗口中,按F1键,可以得到关于当前窗口的有关内容的帮助信息。在文件help_subjinput.txt的后面,粘贴上前两个文件的内容。(2)学生数据录入说明学
28、号的编制规则:学号为6位数字,最高2位为入学年,中间2位为所在系,最低2位为序号。学号必须唯一,不能重复。日期的输入格式:年年/月月/日日,或者年年/月月/日日。备注中除了输入个人学习经历外,还应记录取得的成绩、发表的论文数量等。输入完一个学生的情况后,单击“确定”按钮,保存输入结果。单击“退出”按钮,返回主窗口。七、优缺点分析学生成绩管理系统实现了大部分系统中实现的学生对自己成绩的检索,对自己基本信息的查询及修改,查询修改自己的选课信息,教师登陆录入成绩,修改成绩等。系统简单易懂,条理清晰,操作方便。系统还有很多不完善之处。系统功能还不够全面,有待于完善;数据库设计也存在着不足,没有设置管理
29、员权限;有些窗口的设计也不太合理,布局不是很美观。八、总 结在本次课程设计中,我更加的了Power Builde,更加的灵活的操作使用Power Builde,也深刻的体会到它给我们带来的方便。数据库一般由若干数据表组成,数据库中的数据就存放在数据表中。数据表一般由若干个记录组成,记录由若干个字段构成,字段主要是用来存放数据表中相同类型的一系列值。在数据库管理与操作中,表与表之间都会有各种关联:可能某一个表会用到其他表的字段或内容,或者在查询过程中某一个字段进行排序,所以必须建立主关键字与外关键字,主关键字用来唯一标识一条记录的一个或多个列的组合,用以确保数据库的实体完整性;外关键字是用于与另
30、一个表进行联系的列,用来确保数据库的参照完整性。菜单是在窗口中与用户直接接触的一个重要对象,菜单必须依附于窗口,除了子窗口和响应窗口外,其他类型的窗口都可以带有菜单。窗口是应用程序的图形用户界面的基本元素,其他的应用程序组件往往是通过窗口联系起来的,所以对于一个应用程序来说,创建窗口对象是极其基本的一步工作。继承是面向对象编程的一个重要概念,它是自动共享各个类、子类中的方法和数据的有效机制。作为过程式系统所没有的一个有力机制,继承使得我们可以通过从父类中继承公共方法和数据,进而通过添加新的数据和方法定义一个新的类。在此程序设计中,设计了一些窗口和数据窗口,还有一个菜单对象。数据窗口的显示风格有
31、Grid、Freeform、Gross Tab和N_Up;数据源类型有Quick Select,SQL Select等。在生成数据窗口是,还定义了String型检索参数变量来分别表示其中的内容,在数据窗口中还改变了一些控件的编辑风格和属性并在其中添加了计算域控件和文本控件。在设计窗口时,用到了窗口继承的方法,那样既方便又快捷,还节约了工作量。课程设计加强了我们的动手能力,使我更加喜欢Power Builde。九、参考文献1. 郑阿奇。PowerBuilder实用教程(第3版)。北京:电子工业出版社,20112. 孟祥双,李宏李。PowerBuilder程序设计教程。 北京:中国电力出版社,20
32、043. 华栓平,PowerBuilder程序设计。 北京:清华大学出版社,20044. 陈刚,PowerBuilder案例开发程序设计教程。 北京:中国水利水电出版社,20035. 费雅洁,王健。PowerBuilder程序设计。 北京:高等教育出版社,20046. 郭兴成。PowerBuilder9。0实用教程。 北京:科学出版社,2003教 师 评 阅观测点比重(%)完成情况系统1. 系统分析是否充分102. 系统设计是否合理103. 系统功能是否完整304. 系统使用是否方便105. 系统制作是否规范10总结报告6. 内容是否完整57. 排版是否规范58. 结构是否清晰、合理109. 表述是否清楚10合计成绩