资源简介
任务:建立一个简单的学生信息管理系统,该系统为注册学生保存基本信息、选课信息以及课程成绩。系统要方便基本信息、选课信息、成绩的增加、删除、修改及查询。为实现快速查询,要求对基本信息、选课信息和成绩建立相应的索引,学生成绩采用平衡二叉树建索引,对学生姓名采用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个文件信息
相关资源
- C++开源日志库Easylogging++ V9.80版本源码
- Visual Studio 2013开发MFC程序对Excel 2010进
- ArcGis Engine C++ 开发教程
- Visual C++游戏编程基础 PDF+源码
- 基于遗传算法的最短路径选择问题
- 计算器 VC++
- 教学设备管理系统C++课程设计
- 定义一个Date 类,数据成员有year,m
- MFC 快速导出数据至ExcelSaveToExcel组件
- C++模拟退火算法求二维函数极值
- c++医院病房管理系统
- VC图像处理系列(傅立叶变换篇源码
- C++对任意阶的实对称矩阵求特征值和
- 图书管理系统C++实现
- 李龙澍 C++ 程序设计课件
- 学籍信息管理系统 C++ 代码
- 多边形区域的扫描线填充、扫描线种
- C++机房机位预约管理
- VC++Spin(旋转)控件用法
- SHA1加密算法的c++实现
- 导引头模型仿真
- ROBOOP --机器人正逆解C++版本开源开源
- MFC实现简单网络聊天程
- C++实现日志库
- 基于IE浏览器的源代码
- C++音视频即时通讯源代码
- VC++摄像头视频采集及回放源程序
- MFCPanel控件
- mfc做的局域网聊天室
- 模拟退火遗传算法的C++程序
评论
共有 条评论