题目:用顺序表实现学生信息管理系统。
代码:
#include<cstdio>
#include<stdlib.h>
#include<string.h>
#include<iostream>
#define MASZIZE 100
#define OK 1
#define OVERFLOW -1
using namespace std;
typedef int Status;
//学生信息结构体
typedef struct Student
{
char num[20];
char name[20];
int score;
}Student;
typedef struct SqList
{
Student *elem; //指向数据元素的基地址
int length; //线性表的当前项的个数
}SqList;
void InitList(SqList &L)
{
//构造一个空的顺序表 L
//SqList L;
L.elem = new Student[MASZIZE]; //为顺序表分配一个空间
L.length=0; //空表长度为0
printf("链表创建成功!\n");
}
//顺序表的取值
//顺序表的查找,查找学生信息
void LocatedStud(SqList &L)
{ //查找指定元素
Student e;//SqList L;
int ans=0;
printf("请输入您要查找的人的学号:\n");
scanf("%s",&e.num);
for(int i=0;i<L.length;i++)
if(strcmp(L.elem[i].num,e.num)==0)
{
ans=1;
cout<<"学号:"<<endl;
cout<<L.elem[i].num<<endl;
cout<<"姓名:"<<endl;
cout<<L.elem[i].name<<endl;
cout<<"成绩:"<<endl;
cout<<L.elem[i].score<<endl;
}
if(ans==0)
printf("对不起,没有您要查找的人!\n");
}
void ListInsert(SqList &L)
{
//顺序表的插入,插入学生信息
Student e;
Student p;
//SqList L;
int i,j;
printf("请输入要插入的位置:\n");
scanf("%d",&i);
if(i<1||(i>L.length+1) )
{
printf("输入插入位置错误,插入失败,请重新选择操作\n");
}
else
{
printf("请输入要插入的学生的信息:\n");
printf("学号:");
scanf("%s",p.num);
printf("姓名:");
scanf("%s",p.name);
printf("成绩:");
scanf("%d",&p.score);
for(int j=L.length-1;j>=i-1;j--)
L.elem[j+1]=L.elem[j]; //插入位置及之后的元素后移
L.elem[i-1]=p; //将新元素p放入第i个位置
++L.length; //表长加1
printf("插入成功\n");
}
}
//顺序表的删除,删除学生信息
void ListDelete(SqList &L)
{
//删除
//SqList L;
int i;
printf("请输入您要删除信息的学生位置:\n");
scanf("%d",&i);
if((i<1)||i>L.length+1)
printf("输入删除位置错误,删除失败,请重新选择操作\n");
for(int j=i;j<=L.length-1;j++)
L.elem[j-1]=L.elem[j];
--L.length;
printf("删除成功!\n");
}
//存储输入学生信息,姓名、学号、成绩
void inputS(SqList &L)
{
int sum,i;
//SqList L;
Student e;
printf("请输入学生个数:\n");
scanf("%d",&sum);
for(i=0;i<sum;i++)
{
printf("请输入学号:\n");
scanf("%s",&L.elem[i].num);
printf("请输入姓名:\n");
scanf("%s",&L.elem[i].name);
printf("请输入成绩:\n");
scanf("%d",&L.elem[i].score);
L.length++;
}
}
//输出学生信息
void outputs(SqList &L)
{
Student e[MASZIZE];
//SqList L;
int i;
for(int i=0;i<L.length;i++)
{
printf("学号:%s\n",L.elem[i].num);
printf("姓名:%s\n",L.elem[i].name);
printf("成绩:%d\n",L.elem[i].score);
}
}
//功能实现
int main ()
{
int n,s,m,len,t;
SqList L;
printf("*************欢迎使用学生信息管理系统*************\n");
printf("输入[1]建一个新顺序表\n");
printf("输入[2]输入信息\n");
printf("输入[3]插入信息\n");
printf("输入[4]查找给定的学生信息\n");
printf("输入[5]显示所有学生信息\n");
printf("输入[6]删除信息\n");
printf("输入[7]统计学生人数\n");
printf("输入[8]退出系统\n");
while(OK)
{
scanf("%d",&n);
switch(n)
{
case 1:
InitList(L);
break;
case 2:
inputS(L);
break;
case 3:
ListInsert(L);
break;
case 4:
LocatedStud(L);
break;
case 5:
outputs(L);
break;
case 6:
ListDelete(L);
break;
case 7:
printf("学生总人数为:%d\n",L.length);
break;
case 8:
exit(0);
}
}
return 0;
}