c语言用顺序表写一个学生管理系统,用顺序表实现学生信息管理系统

#include

#include

#include

#define MAXSIZE 100

typedef struct{

char no[20]; // 学号

char name[20]; // 姓名

int price; // 成绩

}Student;

typedef struct{

Student elem[MAXSIZE]; //线性表占用的数组空间

int last; //最后一个元素的下标

}SeqList;

int Locate(SeqList *L,Student e) //按照姓名查找

{ /*用e返回L中第i个数据元素的值*/

int i;

for(i=0;ilast+1;i++)

{

if(!strcmp(L->elem[i].name,e.name)) //比较两个字符串是否相同

return i+1;

}

return 0;

}

int InsList(SeqList *L,int i,Student e) //插入学生信息

{ /*在L中第i个位置之前插入新的数据元素e,L的长度加1*/

int k;

if(i<1||(i>L->last+2))

{

return 0;

}

for(k=L->last;k>=i-1;k--) //元素向后移动位置

L->elem[k+1]=L->elem[k];

L->elem[i-1]=e;

L->last++;

return 1;

}

int DelList(SeqList *L,int i) //删除指定位置学生记录

{

int k;

if(i<1||i>L->last+1)

return 0;

for(k=i;k<=L->last;k++)

{

L->elem[k-1]=L->elem[k]; //将后面元素依次前移

}

L->last--;

return 1;

}

int main()

{

int i,x,a,temp,select,sum=0,c;

SeqList L;

Student m,e;

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");

printf("********************************************************************\n");

printf("\n");

while(select)

{

printf("请选择你要操作的选项:");

scanf("%d",&select);

printf("\n");

switch(select)

{

case 1:

printf("请输入学生的数量:");

scanf("%d",&x);

printf("\n");

sum=x;

for(i=0;i

{

printf("第%d位学生信息\n",i+1);

printf("\n");

printf("学号:");

scanf("%s",L.elem[i].no);

printf("-----------------------------\n");

printf("姓名:");

scanf("%s",L.elem[i].name);

printf("-----------------------------\n");

printf("成绩:");

scanf("%d",&L.elem[i].price);

printf("-----------------------------\n");

}

L.last=x;

printf("\n");

break;

case 2:

printf("所有学生的相关信息为:\n\n");

for(i=0;i

{

printf("学号:%s 姓名:%s 成绩:%d\n\n",L.elem[i].no,L.elem[i].name,L.elem[i].price);

}

printf("\n");

break;

case 3:

printf("请输入你要查找的姓名:");

scanf("%s",e.name);

temp=Locate(&L,e);

if(temp!=0)

printf("学号:%s 成绩:%d\n\n",L.elem[temp-1].no,L.elem[temp-1].price);

else

printf("查找失败!\n\n");

break;

case 4:

printf("请输入你要查询的位置:");

scanf("%d",&i);

if(i<=0||i>L.last)

printf("查询失败!\n\n");

else

printf("该位置的学生信息为\n学号:%s 姓名:%s 成绩:%d\n\n\n",

L.elem[i-1].no,L.elem[i-1].name,L.elem[i-1].price);

break;

case 5:

printf("请输入你要插入的位置:");

scanf("%d",&a);

printf("请输入插入学生信息:\n");

printf("学号:");

scanf("%s",m.no);

printf("姓名:");

scanf("%s",m.name);

printf("成绩:");

scanf("%d",&m.price);

if(InsList(&L,a,m))

{

sum++;

printf("插入成功!\n\n");

}

else

printf("插入失败!\n\n");

break;

case 6:

printf("请输入要删除学生的位置:");

scanf("%d",&c);

if(DelList(&L,c))

{

sum--;

printf("删除成功!\n\n");

}

else

printf("删除失败!\n\n");

break;

case 7:

{

printf("总学生个数为:%d\n\n",sum);

}

break;

case 8:

{

printf("\n退出系统成功!请按任意键结束!\n");

exit(0);

}

break;

}

}

return 0;

}


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部