如题
********菜鸡的课设,仅供交流参考
(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 +=