• 大小: 58KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-06-10
  • 语言: C/C++
  • 标签: C++  MFC  

资源简介

任务:建立一个简单的学生信息管理系统,该系统为注册学生保存基本信息、选课信息以及课程成绩。系统要方便基本信息、选课信息、成绩的增加、删除、修改及查询。为实现快速查询,要求对基本信息、选课信息和成绩建立相应的索引,学生成绩采用平衡二叉树建索引,对学生姓名采用Hash建立索引,对学号实现折半查找。要求:1) 可以按成绩高低输出所有成绩;2) 可以按区间段查询成绩;3) 可以按区间段统计成绩。4) 可以按成绩、姓名、学号等信息查询。5) 二叉树的各种操作要求写出递归和非递归两种方式。红黑树,HASH,跳跃表,链表

资源截图

代码片段和文件信息

#include “StdAfx.h“
#include “AccessData.h“

using namespace DS::Container;

const char* const  AccessData::STUDENT_FILE=“Student.txt“; //学生文件名
const char* const  AccessData::COURSE_FILE=“Course.txt“; //课程文件名
const char* const  AccessData::GRADE_FILE=“Grade.txt“; //成绩文件名
const char* const  AccessData::NAME_INDEX_FILE=“NameIndex.txt“; //学生姓名索引文件名
const char* const  AccessData::GRADE_INDEX_FILE=“GradeIndex.txt“; //学生成绩索引文件名

const size_t   AccessData::NAME_MAX_SIZE=50; //名称最大长度
const size_t   AccessData::GRADE_MAX_SIZE=5; //成绩最大长度

unsigned long ELFhash(CString inkey)
{
char* key=inkey.GetBuffer();
unsigned long h=0;
while (*key)
{
h=(h<<4)+ *key ++;
unsigned long g=h & 0xF0000000L;
if (g) h^=g>>24;
h&=~g;

}
return h;
}

bool AccessData::ReadCourseData()
{
FileType tFile(COURSE_FILE);
//一次读取2列信息
long tCourseID;
char tCourseName[NAME_MAX_SIZE];
mCourseData.Clear();
while (!tFile.eof())
{
tFile>>tCourseID;
if(tCourseID==-1)
break;
tFile>>tCourseName;
mCourseData.Insert(new Course(tCourseIDtCourseName));
tCourseID=-1;
}
return true;
}

bool  AccessData::ReadStudentData()
{

FileType tFile(STUDENT_FILE);
//一次读取3列信息
long tStudentID;
char tStudentName[NAME_MAX_SIZE];
char tStudentClass[GRADE_MAX_SIZE];

while (!tFile.eof())
{
tFile>>tStudentID;
if(tStudentID==-1)
break;
tFile>>tStudentName;
tFile>>tStudentClass;
//此处用跳跃表插入数据
mStudentData.insert(new Student(tStudentIDtStudentNametStudentClass));
tStudentID=-1;
}
return true;
}

bool  AccessData::ReadGradeData()
{
FileType tFile(GRADE_FILE);
long tStudentIDtCourseID;
long tMark;
Grade* tGrade;
Grade* tFindGrade;
Student* tStudent;
Course* tCourse;

while (!tFile.eof())
{
tFile>>tStudentID;
if(tStudentID==-1)
break;
tFile>>tCourseID;
tFile>>tMark;
tGrade=new Grade();
//设置成绩
tGrade->SetMark(Mark(tMark));

//设置学生
if(mStudentData.find(tStudentIDtStudent)==false)
{
return false;
}
tGrade->SetStudent(tStudent);
//设置课程
tCourse=NULL;
mCourseData.InitTravel();
while (tCourse=mCourseData.Travel())
{
if (tCourse->GetCourseID()==tCourseID)
{
break;
}
}
if(tCourse==NULL)
return false;
tGrade->SetCourse(tCourse);
//设置课程连接
mGradeHeader.InitTravel();
tFindGrade=NULL;
while (tFindGrade=mGradeHeader.Travel())
{
if (tFindGrade->GetCourse()->GetCourseID()==tCourseID)
{
break;
}
}
if (tFindGrade==NULL||tFindGrade->GetCourse()->GetCourseID()!=tCourseID)//未找到
{
mGradeHeader.Insert(tGrade);
}
else//找到
{
tGrade->SetNextCourse(tFindGrade->GetPrevCourse());
tGrade->SetPrevCourse(tFindGrade);
tFindGrade->GetNextCourse()->SetPrevCourse(tGrade);
tFindGrade->SetNextCourse(tGrade);
}
//此处用跳跃表插入数据
mGradeData.insert(tGrade);
tStudentID=-1;
}
return true;
}

bool AccessData::ReadNameIndex()
{
FileTy

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件       7139  2008-06-25 00:27  SGA\AccessData.cpp

     文件       2257  2008-06-24 18:52  SGA\AccessData.h

     文件       4658  2008-06-24 23:19  SGA\ArgumentType.cpp

     文件      11871  2008-06-24 14:44  SGA\ArgumentType.h

     文件       2878  2008-06-23 17:51  SGA\array.h

     文件        189  2008-06-24 16:27  SGA\Course.cpp

     文件       1301  2008-06-24 19:15  SGA\Course.h

     文件         10  2008-06-24 23:54  SGA\Course.txt

     文件       6579  2008-06-24 19:07  SGA\dclinkedlist.h

     文件      11151  2008-06-24 19:50  SGA\DList.h

     文件       2873  2008-06-24 12:28  SGA\dnode.h

     文件        784  2008-06-24 14:28  SGA\Grade.cpp

     文件       2525  2008-06-24 21:05  SGA\Grade.h

     文件         36  2008-06-24 23:45  SGA\Grade.txt

     文件         26  2008-06-24 23:45  SGA\GradeIndex.txt

     文件       7052  2008-06-24 16:07  SGA\hashtable.h

     文件         57  2008-06-24 16:29  SGA\Headers.h

     文件         67  2008-06-24 14:28  SGA\Mark.cpp

     文件        822  2008-06-23 14:44  SGA\Mark.h

     文件         19  2008-06-24 23:50  SGA\NameIndex.txt

     文件      23108  2008-06-24 23:36  SGA\RBTree.h

     文件       3597  2008-01-07 13:20  SGA\ReadMe.txt

     文件       1078  2008-01-07 13:20  SGA\res\SGA.ico

     文件        399  2008-01-07 13:20  SGA\res\SGA.rc2

    ..A.SH.      3072  2008-01-10 17:03  SGA\res\Thumbs.db

     文件       2652  2008-06-24 22:14  SGA\resource.h

     文件      24124  2008-06-25 12:22  SGA\SGA.APS

     文件       2037  2008-06-24 13:32  SGA\SGA.cpp

     文件       4178  2008-01-07 14:39  SGA\SGA.dsp

     文件        522  2008-01-07 13:20  SGA\SGA.dsw

............此处省略19个文件信息

评论

共有 条评论