MFC - 课程设计 - 学生成绩管理系统(带直方图/折线图数据显示)

如题

********菜鸡的课设,仅供交流参考
在这里插入图片描述

在这里插入图片描述
(2)程序功能模块的设计
1.学生管理系统的实现:
在我的程序里,MFC主对话框“学生管理系统”中拥有“保存”,“打开”,“添加”,“删除”,“按高数成绩排序”,“按C++成绩排序”,“修改”,“确定”,“反选”一共9个按钮,以及“学号”,“姓名”,“高数”,“C++”四个编辑框,还有一个list control列表用于显示数据。四个编辑框绑定了4个CString变量,利于直接获取数据,
在students managementDlg.cpp中拥有list control初始化的代码以及8个按钮分别对应实现的代码。在student.h头文件,里面用于存放一个“学生类”,在public中存放学生的姓名,学号,高数成绩,c++成绩,(分CString以及long long)两个类型存储,用一个convert成员函数实现从CString数据转变为long long存储以便实现排序功能。
在manageff.h头文件中,存放一个用于管理“学生类”的“管理类”,在private中存储len(管理学生的容器总大小),count(已存学生数量),public中实现构造函数(初始化),学生类指针(容器),获取容器大小的函数getcount,向容器中添加学生的函数add,指定位置删除容器中的学生函数del,根据高数成绩排序的函数math_sort,根据c++成绩排序的函数Cjj_sort以及判断容器中是否有相同学号的人的函数getsame(实现当添加时容器中已存在学号相同的学生则无法添加的功能)
在mangement.cpp中实现“学生类”以及“管理类”中的函数。

2.数据用直方图以及折线图显示的实现:
在MFC单文档中的View.h的类CView的public添加两个按钮CButton函数以及一个函数Open。在View.cpp中的OnDraw函数里实现的绘图,在类向导中添加一个OnCreate函数,并且实现按钮的显示。最后实现两个按钮的函数(打开“学生管理系统”中保存的save.txt,根据提取save.txt中的数据更改各个分段的高度以显示出直方图以及折现图)。

(3)带有详细注释的自己编写的关键源程序:
1.学生管理系统:

//将四个编辑框分别绑定四个CString变量:Id,name,math,Cjj

1.Student.h头文件:

#include <afxtempl.h>
#define ll long long
using namespace std;
#pragma once

class student
{
public:
	//除了name以外所有数据均存一份CString跟一份long long
	ll Idq;
	ll mathq;
	ll Cjjq;
	CString name;//姓名
	CString Id;//学号
	CString math;//高数成绩
	CString Cjj;//C++成绩
	void convert();//将存储的CString转换成long long
};

2.Manageff.h头文件:

#pragma once
#include "stdafx.h"
#include "Student.h"

class studentmanag
{
	//学生类数组容器类
private:
	int len;//容器总大小
	int count;//容器已存的大小

public:
	studentmanag();//构造函数
	student * group;//学生数组容器

	int getcount();//获取容器已存大小
	void add(student x);//向容器添加一个学生
	void del(int x);//从容器中选择删除一个学生
	void math_sort();//按高数成绩排序数组
	void Cjj_sort();//按C++成绩排序数组
	bool getsame(student a);//判断容器中是否有学号相同的人
};

3.Management.cpp:

#include "stdafx.h"
#include "Student.h"
#include "manageff.h"
#include <algorithm>

using namespace std;

void student::convert()
{
	//将CString转成long long型存储
	Idq = _ttoi(Id);
	mathq = _ttoi(math);
	Cjjq = _ttoi(Cjj);
	return;
}

studentmanag::studentmanag()
{
	//初始化
	group = new student[100];
	len = 100;
	count = 0;
}

int studentmanag::getcount()
{
	//获取容器已存大小
	return this->count;
}

void studentmanag::add(student x)
{
	//容器添加操作
	count++;
	if (count >= len)//如果现有大小等于容器大小,则扩大容器
	{
		student *p = new student[len + 10];//开辟新容器
		len += 
评论 42
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值