PB90学生管理系统课程设计.docx

上传人:b****6 文档编号:5995576 上传时间:2023-01-02 格式:DOCX 页数:40 大小:479.19KB
下载 相关 举报
PB90学生管理系统课程设计.docx_第1页
第1页 / 共40页
PB90学生管理系统课程设计.docx_第2页
第2页 / 共40页
PB90学生管理系统课程设计.docx_第3页
第3页 / 共40页
PB90学生管理系统课程设计.docx_第4页
第4页 / 共40页
PB90学生管理系统课程设计.docx_第5页
第5页 / 共40页
点击查看更多>>
下载资源
资源描述

PB90学生管理系统课程设计.docx

《PB90学生管理系统课程设计.docx》由会员分享,可在线阅读,更多相关《PB90学生管理系统课程设计.docx(40页珍藏版)》请在冰豆网上搜索。

PB90学生管理系统课程设计.docx

PB90学生管理系统课程设计

学生成绩管理系统

1.1系统分析与设计

在任何高等学校,学生的成绩管理都是学校教务管理的重要环节之一。

随着学校学生人数的增加,学生成绩管理的任务更加繁重,必须借助现代化的管理工具和手段提高学生成绩管理效率。

学生成绩管理系统广泛适用于高校教务管理部门的学生成绩管理,其作用和功能也是学生比较熟悉和容易理解的。

一个应用系统的开发过程包括分析、设计、实现、调试和发布等阶段。

以下是分析说明。

1.2系统功能分析

系统功能分析阶段的任务就是确定该系统要解决的问题及其具体要求。

需要通过与用户的交流和沟通明确对系统的功能要求,最终列出系统可以实现的功能由用户确认。

(1)班级信息的输入和储存,包括班级编号、班级名称、所属专业、入校时间和学制等。

(2)对已经输入的班级信息和修改、查询。

(3)学生基本信息的输入和储存,包括学号、姓名、性别、出生日期、班级等。

(4)学生基本信息的修改和查询。

(5)每学期初各班所开设课程的输入,包括课程名、学期、学时等。

(6)各班所开设课程信息的修改和查询。

(7)学期末输入每个学生的考试成绩。

(8)学生成绩的修改。

(9)查询每个学生某学期的各科成绩。

(10)查询并打印某班某学期所有学生的各科成绩。

(11)查询并打印某班某学期所有学生的各科成绩。

(12)系统具有用户和密码的管理。

1.3系统功能模块设计

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

图1

2数据库设计与实现

数据库在一个管理信息系统中占有非常重要的地位,数据库结构的好坏将直接影响到应用系统操作效率已经能否保证数据的一致性、完成性和安全性。

2.1数据库设计

根据学生成绩管理系统的功能要求,通过分析系统要设计的相关实体一集要收集、存储和操纵数据信息,得到如图2所示的系统E-R图。

根据系统E-R图得到以下关系模式。

·班级(班级编号,班级名称,所属专业,学制,入学时间,人数)

·学生基本信息(学号,姓名,性别,出生日期,家庭住址,班级编号)

·课程(班级编号,学期,课程名称,学时,教师)

·成绩(学号,课程名称,成绩)

为了系统的使用安全,要建立用户管理,而使用权限分为管理员和一般用户两类,因此需要建立一个存储用户信息的关系。

·用户(姓名,密码,权限)

2.2创建数据库

根据关系模式,确定要建立的数据库和表。

首先,在D盘根目录下建立本实例的工作文件夹“xscj”再在”d:

\xscj”文件夹下建立文件夹”data”,用于存储数据文件。

在PowerBuilder开发环境中打开数据库面板,实用[ODBODBC]接口建立AdaptiveServerAnywhere8.0(ASA8.0)的数据库D:

\xscj\data\xscj.db,然后依次建立以下5个表和1个视图。

CTRL+N新建

SHIFT+F7打开数据面板选择ODBODBC----Utilities---CreateASADatabase

选择table----newtable设置参数如图其他表设置如图

1.“班级”表

表名:

banji

主键:

bjbh

2.“学生基本信息”表

表名:

jiben

主键:

xh

3.“课程”表

表名:

bjkc

主键:

(bjbh,xq,kcmc)

4.“成绩”表

表名:

xscj

主键:

(xh,xqkcmc)

5.“用户”表

表名:

users

主键:

xm

依次建立好主键和外键如图所示

6.视图

为了访问数据库方便,还建立一个视图“XSBJ”,该视图由学生基本信息表和班级表连接而成,对应的SQL语句如下:

CREATEVIEWxsbj(xh,xm,xb,csrq,bjbh,bjmc,zymc)ASselectjiben.xh,jiben.xm,jiben.xb,jiben.csrq,banji.bjbh,banji.bjmc,banji.zymcfromDBA.banji,DBA.jibenwhere(jiben.bjbh=banji.bjbh)

 

然后保存就可以了。

3创建应用对象

完成数据库的设计和系统功能设计之后,可以开始各个功能模块的实现。

在PowerBuilder中开发应用程序是时,就是创建各种对象、为对象设置属性以及编写事件脚本的过程。

但不是简单的顺序过程,有时需要返回为前面创建的对象补充脚本。

(1)创建新的工作空间,工作空间文件路径及名称设为“d:

\xscj\xscj.pbw”

(2)创建应用对象,应用对象名设置为“app_xscj”,应用库文件路径及名称设为“d:

\xscj\pbl”,目标文件路径及名称设为“d:

\xscj\xscj.pbt”

(3)打开应用对象面板,应用对象app_xscj的Icon属性设置为“d:

\xscj\BOOK.ISO”。

BOOKS.ICO是预先准备的图标文件。

(4)为应用对象app_xscj的open事件编写代码如下。

//ProfileXscj

SQLCA.DBMS="ODBC"

SQLCA.AutoCommit=False

SQLCA.DBParm="Connectstring='DSN=xscj'"

CONNECT;

ifSQLCA.sqlcode<>0then

messagebox("提示","数据库连接失败!

")

else

open(w_logion)

endif

执行此应用时,首先链接数据库“xscj”,成功后打开登陆窗口。

4创建应用对象

本模块实现用户登陆控制、用户自己的密码修改和用户管理,其中用户管理包括修改用户信息,添加新用户,删除用户,只有管理员级用户有此权限。

4.1设计管理登陆窗口

登陆窗口如图所示

1.创建窗口并设置属性

创建登陆窗口w_login,调整其大小,在窗口上放置1个图片控件,3个静态文本控件,1个成组框控件,2个单行编辑器控件,2个命令控制按钮控件,各个控件的位置和大小如图所示。

对象

属性

取值

W_login

Title

登陆

Windowtype

Response!

Sle_2

Password

true

2.编写脚本

(1)定义全局变量

stringgs_username,gs_password,gs_admin

(2)定义实例变量

intli_n

存储登录时用户输入密码错误的尝试次数,控制在最多3次机会。

必须围实例变量,不能是局部变量。

(3)登陆窗口w_logind的OPEN事件脚本如下:

intli_n=3

初始化变量li_n,限制出错次数为3次。

(4)【确定】按钮cb_1的Clicked事件脚本如下。

stringls_username,ls_password

ls_username=trim(sle_1.text)

ls_password=trim(sle_2.text)

ifls_username=""orls_password=""then

messagebox("提示","用户名和密码不能为空")

else

SELECT"users"."name",

"users"."password",

"users"."admin"

INTO:

gs_username,

:

gs_password,

:

gs_admin

FROM"users"

WHERE("users"."name"=:

ls_username)AND

("users"."password"=:

ls_password);

 

ifSQLCA.sqlcode=0then

open(w_main)

close(w_logion)

else

li_n=li_n-1

ifli_n<>0then

messagebox("提示","用户名密码错误")

else

messagebox("提示","错误超过3次,自动退出")

halt

endif

endif

endif

(5)【放弃】按钮cb_2的clicked事件脚本如下:

Halt

4.2设计密码修改窗口

密码修改窗口如图所示:

1.创建窗口并设置属性

创建密码修改窗口w_mmxg,调整其大小,在窗口上放置3个静态文本控件(st_1,st_2,st_2)3个单行编辑器控件(sle_1,sle_2,sle_3)2个命令按钮控件(cb_1,cb_2)各个控件的位置和大小参照图调整。

W_mmxg

Title

修改密码

Windowstype

Response!

Sle_2

Password

True

Sle_3

Password

True

2.【确定】按钮cb_1的Clicked事件脚本如下:

stringls_password

iftrim(sle_1.text)=trim(sle_3.text)then

messagebox("提示","旧密码错误")

else

iftrim(sle_2.text)=trim(sle_3.text)then

ls_password=trim(sle_2.text)

UPDATE"users"

SET"password"=:

ls_password

WHERE("users"."name"=:

gs_username)AND

("users"."password"=:

gs_password);

ifsqlca.sqlcode<>0then

messagebox("提示","密码修改不成功")

else

close(parent)

messagebox("提示","密码修改成功")

endif

else

messagebox("提示","两次新密码不相同")

endif

endif

(2)【取消】按钮cb_2的Clicked事件脚本如下

Close(parent)

4.3设计用户管理的数据窗口和窗口

用户管理窗口如图所示:

1.设计数据窗口

创建数据窗口“d_yhgl”,显示风格围“grid”,数据源类型围”QuickSelect”,发布如图所示。

其中控件“admin”的编辑风格改为“DropDOWNListBox”,码表(CodeTable)如图。

数据窗口d_yhgl生成的SQLSelect语句为:

SELECT"users"."name",

"users"."password",

"users"."admin"

FROM"users"

2.创建窗口并设置属性

创建用户管理窗口w_yhgl,调整其大小,在窗口上位置1个数据窗口控件(dw_1)、4个命令按钮控件(cb_1,cb_2,cb_3,cb_4)各个控件的位置和大小参照如图调整。

Cb_3

Text

保存

Enabled

true

3.编写脚本

(1)用户管理窗口w_yhgl的open事件脚本如下。

dw_1.settransobject(sqlca)

dw_1.retrieve()

(2)用户管理窗口w_yhgl的closequery事件脚本如下:

integerrt

dw_1.accepttext()

ifdw_1.modifiedcount()=0anddw_1.deletedcount()=0then

return0

else

rt=messagebox("提示","添加修改内容未保存,确定要退出吗?

",Question!

YesNo!

ifrt=1then

return0

endif

endif

return1

(3)数据窗口控件dw_1的Itemchanged事件脚本如下

cb_3.enabled=true

(4)【添加】按钮控制cb_1的Clicked事件脚本如下:

integerrow

row=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)=1then

dw_1.resetupdate()

commit;

cb_3.enabled=false

else

rollback;

messagebox("错误","保存数据失败!

")

endif

(7)【退出】按钮控件cb_4的Clicked

Close(patent)

 

5设计主窗口和菜单

主窗口和菜单是系统工具的主界面。

5.1菜单结构如图所示。

菜单对象名为“m_main”,菜单栏中的菜单项设置了访问键,常用的菜单项设置了快捷键,最常用的菜单项在工具条上建立了按钮。

(1)【系统】菜单下【密码修改】菜单项的Clicked事件脚本如下

Open(w_mmxg)

(2)【系统】菜单下【用户管理】菜单项的Clicked事件脚本如下:

Open(w_yhgl)

(3)【系统】菜单下【退出系统】菜单项的Clicked事件脚本如下:

Close(parentwindow)

(4)【班级管理】菜单【录入班级信息】菜单项Clicked事件脚本如下:

Opensheet(w_banji_shuru,w_main,6,Original!

其功能是在主窗口(w_main)中,以输入班级信息窗口w_banji_shuru的原来大小(Original!

参数指定)打开,并在第6个菜单(即【窗口】菜单)下列出该窗口的名称。

(5)【班级管理】菜单需爱修改【修改班级信息】菜单项的Clicked事件脚本如下:

opensheet(w_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_shuruxiugai,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_grcx,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)

(18)【帮助】菜单下【联机帮助】菜单项的Clicked事件脚本如下:

showhelp("xscjhelp.chm",index!

5.2设计主窗口

设计窗口如图所示

创建窗口对象W_main,

W_main

Title

学生成绩管理系统

Windowtype

Mdihelp!

Menuname

M_main

Windowstate

maximized

 

窗口对象w_main的Open事件脚本如下

ifgs_admin='n'then

m_main.m_系统s.m_用户管理.enabled=false

endif

其功能是非管理员用户计入系统时关闭【用户管理】菜单项

6设计班级管理模块

本模块实现班级信息的输入、修改和查询。

6.1设计访问班级信息的数据窗口

1.设计输入班级信息的数据窗口

创建数据窗口d_banji_shuru,显示风格为“Freeform”,数据源类型为“QuickSelect”如图所示。

数据窗口d_banji_shuru生成的SQLSelect语句为:

SELECT"banji"."bjbh",

"banji"."bjmc",

"banji"."zymc",

"banji"."xz",

"banji"."rxsj",

"banji"."rs"

FROM"banji"

2.设计修改班级信息的数据窗口

创建数据窗口d_banji_xiugai,显示风格为“Grid”数据源类型为“quickselect”

数据窗口d_banjid_banji_xiugai生成的SQLSelect语句为:

SELECT"banji"."bjbh",

"banji"."bjmc",

"banji"."zymc",

"banji"."xz",

"banji"."rxsj",

"banji"."rs"

FROM"banji"

ORDERBY"banji"."bjbh"ASC

6.2设计访问班级信息的窗口

首先设计两个通用的输入窗口和修改窗口作为父对象,实现一般输入和修改的功能,窗口中的数据窗口控件不设定具体的数据窗口对象,在继承的窗口对象中再设定。

通过继承可以简化程序设计,实现代码重用。

1.设计输入窗口

创建窗口对象w_shuru,调整其大小,放置1个数据窗口控件(dw_1)、8个命令按钮控件(cb_1···cb_8)窗口布局如图所示。

W_shuru

Title

录入

Windowtype

Main!

Resizable

False

Center

False

Maxbox

False

Minbox

False

设置完属性后开始编写脚本代码,其中窗口w_shuru的open事件Closequery事件、命令按钮(【添加】、【删除】、【保存】和【退出】)的Clicked事同前面的窗口W_yhgl的相应事件脚本。

(1)【|<<】按钮的clicked事件脚本如下:

dw_1.scrolltorow

(1)

(2)【<】按钮的clicked事件脚本如下:

dw_1.scrollpriorrow()

(3)【>】按钮的clicked事件脚本如下:

dw_1.scrollnextrow()

(4)【>>|】按钮的clicked事件脚本如下:

dw_1.scrolltorow(dw_1.rowcount())

2.设计修改窗口

创建窗口对象w_xiugai,调整大小,放置1个数据窗口控件(dw_1),4个命令控件(cb_1···cb_4),窗口布局如图所示。

W_xiugai

Title

修改

Windowtype

Main!

Resizable

False

Center

False

Maxbox

False

Minbox

False

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属性改为“修改班级信息”,此窗口设计便完成了。

5.设计浏览班级信息窗口

创建窗口对象w_banji_liulan,调整大小,放置1个数据窗口控件dw_1,调整窗口布局如图所示。

W_banji_liulan

Title

浏览班级信息

Windowtype

Main!

Reizable

False

Center

False

Maxbox

False

Minbox

False

Dw_1

Vscrollbar

Ture

Dataobject

D_banji_xiugai

Enabled

False

 

窗口的open事件脚本如下:

dw_1.settransobject(sqlca)

dw_1.retrieve()

7设计学生基本信息管理模块

本模块实现学生基本信息的输入,修改和查询。

7.1设计访问学生基本信息的数据窗口

1.设计输入学生基本信息的数据窗口

创建数据窗口d_jiben_shuru,显示风格为“freeform”,数据源类型为“QuickSelect”,布局如图所示

其中,列控件“xb”的编辑风格为“radiobuttons”,,列表控件“bjbh”的编辑风格改为“dropdowndw”,其datawindow属性设置为“d_banji_xiugai”,displaycolumn属性和Datacolum属性都设置为“bjbh”,widthofdropdown(%)属性设置为“300”,linesindropdown的属性设置为“6”vscrollbar属性设置为“true”。

数据窗口d_jiben_shuru生成的sqlselect语句为:

SELECT"jiben"."xh",

"jiben"."xm",

"jiben"."xb",

"jiben"."csrq",

"jiben"."jtzz",

"jiben"."bjbh"

FROM"jiben"

2.设计修改学生基本信息的数据窗口

创建数据窗口d_jiben_xiugai,显示风格为“grid”,数据源类型为“quickselec

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 辩护词

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1