文档库 最新最全的文档下载
当前位置:文档库 › c语言 学生信息管理系统(线性表版)

c语言 学生信息管理系统(线性表版)

#include

#include

#define MAXSIZE 100

#include

#include

typedef struct{

char num[8];/*学号*/

char name[9];/*姓名*/

char gender[3];/*性别*/

int score;/*成绩*/

}DataType;

typedef struct

{

DataType stu[MAXSIZE];

int length;

}sequenlist;

int menu_select()

{

int sn;

printf("\n 学生信息管理系统\n");

printf("=========================================\n");

printf(" 1.学生信息顺序表的建立\n");

printf(" 2.插入学生信息\n");

printf(" 3.查询学生信息\n");

printf(" 4.删除学生信息\n");

printf(" 5.输出所有学生信息\n");

printf(" 0.退出管理系统\n");

printf("==========================================\n");

printf("请选择0-5:\n");

for(;;)

{

scanf("%d",&sn);

if (sn<0 || sn>5)

printf("\n\t输入错误,重选0-5\n");

else

break;

}

return sn;

}

void createList(sequenlist *L)

{

printf("有几位学生?请输入:\n");

fflush(stdin);

scanf("%d",&n);

printf("以下请输入这%d位学生的信息:\n",n);

for(i=0;i

{

printf("第%d位学生:",i);

printf("\n学号(8)姓名(8)性别成绩\n");

fflush(stdin);

scanf("%s%s%s%d",L->stu[i].num,L->stu[i].name,L->stu[i].gender,&L->stu[i].score);

}

L->length=n;

}

void printList(sequenlist *L)

{

int i;

printf("\n学号(8)姓名(8)性别成绩\n");

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

for(i=0;ilength;i++)

{

printf("第%d位学生:",i);

printf("%s,%s,%s,%d\n",L->stu[i].num,L->stu[i].name,L->stu[i].gender,L->stu[i].score);

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

}

}

int insert(sequenlist *L,DataType *student,int i)

{

int j;

if(L->length==MAXSIZE)

{

printf("overflow!");

return 0;

}

else if((i<0)||(i>L->length))

{

printf("error,please input the right 'i'");

return 0;

}

else

{

for(j=L->length-1;j>=i;j--)

strcpy(L->stu[j+1].num,L->stu[j].num);

strcpy(L->stu[j+1].name,L->stu[j].name);

strcpy(L->stu[j+1].gender,L->stu[j].gender);

L->stu[j+1].score=L->stu[j].score;

}

strcpy(L->stu[i].num,student->num);

strcpy(L->stu[i].name,student->name);

strcpy(L->stu[i].gender,student->gender);

L->stu[i].score=student->score;

L->length=L->length+1;

}

return 1;

}

int findList(sequenlist *L)

{

char num[8];

char name[9];

int i=0,xz;

printf("===========================\n");

printf("1、按学号查询\n");

printf("2、按姓名查询\n");

printf("===========================\n");

printf(" 请选择:");

fflush(stdin);

scanf("%d",&xz);

if (xz==1)

{

printf("请输入要查找学生的学号:");

scanf("%s",num);

for(i=0;ilength;i++)

{

if(strcmp(L->stu[i].num,num)==0)

return i;

}

}

else if (xz==2)

{

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

scanf("%s",name);

for(i=0;ilength;i++)

{

if(strcmp(L->stu[i].name,name)==0)

return i;

}

}

return -1;/*如果没找到,返回-1。否则直接返回,不会执行本句*/ }

void delNode(sequenlist *L)

{

int i,j;

printf("请先查找您要删除的学生信息:\n");

i=findList(L);

if(i==-1)

{

printf("没有查到要删除的学生信息");

return;

}

for(j=i;jlength;j++)

{

L->stu[j].score=L->stu[j+1].score;

strcpy(L->stu[j].num,L->stu[j+1].num);

strcpy(L->stu[j].name,L->stu[j+1].name);

strcpy(L->stu[j].gender,L->stu[j+1].gender);

}

L->length--;

printf("该学生信息已被删除!\n");

}

void main()

{

sequenlist *L;

DataType *student;

int i;

L=(sequenlist *)malloc(sizeof(sequenlist));

while(1){

switch(menu_select())

{

case 1:

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

printf(" 学生信息顺序表的建立\n");

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

createList(L);

break;

case 2:

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

printf("添加学生信息\n");

printf("请输入要添加的学生信息:\n");

printf("\n学号(8)姓名(8)性别成绩\n");

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

student=(DataType *)malloc(sizeof(DataType));

fflush(stdin);

scanf("%s%s%s%d",student->num,student->name,student->gender,&student->score);

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

fflush(stdin);

scanf("%d",&i);

insert(L,student,i);

break;

case 3:

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

printf("查询学生信息\n");

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

i=findList(L);

if(i!=-1)

{

printf("您要查的学生为:\n学号(8)姓名(8)性别成绩\n");

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

printf("%s,%s,%s,%d\n",L->stu[i].num,L->stu[i].name,L->stu[i].gender,L->stu[i].score); printf("------------------------------------------------------------------\n");

}

else

printf("没有您要查询的学生信息!");

break;

case 4:

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

printf("删除学生信息\n");

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

delNode(L);

break;

case 5:

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

printf("输出所有学生信息\n");

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

printList(L);

break;

case 0:

printf("再见!\n");

getchar();

return; }

}

}

相关文档
相关文档 最新文档