资源描述:
《学生成绩管理系统pb课程设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、学生成绩管理系统程序分析一系统分析与设计1)系统功能分析系统功能分析阶段的任务就是确定该系统所要解决的问题及其具体要求。学生成绩管理系统需要完成的主要功能如下:(1)班级信息的输入和存储,包括班级编号、班级名称、所属专业、入学时间和学制等。(2)对已经输入的班级信息的修改、查询。(3)学生基本信息的输入和存储、包括学号、姓名、性别、出生日期、班级等。(4)学生基本信息的修改和查询。(5)每学期初各班所开设课程的输入,包括课程名、学期、学时等。(6)各班所开设课程信息的修改和查询。(7)学期末输入每个学生的
2、考试成绩。(8)学生成绩的修改。(9)查询某个学生。(10)查询并打印某班某学期所有学生的各科成绩。(11)查询并打印某班某学期某课成绩。(12)系统具有用户和密码的管理。2)系统功能模块分析通过上面各项功能的分析、分类、综合,按照模块化程序设计的要求,得到它的模块结构:(1)系统管理它包括密码修改,用户管理,登录控制。(2)班级信息管理它包括班级信息修改,班级信息查询,班级信息输入。(2)学生基本信息管理包括学生基本信息查询,学生基本信息修改,学生基本信息输入。(3)课程信息管理包括课程信息查询修改,课
3、程信息输入。(4)成绩信息管理包括成绩查询,成绩修改,成绩输入。二、数据库设计和实现1)创建数据库在PowerBuilder开发环境中打开数据库画板,使用[ODBODBC]接口建立AdaptiveServerAnywhere8.0(ASA8.0)的数据库,然后建立5个表和1个视图。分别为“班级”表、“学生基本信息”表、“课程”表、“成绩”表、“用户”表。各表之间的关系如下图1所示:图1各表的关联关系2)创建应用对象(1)创建新的工作空间。(2)创建应用对象,应用对象名设为“app_xscj”。(3)打开新
4、的对象画板.为应用对象app_xscj的Open事件编写代码如下://ProfileliudiSQLCA.DBMS="ODBC"SQLCA.AutoCommit=FalseSQLCA.DBParm="ConnectString='DSN=liudi;UID=;PWD='"CONNECT;ifSQLCA.sqlcode<>0thenmessagebox("提示","数据库连接失败!")elseopen(w_login)endif执行此应用时,首先链接数据库“xscj”,成功后打开登录窗口。三、设计系统管理模
5、块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
6、_username=trim(sle_1.text)ls_password=trim(sle_2.text)ifls_username=""orls_password=""thenmessagebox("提示","用户名和密码不能为空")elseSELECT"users"."name","users"."password","users"."admin"INTO:gs_username,:gs_password,:gs_adminFROM"users"WHERE("users"."name"=:ls_us
7、ername)AND("users"."password"=:ls_password);ifsqlca.sqlcode=0thenopen(w_main)close(w_login)elseli_n=li_n-1ifli_n<>0thenmessagebox("提示","用户名或密码错误")elsemessagebox("提示","错误超过3次,自动退出")haltendifendifendif(5)[放弃]按钮cb_2的Clicked事件脚本如下.halt2)设计密码修改窗口创建窗口并设置属性创建密码修
8、改窗口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.