资源简介
任务:建立一个简单的学生信息管理系统,该系统为注册学生保存基本信息、选课信息以及课程成绩。系统要方便基本信息、选课信息、成绩的增加、删除、修改及查询。为实现快速查询,要求对基本信息、选课信息和成绩建立相应的索引,学生成绩采用平衡二叉树建索引,对学生姓名采用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\dcli
文件 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个文件信息
相关资源
- 基于MFC的TCP调试助手源码95706
- 国际象棋的qt源代码
- C++中头文件与源文件的作用详解
- 基于mfc的多线程文件传输
- C++多线程网络编程Socket
- VC++ 多线程文件读写操作
- 利用C++哈希表的方法实现电话号码查
- 移木块游戏,可以自编自玩,vc6.0编写
- C++纯文字DOS超小RPG游戏
- MFC数字钟(基于VC6.0)
- VC++MFC小游戏实例教程(实例)+MFC类库
- 连铸温度场计算程序(C++)
- 6自由度机器人运动学正反解C++程序
- Em算法(使用C++编写)
- libstdc++-4.4.7-4.el6.i686.rpm
- VC++实现CMD命令执行与获得返回信息
- 白话C++(全)
- C++标准库第1、2
- 大数类c++大数类
- C++语言编写串口调试助手
- c++素数筛选法
- C++ mqtt 用法
- ChartCtrl控件库(可在VS2019中使用)
- 商品库存管理系统 C++ MFC
- c++ 多功能计算器
- C++17 In Detail
- 嵌入式QtC++编程课件
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
评论
共有 条评论