顺序表 学生信息管理系统

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

/*(一)预编译命令*/
#include
#include
#include
#include
/*(二)自定义数据类型*/
typedef struct stu
{
char xh[15];
char xm[15];
int nl;
}STU;
typedef struct
{
STU * elem;
int lisesize;
int length;
}SqList;

/*(三)函数说明*/
int initsqlist(SqList &L,int max);
int insertsqlist(SqList &L,int i,STU x);
int deletsqlist(SqList &L,int i,STU &x);
int creatsqlist(SqList &L,int size,int n);
void disp(SqList L);
int menu();
int findloc(SqList L, int i);
int findxh(SqList L, char * xh);

/*(四)函数定义*/
int initsqlist(SqList &L,int max)
{
L.elem=new STU[max];
if(L.elem==NULL)
{
printf("申请空间失败!\n");
exit(0);
}
L.lisesize=max;
L.length=0;
return 1;
}
int insertsqlist(SqList &L,int i,STU x)
{
if(L.length>=L.lisesize)
{
printf("没有空间!\n");
return 0;
}
if(i<1||i>L.length+1)
{
printf("位置不合理!\n");
return 0;
}
for(int k=L.length;k>=i;k--)
L.elem[k]=L.elem[k-1];
L.elem[i-1]=x;
L.length++;
return 1;
}
int deletsqlist(SqList &L,int i,STU &x)
{
if(L.length==0)
{
printf("没有数据!\n");
return 0;
}
if(i<1||i>=L.length)
{
printf("位置不合理!\n");
return 0;
}
x=L.elem[i-1];
for(int k=i;k<=L.length;k++)
L.elem[k-1]=L.elem[k];
L.length--;
return 1;
}

int creatsqlist(SqList &L,int size,int n)
{
STU x;
initsqlist(L,size);
for(int i=1;i<=n;i++)
{
printf("请输入学号、姓名、分数:");
scanf("%s%s%d",x.xh,x.xm,&x.nl);
insertsqlist(L,i,x);
}
return 1;
}

void disp(SqList L)
{
for(int i=1;i<=L.length;i++)
printf("%10s%12s%5d\n",L.elem[i-1].xh,L.elem[i-1].xm,L.elem[i-1].nl);
printf("\n\n");
}

int findloc(SqList L, int i)
{
if(L.length==0)
{
printf("没有数据!\n");
return -1;
}
if(i>=1&&i<=L.length)return i-1;
return -1;
}
int findxh(SqList L, char * xh)
{
if(L.length==0)
{
printf("没有数据!\n");
return -1;
}
for(int i=1;i<=L.length;i++)
if(strcmp(xh,L.elem[i-1].xh)==0)
return i-1;
return -1;
}

int menu()//菜单函数
{ int n;
while(1)
{ system("cls");//清屏
printf("*********学生基本信息管理系统*********\n");
printf(" 1—创建 2—显示\n");
printf(" 3—插入 4—删除\n");
printf(" 5—按位置查找 6—按学号查找\n");
printf(" 0—退出\n");
printf("*************************************\n");
printf("请输入功能编号(0-6 )");
scanf("%d",&n);
if(n>=0 && n<=6)return n;
}
}

/*(五)主函数*/
void main()//主函数
{ SqList L; int n, i ,m; STU x;
char xh[15];
while(1)
{n=menu();//得到菜单编号
switch(n)
{ case 1://创建
creatsqlist(L,20,3); break;
case 2: //显示
dis

p(L);
printf("按任意键继续!");
getch();
break;
case 3://插入
printf("请输入要插入学生的学号、姓名和年龄:");
scanf("%s%s%d",x.xh, x.xm, &x.nl);
i=findxh(L,x.xh);
if(i==-1) //没有找到
{
printf("请输入插入位置(1-%d):",L.length+1);
scanf("%d",&m);
insertsqlist(L,m,x);
disp(L);
}
else printf("该学生已经存在!\n");
printf("按任意键继续!");
getch();
break;
case 4://删除
printf("请输入要删除学生的学号:");
scanf("%s",xh);
i=findxh(L,xh);
if(i==-1) printf("该学生不存在!\n");
else
{
deletsqlist(L,i+1,x);
disp(L);
}
printf("按任意键继续!");
getch();
break;
case 5: //按位置查找
printf("请输入位置(1-%d):",L.length);
scanf("%d",&i);
i=findloc(L,i);//调用按位置查找的函数
if(i==-1) printf("该学生不存在!\n");
else printf("学号:%10s姓名:%15s年龄:%d\n",
L.elem[i].xh, L.elem[i].xm, L.elem[i].nl);
printf("按任意键继续!");
getch();
break;
case 6://按学号查找
printf("请输入学生的学号:");
scanf("%s",xh);
i=findxh(L,xh); //调用按姓名查找的函数
if(i==-1) printf("该学生不存在!\n");
else printf("学号:%10s姓名:%15s年龄:%d\n",
L.elem[i].xh, L.elem[i].xm, L.elem[i].nl);
printf("按任意键继续!");
getch();
break;
case 0://退出系统
exit(0);
}//switch
}//while
}













相关文档
最新文档