• 大小: 6KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-06-04
  • 语言: C/C++
  • 标签: 数据结构  顺序表  

资源简介

基于顺序存储的学生名册管理程序源代码
学生名册管理程序,名册中的每条记录包括学号和姓名。程序能够在顺序表,栈和队列三种模式下自由切换,支持数据的插入、删除、查找、按学号排序和屏幕打印。具体要求的功能如下:
1) 按照顺序表的方式,在指定位置进行插入与删除。
2) 以栈的方式进行插入与删除。
3) 以队列的方式进行插入与删除。
4) 按姓名进行顺序查找,按学号进行二分查找(查找学号时需要先排序)。
5) 打印所有学生的信息。

资源截图

代码片段和文件信息

#include
#include
#include
#include
#include
#define INIT_SIZE 5  /*线性表存储空间的初始分配量*/
#define EX_SIZE 5  /*线性表存储空间的分配增量*/
using namespace std;

typedef struct {
char name[20];
int ID;
}stu;
typedef stu Datatype;
typedef struct {
stu* student;    //存储空间的基地址
int length;         //当前长度
int size;     //当前分配的存储容量
}sq_List;

int Initialize(sq_List*);//初始化顺序表
void lv1menu(sq_List*);//一级菜单
void lv2menu(char sq_List*);//二级菜单
int ins_ele(char sq_List*);//插入
int del_ele(char sq_List*);//删除
int prt_all(sq_List*);//打印
void sort(sq_List);//排序
int sea_ele(sq_List int);//按学号二分查找

int main()
{
sq_List database;
if (!Initialize(&database)) {
cout << “Error! Initialization failed!“ << endl;
exit(0);
}//初始化失败则结束程序
lv1menu(&database);//显示一级菜单
return 0;
}

int Initialize(sq_List* List)
/*初始化顺序表,成功返回1,失败返回0*/
{
List->student = (Datatype*)malloc(INIT_SIZE * sizeof(Datatype));
if (!List->student)
return 0;             /*初始化失败*/
List->length = 1;
List->size = INIT_SIZE;
return 1;                /*初始化成功*/
}
void lv1menu(sq_List* List)
{
char _op1;
bool flag = true;
//system(“cls“);
do {
cout << “     学生信息管理系统“ << endl;
cout << “---------------------------“ << endl;
cout << “A.按照顺序表方式管理“ << endl;
cout << “B.按照栈方式管理“ << endl;
cout << “C.按照队列方式管理“ << endl;
cout << “D.查找\tE.打印\nF.退出“ << endl;
cout << “选择操作:“;
cin >> _op1;
_op1 = toupper(_op1);
if (_op1 == ‘F‘)flag = false;
lv2menu(_op1 List);
cout << “\n“;
} while (flag);
}
void lv2menu(char m sq_List* List)
{
char optype _op2;
int p;
optype = m;
int target;
if (optype == ‘A‘ || optype == ‘B‘ || optype == ‘C‘) {
p = 0;
cout << “\na.插入\nb.删除\nc.返回“ << endl;
cout << “选择操作:“;
cin >> _op2;
cout << “\n“;
if (_op2 == ‘c‘)
lv1menu(List);
if (_op2 == ‘a‘) {
do {
ins_ele(optype List);
cout << “是否继续输入(1表示继续插入,0表示终止插入)“;
cin >> p;
cout << “\n“;
} while (p == 1);
}
if (_op2 == ‘b‘) {
do {
del_ele(optype List);
cout << “删除后表中元素有: “ << endl;
prt_all(List);
cout << “是否继续删除(1表示继续删除,0表示终止删除)“;
cin >> p;
cout << “\n“;
} while (p == 1);
}
}
if (optype == ‘D‘) {
cout << “输入要查找的学号:“;
cin >> target;
p = sea_ele(*List target);
if (p > 0)
cout << “查找目标位于第“ << p << “位。“ << endl;
else
cout << “目标未找到。“ << endl;
cout << “\n“;
system(“pause“);
}
if (optype == ‘E‘) {
prt_all(List);
}
}
int ins_ele(char optype sq_List* List)
{
Datatype* temp = NULL buff;//temp暂存指针,buff暂存数据
int j;
if (List->length >= List->size - 1)             /*当前存储空间已满,增加分配*/
{
temp = (Datatype*)realloc(List->student (List->size + EX_SIZE) 

评论

共有 条评论