当前位置:首页 >> 信息与通信 >>

用c#实现学生成绩管理系统


学生成绩管理系统
摘要:学生成绩管理工作是学校学生管理工作的重要组成部分,随着学校规模
的扩大、学生人数的增加,效率低下、容易出错的手工方式越来越不适应实际管 理工作的需要, 按照软件工程原理和数据库技术开发学生成绩管理系统已成为学 生管理部门的迫切需要。本系统采用 C/S 体系结构,客户端负责提供表达逻辑、 显示用户界面信息、访问数据库服务器,采用 Powe

rBuilder9 作为开发工具;服 务器端则用于提供数据服务,采用 SQL Server2000 作为数据库管理系统。

关键词:学生成绩管理 系统 设计 Student performance management system
Abstract: Student achievement management is an important part of the school management, along with the expansion of school size and the increase in the number of students, inefficient, error-prone manual methods become increasingly unsuited to the needs of the actual management, software engineering principles and in accordance with student performance database management system technology development has become an urgent need for management students. The system uses C / S architecture, the client is responsible for the expression of logic, display user interface information, access the database server, using PowerBuilder9 as a development tool; server side is used to provide data services, using SQL Server2000 as the database management system. Key words: Student Score system design 目录 学生成绩管理系统 系统分析与设计 ...................................... 1 学生成绩管理系统分析与设计 ...................................... 2 .................................................. 1.1 系统概述 .................................................. 2 ......................................... 1.1.1 系统需求分析 ......................................... 2 ............................................. 1.1.2 现状分析 ............................................. 2 ......................................... 1.1.3 系统开发方法 ......................................... 3 ............................................. 1.1.4 开发计划 ............................................. 3 2 系统设计 ........................................................ 3 ........................................................ ............................................... 2.1 系统总体设计 ............................................... 3 ................................................. 2.2 数据库设计 ................................................. 4 数据库概念结构设计 ................................... 2.2.1 数据库概念结构设计 ................................... 4 ................................... 2.2.2 数据库逻辑结构设计 ................................... 5 ........................................................ 3 结构设计 ........................................................ 6 ............................................... 3.1 模块结构设计 ............................................... 6 ................................................... 3.2 代码设计................................................... 6 ................................................. 3.3 数据库设计 ................................................. 7 ........................................... 3.4 输入输出设计 323 ........................................... 8 3.4.1 输出设计 .............................................. 8 .............................................. ............................................. 3.4.2 输入设计 ............................................. 9 ............................................... 3.5 模块测试计划 ............................................... 9 ........................................................ 4 系统实施 ........................................................ 9
1

...................................... 4.1 创建应用库及应用对象 ...................................... 10 创建全局变量(PB 4.2 创建全局变量(PB 中对任何代码的编写都必须没有语法错误才能切换到 其模块) ...................................................... 其模块) ...................................................... 11 .................................................. 4.3 菜单设计 .................................................. 11 4.4 创建窗口并在窗口中放置所需控件 ............................ 12 .............................................. 4.5 创建数据窗口 .............................................. 19

学生成绩管理系统 系统分析与设计 1 学生成绩管理系统分析与设计

1.1

系统概述 系统概述

1.1.1 系统需求分析

学生成绩管理工作是学校学生管理工作的重要组成部分, 现在相当一部分学 校的学生成绩管理工作仍沿用手工方式。 随着学校规模的扩大、 学生人数的增加, 效率低下、容易出错的手工方式越来越不适应实际管理工作的需要,按照软件工 程原理和数据库技术开发学生成绩管理系统已成为学生管理部门的迫切需要。 学生成绩管理系统主要包括以下功能: (1) 完成数据的录入和修改,并提交数据库保存。其中的数据包括:学生信息、 课程设置、学生成绩以及操作员信息等; (2) 实现信息查询。主要包括:学生信息查询、课程信息查询和成绩查询等; (3) 具备一定的安全性管理功能。包括操作员的权限设置、密码设置、重新登录 和修改口令等功能。

1.1.2 现状分析

目前在中小学中,学生的成绩管理主要以班级为单位,由各班班主任以表格 的形式直接输入电脑中,故就整个学校而言对于学生成绩的管理较为分散,涉及 的人员较多且不利于相关的统计工作,学生的成绩信息也得不到长久的保存。总 体目标:实现学校对所有班级、学生的成绩信息进行系统的管理,便于操作,便 于查询。

2

具体目标: (1)管理员能够方便地对信息进行添加、编辑、删除、查询等操作。 (2)教务人员可以方便地查询所需的成绩信息,并得到相应的统计报表。 (3)简化现有系统的流程,使之更加便捷、高效。

系统开发 开发方法 1.1.3 系统开发方法

客户端采用 Visual Basic.NET,后台采用 SQL server 2000。

1.1.4 开发计划

(1) 初步调查:以询问、查询资料的形式,对学校现行的学生成绩管理方式进行 调查,确定现行方式所存在的问题以及相关需求并进行分析。

(2) 可行性分析:根据初步调查的情况,从技术上、经济上、管理上进行开发的 可能性和必要性分析。 (3) 详细调查:详细了解情况并绘制组织结构图和业务流程图。 (4) 系统的设计:根据对所调查情况的分析,进行系统的各种设计。

2 系统设计

2.1 系统总体设计 本系统采用 C/S 体系结构,客户端负责提供表达逻辑、显示用户界面信息、 访问数据库服务器,采用 PowerBuilder9 作为开发工具;服务器端则用于提供数 据服务,采用 SQL Server2000 作为数据库管理系统。 本系统按照功能划分为以下四个模块:学生管理(包括学生信息录入和学生 信息查询) 、课程管理(包括课程设置和课程查询) 、成绩管理(包括成绩录入和 成绩查询)和系统管理(包括口令更改、重新登录和操作员管理等) 。系统的功
3

能模块图如图 2-1 所示:
学生成绩管理系统

学 生 管 理 理 管 程

课 成 绩 管

系 统 管 理 理

图 2-1

系统的功能模块图

2.2 数据库设计

2.2.1 数据库概念结构设计

本系统主要有学生和课程两个实体集,一个学生可以选修若干门课程,一门 课程也可以被多个学生选修, 两个实体集之间是多对多联系, 联系上有选课成绩。 为保证系统的安全性,设置了操作员这一实体集,用来存放合法用户的编号、姓 名、密码和权限。本系统的 E-R 图如图 2-2 所示:
学号 姓名 性 生 所 系

学生

选修 n 课程

成绩

课程 码

课程名

课号



图 2-2

系统的 E-R 图

4

2.2.2 数据库逻辑结构设计 根据关系模型的转换原则,上面的 E—R 图可转换为如下所示的关系模型: Student(Sno,Sname,Sex,Sbirth,Sdept) 其中各项含义分别为:学生(学号,姓名,性别,出生日期,所在系) Course(Cno,Cname,Cpno,Credit) 其中各项含义分别为:课程(课程代码,课程名称,先行课号,学分) SC(Sno,Cno,Grade) 其中各项含义分别为:选修(学号,课程代码,成绩) Operator(Operator_id,Operator_name,Password,Permission) 其中各项含义分别为:操作员(操作员编号,操作员姓名,密码,权限) 根据上面的 E-R 图设计及关系模型的设计,得出数据表的设计,在本系统 中主要的数据表如表 2-1,2-2,2-3,2-4: 表 2-1 学生信息表 Student 的表结构 小 数 主码 列 Pk Sno Sname Sex Sbirth Sdept 名 数据类型 Char Char Char SmallDatetime Char 20 宽度 位 5 8 2 N Y Y Y Y 学号 姓名 性别 出生日期 所在系 空否 备 注

表 2-2 课程信息表 Course 的表结构 小 数 主码 列 Pk Cno Cname Cpno Credit 名 数据类型 Char Char Char Decimal 宽度 位 3 20 3 3 1 N Y Y Y 课程代码 课程名称 先行课号 学分 空否 备 注

5

表 2-3 选课成绩表 SC 的表结构 小 数 主码 列 Sno Pk Cno Grade Char Decimal 3 5 1 N Y 课程代码 成绩 名 数据类型 Char 宽度 位 5 N 学号 空否 备 注

表 2-4 操作员表 Operator 的表结构 主 列 码 Pk Operator_id Operator_na Char me Password Permission Char Char 10 20 Y Y 密码 权限 12 Y 操作员姓名 Char 4 名 数据类型 宽度 位 N 操作员编号 小 数 空否 备 注

下面在系统实施阶段就可以物理实现数据库了, 本系统使用前面实验已经建 好的服务器端 SQL Server 数据库—Student,具体创建方法见前面实验。

3 结构设计

3.1 模块结构设计

组织结构图 学生成绩管理系统分析与设计的组织结构图:系统名称:学生成绩管理系统

3.2 代码设计

(1)代码设计原则: 在数据库中的关键字数据元素通常其代码都有特定含义,必要时还带有校验码。 例如成绩表中学号编码,由 8 个字符组成,前四个字符表示入学年份,后四个是

6

按顺序递增的流水号。 (2)校验码计算公式: 对每一个带有校验码的关键字代码,都要有一张代码设计说明书,校验码计算公 式可以相通,也可以不同。

3.3 数据库设计

(1) 数据库总体结构 本系统采用关系型数据库模式,因此数据库由若干个二维表(数据文件)组成, 每个数据文件均设计成第三范式。表名用含有实际意义的大写拼音首字母表示, 如学生成绩表:chengji (2) 数据库结构 每一个数据文件均有一张定义表: 成绩表(chengji) 字段名 字段说明 类型 字段大小 xuehao 学号 文本 8 xingming 姓名 文本 10 kemubianhao 科目编号 文本 4 kemufenshu 科目分数 文本 3 banjimingcheng 班级名称 文本 20 ID ID 号 自动编号 长整型 学生表(xuesheng) 字段名 字段说明 类型 字段大小 xuehao 学号 文本 8 xingming 姓名 文本 10 xingbie 性别 文本 2 banji 班级 文本 20 nianling 年龄 文本 2 dianhua 电话 文本 18

7

zhuzhi 住址 文本 40 班级表(banji) 字段名 字段说明 类型 字段大小 banjibianhao 班级编号 文本 6 banjimingcheng 班级名称 文本 20 科目表(kemu) 字段名 字段说明 类型 字段大小 kemumingcheng 科目名称 文本 20 kemubianhao 科目编号 文本 4

3.4 输入输出设计 323

输入输出设计在信息系统中占据重要地位, 因为输入和输出是用户与系统的 接口,是用户与系统关系最密切的两部分,它对于保证今后用户使用系统的方便 性及系统的安全可靠性来说十分重要。 系统设计时,应先进行输出设计,再进行输入设计,因为输入信息只有根据输出 要求才能确定。

3.4.1 输出设计

输出设计的目的是使系统能输出满足用户需求的有用信息, 用户所需要的各 种管理业务和经营决策等方面的信息都是由系统的输出部分完成的。 (1)输出方式 本系统采用屏幕输出和打印机打印输出。 (A)屏幕显示输出:学生登录系统查询成绩时用人机对话方式在显示屏上输出信 息,以及用户通过功能按钮、输入组合条件等方式让系统显示信息,该种方式的 优点是实时性强,但输出的信息不能保存。 (B)打印机输出:需要统计分析成绩时输出的信息需要长期保存或在较广泛的范

8

围内传递时,将信息打印输出。 (2)输出介质 本系统输出设备有显示终端、打印机等,介质是纸张。

3.4.2 输入设计

输入设计的根本任务就是确保数据快速、正确地输入系统,本系统选用键盘 输入。

3.5 模块测试计划

(1) 测试内容:教务人员进入系统后对信息的录入、修改、删除及学生成绩的关 联查询 (2) 进度安排:数据库表结构设计好就设计相应测试用例,待相应模块代码编完 随即测试。 (3) 测试所需的环境和设备:本系统开发版基于单机 Windows XP,后台数据库采 用 SQLServer2000,测试人员由开发者本人兼任。 (4) 实施测试 (5) 生成测试报告

4 系统实施

结合 PowerBuilder 进行数据库应用开发的特点,设计过程可按如下步骤进 行: (1) 创建应用库及应用对象; (2) 创建全局变量; (3) 创建菜单; (4) 创建数据窗口;

9

(5) 创建窗口并在窗口中放置所需控件。

4.1 创建应用库及应用对象 设置 ODBC 数据源: (1) 首先在管理工具中设置 ODBC 数据源:在系统 DSN 中设置名为 GM 的数据 源,数据库指向自己的数据库,并测试连接是否成功。 (2) 利用 PB8 创建工作区间 GM.pbw,进一步创建应用库 gm.pbl,应对象名为 gm, 注释为“学生成绩管理系统” 。按照下面的方法,设置应用对象的属性: ⑴默认的微帮助:在属性视图的”Genral”标签中,将”MicroHelpDefault”编辑 框中的内容设为“就绪” 。 ⑵ 取 消 用 户 对 工 具 条 的 控 制 : 将 属 性 视 图 中 ” Toolbar ” 标 签 中 的 ” ToolbarUserControl”属性设置为不选中状态。 对应用对象的 Open 事件进行编程,程序代码如下:(该段代码最好等 W_welcome 和 W_login 两个窗口完成后再写,否则会产生错误而无法退出;或 者先将涉及到这两个窗口的语句注释掉,待设计好两个窗口后再将注释去掉。) open(w_welcome)//打开启动封面窗口 //设置数据库连接参数 SQLCA.DBMS = "ODBC" SQLCA.AutoCommit = False SQLCA.DBParm = "Connectstring='DSN=gm'" //数据库为 Student connect; //判断连接是否成功,若不成功,则提示出错信息,并返回 if sqlca.sqlcode<>0 then messagebox("错误","数据库连接错误,轻检查后重试!",stopsign!) close(w_welcome) return end if close(w_welcome)//关闭封面窗口 openwithparm(w_login,"First")//打开登陆窗口,First 参数表明第一次登陆

10

创建全局变量(PB 4.2 创建全局变量(PB 中对任何代码的编写都必须没有语法错误才能切换到其 模块) 模块) 在应用程序中,为了保存全局信息,定义的全局变量如图 3-1 所示:

图 4-1 全局变量的定义

4.3 菜单设计 根据应用系统的功能要求,设计如图 3-2 所示的菜单结构,其中将菜单名称 命名为 m_main,注释为“主菜单” ,其中的图标选用的是系统内置的图标(这些图 标只要在“Toolbar”选项卡上的“Toolbaritemname”中选择,图标会在工具栏 上显示):

图 4-2 系统的主菜单 各菜单项标题、名称及相应的”Clicked”事件中的代码如下(事件代码在相 应的窗口没有完成之前不要写,如果要写可先注释掉): 学生管理(m_student) 学生信息录入(m_student_input):open(w_student_input)

11

学生信息查询(m_student_query):open(w_student_query) 课程管理(m_course) 课程设置(m_course_set):open(w_course_set) 课程查询(m_course_query):open(w_course_query) 成绩管理(m_score) 成绩录入(m_score_input):open(w_score_input) 成绩查询(m_score_query) 按学生查询(m_score_query_student):open(w_score_query_student) 按课程查询(m_score_query_course): open(w_score_query_course) 系统管理(m_system) 口令更改(m_system_password):open(w_changepassword) 重新登录(m_system_relogin):openwithparm(w_login,”RELOGIN”) 操作员管理(m_system_operator):open(w_operator) 退出系统(m_system_exit):close(parentwindow)

4.4 创建窗口并在窗口中放置所需控件

常用控件(单击工具栏上该按钮的下拉箭头)

,如图 4-3。

CommandButton (命令按钮,默认名前缀 cb_) CheckBox (复选钮,默认名前缀 cbx_) RadioButton (单选钮,默认名前缀 rb_) StaticText (静态文本,默认名前缀 st_) SingleLineEdit (单行编辑框,默认名前缀 sle_) EditMask (单行掩码编辑框,默认名前缀 em_) MultiLineEdit (多行编辑框,默认名前缀 mle_) RropDownListBox (下拉列表框,默认名前缀 ddlb_) ListBox (列表框,默认名前缀 lb_) DataWindow (数据窗口,默认名前缀 dw_) 图 4-3 常用控件
12

根据需要创建以下窗口(注意属性窗口的操作): ⑴w_welcome:封面窗口。创建选项:Title=“欢迎” WindowType=popup!; ; ControlMenu=false;Pointer=HourGlass!;st_title.text=“欢迎使用学生成绩管理系 统” ;St_message.text=“正在连接数据库,请稍等…” 。运行效果如图 4-4 所示:

图 4-4 封面窗口的运行效果 (2)w_main:主窗口。创建选项:Title=“学生成绩管理系统” MenuName=” ; m_main” ;WindowType=mdihelp!; (3)w_login:登录窗口。创建选项:Title=“请您登录” WindowType=response!; ; st_operator_id.text=“操作员编号” ;st_operator_name.text=“操作员姓名” ; st_password.text=“口令” ;sle_operator_id.text=”; sle_operator_name.text=”; ” ” sle_operator_name.Enabled=false ; sle_password.text= ” ” ;

sle_password.password=true ; cb_ok.text= “ 确 定 ” cb_exit.text= “ 退 出 ” ; ; cb_exit.cancel=true。 窗口的“Open”事件代码: gs_loginparm=message.stringparm //保存传递过来的参数 “操作员编号”编辑框(sle_operator_id)的“Midified”事件代码: string ls_operator_id ls_operator_id=sle_operator_id.text select "operator"."operator_name" //注意 SELECT 等 SQL 命令在 PowerBuilder Script 中的语法,引号的加法 into :gs_operator_name from "operator"

13

where "operator"."operator_id"=:ls_operator_id; if sqlca.sqlcode<>0 then sle_operator_name.text="没找到!" sle_operator_id.text="" sle_password.text="" return end if sle_operator_name.text=gs_operator_name “确定”按钮(cb_ok)的“Clicked”事件代码: string ls_operator_id,ls_operator_name,ls_password,ls_permission string ls_getpassword ls_operator_id=sle_operator_id.text select "operator"."operator_name","operator"."password","operator"."permission" into :ls_operator_name,:ls_password,:ls_permission from "operator" where "operator"."operator_id"=:ls_operator_id; if sqlca.sqlcode<>0 then sle_operator_name.text="没找到!" sle_operator_id.text="" sle_password.text="" sle_operator_id.setfocus() return end if sle_operator_name.text=ls_operator_name ls_getpassword=trim(sle_password.text) ls_password=trim(ls_password) if len(ls_password)=0 then ls_password=space(10) if len(ls_getpassword)=0 or isnull(ls_getpassword) then ls_getpassword=space(10) end if
14

if ls_getpassword<>ls_password then messagebox("警告","口令错误!") sle_password.text="" sle_password.setfocus() return end if close(parent) gs_operator_id=ls_operator_id gs_operator_name=ls_operator_name gs_password=ls_password gs_permission=ls_permission if gs_loginparm="First" then //若是第一次登陆,则打开主窗口 open(w_main) //若重新登陆,则不打开主窗口 end if //判断操作权限,11---系统级 其他---用户级 if gs_permission="11" then m_main.m_score.m_score_input.enabled=true m_main.m_student.m_student_input.enabled=true m_main.m_course.m_course_set.enabled=true m_main.m_course.m_course_sel.enabled=true m_main.m_system.m_system_operator.enabled=true else m_main.m_score.m_score_input.enabled=false m_main.m_student.m_student_input.enabled=false m_main.m_course.m_course_set.enabled=false m_main.m_course.m_course_sel.enabled=false m_main.m_system.m_system_operator.enabled=false end if 退出按钮 (cb_exit)的“Clicked”事件代码: close(parent)
15

运行效果如图 4-5 所示:

图 4-5 登录窗口的运行效果 ⑷ w_changepassword: 口 令 修 改 窗 口 。 创 建 选 项 : Title= “ 口 令 更 改 ” ; WindowType=response!;st_oldpassword.text=“旧口令” ;st_newpassword.text= “新口令” st_renewpassword.text=“确认新口令” ; ;sle_oldpassword.text=” ; ” sle_oldpassword.password=true sle_newpassword.password=true ; ; sle_newpassword.text= sle_renewpassword.text= ” ” ” ” ; ;

sle_renewpassword.password=true; cb_ok.text=“确定” ;cb_exit.text=“退出” ; cb_exit.cancel=true。 “确定”按钮(cb_ok)的“Clicked”事件代码: string ls_oldpassword,ls_newpassword,ls_renewpassword ls_oldpassword=trim(sle_oldpassword.text) ls_newpassword=trim(sle_newpassword.text) ls_renewpassword=trim(sle_renewpassword.text) if len(gs_password)=0 or isnull(gs_password)then gs_password=space(10) end if if len(ls_oldpassword)=0 or isnull(ls_oldpassword) then ls_oldpassword=space(10) end if if len(ls_newpassword)=0 or isnull(ls_newpassword)then ls_newpassword=space(10)

16

end if if len(ls_renewpassword)=0 or isnull(ls_renewpassword) then ls_renewpassword=space(10)//为设定密码,则将密码规整为 10 个空格 end if

if ls_oldpassword<>gs_password then messagebox("警告","旧口令不对!") sle_oldpassword.text="" sle_oldpassword.setfocus() return end if if ls_newpassword<>ls_renewpassword then messagebox("警告","两次输入的新口令不同!") sle_newpassword.text="" sle_renewpassword.text="" sle_newpassword.setfocus() return end if Update "operator" set "password"= :ls_newpassword where "operator"."operator_id"=:gs_operator_id; if sqlca.sqlcode<>0 then rollback; messagebox("错误","修改口令失败,请重试!") return end if gs_password=ls_newpassword commit; messagebox("提示","修改口令成功!") close(parent)
17

退出按钮 (cb_exit)的“Clicked”事件代码: close(parent) 运行效果如图 4-6 所示:

图 4-6 口令修改窗口的运行效果 ⑸ w_operator: 操 作 员 管 理 窗 口 。 创 建 选 项 : Title= “ 操 作 员 管 理 ” ; WindowType=response!;dw_operator.dataobject=“d_operator” ; cb_add.text= “增加(&A)” cb_delete.text= ; “删除(&D)” cb_save.text= ; “保存(&S)” cb_exit.text= ; “退出” ;cb_exit.cancel=true。 窗口的“Open”事件代码: dw_operator.settransobject(sqlca) dw_operator.retrieve() 增加按钮 (cb_add)的“Clicked”事件代码: long ll_currentrow ll_currentrow=dw_operator.insertrow(0) dw_operator.scrolltorow(ll_currentrow) dw_operator.setrow(ll_currentrow) dw_operator.setfocus() 删除按钮 (cb_delete)的“Clicked”事件代码: int li_select li_select=messagebox("提示","确实要删除吗?",exclamation!,yesno!) if li_select=1 then dw_operator.deleterow(0) end if
18

保存按钮 (cb_save)的“Clicked”事件代码: dw_operator.update() if sqlca.sqlcode<>0 then rollback; messagebox("错误","存盘失败!") return else commit; end if 退出按钮 (cb_exit)的“Clicked”事件代码: close(parent) 运行效果如图 4-7 所示:

图 4-7 操作员管理窗口的运行效果

4.5 创建数据窗口

根据需要创建以下数据窗口: ⑴d_student:学生信息录入数据窗口。 创建选项: “Grid” 显示风格, “Quick Select” 数据源, “student”表选择所有列,按”Sno”排序, “性别”一栏的编辑风格选 用”DropDownListBox” ,增加”男””女”两项, 、 “出生日期”的编辑风格选用” EditMask” ,内容为”yyyy/mm/dd” 。在数据窗口中添加六个命令按钮,属性如表 4-1 设置:
19

表 4-1 控 件 名

d_student 数据窗口中命令按钮的属性设置 属 Text Action 性 值 上一页 Pageprior 下一页 Pagenext 增加 AppendRow 删除 DeleteRow 保存 Update 退出 UserDefined

b_pageprior

b_pagenext

Text Action

b_add

Text Action

b_delete

Text Action

b_save

Text Action

b_exit

Text Action

设计样式如图 4-8 所示: (注意修改数据窗口的列标题)

图 4-8

d_student 数据窗口的设计样式图

⑵d_student2: 学生信息查询数据窗口。 创建选项: Grid” “ 显示风格, Quick Select” “ 数据源, “student”表选择所有列,其他可不变。
20

⑶d_course:课程设置数据窗口。创建选项: “Grid”显示风格, “Quick Select” 数据源, “course”表选择所有列,在数据窗口中添加六个命令按钮,属性设置 与 d_student 相同。 ⑷d_course2:课程查询数据窗口。方法与 d_student2 类似。 ⑸d_operator: 操作员管理数据窗口。 创建选项: “Grid” 显示风格, “Quick Select” 数据源, “operator”表选择所有列,其他可不变。 ⑹d_score:成绩录入数据窗口。创建方法与 d_student 类似。 ⑺d_score_student:按学生_成绩查询数据窗口。创建选项: “Group”显示风格, “SQL Select”数据源,选择打开“student”“course”和“sc”三个表。一次选 、 择“sc”表的 sno 列、 “student”表的 sname 列、 “sc”表的 cno 列、 “course”表 的 cname 列和“sc”表的 grade 列,在分组对话框中,选择“sc”表的 sno 列、 “student”表的 sname 列进行分组。在数据窗口对象的 Design 视图中选中细目 区(detail)中的 sc_grade 列,在其属性视图的 Font 选项卡中的 TextColor 属性后 的条件框中输入 if( sc_grade <60,rgb(255,0,0),rgb(0,0,0)),使不及格的成绩呈红色 显示。在组尾区(Group Trailer)中插入一个静态文本框控件和一个计算域控件 用于显示“平均成绩: ”提示文本和每组的平均成绩,并且在属性视图的 Format 选项卡中设定计算域控件的显示格式为“0##.0”,最终效果如图 4-9 所示:

图 4-9

d_score_student 数据窗口的设计样式图

⑻d_score_course: 按课程_成绩查询数据窗口。 创建方法与 d_score_student 类似。 3.6 其它窗口的创建

21

(1)w_student_input:学生信息录入窗口。创建选项:Title=“学生信息录入” ; WindowType=response!;dw_student=“d_student” 。 窗口的“Open”事件代码: dw_student.settransobject(sqlca) dw_student.retrieve() 数据窗口控件 dw_student 的“buttonclicking”事件代码如图 4-10 所示:

图 4-10 数据窗口控件 dw_student 的“buttonclicking”事件代码 运行效果如图 4-11 所示:

图 4-11 学生信息录入窗口的运行效果 (2)w_student_query:学生信息查询窗口。创建选项:Title=“学生信息录入查询” ; WindowType=response!;dw_student=“d_student2” 。Gb_condition.text=“查询条 件” st_sno.text= ; “学号” sle_sno.text= ; ; “” st_sname.text= “姓名” sle_sname.text= ; “” ;cb_retrieve.text=“检索” ;cb_exit.text=“退出” ;cb_exit.cancel=true。 窗口的“Open”事件代码: dw_student.settransobject(sqlca) 检索按钮 (cb_retrieve)的“Clicked”事件代码: long ll_rows string ls_sno,ls_sname if trim(sle_sno.text)="" and trim(sle_sname.text)="" then messagebox("提示","请输入学号和姓名!")

22

sle_sno.setfocus() return end if ls_sno=trim(sle_sno.text) if len(ls_sno) >0 then dw_student.setfilter("sno='"+ls_sno+"'") dw_student.filter() ll_rows=dw_student.retrieve() if ll_rows=0 then messagebox("提示","无纪录!") return end if sle_sname.text=dw_student.object.sname[1] return end if ls_sname=trim(sle_sname.text) dw_student.setfilter("sname='"+ls_sname+"'") dw_student.filter() ll_rows=dw_student.retrieve() if ll_rows=0 then messagebox("提示","无纪录!") end if sle_sno.text=dw_student.object.sno[1] 退出按钮 (cb_exit)的“Clicked”事件代码: close(parent) 运行效果如图 4-12 所示:

23

图 4-12 学生信息录入窗口的运行效果 ⑻w_course_set: 课程设置窗口。创建方法与 w_student_input 类似。 运行效果如下图 4-13 所示:

图 4-13 课程设置窗口的运行效果 (3)w_course_query: 课程查询窗口。创建方法与 w_student_query 类似。 运行效果如下图 4-14 所示:

24

图 4-14 课程查询窗口的运行效果 (4)w_score_input: 成绩录入窗口。创建方法与 w_student_input 类似。 运行效果如下图 4-15 所示:

图 4-15 课程查询窗口的运行效果 (5)w_score_query_student: 按学生成绩查询窗口。创建选项:Title=“成绩查询_ 按学生” ; WindowType=response! ; dw_score_student= “ d_score_student ” ; st_sno.text=“学号” ;sle_sno.text=“” ;st_sname.text=“姓名” ;sle_sname.text= “” ;cb_retrieve.text=“检索” ;cb_next.text=“下一个” ;cb_exit.text=“退出” ; cb_exit.cancel=true。 窗口的“Open”事件代码: dw_score_student.settransobject(sqlca) sle_sno.setfocus() 检索按钮 (cb_retrieve)的“Clicked”事件代码:
25

string ls_sno,ls_sname long ll_rows ls_sno=trim(sle_sno.text) ls_sname=trim(sle_sname.text) if ls_sno="" and ls_sname="" then messagebox("提示","请输入学号或姓名!") return end if if ls_sno="" then dw_score_student.setfilter("student_sname='"+ls_sname+"'") dw_score_student.filter() ll_rows=dw_score_student.retrieve() if ll_rows=0 then messagebox("提示","无纪录!") else sle_sno.text=dw_score_student.object.sc_sno[1] end if return end if dw_score_student.setfilter("sc_sno='"+ls_sno+"'") dw_score_student.filter() ll_rows=dw_score_student.retrieve() if ll_rows=0 then messagebox("提示","无纪录!") else sle_sname.text=dw_score_student.object.student_sname[1] end if 下一个按钮 (cb_next)的“Clicked”事件代码: sle_sno.text="" sle_sname.text=""
26

sle_sno.setfocus() 退出按钮 (cb_exit)的“Clicked”事件代码: close(parent) 运行效果如下图 4-16 所示:

图 4-16 按学生成绩查询窗口的运行效果 (6)w_score_query_course: 按 课 程 成 绩 查 询 窗 口 。 其 创 建 方 法 类 同 于 w_score_query_student。 运行效果如下图 4-17 所示:

图 4-17 按课程成绩查询窗口的运行效果 将应用程序进行调试、测试后,达到用户满意的功能效果,在编制用户手册和制 作成可安装程序后,一个初步的数据库应用系统就基本完成了。

27


相关文章:
用c#实现学生成绩管理系统
用c#实现学生成绩管理系统_信息与通信_工程科技_专业资料。学生成绩管理系统摘要:学生成绩管理工作是学校学生管理工作的重要组成部分,随着学校规模的扩大、学生人数的...
C#与SQL数据库学生成绩管理系统完整代码
C#与SQL数据库学生成绩管理系统完整代码_计算机软件及应用_IT/计算机_专业资料。...二.主要功能该系统主要用于学校学生信息管理, 总体任务是实现学生信息关系的系统...
C#学生成绩管理系统课程设计
C#学生成绩管理系统课程设计_管理学_高等教育_教育专区。目录一、设计目的 ......老师对学生的各项信息或成绩的修改, 删除, 添加等,以实现学生成绩管理系统的...
C#课程设计报告书(学生成绩管理系统)
该系统是用 Visua Studio2010 和 Access 2007, 通过 C#语言进行相关代码的编 ...学生成绩管理管理系统为用户提供充足的信息和快捷的查询 手段,实现学生基本信息、...
C#程序设计开发文档(学生成绩管理系统)
C#程序设计开发文档(学生成绩管理系统)_IT/计算机_专业资料。这个是在学习完c#程序...新系统目标: 新系统目标: 对于本系统,我们需要实现以下一些基本功能: 1.3. ...
C#+SQL学生成绩管理系统完整版
C#+SQL学生成绩管理系统完整版_管理学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档 C#+SQL学生成绩管理系统完整版_管理学_高等教育_教育专区。...
C#学生成绩管理系统课程设计报告
22 C#学生成绩管理系统 学生成绩管理系统摘 要 本文描述的是基于 Windows 环境...Studio 2010 设计窗体, SQL server2005 建立数据库,实现学校信息管理的各个功能...
C#学生成绩管理系统
C#学生成绩管理系统_工学_高等教育_教育专区。C#程序设计 题目:期末考试成绩管理 班学姓 级: 号: 名: 2014 年 10 月 30 日 一、实验目的: 1.理解面向对象...
C#控制台学生成绩管理系统实训报告(含源代码)
C#控制台学生成绩管理系统实训报告(含源代码)_计算机软件及应用_IT/计算机_专业资料。功能实现 1. 学生类的实现; 2. 输入10个学生的学号、姓名、各门课程的成绩...
基于C#、SQL的学生成绩管理系统项目的设计与实现
基于C#、SQL 的学生成绩管理系统项目的设计与实现摘 要 成绩管理是任何一个教育单位不可或缺的重要组成部分之一, 它的职责对于 学校的教务管理工作人员来说是至...
更多相关标签:
java实现学生管理系统 | 链表实现学生管理系统 | 学生管理系统实现报告 | 学生成绩管理系统 | c 学生成绩管理系统 | 学生成绩管理系统er图 | 学生成绩管理系统论文 | 学生成绩管理系统java |