#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<string.h>
#define OK 1
#define ERROR 0
#define OVERFLOW -2
#define MAXSIZE 100
typedef int Status;
typedef struct
{
char nub[12];
char name[100];
float score;
}student;
typedef student file;
typedef struct
{
file *elem; // 存储空间的基地址
int length; // 当前长度
}SqList;
Status InitList(SqList *L) // 构造空的顺序表 L
{
L->elem=(file *)malloc(sizeof(file)*MAXSIZE);
if(!L->elem) exit(OVERFLOW);
L->length=0;
return OK;
}
file GetElem(SqList &L,int i) // 访问顺序表,找到 i位置,返回给 e
{
return L.elem[i];
}
int Search(SqList &L,char str[]) // 根据名字查找,返回该同学在顺序表中的编号
{
for(int i=1;i<=L.length;i++)
{
if(strcmp(L.elem[i].name,str)==0)
return i;
}
return 0;
}
Status ListInsert(SqList &L,int i,file e){ // 在 i位置插入某个学生的信息
if((i<1)||(i>L.length+1)) return ERROR;
if(L.length==MAXSIZE) return ERROR;
for(int j=L.length;j>=i;j--)
{
L.elem[j+1]=L.elem[j];
}
L.elem[i]=e;
++L.length;
return OK;
}
Status ListDelete(SqList &L,int i){ // 在顺序表中删除 i位置的学生信息
if((i<1)||(i>L.length)) return ERROR;
for(int j=i;j<=L.length;j++)
{
L.elem[j]=L.elem[j+1];
}
--L.length;
return OK;
}
void Input(file *e){
printf("姓名:"); scanf("%s",e->name);
printf("学号:"); scanf("%s",e->nub);
printf("成绩:"); scanf("%f",&e->score);
printf("输入完成\n\n");
}
void Output(file *e){
printf("姓名:%-20s\n学号:%-10s\n成绩:%-10.2f\n\n",e->name,e->nub,e->score);
}
void PrintLine(student m[],int num){
int i;
if(num==0){
printf("the student array is null\n");
}else{
for(i=0;i<num;i++){
printf("姓名:%s,学号:%c,成绩:%f",m[i].name,&m[i].nub,m[i].score);
printf("\n");
}
}
}
int main(){
printf(" ******校园成绩查询管理系统******\n");
printf(" ******2011603041067 孔德露******\n");
SqList L;
file b,c,d;
InitList(&L);
int choose=1,a;
char name,nub;
float score;
while(choose){
printf("**********请输入您想进行的操作***********\n");
printf("key 1:添加学生信息 key 2:打印学生信息\n");
printf("key 3:姓名查找信息 key 4:位置反馈信息\n");
printf("key 5:插入学生信息 key 6:删除学生信息\n");
printf("key 7:统计学生信息 key 8:退出信息系统\n");
printf("*****************************************\n");
scanf("%d",&choose);
switch(choose){
case 1:
printf("请输入要录入学生的人数:");
scanf("%d",&a);
for(int i=1;i<=a;i++)
{
printf("第%d个学生的信息:\n",i);
Input(&L.elem[i]);
}
L.length=a;
puts("");
break;
case 2:
break;
case 3:
char m[20];
printf("请输入要查找的学生姓名:");
scanf("%s",&m);
if(Search(L,m)){
printf("您查找的学生学号和成绩为:\n");
Output(&L.elem[Search(L,m)]);
}
else
printf("查找失败!");
break;
case 4:
printf("请输入要查询的位置:");
int ad;
scanf("%d",&ad);
b=GetElem(L,ad);
Output(&b);
break;
case 5:
printf ("请输入要插入的位置:");
int ad2;
scanf("%d",&ad2);
printf("请输入学生信息:\n");
Input(&c);
if(ListInsert(L,ad2,c)){
a++;
puts("插入成功");
puts("");
}
else
{
puts("插入失败");
puts("");
}
break;
case 6:
printf("请输入要删除的位置:");
int ad3;
scanf("%d",&ad3);
if(ListDelete(L,ad3)){
a--;
puts("删除成功");
puts("");
}
else
{
puts("删除失败");
puts("");
}
break;
case 7:
printf("已录入的学生个数为:%d\n\n",L.length);
break;
case 8:
system("pause");
break;
defult:
printf("输入有误,请重新输入!");
scanf("%d",&choose);
break;
}
}
}
数据结构(顺序表)
最新推荐文章于 2023-06-13 06:15:00 发布