学生成绩管理系统PB课程设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

学生成绩管理系统程序分析一系统分析与设计1)系统功能分析系统功能分析阶段的任务就是确定该系统所要解决的问题及其具体要求。学生成绩管理系统需要完成的主要功能如下:(1)班级信息的输入和存储,包括班级编号、班级名称、所属专业、入学时间和学制等。(2)对已经输入的班级信息的修改、查询。(3)学生基本信息的输入和存储、包括学号、姓名、性别、出生日期、班级等。(4)学生基本信息的修改和查询。(5)每学期初各班所开设课程的输入,包括课程名、学期、学时等。(6)各班所开设课程信息的修改和查询。(7)学期末输入每个学生的考试成绩。(8)学生成绩的修改。(9)查询某个学生。(10)查询并打印某班某学期所有学生的各科成绩。(11)查询并打印某班某学期某课成绩。(12)系统具有用户和密码的管理。2)系统功能模块分析通过上面各项功能的分析、分类、综合,按照模块化程序设计的要求,得到它的模块结构:(1)系统管理它包括密码修改,用户管理,登录控制。(2)班级信息管理它包括班级信息修改,班级信息查询,班级信息输入。(2)学生基本信息管理包括学生基本信息查询,学生基本信息修改,学生基本信息输入。(3)课程信息管理包括课程信息查询修改,课程信息输入。(4)成绩信息管理包括成绩查询,成绩修改,成绩输入。二、数据库设计和实现1)创建数据库在PowerBuilder开发环境中打开数据库画板,使用[ODBODBC]接口建立AdaptiveServerAnywhere8.0(ASA8.0)的数据库,然后建立5个表和1个视图。分别为“班级”表、“学生基本信息”表、“课程”表、“成绩”表、“用户”表。各表之间的关系如下图1所示:图1各表的关联关系2)创建应用对象(1)创建新的工作空间。(2)创建应用对象,应用对象名设为“app_xscj”。(3)打开新的对象画板.为应用对象app_xscj的Open事件编写代码如下://ProfileliudiSQLCA.DBMS=ODBCSQLCA.AutoCommit=FalseSQLCA.DBParm=ConnectString='DSN=liudi;UID=;PWD='CONNECT;ifSQLCA.sqlcode0thenmessagebox(提示,数据库连接失败!)elseopen(w_login)endif执行此应用时,首先链接数据库“xscj”,成功后打开登录窗口。三、设计系统管理模块1)设计登录窗口登录窗口如图2所示:图2登录窗口为登录窗口编写脚本。(1)定义全局变量stringgs_username,gs_password,gs_admin分别存储登录用户的姓名、密码和权限。(2)定义实例变量intli_n存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。(3)登录窗口w_login的open事件脚本如下li_n=3初始化变量li_n,限制出错次数为3次。(4)[确定]按钮cb_1的Clicked事件脚本如下。stringls_username,ls_passwordls_username=trim(sle_1.text)ls_password=trim(sle_2.text)ifls_username=orls_password=thenmessagebox(提示,用户名和密码不能为空)elseSELECTusers.name,users.password,users.adminINTO:gs_username,:gs_password,:gs_adminFROMusersWHERE(users.name=:ls_username)AND(users.password=:ls_password);ifsqlca.sqlcode=0thenopen(w_main)close(w_login)elseli_n=li_n-1ifli_n0thenmessagebox(提示,用户名或密码错误)elsemessagebox(提示,错误超过3次,自动退出)haltendifendifendif(5)[放弃]按钮cb_2的Clicked事件脚本如下.halt2)设计密码修改窗口创建窗口并设置属性创建密码修改窗口w_mmxg,调整其大小,在窗口上放置3个静态文本控件(st_1,st_2,st_3)、2个命令按钮控件(cb_1,cb_2),设计完后如图3所示:图3密码修改窗口为密码窗口编写脚本(1)[确定]按钮cb_1的Clicked事件脚本如下。stringls_passwordiftrim(sle_1.text)gs_passwordthenmessagebox(提示,旧密码错误)elseiftrim(sle_2.text)=(sle_3.text)thenls_password=trim(sle_2.text)UPDATEusersSETpassword=:ls_passwordWHERE(users.name=:gs_username)AND(users.password=:ls_password);ifsqlca.sqlcode0thenmessagebox(提示,密码修改不成功)elseclose(parent)messagebox(提示,密码修改完成)endifelsemessagebox(提示,两次密码不相同)endifendif(2)[取消]按钮cb_2的Clicked事件脚本如下。Close(parent)2)设计用户管理的数据窗口和窗口设计数据窗口创建数据窗口“d_yhgl”,显示风格为“Grid”,数据源类型为“QuickSelect”,布局如图4所示。图4数据窗口d_yhgl数据窗口d_yhgl生成的SQLSelect语句为:SELECTusers.name,users.password,users.adminFROMusers创建窗口并设置属性创建用户管理窗口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事件脚本如下。integerrtdw_1.accepttext()ifdw_1.modifiedcount()=0anddw_1.deletedcount()=0thenreturn0elsert=messagebox(提示,添加修改内容未保存,确实退出吗?,Question!,YesNo!)ifrt=1thenreturn0endifendifreturn1(3)数据窗口控件dw_1的Itemechanged事件脚本如下。cb_3.enabled=true//激活“保存”按钮(4)[添加]按钮控件cb_1的Clicked事件脚本如下。integerrowrow=dw_1.insertrow(0)dw_1.scrolltorow(row)(5)[删除]按钮控件cb_2的Clicked事件脚本如下。dw_1.deleterow(0)cb_3.enabled=true(6)[保存]按钮控件cb_3的Clicked事件脚本如下。ifdw_1.update(true,false)=1thendw_1.resetupdate()commit;cb_3.enabled=falseelserollback;messagebox(提示,保存数据失败!)endif(7)[退出]按钮控件cb_4的Clicked事件脚本如下。close(parent)四、设计主窗口和菜单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:\xscj\help\xscjhelp.chm,index!)2)设计窗口本次学生成绩管理系统的主窗口界面如图7所示:图7主窗口界面创建窗口对象w_main,其Open事件脚本如下。ifgs_admin='n'thenm_main.m_系统.m_用户管理.enabled=falseendif其功能是非管理员用户进入系统时关闭【用户管理】菜单项。五、设计班级管理模块1)设计访问班级信息的数据窗口设计输入班级信息的数据窗口创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“QuickSelect”,其布局如图8所示。图8数据窗口d_banji_shuru数据窗口d_banji_shuru生成的SQLSelect语句为:SELECTbanji.bjbh,banji.b

1 / 27
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功