超好的学生成绩管理系统顺序表实现的代码含详细注释哦
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include
#include
#include
#define LIST_INIT_SIZE 4 //线性表存储空间的初始分配量
#define LISTINCREMENT 10 //线性表存储空间的分配增量
//学生的定义
typedef struct
{
int num;
char name[20];
float english;
float math;
float database;
float sum;
float average;
}Student;
//顺序表的定义
typedef struct
{
Student *stu;
int length;
int listsize;
}sqlist;
//函数1录入信息
int Input(sqlist *L)
{
int i=1;//为了查找、排序的方便将第一个当哨兵
char flag='y';
//输入数据
while(flag == 'Y' || flag == 'y')
{
for(i =1; i < L->listsize; ++i)
{
printf("请输入第%d个同学的信息:\n",L->length);
printf("学号:");
fflush(stdin);
scanf("%d",&L->stu[L->length].num);
printf("姓名:");
fflush(stdin);
scanf("%s",L->stu[L->length].name);
printf("英语成绩:");
fflush(stdin);
scanf("%f",&L->stu[L->length].english);
printf("高数成绩:");
fflush(stdin);
scanf("%f",&L->stu[L->length].math);
printf("数据结构成绩:");
fflush(stdin);
scanf("%f",&L->stu[L->length].database);
L->stu[L->length].sum=L->stu[L->length].english+L->stu[L->length].math+L->st u[L->length].database;
L->stu[L->length].average=L->stu[L->length].sum/3;
L->length++;
printf("是否继续[Y/N]... ");
fflush(stdin);
flag = getchar();
if(flag=='N'||flag=='n')
break;
}
}
return 0;
}
//函数2显示所有学生信息
int Display(sqlist *L)
{
int i;
if(L->length<=1)
{
printf("请先输入数据!\n");
return 0;
}
printf("所有同学信息如下:\n");
printf("学号\t姓名\t总分\t平均分\t英语成绩\t高数成绩\t数据结构成绩\n");
for(i=1;i
printf("%d\t%s\t%.2f\t%.2f\t%.2f\t\t%.2f\t\t%.2f\n",L->stu[i].num,L->stu[i]. name,L->stu[i].sum,L->stu[i].average,L->stu[i].english,L->stu[i].math,L->stu[i].
database);
return 0;
}
//函数3插入一条记录到表尾
void Insert(sqlist *L)
{
printf("学号:");
scanf("%d",&L->stu[L->length].num);
printf("姓名:");
scanf("%s",L->stu[L->length].name);
printf("英语成绩:");
scanf("%f",&L->stu[L->length].english);
printf("高数成绩:");
scanf("%f",&L->stu[L->length].math);
printf("数据结构成绩:");
scanf("%f",&L->stu[L->length].database);
L->stu[L->length].sum=L->stu[L->length].english+L->stu[L->length].math+L->st u[L->length].database;
L->stu[L->length].average=L->stu[L->length].sum/3;
L->length++;
}
//函数4删除一条记录
int Delete(sqlist *L)
{
char s[20];
int i=1,j,ch,n;//第一个是哨兵
if(L->length<=1)
{
printf("请先输入数据!\n");
return 0;
}
printf("1.按姓名删除\n2.按学号删除\n请选择:");
scanf("%d",&ch);
if(ch==1)
{
printf("请输入姓名:");
scanf("%s",s);
while(strcmp(L->stu[i].name,s)!=0&&i