数据结构实验报告:学生成绩统计管理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验六.学生成绩统计管理

问题描述

用VC++可视化开发平台实现一个本班成绩管理与统计程序,要求界面友好,简洁大方,方便使用。程序的功能要求如下:

(1)支持对话框形式的学生信息与课程成绩的录入、修改和删除;

(2)计算本班每一位同学的学分成绩GPA( grade point average) 并排名,以此作为奖学金评定的参考依据;

(3)对某一门课程,按照优(90-100)/良(80-89)/中(70-79)/及格(60-69)/不及格(60分以下)五档进行划分,统计在每一档的学生人

数和百分比例,并显示统计结果。

(4)支持以文本格式导出学生的成绩记录,支持从文件中导入学生成绩记录;

(5)其他成绩管理与统计所需的功能,可按自己的预想进行扩展。

演示时的模拟数据不少于15 人。

实验理论

本实验几乎考察了VC++开发的全部基本内容,其中,主要涵盖以下三大块的相关知识点:

1.资源

菜单资源及其应用,工具栏

2.对话框

对话框的创建,对话框的数据交换和检验

3.控件

静态文本和编辑框控件,按钮控件,列表框控件,滚动条控件等另外,实验还涉及了C++的主要知识点,如“类与对象”、“派生与继承”、“I/O流”以及C++语言基础知识。

功能实现和相关程序及截图

鉴于VC++的消息驱动机制以及本实验的相对复杂性,使得不便以一个相对结构化的方式来说明具体实现内容,下面将以分块的形式对本系统的主要功能进行阐释。

1.界面设计

如图所示,界面包括

a.左上方的三个菜单

通过添加tab控件来实现,分别实现各个班级,年级成绩的管理和相关参数的设定功能

b.左侧的“增加记录”等功能按钮

单击时会弹出相应的对话框,内含静态文本和编辑框控件

c.三个数据显示框

包括单科成绩分类统计,任课教师,学生成绩三块(列表框控件),数据更新时会进行相应的显示,另外,还含有3个滚动条控件

2.对话框形式的学生信息与课程成绩的录入、修改和删除

下面以信息录入为例对该部分功能做详细介绍

a.添加一个对话框模板资源。修改对话框

模板的ID为IDD_ADDDIALOG,

Caption为“增加记录”,并添加7个

静态文本控件和7个编辑框控件,如图

所示,“学号”和“姓名”两个编辑框

设置为string类型,其余设置为float

类型。

b.在对话框上右击,选择“添加类”,这时会弹出“类向导对话框”。将类名改为

“CADDDIALOG”,基类选择“CDialog”,然后单击“完成”按钮。

c.在对话框上右击,选择“添

加变量”,这时会弹出“添加

成员变量对话框”,如右图所

示,添加变量m_strName,

然后单击“完成”按钮。类似

的,依次添加剩下的六个变量

m_strxue,

m_fmaths

m_fphysical

m_fchemistry

m_fenglish

m_fpolitic

d.在类IDD_BADIALOG头文件中将类的声明包括进来:#include”ADDDIALOG.h”

添加两个成员变量,分别存放“总成绩“和“平均成绩(GPA)”

e.添加消息处理函数,当有记录增加时,进行相应的处理

voidCBaDialog::OnAdd()

{

// TODO: Add your control notification handler code here

Selec=TRUE;

CAddialogdlg;

if(dlg.DoModal()==IDOK)

{

if(this->Select()=="一班")

{

if(dlg.m_nxue>=200)

{AfxMessageBox("一班学号在1—200之间");

return;}

}

else

{

if(dlg.m_nxue<200||dlg.m_nxue>=400)

{AfxMessageBox("二班学号在200—400之间");

return;}

}

m_Set.AddNew();

m_nRecordCount+=1;

m_Set.m_column1=dlg.m_nxue;

m_Set.m_column2=dlg.m_strName;

m_Set.m_column3=dlg.m_fmaths;

m_Set.m_column4=dlg.m_fphysical;

m_Set.m_column5=dlg.m_fchemistry;

m_Set.m_column6=dlg.m_fenglish;

m_Set.m_column7=dlg.m_fpolitic;

m_Set.m_column8=dlg.m_fmaths+dlg.m_fphysical+dlg.m_fchemistry+dlg.m

_fenglish+dlg.m_fpolitic;

m_Set.m_column9=(float)(m_Set.m_column8/5);

this->Equal();

m_Set.Update();//Update()一定放在Equal()后

m_Set.Requery();

this->Xuan();

}

}

类似的,可实现信息的删除功能和修改功能。略有不同的是,删除和修改功能对话框都新增加了一个密码输入框,以保护信息。

3.排序功能

和信息删改功能类似,加

入以下程序段即可实

现排序功能。这里,用

户通过单击相应的题

头便可实现以该项数

据为依据的排序功能,

连续单击可实现升序

与降序两种不同排序

方式见的切换。

如右图,为一物理成绩为依据的降序排序。

voidCBaDialog::Sort(BOOL isAsc,intsecol)

{

if(m_Set.IsOpen())

m_Set.Close();

相关文档
最新文档