华南农业大学学生信息管理系统报告

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

文档来源为:从网络收集整理.word版本可编辑.欢迎下载支持. 程序设计实践训练课程设计报告姓名:李爽爽

华南农业大学工程学院

摘要

本系统采用MFC编程,开发了一个应用于教学管理的学生信息管理系统。使用的控件主要有列表控件、编辑控件、按钮控件等。功能包括学籍管理、信息查询、教务信息维护和学生学分登记情况。其中,学生信息包括学生的姓名、性别、学号、所在班级、所修的总学分等。学生信息的查询,可以采用两种方式查询,学号查询和姓名查询,查询结果显示在编辑框中。学生信息的删除也可以采用学号和姓名查询,查询到后点击删除即可。输入完成后,可以将学生信息保存在txt文件中。同时可以点击导出学生信息查看保存的信息。另外,采用选择排序法对学生学分进行排序,排序后结果显示在列表框中,点击保存则可将修改保存到文件中。其特点在于VC编程实现了可视化,直观易操作,可适用于日常教学信息管理。创新编程方法在于使用了控件与变量相关联,调用更新函数实现变量与控件之间的传递,简化了编程步骤。

目录

1.需求分析 (4)

2.概要设计 (4)

2.1 数据类型定义 (4)

2.2 主程序流程 (5)

3.程序实现 (8)

4.运行结果 (14)

5.讨论及进一步研究建议 (18)

6.课程设计心得 (19)

A BSTRACT (20)

参考文献 (21)

1.需求分析

1.1设计学生信息管理系统的目的

随着学校的规模不断过大,学生数量急剧增加,有关学生的各种

信息量也成倍增加。面对庞大的信息量需要有学生信息管理系统来提高学生管理工作的效率。通过这样的系统可以做到信息的规范化管理、科学性统计和快速查询、修改、增加、删除、排序等,从而减少学校对学生管理方面的工作量。

本系统主要应用于学校学生信息管理,总体任务是实现学生信息关系的系统化、规范化和自动化,其主要任务是计算学生各种信息进行日常管理,如查询、修改、增加、删除、排序,针对这些要求设计了学生信息管理系统。

1.2课程设计的要求

学生信息管理系统课题只要的要求包括以下五方面:系统以菜单的方式工作、学生信息录入(学生信息用文件保存)、学生信息浏览功能、查询排序功能、学生的信息删除与修改功能

2.概要设计

本程序是一个基于MFC对话框的C++应用程序,程序功能主要在CTestDlg类下编辑,数据类型包括控件与变量相联系、结构体、指针等基本数据类型。采用的控件主要有列表控件、编辑控件、按钮控件。程序的基本流程就是:按下菜单键的进入系统,打开程序的对话框,在对话框中先点击初始化表格按钮,进入编辑模式,根据需要选择录入、查询、删除、保存、导出学生信息和成绩排序功能,下方的编辑菜单用于录入时的输入框和查询时的显示框。

2.1 数据类型定义

本程序是单文档应用程序,所以运行后,先出现的是菜单栏,故在菜单栏中编写进入系统菜单,类归属为CMagView类中。执行是在对话框中进行,先定义了一个对话框类CTestDlg,对话框中的控件都设置为对话框类,使各个按键相应程序能统一写在CTestDlg 类中。通过设置编辑控件与变量联系,使输入控件和显示控件实现数据传递。控件变量类型统一采用CString类。输出到文件中的文件采用ofstream类型,从文件中读取的文件采用CFile类型。其他数据类型主要是一些基本的结构体、指针、布尔、整型等常用

数据类型。程序中的全局变量为编辑框变量,定义方法如图一所示。其他变量的定义均在相应的按钮响应函数中。

图1 全局变量定义方式

2.2 主程序流程

图2 程序主框图

先获取列表中的单元数目,将要查询的学生信息输入到编辑框中。通过判断编辑框中的变量是否和列表中的某个单元相等,确定是否找到学生信息。如果找到,则输出学生信息,否则,输出查找不到该学生。流程图如下:

图3 查询学生信息流程图

将要删除的学生学号和姓名输入到编辑框中,遍历列表,通过判断编辑框对应的变量是否和列表中的某个单元相等,相等则删除该行,否则,输出查找不到该学生信息。

图4 删除学生信息流程图

定义一个结构体数组,将列表中的数据输入到结构体数组中,每一行就是一个结构体。对每个结构体中的学分项进行选择排序法,如果前一个单元的学分比后一个大,则两个结构体交换,从而实现了数据在结构体中按学分从小到大排序。最后,再将交换后的结构体数据输入到列表中,更新显示。

图5 学分排序流程图

3.程序实现

3.1进入系统菜单

对话框显示模式有两种,一种是模态对话框,另外一种是非模态对话框,其区别在于,模式对话框运行时,代码会停止,直到对话框关闭,而非模式则在对话框出现时,代码仍然可以向下运行。由于我们需要在对话框上点击按钮启动响应代码,所以选用非模态对话框。本对话框的创建主要采用CDialog类下的Create函数,显示采用ShowWindow 函数。为了保证对话框对象的生命周期和程序一致,采用动态分配内存的方法进行定义。进入系统菜单ID号定义为IDM_ENTER,即入口程序名为ONENTER。具体实现代码如下所示。

void CMagView::OnEnter()

{

// TODO: Add your command handler code here

CTestDlg *pDlg=new CTestDlg;//动态分配内存

pDlg->Create(IDD_DIALOG1,this);//产生对话框

pDlg->ShowWindow(SW_SHOW);//显示

}

3.2初始化列表程序

采用列表控件List Ctrol进行数据输入的显示,以便进一步把数据输入文件中保存。初始化列表按钮的ID号为IDC_INIT,故响应的程序名称为OnInit()。初始化设置采用m_list3.SetExtendedStyle()设置表格的分割,采用m_list.InsertColumn()函数设置表头和每个表格的长度、宽度。这里要注意的一点就是要将List Ctrol控件的属性设置为REPORT,否则无法进行列表功能。具体实现代码如下。

void CTestDlg::OnInit()

{

// TODO: Add your control notification handler code here

m_list3.SetExtendedStyle(LVS_EX_GRIDLINES|LVS_EX_FULLROWSELECT);

//设置表头

m_list3.InsertColumn(0,"姓名",LVCFMT_LEFT,80,-1);

m_list3.InsertColumn(1,"性别",LVCFMT_LEFT,80,-1);

m_list3.InsertColumn(2,"班级",LVCFMT_LEFT,80,-1);

m_list3.InsertColumn(3,"学号",LVCFMT_LEFT,120,-1);

m_list3.InsertColumn(4,"出生年月",LVCFMT_LEFT,100,-1);

m_list3.InsertColumn(5,"手机号码",LVCFMT_LEFT,120,-1);

m_list3.InsertColumn(6,"已获学分",LVCFMT_LEFT,80,-1);

MessageBox("系统提示:请先输入学生信息"); //设置完毕后弹出提醒输入信息

}

3.3录入学生信息程序

采用按钮控件作为进入程序的命令控件,ID号码为IDC_INPUT,即执行的程序名称为OnInput()。控件与变量关联后,调用UpdateData(TRUE)实现控件的值传递给变量,从而能将我们输入到编辑框中的数值传递给相应变量。接着,调用m_list.InsertItem()开始一行的输入,使用m_list3.SetItemText()实现对同一行不同列内容的输入。最后要调用UpdateData(FALSE)实现数据从控件的数据显示。由于UpdateData()的默认参数是TRUE,所以要实现控件到变量的传递数据,可以不填写参数。具体的程序如下所示。

void CTestDlg::OnInput()

{

// TODO: Add your control notification handler code here

UpdateData();//数据由编辑框到变量

//填写列表的数据

m_list3.InsertItem(0,m_Name);

m_list3.SetItemText(0,1,m_Sex);

相关文档
最新文档