用顺序表建立一个简单的可以插入删除的学生成绩管理表
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<malloc.h>
#define maxsize 200
#define len sizeof(seqlist)
typedef struct stud
{char no[10];
char name[5];
float score[2];
}student;
typedef struct
{
student data[maxsize];
int size;
}seqlist;
seqlist *create_seqlist(seqlist *l,int n);//建立一个学生顺序表
void print_seqlist(seqlist *l);//输出学生顺序表
int insert_seqlist(seqlist *l,int n);//在指定位置插入一个新的学生记录
int delet_seqlist(seqlist *l,int n);//删除指定位置学生记录
int menu();//菜单函数
seqlist *create_seqlist(seqlist *l,int n)
{
l=(seqlist *)malloc(len);
if(l==NULL)
return l;
else
l->size=0;
while(l->size!=n)
{
printf("请输入学生学号:\n");
scanf("%s",&l->data[l->size].no);
printf("请输入学生姓名:\n");
scanf("%s",&l->data[l->size].name);
printf("请输入学生数学成绩:\n");
scanf("%f",&l->data[l->size].score[0]);
printf("请输入学生英语成绩:\n");
scanf("%f",&l->data[l->size].score[1]);
l->size++;
system("cls");//清屏函数
}
return l;
}
void print_seqlist(seqlist *l)
{
int n=0;
while(n!=l->size)
{
printf(" 学号:%s\n 姓名:%s\n 数学:%.1f\n 英语:%.1f\n ",l->data[n].no,l->data[n].name,l->data[n].score[0],l->data[n].score[1]);
n++;
}
}
int insert_seqlist(seqlist *l)
{
int n;
int y=l->size;
printf("请选择插入位置:");
scanf("%d",&n);
if(n>l->size)
{
printf("插入位置错误!\n");
return 0;
}
for(y=l->size-1;y>=n;y--)
{
int i=0,j=0,k=0;
while(l->data[y].no[i]!='\0')
{
l->data[y+1].no[i]=l->data[y].no[i];
i++;
}
l->data[y+1].no[i+1]='\0';
while(l->data[y].name[j]!='\0')
{
l->data[y+1].name[j]=l->data[y].name[j];
j++;
}
l->data[y+1].no[j+1]='\0';
for(k=0;k<=1;k++)
{
l->data[y+1].score[k]=l->data[y].score[k];
}
}
printf("请输入学生学号:\n");
scanf("%s",&l->data[n].no);
printf("请输入学生姓名:\n");
scanf("%s",&l->data[n].name);
printf("请输入学生数学成绩:\n");
scanf("%f",&l->data[n].score[0]);
printf("请输入学生英语成绩:\n");
scanf("%f",&l->data[n].score[1]);
l->size++;
return 1;
}
int delet_seqlist(seqlist *l)
{
int y,n;
printf("请选择删除位置:");
scanf("%d",&n);
if(n>l->size||n<0)
{
printf("删除位置错误!\n");
return 0;
}
for(y=n;y<=l->size;y++)
{
int i=0,j=0,k=0;
while(l->data[y].no[i]!='\0')
{
l->data[y].no[i]=l->data[y+1].no[i];
i++;
}
l->data[y+1].no[i+1]='\0';
while(l->data[y].name[j]!='\0')
{
l->data[y].name[j]=l->data[y+1].name[j];
j++;
}
l->data[y+1].no[j+1]='\0';
for(k=0;k<2;k++)
{
l->data[y].score[k]=l->data[y+1].score[k];
}
}
l->size--;
return 1;
}
int menu()
{
int n;
char c;
printf("\n\t\t0.退出\n\t\t1.建立学生成绩表\n\t\t2.插入一个学生信息\n\t\t3.删除一个学生信息\n\t\t4.输出显示成绩表\n\t\t");
do
{
fflush(stdin);
printf("\n请输入数字选择对应功能:\n\t\t");
c=getchar();
n=c-48;
if(n<0||n>4)
printf("\n\t\t输入选项错误!请重新输入选项");
}while(n<0||n>4);
return n;
}
main()
{
int select,n;
seqlist *y;
do{
system("cls");
select=menu();
system("cls");
switch(select)
{
case 1:printf("请输入学生个数:\n");
scanf("%d",&n);
y=create_seqlist(y,n);
break;
case 2:insert_seqlist(y);
break;
case 3:delet_seqlist(y);
break;
case 4:print_seqlist(y);
break;
case 0:printf("\n\t\t谢谢使用!再见....");
exit(0);
}
printf("\n\n");
system("pause");
}while(select!=0);
}
浙公网安备 33010602011771号