#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;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;i { if(strcmp(L->stu[i].num,num)==0) return i; } } else if (xz==2) { printf("请输入要查找学生的姓名:"); scanf("%s",name); for(i=0;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;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; } } }