用顺序表实现一个简单的学生信息管理系统,包括如下功能:
(1) 创建学生表
(2) 输出学生表
(3) 增加学生信息
(4) 删除学生信息(指定学号或者序号,如第几个学生)
(5) 按照给定的学号查找学生信息
(6) 插入学生信息
学生信息结点类型如下:

typedef struct 
{int no;//学号定义为整型为了方便查找和删除操作,实际中应该定义为
//字符数组或字符串
 char name[50];//姓名
 char sex;//性别(F or M)
int age;//年龄
}student;

功能实现

#include<iostream>
using namespace std;
#define MAXSIZE 100
#define OVERFLOW -2
#define OK 1
#define ERROR 0
typedef struct
{
	int no;
	char name[50];
	char sex;
	int age;
}Student;
typedef struct
{
	Student *elem;
	int length;
}SqList;
//初始化
int InitList(SqList &L)
{
	L.elem=new Student[MAXSIZE];
	L.length=0;
	return OK;
}
//创建学生信息
void InitInformation(SqList &L)
{
	int n;
	cout<<"=====输入学生信息===="<<endl;
	cout<<"输入学生人数:";
	cin>>n;
	for(int i=0;i<n;i++)
	{
		cout<<"输入第"<<i+1<<"个学生的信息"<<endl;
		cout<<"输入该学生信息(依次输入学号,姓名,性别,年龄):";
		cin>>L.elem[i].no>>L.elem[i].name>>L.elem[i].sex>>L.elem[i].age;
		++L.length;
	}
}
//输出学生表
void printStudent(SqList L)
{
	int i=0;
	while(i<L.length)
	{
		cout<<"学号:"<<L.elem[i].no<<"\t姓名:"<<L.elem[i].name<<"\t性别:"<<L.elem[i].sex<<"\t年龄:"<<L.elem[i].age<<endl;
		++i;
	}
}
//增加学生信息
int addInformation(SqList &L)
{
	Student e;
	if(L.length==MAXSIZE) return ERROR;
	cout<<"输入要添加学生的信息(依次输入学号,姓名,性别,年龄):";
	cin>>e.no>>e.name>>e.sex>>e.age;
	L.elem[L.length]=e;
	++L.length;
	return OK;
}
//插入学生信息
int ListInsert(SqList &L,int i)
{
	Student e;
	int j;
	if((i<0)||(i>L.length+1))
		return ERROR;
	if(L.length==MAXSIZE) return ERROR;
	for(j=L.length-1;j>=i-1;j--)
		L.elem[j+1]=L.elem[j];
	cout<<"输入该学生信息(依次输入学号,姓名,性别,年龄):";
	cin>>e.no>>e.name>>e.sex>>e.age;
	L.elem[i-1]=e;
	++L.length;
	return OK;
}
//查找学生信息
int LocateElem(SqList L,int e)
{
	for(int i=0;i<L.length;i++)
	{
		if(L.elem[i].no==e)
		{
			cout<<"该学生的学号为:"<<L.elem[i].no<<endl;
			cout<<"该学生的姓名为:"<<L.elem[i].name<<endl;
			cout<<"该学生的性别为:"<<L.elem[i].sex<<endl;
			cout<<"该学生的年龄为:"<<L.elem[i].age<<endl;
			return 0;
		}
	}
	cout<<"该学号不存在"<<endl;
	return 0;
}
//删除指定的学生信息
int ListDelete(SqList &L,int i)
{
	if((i<1)||(i>L.length))return ERROR;
	for(int j=i-1;j<L.length;j++)
		L.elem[j-1]=L.elem[j];
	--L.length;
	return OK;
}
//功能界面
void fuction()
{
	cout<<"**********学生信息管理系统**********"<<endl;
	cout<<"\t**0、退出系统"<<endl;
	cout<<"\t**1、创建学生表"<<endl;
	cout<<"\t**2、输出学生表"<<endl;
	cout<<"\t**3、添加学生信息"<<endl;
	cout<<"\t**4、插入学生信息"<<endl;
	cout<<"\t**5、删除学生信息"<<endl;
	cout<<"\t**6、按照给定学号查找学生信息"<<endl;
	cout<<"**输入选择功能的选项:";
}
int main()
{
	SqList L;
	int choise=-1;
	fuction();
	while(choise!=0)
	{
		cin>>choise;
		switch(choise)
		{
		case 0:
			cout<<"退出系统."<<endl;
			break;
		case 1:
			{
				InitList(L);
				InitInformation(L);
				fuction();
				break;
			}
		case 2:
			{
				printStudent(L);
                fuction();
				break;
			}
		case 3:
			{
				addInformation(L);
				fuction();
				break;
			}
		case 4:
			{
				int i;
				cout<<"输入要插入学生的学号:";
				cin>>i;
				ListInsert(L,i);
				fuction();
				break;
			}
		case 5:
			{
				int i;
				cout<<"输入要删除的学生的学号:"<<endl;
				cin>>i;
				ListDelete(L,i);
				fuction();
				break;
			}
		case 6:
			{
				int k;
				cout<<"输入要查询学生信息的学号:";
				cin>>k;
				LocateElem(L,k);
				fuction();
				break;
			}
		default: 
			    cout<<"输入选项错误,请重新输入!!!"<<endl;
				fuction();
			    break;
		}
	}
	return 0;
}
Logo

快速构建 Web 应用程序

更多推荐